Skip to content

Instantly share code, notes, and snippets.

@erikside
Created June 5, 2024 12:36
Show Gist options
  • Select an option

  • Save erikside/7ec9f40b767b70494e2ff2c66b2bdf24 to your computer and use it in GitHub Desktop.

Select an option

Save erikside/7ec9f40b767b70494e2ff2c66b2bdf24 to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.8.26+commit.8a97fa7a.js&optimize=false&runs=200&gist=
This gist exceeds the recommended number of files (~10). To access all files, please clone this gist.
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
ref: refs/heads/main
DIRCf`L�!���f`L�!���q�����o#q{K���Sc��X�W�n.prettierrc.json)Ԋ�m�������U��.�
x�+)JMU01a040031Q�+(J-)�L-*J��*��cش4_���{v?���#����Ĩ
x���A� @Qלb.�aZ*��ƅǀ2���o�����?���z�H#�}�d�5��v��6��9�3z#��=�*<�687���=]kಛ�z�hg�G�j����3�?��,,
���*�@��K�X�2�7<>\
x����
�0 �=�)B�2ă��[����n٬�f�� c�.+l0cB{J�� ��ɪ�����e)\}�{�Py���l���X<N�r�t���|X��E���RH��/����D\[<s�� �,NV�R�&�3�0<{�;U<������6^p��k���xH�����%�pυ._ݢ6��̢�
69e12502be857827ef29f7bbec95aeb29a17a9e1
{
"overrides": [
{
"files": "*.sol",
"options": {
"printWidth": 80,
"tabWidth": 4,
"useTabs": false,
"singleQuote": false,
"bracketSpacing": false
}
},
{
"files": "*.yml",
"options": {}
},
{
"files": "*.yaml",
"options": {}
},
{
"files": "*.toml",
"options": {}
},
{
"files": "*.json",
"options": {}
},
{
"files": "*.js",
"options": {}
},
{
"files": "*.ts",
"options": {}
}
]
}
{
"db": {
"0490f0d98c06a6234cc374564f984580f33770d4605e5781451d4971d3235a2d": "0xf873a1205931b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"937514b0e72ad8da6bb5e656f25334fb09e7018992ae794d5c237fbf27a5db15": "0x6a17e38f28d2ed3b390b0c11cc023a50fb07664c8add086ba75ea51e825cd779",
"ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9": "0xf872a03931b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"b57eae55d1d898a1388d3065de9102d0f6ade3423b29be2482e1626394acd99f": "0xf872a0399bf57501565dbd2fdcea36efa2b9aef8340a8901e3459f4a4c926275d36cdbb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"dac9f9238909bae6bedf62a95a3ac503b5e6927b8243b9b44e0e335869bef325": "0xf8518080808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0b57eae55d1d898a1388d3065de9102d0f6ade3423b29be2482e1626394acd99f80808080808080",
"6e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2": "0xf872a034a10bfd00977f54cc3450c9b25c9b3a502a089eba0097ba35fc33c4ea5fcb54b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"1db6a1394b96218e282fb52d559676dbecfba9a78146880e35ef38cc061dbf44": "0xf871a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e280808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0b57eae55d1d898a1388d3065de9102d0f6ade3423b29be2482e1626394acd99f80808080808080",
"acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c": "0xf872a03fbe3e504ac4e35541bebad4d0e7574668e16fefa26cd4172f93e18b59ce9486b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"de2548e2521504daf92524b329dbb037a000ed381a8f810b8607e2f8832ada7d": "0xf891a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e280808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0b57eae55d1d898a1388d3065de9102d0f6ade3423b29be2482e1626394acd99f808080a0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c808080",
"5f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c": "0xf872a036d82c545c22b72034803633d3dda2b28e89fb704f3c111355ac43e10612aedcb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"09cc43c2655ecf235e9ef7dbf5c6f27157eb9f6e2b53433a3f0f13301ca34450": "0xf8b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e280808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0b57eae55d1d898a1388d3065de9102d0f6ade3423b29be2482e1626394acd99f808080a0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"69a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bd": "0xf872a0323d89d4ba0f8b56a459710de4b44820d73e93736cfc0667f35cdd5142b70f0db84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"7b184ca9e86ac8499d2cde865d80d191cbbeca4393fd2b74df5972f5426e0895": "0xf8d1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e280808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0b57eae55d1d898a1388d3065de9102d0f6ade3423b29be2482e1626394acd99f8080a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"0968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315": "0xf872a03c22adb6b75b7a618594eacef369bc4f0ec06380e8630fd7580f9bf0ea413ca8b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"b955e456c73a5460828b40c246ac4e09b60c899b969e7a9520783863649f104a": "0xf8f1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0b57eae55d1d898a1388d3065de9102d0f6ade3423b29be2482e1626394acd99f8080a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"70f09e0afc485ee4555a5c2bcb5380fe4745dfb619c97ce55ca368555f4c0358": "0xf872a03b9f0f05f155b5df3bbdd079fa47bedd6da0e32966c72f92264d98e80248858eb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"e628eda7692102d1123972b085e483fb81586793e6e4bb395f356f319785b924": "0xf90111a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0b57eae55d1d898a1388d3065de9102d0f6ade3423b29be2482e1626394acd99f80a070f09e0afc485ee4555a5c2bcb5380fe4745dfb619c97ce55ca368555f4c0358a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"021eda8d86f1724d84a155e5e0227744e3fb2f570089a70ae65750d24410fe10": "0xf872a0209bf57501565dbd2fdcea36efa2b9aef8340a8901e3459f4a4c926275d36cdbb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"35196d12c07e2405a02d095f74880568965618e95b50e64e8690594aa6bb5ea2": "0xf872a0207839edeb5b3ee9a2dee69954b24aeb3f91b8ff4c608efd90618351fe77152fb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"f4ae3d0d998ac3c8f5118c8ef3ce2ef3dc0440a900323177580df0f212f8b363": "0xf85180808080a035196d12c07e2405a02d095f74880568965618e95b50e64e8690594aa6bb5ea280808080a0021eda8d86f1724d84a155e5e0227744e3fb2f570089a70ae65750d24410fe1080808080808080",
"4b7be564e069212c8c0dd694ce21c7051e5cb7bbb527e3af73faf7e61de082c0": "0xf90111a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0f4ae3d0d998ac3c8f5118c8ef3ce2ef3dc0440a900323177580df0f212f8b36380a070f09e0afc485ee4555a5c2bcb5380fe4745dfb619c97ce55ca368555f4c0358a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"c3165ef5b21e80c163531f807c25789fef8810eda00ae7ca5ced381ff9a9515a": "0xf872a03aea7c8c479e9ff598fc761670d034e3eff2ebadb1e3769b349b2d1663d23913b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"1b83601c6f891d16b1422e65ed3cd47bcbe1342010db6168a0508de8597ac327": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0f4ae3d0d998ac3c8f5118c8ef3ce2ef3dc0440a900323177580df0f212f8b363a0c3165ef5b21e80c163531f807c25789fef8810eda00ae7ca5ced381ff9a9515aa070f09e0afc485ee4555a5c2bcb5380fe4745dfb619c97ce55ca368555f4c0358a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"82f6e0ef9d3ec62e68c811432d52e6e0c907d604aed5a2a561d95e393f487d68": "0xf872a0209f0f05f155b5df3bbdd079fa47bedd6da0e32966c72f92264d98e80248858eb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"cdeaf028a7a2894d4778d6c412bfb95e81b23c2e6044f4c5d6de2ed8a50f78f3": "0xf872a020591967aed668a4b27645ff40c444892d91bf5951b382995d4d4f6ee3a2ce03b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"9d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797": "0xf85180a0cdeaf028a7a2894d4778d6c412bfb95e81b23c2e6044f4c5d6de2ed8a50f78f3808080808080808080a082f6e0ef9d3ec62e68c811432d52e6e0c907d604aed5a2a561d95e393f487d688080808080",
"0733321bda3c83f42aeeb32f8dcad18bb4f4c2b80fa60dee4b6eb25f0952524c": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0f4ae3d0d998ac3c8f5118c8ef3ce2ef3dc0440a900323177580df0f212f8b363a0c3165ef5b21e80c163531f807c25789fef8810eda00ae7ca5ced381ff9a9515aa09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"0932e0165ad0cabdfe9d8fb6a70150033d789cd07caaf499c8a37141495499c3": "0xf872a020a258265696d227eef589fd6cd14671a82aa2963ec2214eb048fca5441c4a7eb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8": "0xf87180808080a035196d12c07e2405a02d095f74880568965618e95b50e64e8690594aa6bb5ea280808080a0021eda8d86f1724d84a155e5e0227744e3fb2f570089a70ae65750d24410fe10808080a00932e0165ad0cabdfe9d8fb6a70150033d789cd07caaf499c8a37141495499c3808080",
"a137d310a084b364dfbf0de1114f64e94253e42baa0297980c4a88db4e7d9aa8": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0c3165ef5b21e80c163531f807c25789fef8810eda00ae7ca5ced381ff9a9515aa09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"9aceb391e41ce30a6ee2c0c568b850f9fde2e425b767f72e7f4d9cc76e8271ec": "0xf872a020be3e504ac4e35541bebad4d0e7574668e16fefa26cd4172f93e18b59ce9486b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"090d9dec4c66aadc432a96de820eb6fb44489111b3b6f1f397cd9a44a0014882": "0xf872a0209ae219c4bbc2c5eaa1cd472f76bd0211bbf31053549dd7771cc573d3ed197fb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"819c926feb18dee3be8e9daa7ab62abe91febb2caceac5e8038b048d7a4bed0d": "0xf851808080808080808080808080a0090d9dec4c66aadc432a96de820eb6fb44489111b3b6f1f397cd9a44a00148828080a09aceb391e41ce30a6ee2c0c568b850f9fde2e425b767f72e7f4d9cc76e8271ec80",
"53ac286d5d31f0a7f768060b7f9f198956d75c903a698ae4fbb3dcc9f9d5e0b8": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0c3165ef5b21e80c163531f807c25789fef8810eda00ae7ca5ced381ff9a9515aa09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0819c926feb18dee3be8e9daa7ab62abe91febb2caceac5e8038b048d7a4bed0d80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"1a0e275dfddaeead8d1fa18c665c7e19b15dc769d3ede56c4a85377edc877110": "0xf8719f20e219c4bbc2c5eaa1cd472f76bd0211bbf31053549dd7771cc573d3ed197fb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"ff695f1ea854ce96ed9c761374f9cc42179fddef3c76a01c05f7f1bb19725ef8": "0xf8719f201e8c4eba798a431ca40726ca69bda8c7067f1690340e5b0a08d83d00d9cbb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"f96f3afee8124cd65bfb12ead5b9bd737c7def4cb7f7c71b82b00d5da23cd77c": "0xf85180808080a0ff695f1ea854ce96ed9c761374f9cc42179fddef3c76a01c05f7f1bb19725ef88080808080a01a0e275dfddaeead8d1fa18c665c7e19b15dc769d3ede56c4a85377edc877110808080808080",
"d8394fa4bbb65976fe11ee9de67bd6f0fb3fa3d7b36ee09f1421dae79b17b95f": "0xe219a0f96f3afee8124cd65bfb12ead5b9bd737c7def4cb7f7c71b82b00d5da23cd77c",
"853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a": "0xf851808080808080808080808080a0d8394fa4bbb65976fe11ee9de67bd6f0fb3fa3d7b36ee09f1421dae79b17b95f8080a09aceb391e41ce30a6ee2c0c568b850f9fde2e425b767f72e7f4d9cc76e8271ec80",
"29a7ea17591b34ca73ee13832a64db6d8565d9ab4dbafea03842fabe139016fa": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0c3165ef5b21e80c163531f807c25789fef8810eda00ae7ca5ced381ff9a9515aa09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"48e73baa24091198f9b69f9c7d27ba256fc19dddebf64448a7a0fd3df28d727d": "0xf872a020ea7c8c479e9ff598fc761670d034e3eff2ebadb1e3769b349b2d1663d23913b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"dc3d58bdcff5ea646a823bebe53ec4ab457ca425e952485f0da477b44fd7bacd": "0xf872a020e7c546eb582218cf94b848c36f3b058e2518876240ae6100c4ef23d38f3e07b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546bab": "0xf85180808080808080808080a048e73baa24091198f9b69f9c7d27ba256fc19dddebf64448a7a0fd3df28d727d80808080a0dc3d58bdcff5ea646a823bebe53ec4ab457ca425e952485f0da477b44fd7bacd80",
"c87ee106e21de6f375b1424af09b5235d42f0524163ba739aa52ff49cf6e0fb9": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"63829d76826fabb6f91b94d4318e759d51beb177c333348cfd0f31ba0b1976ea93": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80638903573014610030575b600080fd5b6100386100b4565b604051808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018362ffffff1681526020018260020b81526020019550505050505060405180910390f35b60008060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900462ffffff16908060020160179054906101000a900460020b90508556fea26469706673582212200378d2ff0d7c9f16988ebde765ed257c146db0d749daebad6530ff885908277264736f6c63430007060033",
"09409c467ee1c2a8f9cbbb8f7b2091752505bdc605c7f6f274053c8ac9c44675": "0xf872a03931b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d0189056bc75e2d630bc62ea056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"6fa7b31614185ba04795442a6f0abeb599d02689ff54014f6a4d399539ff2778": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a009409c467ee1c2a8f9cbbb8f7b2091752505bdc605c7f6f274053c8ac9c44675808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"57ec08b8f040499409fb0220f538477790d4f010c4bb51a8dbae5da3537a86a4": "0xf872a020d82c545c22b72034803633d3dda2b28e89fb704f3c111355ac43e10612aedcb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"d08aba41a783ffb585f3f613f5069ed761bd189dfb65f98288dd987816a48943": "0xf869a0204b24eae4a02d3987ca887631704554f37941d36d88eba3861c6e365c7804a5b846f8440180a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0829d76826fabb6f91b94d4318e759d51beb177c333348cfd0f31ba0b1976ea93",
"56634ae0a15fd8b15cc9bc17bd63840446afd4efa8c7c935265fc480b4dc67b6": "0xf851808080808080a057ec08b8f040499409fb0220f538477790d4f010c4bb51a8dbae5da3537a86a480a0d08aba41a783ffb585f3f613f5069ed761bd189dfb65f98288dd987816a489438080808080808080",
"2163dbd312d546685ee028f7e3da3b58b53f521e8465688931b5ad446eaea242": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a009409c467ee1c2a8f9cbbb8f7b2091752505bdc605c7f6f274053c8ac9c44675808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a056634ae0a15fd8b15cc9bc17bd63840446afd4efa8c7c935265fc480b4dc67b680",
"13e2a9a18e7550504f8dc23b3925a7ec27cc8e8d1899dce9baac528bcfdb7ec4": "0xf86ca020a40a9004224e397238839b469142c546607ee7a8b114ded86182fceae00e35b849f8478083021ce9a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"066ca6a4c6ba07524e90bd8d82d1c8e957fa844680eb3007b8ab65c7c6aaaa40": "0xf87180a0cdeaf028a7a2894d4778d6c412bfb95e81b23c2e6044f4c5d6de2ed8a50f78f3808080808080808080a082f6e0ef9d3ec62e68c811432d52e6e0c907d604aed5a2a561d95e393f487d688080a013e2a9a18e7550504f8dc23b3925a7ec27cc8e8d1899dce9baac528bcfdb7ec48080",
"e5fb7ec04ef30cc996f4573d69fc525682a66b23dcb1f0e233da301a7082bf90": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a009409c467ee1c2a8f9cbbb8f7b2091752505bdc605c7f6f274053c8ac9c44675808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba0066ca6a4c6ba07524e90bd8d82d1c8e957fa844680eb3007b8ab65c7c6aaaa40a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a056634ae0a15fd8b15cc9bc17bd63840446afd4efa8c7c935265fc480b4dc67b680",
"abff533cc452ea95e5c1b11ea8136f94ea5d70a937ab549254698d74505b9547": "0xf872a03931b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d0289056bc75e2d62fa6348a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"26e1c07e470d48282a9298aa0082915e0864499066f346f3aae074d801fa1169": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0abff533cc452ea95e5c1b11ea8136f94ea5d70a937ab549254698d74505b9547808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba0066ca6a4c6ba07524e90bd8d82d1c8e957fa844680eb3007b8ab65c7c6aaaa40a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a056634ae0a15fd8b15cc9bc17bd63840446afd4efa8c7c935265fc480b4dc67b680",
"23aea9e0d2b9d5f5a06134f4d0de87dade5139546108154690523722f79e763d": "0xf86ca03af97556eedd035d0c1b80182155e5f5148b950fe7547a1253e2e74d703b365eb849f847808308b173a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"5d45765eaa47d25351fb6e4d99cf079e0ed6f9064713a14706504ecf12e24dbc": "0xf90151a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0abff533cc452ea95e5c1b11ea8136f94ea5d70a937ab549254698d74505b954780a023aea9e0d2b9d5f5a06134f4d0de87dade5139546108154690523722f79e763d80a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba0066ca6a4c6ba07524e90bd8d82d1c8e957fa844680eb3007b8ab65c7c6aaaa40a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a056634ae0a15fd8b15cc9bc17bd63840446afd4efa8c7c935265fc480b4dc67b680",
"6b99d0c3b090aee73cf931078ad90e60ab2c121180357724f03eafac6238b9f2": "0xf872a03931b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d0389056bc75e2d62e90062a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"30c97cdbb9723b2ebeda381af95ec0e5939c8627a20dc379a5c1fed02cf16424": "0xf90151a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a06b99d0c3b090aee73cf931078ad90e60ab2c121180357724f03eafac6238b9f280a023aea9e0d2b9d5f5a06134f4d0de87dade5139546108154690523722f79e763d80a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba0066ca6a4c6ba07524e90bd8d82d1c8e957fa844680eb3007b8ab65c7c6aaaa40a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a056634ae0a15fd8b15cc9bc17bd63840446afd4efa8c7c935265fc480b4dc67b680",
"b87c8def6455931fbe3d001c78095f64e433ceada3d94adbc9657a2e91d69527": "0xf86ca03c76d49790cfa3f0c5e6fc28e31afd97efcab3ccef5b50ddc3276fdd9f50c730b849f847808308b173a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"c7adfd4363cf39f106b099b0b8a4c07e2d2975bfd12e0cee69d564b1faa6a22e": "0xf90171a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a06b99d0c3b090aee73cf931078ad90e60ab2c121180357724f03eafac6238b9f2a0b87c8def6455931fbe3d001c78095f64e433ceada3d94adbc9657a2e91d69527a023aea9e0d2b9d5f5a06134f4d0de87dade5139546108154690523722f79e763d80a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba0066ca6a4c6ba07524e90bd8d82d1c8e957fa844680eb3007b8ab65c7c6aaaa40a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a056634ae0a15fd8b15cc9bc17bd63840446afd4efa8c7c935265fc480b4dc67b680",
"900788be9cc29825ed2bda5b7980a0c091c2b9efa7867e20d5bc284b435d33be": "0xf872a03931b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d0489056bc75e2d62e8240ca056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"52c05f6ca77574860a428f3229a062e6af45bdbdaf1757c08b6f82b92b9b18d5": "0xf90171a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0900788be9cc29825ed2bda5b7980a0c091c2b9efa7867e20d5bc284b435d33bea0b87c8def6455931fbe3d001c78095f64e433ceada3d94adbc9657a2e91d69527a023aea9e0d2b9d5f5a06134f4d0de87dade5139546108154690523722f79e763d80a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba0066ca6a4c6ba07524e90bd8d82d1c8e957fa844680eb3007b8ab65c7c6aaaa40a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a056634ae0a15fd8b15cc9bc17bd63840446afd4efa8c7c935265fc480b4dc67b680",
"53be03ee9bb4f4ca5e77d06d7025d142575d4aeaee89b60a172128a9c8b58ff3": "0xf86ca020a40a9004224e397238839b469142c546607ee7a8b114ded86182fceae00e35b849f8478083028b14a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"0c487945568a573469a8eb0826180b8789fc824aad57445aea64df45bc20eddf": "0xf87180a0cdeaf028a7a2894d4778d6c412bfb95e81b23c2e6044f4c5d6de2ed8a50f78f3808080808080808080a082f6e0ef9d3ec62e68c811432d52e6e0c907d604aed5a2a561d95e393f487d688080a053be03ee9bb4f4ca5e77d06d7025d142575d4aeaee89b60a172128a9c8b58ff38080",
"fe4455dfd68bfc7d16a9e11f2cdcd9ab37a8067cb6fecaa2d68704155246c6d7": "0xf90171a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0900788be9cc29825ed2bda5b7980a0c091c2b9efa7867e20d5bc284b435d33bea0b87c8def6455931fbe3d001c78095f64e433ceada3d94adbc9657a2e91d69527a023aea9e0d2b9d5f5a06134f4d0de87dade5139546108154690523722f79e763d80a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba00c487945568a573469a8eb0826180b8789fc824aad57445aea64df45bc20eddfa069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a056634ae0a15fd8b15cc9bc17bd63840446afd4efa8c7c935265fc480b4dc67b680",
"63e3c2ea7b3f9e2b0c53985784454ca0fd8fd34b87db00b8cee458070a537c254f": "0x73d7acd2a9fd159e69bb102a1ca21c9a3e3a5f771b30146080604052600080fdfea2646970667358221220eb548a29628352d10317a28ec6ed6629b2ad2bd6a49608f93868fd0661aa40d064736f6c63430007060033",
"5cd1fde811d38605a6df201184cb0d1599f68cfe78a4bed747a96fb41ceeffa3": "0xf872a03931b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d0489056bc75e2d62e6ce58a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"ce827ecf4476c185a5a90eefd809744f7eb3db474a97bef32fbfe3c04c3daec8": "0xf90171a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a05cd1fde811d38605a6df201184cb0d1599f68cfe78a4bed747a96fb41ceeffa3a0b87c8def6455931fbe3d001c78095f64e433ceada3d94adbc9657a2e91d69527a023aea9e0d2b9d5f5a06134f4d0de87dade5139546108154690523722f79e763d80a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba0066ca6a4c6ba07524e90bd8d82d1c8e957fa844680eb3007b8ab65c7c6aaaa40a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a056634ae0a15fd8b15cc9bc17bd63840446afd4efa8c7c935265fc480b4dc67b680",
"7335fb1eee00a8ef767f52c1c4a2fecf01d1cb3235efb54fafb0ccd3984af745": "0xf869a0203c14ed9c2721a75b5e1db7b8cf67755318799106efde8679882233efc3afa3b846f8440180a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0e3c2ea7b3f9e2b0c53985784454ca0fd8fd34b87db00b8cee458070a537c254f",
"4872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e77853": "0xf871808080808080a07335fb1eee00a8ef767f52c1c4a2fecf01d1cb3235efb54fafb0ccd3984af7458080808080a0d8394fa4bbb65976fe11ee9de67bd6f0fb3fa3d7b36ee09f1421dae79b17b95f8080a09aceb391e41ce30a6ee2c0c568b850f9fde2e425b767f72e7f4d9cc76e8271ec80",
"bdc3ad997f49e1c180c2eb5b21ee46c127556f5dbd80172c2e2725cda89acf27": "0xf90171a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a05cd1fde811d38605a6df201184cb0d1599f68cfe78a4bed747a96fb41ceeffa3a0b87c8def6455931fbe3d001c78095f64e433ceada3d94adbc9657a2e91d69527a023aea9e0d2b9d5f5a06134f4d0de87dade5139546108154690523722f79e763d80a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba0066ca6a4c6ba07524e90bd8d82d1c8e957fa844680eb3007b8ab65c7c6aaaa40a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a056634ae0a15fd8b15cc9bc17bd63840446afd4efa8c7c935265fc480b4dc67b680",
"eeacda08190124994e13bbc8c3b56fda06f38f5dd3e8576fffa391e89175f89f": "0xf86ca020a40a9004224e397238839b469142c546607ee7a8b114ded86182fceae00e35b849f84780830335eea056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"8772fa777bb8a38ed48e96b1dbb064510084de7ab565fed36cfe0492bd625a7a": "0xf87180a0cdeaf028a7a2894d4778d6c412bfb95e81b23c2e6044f4c5d6de2ed8a50f78f3808080808080808080a082f6e0ef9d3ec62e68c811432d52e6e0c907d604aed5a2a561d95e393f487d688080a0eeacda08190124994e13bbc8c3b56fda06f38f5dd3e8576fffa391e89175f89f8080",
"0cb45b3acb07ca8ad8c34224ecae35d018ec0a116d44d673c469fe655dcfe12a": "0xf90171a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a05cd1fde811d38605a6df201184cb0d1599f68cfe78a4bed747a96fb41ceeffa3a0b87c8def6455931fbe3d001c78095f64e433ceada3d94adbc9657a2e91d69527a023aea9e0d2b9d5f5a06134f4d0de87dade5139546108154690523722f79e763d80a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba08772fa777bb8a38ed48e96b1dbb064510084de7ab565fed36cfe0492bd625a7aa069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a056634ae0a15fd8b15cc9bc17bd63840446afd4efa8c7c935265fc480b4dc67b680",
"6345e0ae3ebad69e7300ba213bf3c39cfdb1e475dc91aced456232e8daf3ab2991": "0x737ef2e0048f5baede046f6bf797943daf4ed8cb4730146080604052600080fdfea26469706673582212204791323b1c512870c0c681b26b806f7c75ffc5461296837c5b412ec349c465fe64736f6c63430007060033",
"4bee395e1a774cb60870cbf5f8c7ea423cea146548af814fca9ac54c67ddbe3b": "0xf872a03931b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d0589056bc75e2d62e49c4ea056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"45b315ae8abefc8ddd8117097cdc5842ee89e044c6731b750abfc242eac46173": "0xf90171a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a04bee395e1a774cb60870cbf5f8c7ea423cea146548af814fca9ac54c67ddbe3ba0b87c8def6455931fbe3d001c78095f64e433ceada3d94adbc9657a2e91d69527a023aea9e0d2b9d5f5a06134f4d0de87dade5139546108154690523722f79e763d80a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba08772fa777bb8a38ed48e96b1dbb064510084de7ab565fed36cfe0492bd625a7aa069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a056634ae0a15fd8b15cc9bc17bd63840446afd4efa8c7c935265fc480b4dc67b680",
"8325eea8ea15377ef876ad2ee1caa2a4c9e10100bf095e64812c29aaf5f3abac": "0xf86ca02076d49790cfa3f0c5e6fc28e31afd97efcab3ccef5b50ddc3276fdd9f50c730b849f847808308b173a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"fe5ee46d99dc13c6a38f59a81a976485954c1b2ce23e0e4f72db9159e0fc5264": "0xf869a0203eb9561c111b66e2e104f0d3d5a93d2ab29a0833e7e156ec18f70e526f89bcb846f8440180a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a045e0ae3ebad69e7300ba213bf3c39cfdb1e475dc91aced456232e8daf3ab2991",
"1aa841811f9fde4759323d92d567b9395b3d575866f25cd27f48c09e803477ec": "0xf851808080808080a0fe5ee46d99dc13c6a38f59a81a976485954c1b2ce23e0e4f72db9159e0fc52648080808080a08325eea8ea15377ef876ad2ee1caa2a4c9e10100bf095e64812c29aaf5f3abac80808080",
"9c6ddf1a5a7489fa0f84e8408617a4edf5f5271d81a2da47b9222120fa6c68a6": "0xf90171a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a04bee395e1a774cb60870cbf5f8c7ea423cea146548af814fca9ac54c67ddbe3ba01aa841811f9fde4759323d92d567b9395b3d575866f25cd27f48c09e803477eca023aea9e0d2b9d5f5a06134f4d0de87dade5139546108154690523722f79e763d80a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba08772fa777bb8a38ed48e96b1dbb064510084de7ab565fed36cfe0492bd625a7aa069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a056634ae0a15fd8b15cc9bc17bd63840446afd4efa8c7c935265fc480b4dc67b680",
"9a31a420eadc77d44240364af57fa4b4b80d5f20c322ad21754e0275fcbc1380": "0xf86ca03af97556eedd035d0c1b80182155e5f5148b950fe7547a1253e2e74d703b365eb849f847808309ca78a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"561ddb4346db8e51d889fcd084a2391ce8b7cabcc9d0168896fd0dfa773edb6a": "0xf90171a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a04bee395e1a774cb60870cbf5f8c7ea423cea146548af814fca9ac54c67ddbe3ba01aa841811f9fde4759323d92d567b9395b3d575866f25cd27f48c09e803477eca09a31a420eadc77d44240364af57fa4b4b80d5f20c322ad21754e0275fcbc138080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba08772fa777bb8a38ed48e96b1dbb064510084de7ab565fed36cfe0492bd625a7aa069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a056634ae0a15fd8b15cc9bc17bd63840446afd4efa8c7c935265fc480b4dc67b680",
"63430cc3a978b757c3e5acb570e5694ec011f3fb8c24a7e7fdf64fc3290eb8d053": "0x73da0bab807633f07f013f94dd0e6a4f96f8742b5330146080604052600080fdfea26469706673582212203cb198813bc9dc416243f9a042f83a3aa0509d0abe46a7b6352003c7a4d87cbd64736f6c63430007060033",
"e29297801b3a235d5926153163f1b2909549664a9455427010a5caafe0316f28": "0xf872a03931b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d0689056bc75e2d62e26a44a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"98614057351f6b57c31309f05fa64fb228067c00154232b6fa0c092fe2311ae4": "0xf90171a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0e29297801b3a235d5926153163f1b2909549664a9455427010a5caafe0316f28a01aa841811f9fde4759323d92d567b9395b3d575866f25cd27f48c09e803477eca09a31a420eadc77d44240364af57fa4b4b80d5f20c322ad21754e0275fcbc138080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba08772fa777bb8a38ed48e96b1dbb064510084de7ab565fed36cfe0492bd625a7aa069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a056634ae0a15fd8b15cc9bc17bd63840446afd4efa8c7c935265fc480b4dc67b680",
"f8a4691a9880f12f1d16a4e043d115078123f01acf84125ee6e86f33ebdaf53f": "0xf86ca020f97556eedd035d0c1b80182155e5f5148b950fe7547a1253e2e74d703b365eb849f847808309ca78a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"d7801c18da1017dad44f80a3bf0366d08425f58aeee6e22031351139d839d7a7": "0xf869a020060db0e8007f6a33d0cd123a1329b55000121522b0ce023c4f879110bb9cffb846f8440180a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0430cc3a978b757c3e5acb570e5694ec011f3fb8c24a7e7fdf64fc3290eb8d053",
"7c79b61c39325a8a8fdd85469db6def3b992bc530920abb75c48f05931bec672": "0xf851808080a0d7801c18da1017dad44f80a3bf0366d08425f58aeee6e22031351139d839d7a7808080808080a0f8a4691a9880f12f1d16a4e043d115078123f01acf84125ee6e86f33ebdaf53f808080808080",
"c97423b154c964f0ffb5a20db1f6c2054ac2a071c03b7e22fb7356b787857735": "0xf90171a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0e29297801b3a235d5926153163f1b2909549664a9455427010a5caafe0316f28a01aa841811f9fde4759323d92d567b9395b3d575866f25cd27f48c09e803477eca07c79b61c39325a8a8fdd85469db6def3b992bc530920abb75c48f05931bec67280a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba08772fa777bb8a38ed48e96b1dbb064510084de7ab565fed36cfe0492bd625a7aa069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a056634ae0a15fd8b15cc9bc17bd63840446afd4efa8c7c935265fc480b4dc67b680",
"c3ed1f98ec98c69db5fdd54f788c7f620148e9aed453fa342ce5bcf1269dc1dd": "0xf86ca02076d49790cfa3f0c5e6fc28e31afd97efcab3ccef5b50ddc3276fdd9f50c730b849f847808309ca78a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"26e098e15c947d575143c092bdc784840ba133b49d7693bccd575e777bb482af": "0xf851808080808080a0fe5ee46d99dc13c6a38f59a81a976485954c1b2ce23e0e4f72db9159e0fc52648080808080a0c3ed1f98ec98c69db5fdd54f788c7f620148e9aed453fa342ce5bcf1269dc1dd80808080",
"e54b4494a19f2c4cc6a59209f90980f00a46a5f5a6c8b99d5f0537e611ba0be9": "0xf90171a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0e29297801b3a235d5926153163f1b2909549664a9455427010a5caafe0316f28a026e098e15c947d575143c092bdc784840ba133b49d7693bccd575e777bb482afa07c79b61c39325a8a8fdd85469db6def3b992bc530920abb75c48f05931bec67280a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba08772fa777bb8a38ed48e96b1dbb064510084de7ab565fed36cfe0492bd625a7aa069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a056634ae0a15fd8b15cc9bc17bd63840446afd4efa8c7c935265fc480b4dc67b680",
"63ee64c5e0c54c75589f09637db059be8e53afb3444bd83bed93e46f74936c9f93": "0x73358aa13c52544eccef6b0add0f801012adad5ee330146080604052600080fdfea2646970667358221220c2df93f2416c5c3a37aefa30463378c728b5e68ef955161a39512395c9c0b0c864736f6c63430007060033",
"318fbfee24fbbd88f93febaa7f86043e77bb3fd4d0cdffd3b3794d4e6300a778": "0xf872a03931b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d0789056bc75e2d62e0383aa056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"e5d95e098e82bb4ef78cf629b1b4551b2c09054f885275eac1b24d873e4cc5eb": "0xf90171a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0318fbfee24fbbd88f93febaa7f86043e77bb3fd4d0cdffd3b3794d4e6300a778a026e098e15c947d575143c092bdc784840ba133b49d7693bccd575e777bb482afa07c79b61c39325a8a8fdd85469db6def3b992bc530920abb75c48f05931bec67280a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba08772fa777bb8a38ed48e96b1dbb064510084de7ab565fed36cfe0492bd625a7aa069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a056634ae0a15fd8b15cc9bc17bd63840446afd4efa8c7c935265fc480b4dc67b680",
"6931ca055d83f0ad2969e9a1ff81e5f11761ee7f6e4b41535c128f8960fcb479": "0xf869a037a64cb0f1024deae6b2ed2e5c095b847015c82936dc27285c82dbcf4924d235b846f8440180a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0ee64c5e0c54c75589f09637db059be8e53afb3444bd83bed93e46f74936c9f93",
"827901e64114d475f70b4eccd1d8f16de88d48e13b15f62944da722539690f4f": "0xf90191a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a06931ca055d83f0ad2969e9a1ff81e5f11761ee7f6e4b41535c128f8960fcb47980a0318fbfee24fbbd88f93febaa7f86043e77bb3fd4d0cdffd3b3794d4e6300a778a026e098e15c947d575143c092bdc784840ba133b49d7693bccd575e777bb482afa07c79b61c39325a8a8fdd85469db6def3b992bc530920abb75c48f05931bec67280a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba08772fa777bb8a38ed48e96b1dbb064510084de7ab565fed36cfe0492bd625a7aa069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a056634ae0a15fd8b15cc9bc17bd63840446afd4efa8c7c935265fc480b4dc67b680",
"bd98bb68ccf8640806728e0fe8f9d4c576661da6e5b0f11b2fc1fb456bce3620": "0xf86ca020a40a9004224e397238839b469142c546607ee7a8b114ded86182fceae00e35b849f8478083044ef3a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"67b266606c688eccf728e06795abb9a3ef2a885c0e17003d9cfb8f64bcc9bd78": "0xf87180a0cdeaf028a7a2894d4778d6c412bfb95e81b23c2e6044f4c5d6de2ed8a50f78f3808080808080808080a082f6e0ef9d3ec62e68c811432d52e6e0c907d604aed5a2a561d95e393f487d688080a0bd98bb68ccf8640806728e0fe8f9d4c576661da6e5b0f11b2fc1fb456bce36208080",
"f4740022af3cb5ca34264b7d691f6b6171a17b13f47d15eaa76351b4bd47b448": "0xf90191a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a06931ca055d83f0ad2969e9a1ff81e5f11761ee7f6e4b41535c128f8960fcb47980a0318fbfee24fbbd88f93febaa7f86043e77bb3fd4d0cdffd3b3794d4e6300a778a026e098e15c947d575143c092bdc784840ba133b49d7693bccd575e777bb482afa07c79b61c39325a8a8fdd85469db6def3b992bc530920abb75c48f05931bec67280a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba067b266606c688eccf728e06795abb9a3ef2a885c0e17003d9cfb8f64bcc9bd78a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a056634ae0a15fd8b15cc9bc17bd63840446afd4efa8c7c935265fc480b4dc67b680",
"638e2a35e7ca763d47b2f41bc5090157ff7717faaaf43fef6da5b891cc013f277c": "0x739d7f74d0c41e726ec95884e0e97fa6129e3b5e9930146080604052600080fdfea2646970667358221220e6292c76caa52ebb1c74d7970f88a97720a2f498b5a8b007b7be18b669cbfba064736f6c63430007060033",
"e56d14788a20c4fd6a831b7165ce168872ae68863aad8b00955bdae41ee8c4fd": "0xf872a03931b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d0889056bc75e2d62de0630a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"7b176d13cc83971517ffe9a76c31d68856a3739f002aff69b7c0d210691d0668": "0xf90191a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a06931ca055d83f0ad2969e9a1ff81e5f11761ee7f6e4b41535c128f8960fcb47980a0e56d14788a20c4fd6a831b7165ce168872ae68863aad8b00955bdae41ee8c4fda026e098e15c947d575143c092bdc784840ba133b49d7693bccd575e777bb482afa07c79b61c39325a8a8fdd85469db6def3b992bc530920abb75c48f05931bec67280a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba067b266606c688eccf728e06795abb9a3ef2a885c0e17003d9cfb8f64bcc9bd78a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a056634ae0a15fd8b15cc9bc17bd63840446afd4efa8c7c935265fc480b4dc67b680",
"43762e902e0dc599df2ea5f077c050d72de85b096228b8936ef4a875b2bdc297": "0xf869a0208dbb8b342b473abda550905a59781f00f33003bb470a4988fdb9f1ded177a4b846f8440180a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a08e2a35e7ca763d47b2f41bc5090157ff7717faaaf43fef6da5b891cc013f277c",
"818803cb9c5e6a30998408bc1781da8c7535f9f438610ca92c3c07c4e5379281": "0xf871808080808080a057ec08b8f040499409fb0220f538477790d4f010c4bb51a8dbae5da3537a86a480a0d08aba41a783ffb585f3f613f5069ed761bd189dfb65f98288dd987816a489438080808080a043762e902e0dc599df2ea5f077c050d72de85b096228b8936ef4a875b2bdc2978080",
"3e0b34b6b9968e6e4175c7c6615440b288cf67023f9abcbbac0174dc8fa882d1": "0xf90191a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a06931ca055d83f0ad2969e9a1ff81e5f11761ee7f6e4b41535c128f8960fcb47980a0e56d14788a20c4fd6a831b7165ce168872ae68863aad8b00955bdae41ee8c4fda026e098e15c947d575143c092bdc784840ba133b49d7693bccd575e777bb482afa07c79b61c39325a8a8fdd85469db6def3b992bc530920abb75c48f05931bec67280a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba067b266606c688eccf728e06795abb9a3ef2a885c0e17003d9cfb8f64bcc9bd78a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a0818803cb9c5e6a30998408bc1781da8c7535f9f438610ca92c3c07c4e537928180",
"82d4b5bee0d011f22133da7e7a624bdf130dc94bbcc6c2ad03bdfd043aa9b5b1": "0xf86ca020f97556eedd035d0c1b80182155e5f5148b950fe7547a1253e2e74d703b365eb849f84780830ae37da056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"26679baa6f3f56da6b7ccbe9e0b9eb40e1ae55a71e7b47dd90aefbed87de2b29": "0xf851808080a0d7801c18da1017dad44f80a3bf0366d08425f58aeee6e22031351139d839d7a7808080808080a082d4b5bee0d011f22133da7e7a624bdf130dc94bbcc6c2ad03bdfd043aa9b5b1808080808080",
"058050075375d9ad1d4a6b6ea08e7f7aecafe85ca41e7dd86a345aa782be6f9e": "0xf90191a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a06931ca055d83f0ad2969e9a1ff81e5f11761ee7f6e4b41535c128f8960fcb47980a0e56d14788a20c4fd6a831b7165ce168872ae68863aad8b00955bdae41ee8c4fda026e098e15c947d575143c092bdc784840ba133b49d7693bccd575e777bb482afa026679baa6f3f56da6b7ccbe9e0b9eb40e1ae55a71e7b47dd90aefbed87de2b2980a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba067b266606c688eccf728e06795abb9a3ef2a885c0e17003d9cfb8f64bcc9bd78a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a0818803cb9c5e6a30998408bc1781da8c7535f9f438610ca92c3c07c4e537928180",
"63e7f139db3aff34c171a06c3136fa7b8530f60234514b66e8b8f0ac0c99143191": "0x73d2a5bc10698fd955d1fe6cb468a17809a08fd00530146080604052600080fdfea2646970667358221220a68b5b338813c94b9d8c1d94749de9c43eaeaebdcd891a1e10acece22eb34ad564736f6c63430007060033",
"8a8094607e4a5ffc1a356e6a3425273f852242998fce7379e8be3319f1ba8cd9": "0xf872a03931b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d0989056bc75e2d62dbd426a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"3e61f156741a377062bd51f74816d855c35e408b80b85a42938d46a209922214": "0xf90191a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a06931ca055d83f0ad2969e9a1ff81e5f11761ee7f6e4b41535c128f8960fcb47980a08a8094607e4a5ffc1a356e6a3425273f852242998fce7379e8be3319f1ba8cd9a026e098e15c947d575143c092bdc784840ba133b49d7693bccd575e777bb482afa026679baa6f3f56da6b7ccbe9e0b9eb40e1ae55a71e7b47dd90aefbed87de2b2980a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba067b266606c688eccf728e06795abb9a3ef2a885c0e17003d9cfb8f64bcc9bd78a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a0818803cb9c5e6a30998408bc1781da8c7535f9f438610ca92c3c07c4e537928180",
"785506ef64f8034de6c350e92e0ee134b1b98a83692c635dfa37a8320dbc875b": "0xf872a02031b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d0989056bc75e2d62dbd426a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"8a3bd2aab1a4a29add591956a4832b3b2b54a22f1c449fca121abafd48f9ddd4": "0xf869a020d6d04abc75015dcea14e405ba46bfaccc36ed9f4153eba11152efa776e1b9fb846f8440180a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0e7f139db3aff34c171a06c3136fa7b8530f60234514b66e8b8f0ac0c99143191",
"3ed02ba025c81f5b4b57c2aaf31b5d5b16dffdac01d33dd660258186c974b2e8": "0xf851a08a3bd2aab1a4a29add591956a4832b3b2b54a22f1c449fca121abafd48f9ddd48080808080808080a0785506ef64f8034de6c350e92e0ee134b1b98a83692c635dfa37a8320dbc875b80808080808080",
"3fc97d639f461e7c9cae7e89184c65c0b50c341ae343987b0fe457e0ad1173f9": "0xf90191a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a06931ca055d83f0ad2969e9a1ff81e5f11761ee7f6e4b41535c128f8960fcb47980a03ed02ba025c81f5b4b57c2aaf31b5d5b16dffdac01d33dd660258186c974b2e8a026e098e15c947d575143c092bdc784840ba133b49d7693bccd575e777bb482afa026679baa6f3f56da6b7ccbe9e0b9eb40e1ae55a71e7b47dd90aefbed87de2b2980a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba067b266606c688eccf728e06795abb9a3ef2a885c0e17003d9cfb8f64bcc9bd78a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a0818803cb9c5e6a30998408bc1781da8c7535f9f438610ca92c3c07c4e537928180",
"440c7fff5148b968df40a2d320b23fdb3a146f41a303fbcb310304b706a1fa48": "0xf86ca02076d49790cfa3f0c5e6fc28e31afd97efcab3ccef5b50ddc3276fdd9f50c730b849f84780830ae37da056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"fc728fc82ad2f1fdfed0e660f53c4390c5b50686e76ff5738d3654efe988cfc0": "0xf851808080808080a0fe5ee46d99dc13c6a38f59a81a976485954c1b2ce23e0e4f72db9159e0fc52648080808080a0440c7fff5148b968df40a2d320b23fdb3a146f41a303fbcb310304b706a1fa4880808080",
"b558b98025bd89cca54e8cbffa0c2afa3560e48547381c8e192b82bac73c91a6": "0xf90191a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a06931ca055d83f0ad2969e9a1ff81e5f11761ee7f6e4b41535c128f8960fcb47980a03ed02ba025c81f5b4b57c2aaf31b5d5b16dffdac01d33dd660258186c974b2e8a0fc728fc82ad2f1fdfed0e660f53c4390c5b50686e76ff5738d3654efe988cfc0a026679baa6f3f56da6b7ccbe9e0b9eb40e1ae55a71e7b47dd90aefbed87de2b2980a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba067b266606c688eccf728e06795abb9a3ef2a885c0e17003d9cfb8f64bcc9bd78a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a0818803cb9c5e6a30998408bc1781da8c7535f9f438610ca92c3c07c4e537928180",
"63f7de34340988d55045a4ff0cc73d0d58424c5d77c46bec4df4ab3150f6b07f25": "0x73ddaad340b0f1ef65169ae5e41a8b10776a75482d30146080604052600080fdfea264697066735822122041e0db242bc76c0a16a18232238943972059256ff8028fbe76b49867aaaac0b464736f6c63430007060033",
"1b2392241345ae89a6f41f7b482ad249bfe21d401ace3d2afb0837c7d103d265": "0xf872a02031b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d0a89056bc75e2d62d9a21ca056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"f91476d21e03c981540c409993046c7b53f25d0fe4fc76c31501a307887a6b21": "0xf851a08a3bd2aab1a4a29add591956a4832b3b2b54a22f1c449fca121abafd48f9ddd48080808080808080a01b2392241345ae89a6f41f7b482ad249bfe21d401ace3d2afb0837c7d103d26580808080808080",
"85317e7b2325c5f4718557c8018c1aa7c1d969daf9bac74b698928cb7a8f0052": "0xf90191a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a06931ca055d83f0ad2969e9a1ff81e5f11761ee7f6e4b41535c128f8960fcb47980a0f91476d21e03c981540c409993046c7b53f25d0fe4fc76c31501a307887a6b21a0fc728fc82ad2f1fdfed0e660f53c4390c5b50686e76ff5738d3654efe988cfc0a026679baa6f3f56da6b7ccbe9e0b9eb40e1ae55a71e7b47dd90aefbed87de2b2980a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba067b266606c688eccf728e06795abb9a3ef2a885c0e17003d9cfb8f64bcc9bd78a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a0818803cb9c5e6a30998408bc1781da8c7535f9f438610ca92c3c07c4e537928180",
"199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5": "0xf869a03e1cba5ae0a8b9f03d799f76f6cc6505d30ff8755880e4dcab782b1a71779c5ab846f8440180a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0f7de34340988d55045a4ff0cc73d0d58424c5d77c46bec4df4ab3150f6b07f25",
"3094263ad6b52d19d6e0b10d3a6c31826cf03854ca65f6068fe1b21f69c1c7fc": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a06931ca055d83f0ad2969e9a1ff81e5f11761ee7f6e4b41535c128f8960fcb479a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a0f91476d21e03c981540c409993046c7b53f25d0fe4fc76c31501a307887a6b21a0fc728fc82ad2f1fdfed0e660f53c4390c5b50686e76ff5738d3654efe988cfc0a026679baa6f3f56da6b7ccbe9e0b9eb40e1ae55a71e7b47dd90aefbed87de2b2980a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba067b266606c688eccf728e06795abb9a3ef2a885c0e17003d9cfb8f64bcc9bd78a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a0818803cb9c5e6a30998408bc1781da8c7535f9f438610ca92c3c07c4e537928180",
"9e0454af62c9a190c52933f517e6cbc737fe1c391b859a3092f51b00b986d171": "0xf86ca020a40a9004224e397238839b469142c546607ee7a8b114ded86182fceae00e35b849f84780830567f8a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"25cc0ac0e09772e4f36309962bbca92650c08d4e9934baf40566cb9bccdcc945": "0xf87180a0cdeaf028a7a2894d4778d6c412bfb95e81b23c2e6044f4c5d6de2ed8a50f78f3808080808080808080a082f6e0ef9d3ec62e68c811432d52e6e0c907d604aed5a2a561d95e393f487d688080a09e0454af62c9a190c52933f517e6cbc737fe1c391b859a3092f51b00b986d1718080",
"9f86223c2b81dff6c9a63feb7062b4907b0eed73494985a9c044ba640ef38714": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a06931ca055d83f0ad2969e9a1ff81e5f11761ee7f6e4b41535c128f8960fcb479a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a0f91476d21e03c981540c409993046c7b53f25d0fe4fc76c31501a307887a6b21a0fc728fc82ad2f1fdfed0e660f53c4390c5b50686e76ff5738d3654efe988cfc0a026679baa6f3f56da6b7ccbe9e0b9eb40e1ae55a71e7b47dd90aefbed87de2b2980a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba025cc0ac0e09772e4f36309962bbca92650c08d4e9934baf40566cb9bccdcc945a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a0818803cb9c5e6a30998408bc1781da8c7535f9f438610ca92c3c07c4e537928180",
"637dfebaafd1ede09faea7c24ef4d614dbcc8848fd1ba853079c404d5d7ebd96b6": "0x730fc5025c764ce34df352757e82f7b5c4df39a83630146080604052600080fdfea2646970667358221220294a270458705c32b9c1959e973fa74f24c6f0982002c9e0de0a7885a7c0609764736f6c63430007060033",
"b5d3afec102981bcb8988c79522510ed8adf17fa43933b5a2bf6a38da8fe1f77": "0xf872a02031b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d0b89056bc75e2d62d77012a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"cafd579e0f0a3838838bddd3ca0fc8c59219e3d5f71e8c34637362314c293f4e": "0xf851a08a3bd2aab1a4a29add591956a4832b3b2b54a22f1c449fca121abafd48f9ddd48080808080808080a0b5d3afec102981bcb8988c79522510ed8adf17fa43933b5a2bf6a38da8fe1f7780808080808080",
"7af22715b2ab9949de2cd231d9e3d9774cd8b50b448cf0180d5cb2260a1c1ea8": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a06931ca055d83f0ad2969e9a1ff81e5f11761ee7f6e4b41535c128f8960fcb479a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a0cafd579e0f0a3838838bddd3ca0fc8c59219e3d5f71e8c34637362314c293f4ea0fc728fc82ad2f1fdfed0e660f53c4390c5b50686e76ff5738d3654efe988cfc0a026679baa6f3f56da6b7ccbe9e0b9eb40e1ae55a71e7b47dd90aefbed87de2b2980a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba025cc0ac0e09772e4f36309962bbca92650c08d4e9934baf40566cb9bccdcc945a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a0818803cb9c5e6a30998408bc1781da8c7535f9f438610ca92c3c07c4e537928180",
"e4a85f507db9eb29c7c2200fb2d6b17a414122b92f6f9f5f479a5a36a8a752fc": "0xf869a0205a2695522f0b07c09c5d5b9cf11551a59d8d6dcb8fa6034e244272e2de6a6db846f8440180a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a07dfebaafd1ede09faea7c24ef4d614dbcc8848fd1ba853079c404d5d7ebd96b6",
"61499a2454d6784bc85719c9be6c1ef99faef3d1238c7c3de1e402a230b50d85": "0xf871a08a3bd2aab1a4a29add591956a4832b3b2b54a22f1c449fca121abafd48f9ddd48080808080808080a0b5d3afec102981bcb8988c79522510ed8adf17fa43933b5a2bf6a38da8fe1f77a0e4a85f507db9eb29c7c2200fb2d6b17a414122b92f6f9f5f479a5a36a8a752fc808080808080",
"807c203635d1e85d1ca2185be32763bef215cf26093466ecc62b08fd3b937fa2": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a06931ca055d83f0ad2969e9a1ff81e5f11761ee7f6e4b41535c128f8960fcb479a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a061499a2454d6784bc85719c9be6c1ef99faef3d1238c7c3de1e402a230b50d85a0fc728fc82ad2f1fdfed0e660f53c4390c5b50686e76ff5738d3654efe988cfc0a026679baa6f3f56da6b7ccbe9e0b9eb40e1ae55a71e7b47dd90aefbed87de2b2980a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba025cc0ac0e09772e4f36309962bbca92650c08d4e9934baf40566cb9bccdcc945a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a0818803cb9c5e6a30998408bc1781da8c7535f9f438610ca92c3c07c4e537928180",
"4c92f93dbacfe497157e26371b5813f22d0387cf8cee99f82834b913a421563e": "0xf86ca020f97556eedd035d0c1b80182155e5f5148b950fe7547a1253e2e74d703b365eb849f84780830bfc82a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"369ea2c259858b8e80b6f6eb52ef1b84d63267f02fcd2854917475f0d4ec1b3f": "0xf851808080a0d7801c18da1017dad44f80a3bf0366d08425f58aeee6e22031351139d839d7a7808080808080a04c92f93dbacfe497157e26371b5813f22d0387cf8cee99f82834b913a421563e808080808080",
"5bcdd71db6a42822ccc5373c038e4b7c8ae50c0b7abd31029c5b7ac5534eb6c0": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a06931ca055d83f0ad2969e9a1ff81e5f11761ee7f6e4b41535c128f8960fcb479a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a061499a2454d6784bc85719c9be6c1ef99faef3d1238c7c3de1e402a230b50d85a0fc728fc82ad2f1fdfed0e660f53c4390c5b50686e76ff5738d3654efe988cfc0a0369ea2c259858b8e80b6f6eb52ef1b84d63267f02fcd2854917475f0d4ec1b3f80a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba025cc0ac0e09772e4f36309962bbca92650c08d4e9934baf40566cb9bccdcc945a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a0818803cb9c5e6a30998408bc1781da8c7535f9f438610ca92c3c07c4e537928180",
"63534e9863b27dbea9bcd0970063f7e6a8b70c5729d7bccb18b3da3db40e358866": "0x73b27a31f1b0af2946b7f582768f03239b1ec07c2c30146080604052600080fdfea264697066735822122032a14e6e4a9207a4e13c69e9f2e944c9c461f3b0d50c2ef601731478e8e6128164736f6c63430007060033",
"abddf29085908a564c896d017c2299d0215740f2041c0c924c5a5769538e8f07": "0xf872a02031b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d0c89056bc75e2d62d53e08a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"079b9a0804224b7d18be791cf067afcdf7b7c2aebefe0af8c81e0dcf3b735f58": "0xf871a08a3bd2aab1a4a29add591956a4832b3b2b54a22f1c449fca121abafd48f9ddd48080808080808080a0abddf29085908a564c896d017c2299d0215740f2041c0c924c5a5769538e8f07a0e4a85f507db9eb29c7c2200fb2d6b17a414122b92f6f9f5f479a5a36a8a752fc808080808080",
"796189459a45b8e1e36de9eb03ed38ba214d0d93343605bc4d1df02a2a8675b2": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a06931ca055d83f0ad2969e9a1ff81e5f11761ee7f6e4b41535c128f8960fcb479a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a0079b9a0804224b7d18be791cf067afcdf7b7c2aebefe0af8c81e0dcf3b735f58a0fc728fc82ad2f1fdfed0e660f53c4390c5b50686e76ff5738d3654efe988cfc0a0369ea2c259858b8e80b6f6eb52ef1b84d63267f02fcd2854917475f0d4ec1b3f80a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba025cc0ac0e09772e4f36309962bbca92650c08d4e9934baf40566cb9bccdcc945a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a0818803cb9c5e6a30998408bc1781da8c7535f9f438610ca92c3c07c4e537928180",
"41bea09f96f77f5940463d9c9fa532ee2187469ae360f3edde3ed5cdb37cf323": "0xf869a020a64cb0f1024deae6b2ed2e5c095b847015c82936dc27285c82dbcf4924d235b846f8440180a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0ee64c5e0c54c75589f09637db059be8e53afb3444bd83bed93e46f74936c9f93",
"54b35c27b5367e60078ee908f265dfe37a9250f899247552ce7fc2cd52400008": "0xf869a020f67ce77d0078f6919483e4b30137f4cedcdaa50301583093d09a7481b9f3a3b846f8440180a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0534e9863b27dbea9bcd0970063f7e6a8b70c5729d7bccb18b3da3db40e358866",
"ea6387ecdcce6bd928e529b3ffbf96e66e070828abe90d9110cc072b5e2ffc21": "0xf85180808080808080a041bea09f96f77f5940463d9c9fa532ee2187469ae360f3edde3ed5cdb37cf3238080a054b35c27b5367e60078ee908f265dfe37a9250f899247552ce7fc2cd52400008808080808080",
"b4b1e7960d133ca74d4916de544c4af46efe1f845a9431249c6c98a664c94dd0": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0ea6387ecdcce6bd928e529b3ffbf96e66e070828abe90d9110cc072b5e2ffc21a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a0079b9a0804224b7d18be791cf067afcdf7b7c2aebefe0af8c81e0dcf3b735f58a0fc728fc82ad2f1fdfed0e660f53c4390c5b50686e76ff5738d3654efe988cfc0a0369ea2c259858b8e80b6f6eb52ef1b84d63267f02fcd2854917475f0d4ec1b3f80a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba025cc0ac0e09772e4f36309962bbca92650c08d4e9934baf40566cb9bccdcc945a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a0818803cb9c5e6a30998408bc1781da8c7535f9f438610ca92c3c07c4e537928180",
"efdf4cc0a854c6587517c784cde9f0be8dca111eeb9fbdc496fc7e7d23a86527": "0xf86ca02076d49790cfa3f0c5e6fc28e31afd97efcab3ccef5b50ddc3276fdd9f50c730b849f84780830bfc82a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"094cb08985a26a030b0612d2c88e3f15543ac8b44d3d1dbbe8390e435dd0617a": "0xf851808080808080a0fe5ee46d99dc13c6a38f59a81a976485954c1b2ce23e0e4f72db9159e0fc52648080808080a0efdf4cc0a854c6587517c784cde9f0be8dca111eeb9fbdc496fc7e7d23a8652780808080",
"f49bb04682c84dcbde5ffff5496b017dcdb0a4599ca44ce885ea8efeff7dfc33": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0ea6387ecdcce6bd928e529b3ffbf96e66e070828abe90d9110cc072b5e2ffc21a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a0079b9a0804224b7d18be791cf067afcdf7b7c2aebefe0af8c81e0dcf3b735f58a0094cb08985a26a030b0612d2c88e3f15543ac8b44d3d1dbbe8390e435dd0617aa0369ea2c259858b8e80b6f6eb52ef1b84d63267f02fcd2854917475f0d4ec1b3f80a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba025cc0ac0e09772e4f36309962bbca92650c08d4e9934baf40566cb9bccdcc945a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a0818803cb9c5e6a30998408bc1781da8c7535f9f438610ca92c3c07c4e537928180",
"630ef256e4a7fe094d603f75f262f94d79c074234c39c3592dbe64b3502bbc1ff2": "0x73cd6a42782d230d7c13a74ddec5dd140e55499df930146080604052600080fdfea26469706673582212201400694b2749dbcbb3d1efe0134e12fdeae93963b92e748cbea1fc3bd2349b7564736f6c63430007060033",
"23edd7d6d6336c8dba1aa73bd59de9548224516ccee706c6125606424409de72": "0xf872a02031b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d0d89056bc75e2d62d30c16a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"f7f2be4e46ba138d445949c9d7d9f93d83b22e904b31e232027c50392fa03fac": "0xf871a08a3bd2aab1a4a29add591956a4832b3b2b54a22f1c449fca121abafd48f9ddd48080808080808080a023edd7d6d6336c8dba1aa73bd59de9548224516ccee706c6125606424409de72a0e4a85f507db9eb29c7c2200fb2d6b17a414122b92f6f9f5f479a5a36a8a752fc808080808080",
"9fd32c9c69461827d3e6aa7597d5cfe7b2795c677be1046f997290fcead12908": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0ea6387ecdcce6bd928e529b3ffbf96e66e070828abe90d9110cc072b5e2ffc21a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a0f7f2be4e46ba138d445949c9d7d9f93d83b22e904b31e232027c50392fa03faca0094cb08985a26a030b0612d2c88e3f15543ac8b44d3d1dbbe8390e435dd0617aa0369ea2c259858b8e80b6f6eb52ef1b84d63267f02fcd2854917475f0d4ec1b3f80a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba025cc0ac0e09772e4f36309962bbca92650c08d4e9934baf40566cb9bccdcc945a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a0818803cb9c5e6a30998408bc1781da8c7535f9f438610ca92c3c07c4e537928180",
"2b3ec9e3123d39ebd33848446a1f104e969935ae41a22a22989cec279023052c": "0xf869a02029b5004fcd06c418d107ab1ce2a0c3d60430e7b6c74782bff78876ce68f15db846f8440180a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a00ef256e4a7fe094d603f75f262f94d79c074234c39c3592dbe64b3502bbc1ff2",
"87725cd992c1d7fe9ea054e92e268e073fa2d0ea9c2103404a232739f2ec65f2": "0xf87180a02b3ec9e3123d39ebd33848446a1f104e969935ae41a22a22989cec279023052c80a0d7801c18da1017dad44f80a3bf0366d08425f58aeee6e22031351139d839d7a7808080808080a04c92f93dbacfe497157e26371b5813f22d0387cf8cee99f82834b913a421563e808080808080",
"14f1b32e56b8cabe025fc452ce480d6e7ede9c035b09f7e775db5fa7e737066f": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0ea6387ecdcce6bd928e529b3ffbf96e66e070828abe90d9110cc072b5e2ffc21a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a0f7f2be4e46ba138d445949c9d7d9f93d83b22e904b31e232027c50392fa03faca0094cb08985a26a030b0612d2c88e3f15543ac8b44d3d1dbbe8390e435dd0617aa087725cd992c1d7fe9ea054e92e268e073fa2d0ea9c2103404a232739f2ec65f280a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba025cc0ac0e09772e4f36309962bbca92650c08d4e9934baf40566cb9bccdcc945a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a0818803cb9c5e6a30998408bc1781da8c7535f9f438610ca92c3c07c4e537928180",
"b25912274b9d48f8fd304ecbe265eca3a1310040cb5fdba2982012e19c966ffd": "0xf86ca020a40a9004224e397238839b469142c546607ee7a8b114ded86182fceae00e35b849f84780830680f1a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"23912011dedd83c0199c94a335d9fc606fc2c6c36973196e376c34da07a26ca3": "0xf87180a0cdeaf028a7a2894d4778d6c412bfb95e81b23c2e6044f4c5d6de2ed8a50f78f3808080808080808080a082f6e0ef9d3ec62e68c811432d52e6e0c907d604aed5a2a561d95e393f487d688080a0b25912274b9d48f8fd304ecbe265eca3a1310040cb5fdba2982012e19c966ffd8080",
"22bfc522cdac9d50437745432319dac46e0106beb1c528d6854950dfd1f7ed05": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0ea6387ecdcce6bd928e529b3ffbf96e66e070828abe90d9110cc072b5e2ffc21a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a0f7f2be4e46ba138d445949c9d7d9f93d83b22e904b31e232027c50392fa03faca0094cb08985a26a030b0612d2c88e3f15543ac8b44d3d1dbbe8390e435dd0617aa087725cd992c1d7fe9ea054e92e268e073fa2d0ea9c2103404a232739f2ec65f280a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba023912011dedd83c0199c94a335d9fc606fc2c6c36973196e376c34da07a26ca3a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a0818803cb9c5e6a30998408bc1781da8c7535f9f438610ca92c3c07c4e537928180",
"636eed0a2d1e93bf17a2862b948b08771fc5b242139a31e0e6a3571cdfe57f0947": "0x73ae036c65c649172b43ef7156b009c6221b596b8b30146080604052600080fdfea2646970667358221220a58571378c7b90a52a5929c5c3a8869c2406b5385e4fd0d8be9f6b2a112f261e64736f6c63430007060033",
"82fdf7b876113b2f67fb46017ff539aba40153c18fab13e0fd53ad66c30c8639": "0xf872a02031b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d0e89056bc75e2d62d0da0ca056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"4357505ab1bc0fc9ba9178a6afc628c0698276caf0f145bee051ef0f54094e58": "0xf871a08a3bd2aab1a4a29add591956a4832b3b2b54a22f1c449fca121abafd48f9ddd48080808080808080a082fdf7b876113b2f67fb46017ff539aba40153c18fab13e0fd53ad66c30c8639a0e4a85f507db9eb29c7c2200fb2d6b17a414122b92f6f9f5f479a5a36a8a752fc808080808080",
"6e3a3ef4a6894532592ab55dcecf2ae828b97b17afeed5594636bbcf2628d0f3": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0ea6387ecdcce6bd928e529b3ffbf96e66e070828abe90d9110cc072b5e2ffc21a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a04357505ab1bc0fc9ba9178a6afc628c0698276caf0f145bee051ef0f54094e58a0094cb08985a26a030b0612d2c88e3f15543ac8b44d3d1dbbe8390e435dd0617aa087725cd992c1d7fe9ea054e92e268e073fa2d0ea9c2103404a232739f2ec65f280a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba023912011dedd83c0199c94a335d9fc606fc2c6c36973196e376c34da07a26ca3a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda04872295f2b8644bf6fd277753896d0bf5f70295302c24449d67f4613e7e7785380a0818803cb9c5e6a30998408bc1781da8c7535f9f438610ca92c3c07c4e537928180",
"0777c4cdbea3c5a7088fbb25e574e3fc55d185c59a31461bf5e3430fa6fd1aef": "0xf869a0209e351db2bebd2414e21b52ebbac6edf51f1f3d82704f69082eac819a93a6a3b846f8440180a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a06eed0a2d1e93bf17a2862b948b08771fc5b242139a31e0e6a3571cdfe57f0947",
"e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd": "0xf891808080808080a07335fb1eee00a8ef767f52c1c4a2fecf01d1cb3235efb54fafb0ccd3984af745a00777c4cdbea3c5a7088fbb25e574e3fc55d185c59a31461bf5e3430fa6fd1aef80808080a0d8394fa4bbb65976fe11ee9de67bd6f0fb3fa3d7b36ee09f1421dae79b17b95f8080a09aceb391e41ce30a6ee2c0c568b850f9fde2e425b767f72e7f4d9cc76e8271ec80",
"7345d130ec695b3460a3d0c39220bfcecf335a076a32aed5aa3b001373db7acd": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0ea6387ecdcce6bd928e529b3ffbf96e66e070828abe90d9110cc072b5e2ffc21a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a04357505ab1bc0fc9ba9178a6afc628c0698276caf0f145bee051ef0f54094e58a0094cb08985a26a030b0612d2c88e3f15543ac8b44d3d1dbbe8390e435dd0617aa087725cd992c1d7fe9ea054e92e268e073fa2d0ea9c2103404a232739f2ec65f280a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba023912011dedd83c0199c94a335d9fc606fc2c6c36973196e376c34da07a26ca3a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a0818803cb9c5e6a30998408bc1781da8c7535f9f438610ca92c3c07c4e537928180",
"5ee533bc7e77e1e0ddce13029ffeac141f090213d8a5590f59187a76ad4690ce": "0xf86ca020f97556eedd035d0c1b80182155e5f5148b950fe7547a1253e2e74d703b365eb849f84780830d1587a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"3a8c6ba417f7731d9cb2f10c89af228ca60c7474c4f9d3e260a1f11e501bc663": "0xf87180a02b3ec9e3123d39ebd33848446a1f104e969935ae41a22a22989cec279023052c80a0d7801c18da1017dad44f80a3bf0366d08425f58aeee6e22031351139d839d7a7808080808080a05ee533bc7e77e1e0ddce13029ffeac141f090213d8a5590f59187a76ad4690ce808080808080",
"524ac8522ee0bd97e0ec3db80c124fdc5b9242864aabe10786eee29d71e7509c": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0ea6387ecdcce6bd928e529b3ffbf96e66e070828abe90d9110cc072b5e2ffc21a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a04357505ab1bc0fc9ba9178a6afc628c0698276caf0f145bee051ef0f54094e58a0094cb08985a26a030b0612d2c88e3f15543ac8b44d3d1dbbe8390e435dd0617aa03a8c6ba417f7731d9cb2f10c89af228ca60c7474c4f9d3e260a1f11e501bc66380a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba023912011dedd83c0199c94a335d9fc606fc2c6c36973196e376c34da07a26ca3a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a0818803cb9c5e6a30998408bc1781da8c7535f9f438610ca92c3c07c4e537928180",
"6354f395782a99c6f8a60b25175f550a0ba574b51142a9711f1a9510d0011de884": "0x739d83e140330758a8ffd07f8bd73e86ebca8a569230146080604052600080fdfea2646970667358221220f61cba66699be9bffbde93d3288770b9c6037988528648959df4a104910929ba64736f6c63430007060033",
"0780c753e68d44591a26d4b0970a3dd4906b0e62ae809099019dd8223e72fe2f": "0xf872a02031b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d0f89056bc75e2d62cea802a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"b0cc9e96f9d247527a4071d2ab58c66e5c306af53d02c009a67b0cf0c7a999c0": "0xf871a08a3bd2aab1a4a29add591956a4832b3b2b54a22f1c449fca121abafd48f9ddd48080808080808080a00780c753e68d44591a26d4b0970a3dd4906b0e62ae809099019dd8223e72fe2fa0e4a85f507db9eb29c7c2200fb2d6b17a414122b92f6f9f5f479a5a36a8a752fc808080808080",
"a0844906211bc63a6a6f190ae98630bd8a19f835f44055d138113fb4731ee509": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0ea6387ecdcce6bd928e529b3ffbf96e66e070828abe90d9110cc072b5e2ffc21a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a0b0cc9e96f9d247527a4071d2ab58c66e5c306af53d02c009a67b0cf0c7a999c0a0094cb08985a26a030b0612d2c88e3f15543ac8b44d3d1dbbe8390e435dd0617aa03a8c6ba417f7731d9cb2f10c89af228ca60c7474c4f9d3e260a1f11e501bc66380a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba023912011dedd83c0199c94a335d9fc606fc2c6c36973196e376c34da07a26ca3a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a0818803cb9c5e6a30998408bc1781da8c7535f9f438610ca92c3c07c4e537928180",
"357d5065937ccdcee634fb8c0a34de9f59ae4d2b85f14d99b38c32c4ca160141": "0xf869a0200e08efca1a3c8206381c0b71b098111de7d8a27e0a513f10fa610caf7aa811b846f8440180a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a054f395782a99c6f8a60b25175f550a0ba574b51142a9711f1a9510d0011de884",
"24edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad": "0xf89180a0357d5065937ccdcee634fb8c0a34de9f59ae4d2b85f14d99b38c32c4ca16014180808080a057ec08b8f040499409fb0220f538477790d4f010c4bb51a8dbae5da3537a86a480a0d08aba41a783ffb585f3f613f5069ed761bd189dfb65f98288dd987816a489438080808080a043762e902e0dc599df2ea5f077c050d72de85b096228b8936ef4a875b2bdc2978080",
"8dcdc8dacbde899413ee294cf10339cbc5c3a41558bbb4dae78306486129a242": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0ea6387ecdcce6bd928e529b3ffbf96e66e070828abe90d9110cc072b5e2ffc21a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a0b0cc9e96f9d247527a4071d2ab58c66e5c306af53d02c009a67b0cf0c7a999c0a0094cb08985a26a030b0612d2c88e3f15543ac8b44d3d1dbbe8390e435dd0617aa03a8c6ba417f7731d9cb2f10c89af228ca60c7474c4f9d3e260a1f11e501bc66380a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba023912011dedd83c0199c94a335d9fc606fc2c6c36973196e376c34da07a26ca3a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"654ff5f9e7cd83d4d4e21539ee90466335de9c0445fdf767b160f8c1f6d1525a": "0xf86ca02076d49790cfa3f0c5e6fc28e31afd97efcab3ccef5b50ddc3276fdd9f50c730b849f84780830d1587a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"1cfb0515acfa31e712d599daae03e03a593b26295e22d9bb4377339c0f904887": "0xf851808080808080a0fe5ee46d99dc13c6a38f59a81a976485954c1b2ce23e0e4f72db9159e0fc52648080808080a0654ff5f9e7cd83d4d4e21539ee90466335de9c0445fdf767b160f8c1f6d1525a80808080",
"7ad2167ee52e7c58424897c52813c773abfc5524a23e449cef8b4a292532885a": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0ea6387ecdcce6bd928e529b3ffbf96e66e070828abe90d9110cc072b5e2ffc21a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a0b0cc9e96f9d247527a4071d2ab58c66e5c306af53d02c009a67b0cf0c7a999c0a01cfb0515acfa31e712d599daae03e03a593b26295e22d9bb4377339c0f904887a03a8c6ba417f7731d9cb2f10c89af228ca60c7474c4f9d3e260a1f11e501bc66380a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba023912011dedd83c0199c94a335d9fc606fc2c6c36973196e376c34da07a26ca3a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"63c284d231e9efc1db3d32f2ca381b1fd9cd1170a6b4294ab1b06efd6e0b680357": "0x73d4fc541236927e2eaf8f27606bd7309c1fc2cbee30146080604052600080fdfea26469706673582212201c8e39a13ee4edec604be77115457d8c8c2b9d82b1d4908f69ba3c30e1c1755e64736f6c63430007060033",
"37b90997bcfd2bc0d1eab466459cf645ea29a62a120cdcae7adb763ddac69dbc": "0xf872a02031b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d1089056bc75e2d62cc75f8a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"8b8a6735c19a284fdbfe5c2306518717e54b95014a6815bb1138c77fd1b7db67": "0xf871a08a3bd2aab1a4a29add591956a4832b3b2b54a22f1c449fca121abafd48f9ddd48080808080808080a037b90997bcfd2bc0d1eab466459cf645ea29a62a120cdcae7adb763ddac69dbca0e4a85f507db9eb29c7c2200fb2d6b17a414122b92f6f9f5f479a5a36a8a752fc808080808080",
"5b6e4a41da0a81807652b025e26dd79addec7ff6de5215d2310a14ff353fb892": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0ea6387ecdcce6bd928e529b3ffbf96e66e070828abe90d9110cc072b5e2ffc21a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a08b8a6735c19a284fdbfe5c2306518717e54b95014a6815bb1138c77fd1b7db67a01cfb0515acfa31e712d599daae03e03a593b26295e22d9bb4377339c0f904887a03a8c6ba417f7731d9cb2f10c89af228ca60c7474c4f9d3e260a1f11e501bc66380a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba023912011dedd83c0199c94a335d9fc606fc2c6c36973196e376c34da07a26ca3a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"25b1f34995a68eb938bd69ba715257c0746d7792abd4c4c08c55b608ca9c5546": "0xf8719f391967aed668a4b27645ff40c444892d91bf5951b382995d4d4f6ee3a2ce03b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"5572232b4254911ffbf9edd68f67538c68b8161d199c8b2bad35737f86beb979": "0xf8689f36fe6af7f3d5dc319b4f5758926c7f3c51e1d9769af30bf784ea38c0a9f9c1b846f8440180a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c284d231e9efc1db3d32f2ca381b1fd9cd1170a6b4294ab1b06efd6e0b680357",
"401c5e6460aaf2eb84db4d62e8be9d779842420a8c4f550da0b903a0fa9fde5d": "0xf8518080808080a025b1f34995a68eb938bd69ba715257c0746d7792abd4c4c08c55b608ca9c5546808080a05572232b4254911ffbf9edd68f67538c68b8161d199c8b2bad35737f86beb97980808080808080",
"d1ab261bc5013d77b5abb4080c51bab74be39998dac97993c683ac28c85e991b": "0xf87180a0401c5e6460aaf2eb84db4d62e8be9d779842420a8c4f550da0b903a0fa9fde5d808080808080808080a082f6e0ef9d3ec62e68c811432d52e6e0c907d604aed5a2a561d95e393f487d688080a0b25912274b9d48f8fd304ecbe265eca3a1310040cb5fdba2982012e19c966ffd8080",
"e3e2304afb0ef6734f5886c012ed3d43313c3441489d2f09bfb22fdeb7a729b7": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0ea6387ecdcce6bd928e529b3ffbf96e66e070828abe90d9110cc072b5e2ffc21a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a08b8a6735c19a284fdbfe5c2306518717e54b95014a6815bb1138c77fd1b7db67a01cfb0515acfa31e712d599daae03e03a593b26295e22d9bb4377339c0f904887a03a8c6ba417f7731d9cb2f10c89af228ca60c7474c4f9d3e260a1f11e501bc66380a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba0d1ab261bc5013d77b5abb4080c51bab74be39998dac97993c683ac28c85e991ba069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"af920e7c9f688af4423062cedc86a783aa647481f613b96422f29a638bee3527": "0xf86ca020a40a9004224e397238839b469142c546607ee7a8b114ded86182fceae00e35b849f84780830799f6a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"6955b194b927e767cfb084f17669bc3f22f0a334687806ef3bdcc7f7e1d144b5": "0xf87180a0401c5e6460aaf2eb84db4d62e8be9d779842420a8c4f550da0b903a0fa9fde5d808080808080808080a082f6e0ef9d3ec62e68c811432d52e6e0c907d604aed5a2a561d95e393f487d688080a0af920e7c9f688af4423062cedc86a783aa647481f613b96422f29a638bee35278080",
"a500738a2f74795ee93a4b37a922a94a7c8353bc59189dd194cd2c0a22ce11a8": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0ea6387ecdcce6bd928e529b3ffbf96e66e070828abe90d9110cc072b5e2ffc21a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a08b8a6735c19a284fdbfe5c2306518717e54b95014a6815bb1138c77fd1b7db67a01cfb0515acfa31e712d599daae03e03a593b26295e22d9bb4377339c0f904887a03a8c6ba417f7731d9cb2f10c89af228ca60c7474c4f9d3e260a1f11e501bc66380a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba06955b194b927e767cfb084f17669bc3f22f0a334687806ef3bdcc7f7e1d144b5a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"6381c7036b15146f367f04bf9bf36896c5f4d793c5fdd02987ed96b6da4a28e283": "0x735fd6eb55d12e759a21c09ef703fe0cba1dc9d88d30146080604052600080fdfea26469706673582212207f93b4724b2fead947e5a79982abacec3f03d5e0d166bb321562d2eaa26544b864736f6c63430007060033",
"653aa983c500047e7d0c518e0a2cd667d7e2b009345cfa30f8b025b9b4a55b6d": "0xf872a02031b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d1189056bc75e2d62ca43eea056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"1c607712365f0b3bd7073451026172d7185d1e8cf2406b6a6d1a4329606bacea": "0xf871a08a3bd2aab1a4a29add591956a4832b3b2b54a22f1c449fca121abafd48f9ddd48080808080808080a0653aa983c500047e7d0c518e0a2cd667d7e2b009345cfa30f8b025b9b4a55b6da0e4a85f507db9eb29c7c2200fb2d6b17a414122b92f6f9f5f479a5a36a8a752fc808080808080",
"af57fbf8f99b7388d9305f800cc0adacfddaf5fddd285b80436990c408ed01ff": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0ea6387ecdcce6bd928e529b3ffbf96e66e070828abe90d9110cc072b5e2ffc21a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a01c607712365f0b3bd7073451026172d7185d1e8cf2406b6a6d1a4329606baceaa01cfb0515acfa31e712d599daae03e03a593b26295e22d9bb4377339c0f904887a03a8c6ba417f7731d9cb2f10c89af228ca60c7474c4f9d3e260a1f11e501bc66380a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba06955b194b927e767cfb084f17669bc3f22f0a334687806ef3bdcc7f7e1d144b5a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"a5f975efd0f53427896b24c02304c4c365c47b33c5f9923c7145327f2e05aed7": "0xf869a0209db5b3c3994a0b49a1c647d74b6b155fb132d594fe502170f7b1c95090669fb846f8440180a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a081c7036b15146f367f04bf9bf36896c5f4d793c5fdd02987ed96b6da4a28e283",
"822ad15b83ed5104c4f80d4dcb0671d6178a736ef942ca89d9d4e72ed90725f3": "0xf891808080a0a5f975efd0f53427896b24c02304c4c365c47b33c5f9923c7145327f2e05aed7a035196d12c07e2405a02d095f74880568965618e95b50e64e8690594aa6bb5ea280808080a0021eda8d86f1724d84a155e5e0227744e3fb2f570089a70ae65750d24410fe10808080a00932e0165ad0cabdfe9d8fb6a70150033d789cd07caaf499c8a37141495499c3808080",
"58447b177c6b4cc45ed0aa8aef39b09404eeeb93627296e0d13b1fdb28a99ed2": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0ea6387ecdcce6bd928e529b3ffbf96e66e070828abe90d9110cc072b5e2ffc21a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a01c607712365f0b3bd7073451026172d7185d1e8cf2406b6a6d1a4329606baceaa01cfb0515acfa31e712d599daae03e03a593b26295e22d9bb4377339c0f904887a03a8c6ba417f7731d9cb2f10c89af228ca60c7474c4f9d3e260a1f11e501bc66380a0822ad15b83ed5104c4f80d4dcb0671d6178a736ef942ca89d9d4e72ed90725f3a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba06955b194b927e767cfb084f17669bc3f22f0a334687806ef3bdcc7f7e1d144b5a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"28b210a13054fb2f31899a9a28a414dfdf4db32cf47110fb73e801b7f4452924": "0xf86ca020f97556eedd035d0c1b80182155e5f5148b950fe7547a1253e2e74d703b365eb849f84780830e2e8ca056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"9eaf189ddf98d82249e0e898aef34be04433c147081f2c346b99cf779341b950": "0xf87180a02b3ec9e3123d39ebd33848446a1f104e969935ae41a22a22989cec279023052c80a0d7801c18da1017dad44f80a3bf0366d08425f58aeee6e22031351139d839d7a7808080808080a028b210a13054fb2f31899a9a28a414dfdf4db32cf47110fb73e801b7f4452924808080808080",
"72ce003fb241715f2a114c172419393dfe19c3d44a2735e5f80bee34eb4c6ea0": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0ea6387ecdcce6bd928e529b3ffbf96e66e070828abe90d9110cc072b5e2ffc21a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a01c607712365f0b3bd7073451026172d7185d1e8cf2406b6a6d1a4329606baceaa01cfb0515acfa31e712d599daae03e03a593b26295e22d9bb4377339c0f904887a09eaf189ddf98d82249e0e898aef34be04433c147081f2c346b99cf779341b95080a0822ad15b83ed5104c4f80d4dcb0671d6178a736ef942ca89d9d4e72ed90725f3a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba06955b194b927e767cfb084f17669bc3f22f0a334687806ef3bdcc7f7e1d144b5a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"63d8dce488b9d833e1580d9c3ab53db82f8110c14699829c6b1174bcb5aca2d155": "0x737b96af9bd211cbf6ba5b0dd53aa61dc5806b6ace30146080604052600080fdfea26469706673582212208a0e00cdfb9351afdd24fb392dd77a237795b97d3a326a39dd9d97e4ab377ef564736f6c63430007060033",
"ddf87fc56dd57b3cadab6a882074330b44e636fe120190c59158e60edb045d6f": "0xf872a02031b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d1289056bc75e2d62c811fca056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"b900fd204903b64aca0920ed526ca5a9c05ce88b038bf9a5dc7193783c3800e2": "0xf871a08a3bd2aab1a4a29add591956a4832b3b2b54a22f1c449fca121abafd48f9ddd48080808080808080a0ddf87fc56dd57b3cadab6a882074330b44e636fe120190c59158e60edb045d6fa0e4a85f507db9eb29c7c2200fb2d6b17a414122b92f6f9f5f479a5a36a8a752fc808080808080",
"d3593872bb5a503565844b93b90577d35e47ef60128f75c183267b1baa516823": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0ea6387ecdcce6bd928e529b3ffbf96e66e070828abe90d9110cc072b5e2ffc21a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a0b900fd204903b64aca0920ed526ca5a9c05ce88b038bf9a5dc7193783c3800e2a01cfb0515acfa31e712d599daae03e03a593b26295e22d9bb4377339c0f904887a09eaf189ddf98d82249e0e898aef34be04433c147081f2c346b99cf779341b95080a0822ad15b83ed5104c4f80d4dcb0671d6178a736ef942ca89d9d4e72ed90725f3a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba06955b194b927e767cfb084f17669bc3f22f0a334687806ef3bdcc7f7e1d144b5a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"44f4e9f85a1436adae8b769f3c19b974a3f13dad10e37c8329bf36874c676607": "0xf869a02065a705a769c087f04cbb9dfe0664a833892798e697f8a81aa20fc419a3c51eb846f8440180a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0d8dce488b9d833e1580d9c3ab53db82f8110c14699829c6b1174bcb5aca2d155",
"5b6a38d90a422d23d6d519f51b83b7e17788b8b2cbd28c4dfa31b1250d431a41": "0xf871808080808080a0fe5ee46d99dc13c6a38f59a81a976485954c1b2ce23e0e4f72db9159e0fc52648080808080a0654ff5f9e7cd83d4d4e21539ee90466335de9c0445fdf767b160f8c1f6d1525a80a044f4e9f85a1436adae8b769f3c19b974a3f13dad10e37c8329bf36874c6766078080",
"b145aa4af2a1c5fdbf9039eb730d10c4427b3ec2c69bc269c763cd93943e6c0e": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0ea6387ecdcce6bd928e529b3ffbf96e66e070828abe90d9110cc072b5e2ffc21a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a0b900fd204903b64aca0920ed526ca5a9c05ce88b038bf9a5dc7193783c3800e2a05b6a38d90a422d23d6d519f51b83b7e17788b8b2cbd28c4dfa31b1250d431a41a09eaf189ddf98d82249e0e898aef34be04433c147081f2c346b99cf779341b95080a0822ad15b83ed5104c4f80d4dcb0671d6178a736ef942ca89d9d4e72ed90725f3a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba06955b194b927e767cfb084f17669bc3f22f0a334687806ef3bdcc7f7e1d144b5a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"fc9e6290240f0a59bc7c0098541370029465a590a1ede430c0ad9ada5cc55987": "0xf86ca02076d49790cfa3f0c5e6fc28e31afd97efcab3ccef5b50ddc3276fdd9f50c730b849f84780830e2e80a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"df59d3891131be608a3e56bb77a90867bfff9db6cd664c43314eafe6199debe7": "0xf871808080808080a0fe5ee46d99dc13c6a38f59a81a976485954c1b2ce23e0e4f72db9159e0fc52648080808080a0fc9e6290240f0a59bc7c0098541370029465a590a1ede430c0ad9ada5cc5598780a044f4e9f85a1436adae8b769f3c19b974a3f13dad10e37c8329bf36874c6766078080",
"ee9f4a422f34d3268ea797f17b404500b51c20ece15b0ab9153e2d89ba49a7dc": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0ea6387ecdcce6bd928e529b3ffbf96e66e070828abe90d9110cc072b5e2ffc21a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a0b900fd204903b64aca0920ed526ca5a9c05ce88b038bf9a5dc7193783c3800e2a0df59d3891131be608a3e56bb77a90867bfff9db6cd664c43314eafe6199debe7a09eaf189ddf98d82249e0e898aef34be04433c147081f2c346b99cf779341b95080a0822ad15b83ed5104c4f80d4dcb0671d6178a736ef942ca89d9d4e72ed90725f3a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba06955b194b927e767cfb084f17669bc3f22f0a334687806ef3bdcc7f7e1d144b5a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"63a40b37951d689dd022f318366527be78859598051a090c6ff0c47d206c4246af": "0x733328358128832a260c76a4141e19e2a943cd4b6d30146080604052600080fdfea26469706673582212204d0e75b95328c60174cce4395dbf546ea52f07fad93169698a8b669374fd9fbb64736f6c63430007060033",
"97baf5c767fd85752c64fe96145f508d859713fdff369e18bbdca325df1d2ea3": "0xf872a02031b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d1389056bc75e2d62c5dff2a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"c3591559abe9f63664c90e6cc23ecefb5e033c342151502f843f309eb6d20750": "0xf871a08a3bd2aab1a4a29add591956a4832b3b2b54a22f1c449fca121abafd48f9ddd48080808080808080a097baf5c767fd85752c64fe96145f508d859713fdff369e18bbdca325df1d2ea3a0e4a85f507db9eb29c7c2200fb2d6b17a414122b92f6f9f5f479a5a36a8a752fc808080808080",
"b826d6e4ec71f20d75073f56415b0a25b5666dfd3d8eee59cad8439544359d17": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0ea6387ecdcce6bd928e529b3ffbf96e66e070828abe90d9110cc072b5e2ffc21a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a0c3591559abe9f63664c90e6cc23ecefb5e033c342151502f843f309eb6d20750a0df59d3891131be608a3e56bb77a90867bfff9db6cd664c43314eafe6199debe7a09eaf189ddf98d82249e0e898aef34be04433c147081f2c346b99cf779341b95080a0822ad15b83ed5104c4f80d4dcb0671d6178a736ef942ca89d9d4e72ed90725f3a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba06955b194b927e767cfb084f17669bc3f22f0a334687806ef3bdcc7f7e1d144b5a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"947ebbe2f51a6edcc700a55e4c441d641a95179338520e60e4d4f1af56067c5d": "0xf869a020416a01c3d5f75d92320b9b4f982cf794a9e85fcbd53ce03db7ca51ac24dd35b846f8440180a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0a40b37951d689dd022f318366527be78859598051a090c6ff0c47d206c4246af",
"1c230e085931b88a9c43db848f32f7b24442c932984bafdc86d1e648e0de0f8c": "0xf87180808080808080808080a048e73baa24091198f9b69f9c7d27ba256fc19dddebf64448a7a0fd3df28d727d808080a0947ebbe2f51a6edcc700a55e4c441d641a95179338520e60e4d4f1af56067c5da0dc3d58bdcff5ea646a823bebe53ec4ab457ca425e952485f0da477b44fd7bacd80",
"9d4d8c53952f9baf002795be4b7791eb7bb473da2a7a6173b15ca93fe8b7a9d9": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0ea6387ecdcce6bd928e529b3ffbf96e66e070828abe90d9110cc072b5e2ffc21a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a0c3591559abe9f63664c90e6cc23ecefb5e033c342151502f843f309eb6d20750a0df59d3891131be608a3e56bb77a90867bfff9db6cd664c43314eafe6199debe7a09eaf189ddf98d82249e0e898aef34be04433c147081f2c346b99cf779341b95080a0822ad15b83ed5104c4f80d4dcb0671d6178a736ef942ca89d9d4e72ed90725f3a01c230e085931b88a9c43db848f32f7b24442c932984bafdc86d1e648e0de0f8ca06955b194b927e767cfb084f17669bc3f22f0a334687806ef3bdcc7f7e1d144b5a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"641bb792eae59eeb6d1017a0c3594fd40e9113f8de91561dfa6c3750eb3820a6": "0xf86ca020a40a9004224e397238839b469142c546607ee7a8b114ded86182fceae00e35b849f847808308b2fba056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"eae699b08720b0cfaf0905e1e2d56dec9ab5a0ed22e444f13709d1bc0b16a17a": "0xf87180a0401c5e6460aaf2eb84db4d62e8be9d779842420a8c4f550da0b903a0fa9fde5d808080808080808080a082f6e0ef9d3ec62e68c811432d52e6e0c907d604aed5a2a561d95e393f487d688080a0641bb792eae59eeb6d1017a0c3594fd40e9113f8de91561dfa6c3750eb3820a68080",
"8285c6210f6cc07d49818e603990a0d2b57d76dee5b07f2952decca316eb28f8": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0ea6387ecdcce6bd928e529b3ffbf96e66e070828abe90d9110cc072b5e2ffc21a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a0c3591559abe9f63664c90e6cc23ecefb5e033c342151502f843f309eb6d20750a0df59d3891131be608a3e56bb77a90867bfff9db6cd664c43314eafe6199debe7a09eaf189ddf98d82249e0e898aef34be04433c147081f2c346b99cf779341b95080a0822ad15b83ed5104c4f80d4dcb0671d6178a736ef942ca89d9d4e72ed90725f3a01c230e085931b88a9c43db848f32f7b24442c932984bafdc86d1e648e0de0f8ca0eae699b08720b0cfaf0905e1e2d56dec9ab5a0ed22e444f13709d1bc0b16a17aa069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"63950583ab6fa8ae333d88ce590fbb19b2880dc859b5346de3e98ee98ea1193eb6": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80632d711e0c1461003b578063f94ac90e14610069575b600080fd5b6100676004803603602081101561005157600080fd5b8101908080359060200190929190505050610097565b005b6100956004803603602081101561007f57600080fd5b81019080803590602001909291905050506100d0565b005b60006100a282610111565b905060008160ff1660020a831614156100b757fe5b600060018260ff1660020a038316146100cc57fe5b5050565b60006100db82610238565b90508060ff1660020a8210156100ed57fe5b60ff8160ff16148061010757506001810160ff1660020a82105b61010d57fe5b5050565b600080821161011f57600080fd5b60ff905060006fffffffffffffffffffffffffffffffff80168316111561014b57608081039050610153565b608082901c91505b600067ffffffffffffffff8016831611156101735760408103905061017b565b604082901c91505b600063ffffffff8016831611156101975760208103905061019f565b602082901c91505b600061ffff8016831611156101b9576010810390506101c1565b601082901c91505b600060ff8016831611156101da576008810390506101e2565b600882901c91505b6000600f831611156101f957600481039050610201565b600482901c91505b600060038316111561021857600281039050610220565b600282901c91505b6000600183161115610233576001810390505b919050565b600080821161024657600080fd5b700100000000000000000000000000000000821061026c57608082901c91506080810190505b68010000000000000000821061028a57604082901c91506040810190505b64010000000082106102a457602082901c91506020810190505b6201000082106102bc57601082901c91506010810190505b61010082106102d357600882901c91506008810190505b601082106102e957600482901c91506004810190505b600482106102ff57600282901c91506002810190505b6002821061030e576001810190505b91905056fea26469706673582212200031f599ec4e0d47ec90110e56ba2e93facd69ecd97097b025ae5dbd2d97a7e764736f6c63430007060033",
"57fb17ff2d13b4138af813cf4ca32060c6bcd80943a0211693f30b3324573033": "0xf872a02031b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d1489056bc75e2d62beb7cea056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"76d3ac16d5fad395af11ffd61cd10acc07bf972b9e9ab6d106469d61b8a04226": "0xf871a08a3bd2aab1a4a29add591956a4832b3b2b54a22f1c449fca121abafd48f9ddd48080808080808080a057fb17ff2d13b4138af813cf4ca32060c6bcd80943a0211693f30b3324573033a0e4a85f507db9eb29c7c2200fb2d6b17a414122b92f6f9f5f479a5a36a8a752fc808080808080",
"3f340de4678b1b3f88dc4783929c639f563eb7050b71ede7597aa3bf848bdf60": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0ea6387ecdcce6bd928e529b3ffbf96e66e070828abe90d9110cc072b5e2ffc21a0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a076d3ac16d5fad395af11ffd61cd10acc07bf972b9e9ab6d106469d61b8a04226a0df59d3891131be608a3e56bb77a90867bfff9db6cd664c43314eafe6199debe7a09eaf189ddf98d82249e0e898aef34be04433c147081f2c346b99cf779341b95080a0822ad15b83ed5104c4f80d4dcb0671d6178a736ef942ca89d9d4e72ed90725f3a01c230e085931b88a9c43db848f32f7b24442c932984bafdc86d1e648e0de0f8ca0eae699b08720b0cfaf0905e1e2d56dec9ab5a0ed22e444f13709d1bc0b16a17aa069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"01708f63857bd9890aaa3cc62c43a519812be5835f333b0eb2fe0f6107fa73bb": "0xf869a020e64976b7d243e5dea11ef51c111b53ef55ea8c98736c081d5ab179841e3394b846f8440180a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0950583ab6fa8ae333d88ce590fbb19b2880dc859b5346de3e98ee98ea1193eb6",
"be9145cf5b2f4ab1dadf4cd984c3d27c52c6bae34faf574f620fbeb7df35902e": "0xf87180808080808080a041bea09f96f77f5940463d9c9fa532ee2187469ae360f3edde3ed5cdb37cf323a001708f63857bd9890aaa3cc62c43a519812be5835f333b0eb2fe0f6107fa73bb80a054b35c27b5367e60078ee908f265dfe37a9250f899247552ce7fc2cd52400008808080808080",
"806792cdbde0b6e7d7c70cbb935bae260a4e7785d7fbd1165dd4ee50dd122862": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0be9145cf5b2f4ab1dadf4cd984c3d27c52c6bae34faf574f620fbeb7df35902ea0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a076d3ac16d5fad395af11ffd61cd10acc07bf972b9e9ab6d106469d61b8a04226a0df59d3891131be608a3e56bb77a90867bfff9db6cd664c43314eafe6199debe7a09eaf189ddf98d82249e0e898aef34be04433c147081f2c346b99cf779341b95080a0822ad15b83ed5104c4f80d4dcb0671d6178a736ef942ca89d9d4e72ed90725f3a01c230e085931b88a9c43db848f32f7b24442c932984bafdc86d1e648e0de0f8ca0eae699b08720b0cfaf0905e1e2d56dec9ab5a0ed22e444f13709d1bc0b16a17aa069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"775d0236f60a7d08791b56bd875c70362144eaf97190bbde06268d21405f7434": "0xf86ca020f97556eedd035d0c1b80182155e5f5148b950fe7547a1253e2e74d703b365eb849f847808311c29ea056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"11d2904c2f6317077a852c212bd0bd0403d0faf5b36b7633cd730344e8c2f84f": "0xf87180a02b3ec9e3123d39ebd33848446a1f104e969935ae41a22a22989cec279023052c80a0d7801c18da1017dad44f80a3bf0366d08425f58aeee6e22031351139d839d7a7808080808080a0775d0236f60a7d08791b56bd875c70362144eaf97190bbde06268d21405f7434808080808080",
"e842c82a2d1d915fb1aa428a796d648c32c498f43d1de6d5721cbf45db5eaee5": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0be9145cf5b2f4ab1dadf4cd984c3d27c52c6bae34faf574f620fbeb7df35902ea0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a076d3ac16d5fad395af11ffd61cd10acc07bf972b9e9ab6d106469d61b8a04226a0df59d3891131be608a3e56bb77a90867bfff9db6cd664c43314eafe6199debe7a011d2904c2f6317077a852c212bd0bd0403d0faf5b36b7633cd730344e8c2f84f80a0822ad15b83ed5104c4f80d4dcb0671d6178a736ef942ca89d9d4e72ed90725f3a01c230e085931b88a9c43db848f32f7b24442c932984bafdc86d1e648e0de0f8ca0eae699b08720b0cfaf0905e1e2d56dec9ab5a0ed22e444f13709d1bc0b16a17aa069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"63d06fbf9f2ff1681b02d2c53196212072fbed1fe45e55a29472b32199b06ea63b": "0x608060405234801561001057600080fd5b506004361061004b5760003560e01c806246b777146100505780636b83cf2614610092578063d230d23f146100d4578063e6bcbc6514610119575b600080fd5b61007c6004803603602081101561006657600080fd5b810190808035906020019092919050505061015e565b6040518082815260200191505060405180910390f35b6100be600480360360208110156100a857600080fd5b8101908080359060200190929190505050610179565b6040518082815260200191505060405180910390f35b610100600480360360208110156100ea57600080fd5b8101908080359060200190929190505050610194565b604051808260ff16815260200191505060405180910390f35b6101456004803603602081101561012f57600080fd5b81019080803590602001909291905050506101a6565b604051808260ff16815260200191505060405180910390f35b6000805a905061016d836101b8565b505a8103915050919050565b6000805a905061018883610293565b505a8103915050919050565b600061019f82610293565b9050919050565b60006101b1826101b8565b9050919050565b60008082116101c657600080fd5b70010000000000000000000000000000000082106101ec57608082901c91506080810190505b68010000000000000000821061020a57604082901c91506040810190505b640100000000821061022457602082901c91506020810190505b62010000821061023c57601082901c91506010810190505b610100821061025357600882901c91506008810190505b6010821061026957600482901c91506004810190505b6004821061027f57600282901c91506002810190505b6002821061028e576001810190505b919050565b60008082116102a157600080fd5b60ff905060006fffffffffffffffffffffffffffffffff8016831611156102cd576080810390506102d5565b608082901c91505b600067ffffffffffffffff8016831611156102f5576040810390506102fd565b604082901c91505b600063ffffffff80168316111561031957602081039050610321565b602082901c91505b600061ffff80168316111561033b57601081039050610343565b601082901c91505b600060ff80168316111561035c57600881039050610364565b600882901c91505b6000600f8316111561037b57600481039050610383565b600482901c91505b600060038316111561039a576002810390506103a2565b600282901c91505b60006001831611156103b5576001810390505b91905056fea2646970667358221220606d08d97d7451ea41838153d4168f459eef3c416120d734324e7cdbeaeaff4b64736f6c63430007060033",
"be0cb4ba694ea63a28a4f402df1ddcf47fb806c0f1e214bd356a306bf3f4b9a2": "0xf872a02031b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d1589056bc75e2d62b67510a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"8e5ba479cb2c08e97f564f16f8409831a18846f5afc5ae96b054c3ef012653bf": "0xf871a08a3bd2aab1a4a29add591956a4832b3b2b54a22f1c449fca121abafd48f9ddd48080808080808080a0be0cb4ba694ea63a28a4f402df1ddcf47fb806c0f1e214bd356a306bf3f4b9a2a0e4a85f507db9eb29c7c2200fb2d6b17a414122b92f6f9f5f479a5a36a8a752fc808080808080",
"5938fb81fe6db4216478ba12fa9f45ca201468070a57f4ce340d32cf00645eac": "0xf901b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da531580a0be9145cf5b2f4ab1dadf4cd984c3d27c52c6bae34faf574f620fbeb7df35902ea0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a08e5ba479cb2c08e97f564f16f8409831a18846f5afc5ae96b054c3ef012653bfa0df59d3891131be608a3e56bb77a90867bfff9db6cd664c43314eafe6199debe7a011d2904c2f6317077a852c212bd0bd0403d0faf5b36b7633cd730344e8c2f84f80a0822ad15b83ed5104c4f80d4dcb0671d6178a736ef942ca89d9d4e72ed90725f3a01c230e085931b88a9c43db848f32f7b24442c932984bafdc86d1e648e0de0f8ca0eae699b08720b0cfaf0905e1e2d56dec9ab5a0ed22e444f13709d1bc0b16a17aa069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"18bf8989600f7cb5f2db11750480e923a3c1fc26f1e9b98549f3c9bb05dc704a": "0xf869a0342f99e7a18e4c7f444ffb2f204293656279fd9ec5b76aab00b0019469d3d76eb846f8440180a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0d06fbf9f2ff1681b02d2c53196212072fbed1fe45e55a29472b32199b06ea63b",
"700cfd111f0021559c7e7c707aae4f6f7d15017b60b900fcb2e6a6e4f7737aef": "0xf901d1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315a018bf8989600f7cb5f2db11750480e923a3c1fc26f1e9b98549f3c9bb05dc704aa0be9145cf5b2f4ab1dadf4cd984c3d27c52c6bae34faf574f620fbeb7df35902ea0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a08e5ba479cb2c08e97f564f16f8409831a18846f5afc5ae96b054c3ef012653bfa0df59d3891131be608a3e56bb77a90867bfff9db6cd664c43314eafe6199debe7a011d2904c2f6317077a852c212bd0bd0403d0faf5b36b7633cd730344e8c2f84f80a0822ad15b83ed5104c4f80d4dcb0671d6178a736ef942ca89d9d4e72ed90725f3a01c230e085931b88a9c43db848f32f7b24442c932984bafdc86d1e648e0de0f8ca0eae699b08720b0cfaf0905e1e2d56dec9ab5a0ed22e444f13709d1bc0b16a17aa069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"8199e4569a9387cb9b4ec69ac45c4aef94434113454dcf1c683a6038fc2b602a": "0xf86ca02076d49790cfa3f0c5e6fc28e31afd97efcab3ccef5b50ddc3276fdd9f50c730b849f8478083124fdfa056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"2ce574dbdeeff2677fe5e48842d04869154a649b50618099344c074123b77e74": "0xf871808080808080a0fe5ee46d99dc13c6a38f59a81a976485954c1b2ce23e0e4f72db9159e0fc52648080808080a08199e4569a9387cb9b4ec69ac45c4aef94434113454dcf1c683a6038fc2b602a80a044f4e9f85a1436adae8b769f3c19b974a3f13dad10e37c8329bf36874c6766078080",
"c0603154847da63985f5a9c3d25dbc1f1046a174831142baff64f22ad3798df2": "0xf901d1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315a018bf8989600f7cb5f2db11750480e923a3c1fc26f1e9b98549f3c9bb05dc704aa0be9145cf5b2f4ab1dadf4cd984c3d27c52c6bae34faf574f620fbeb7df35902ea0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a08e5ba479cb2c08e97f564f16f8409831a18846f5afc5ae96b054c3ef012653bfa02ce574dbdeeff2677fe5e48842d04869154a649b50618099344c074123b77e74a011d2904c2f6317077a852c212bd0bd0403d0faf5b36b7633cd730344e8c2f84f80a0822ad15b83ed5104c4f80d4dcb0671d6178a736ef942ca89d9d4e72ed90725f3a01c230e085931b88a9c43db848f32f7b24442c932984bafdc86d1e648e0de0f8ca0eae699b08720b0cfaf0905e1e2d56dec9ab5a0ed22e444f13709d1bc0b16a17aa069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"63e6ec9180bda8da6f42986f43c1ea183b9ac08597afbb18d2a96c4f285e2d2c46": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063695363a31461004657806379eee48714610088578063bf08c391146100ca575b600080fd5b6100866004803603606081101561005c57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061010c565b005b6100c86004803603606081101561009e57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061016c565b005b61010a600480360360608110156100e057600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506101fd565b005b6000811161011957600080fd5b600061012684848461028e565b905060006101358585856102ec565b90506000838061014157fe5b858709111561015b5760018183031461015657fe5b610165565b80821461016457fe5b5b5050505050565b6000811161017957600080fd5b600061018684848461028e565b905060008414806101975750600083145b156101ac57600081146101a657fe5b506101f8565b60006101b98284866102ec565b905060006101c88385886102ec565b9050858210156101d457fe5b848110156101de57fe5b83868303106101e957fe5b83858203106101f457fe5b5050505b505050565b6000811161020a57600080fd5b60006102178484846102ec565b905060008414806102285750600083145b1561023d576000811461023757fe5b50610289565b600061024a8284866102ec565b905060006102598385886102ec565b90508582111561026557fe5b8481111561026f57fe5b838287031061027a57fe5b838186031061028557fe5b5050505b505050565b600061029b8484846102ec565b9050600082806102a757fe5b84860911156102e5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81106102dc57600080fd5b80806001019150505b9392505050565b600080600080198587098587029250828110838203039150506000811415610327576000841161031b57600080fd5b838204925050506103bf565b80841161033357600080fd5b600084868809905082811182039150808303925060008586600003169050808604955080840493506001818260000304019050808302841793506000600287600302189050808702600203810290508087026002038102905080870260020381029050808702600203810290508087026002038102905080870260020381029050808502955050505050505b939250505056fea2646970667358221220f630b3605be0de5e623362e1eca035a8f6cfe0e94bcba5ea55f170ccfbb36bee64736f6c63430007060033",
"73a80a59ca02ef307ae5f2516e381df3ee4b72d1db3723cbdbd0a82a99bd1758": "0xf872a02031b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d1689056bc75e2d62ae1d0aa056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"d91555e49efc90de69ef057104a73116eba1e63f1477fd08550d5fd099d26225": "0xf871a08a3bd2aab1a4a29add591956a4832b3b2b54a22f1c449fca121abafd48f9ddd48080808080808080a073a80a59ca02ef307ae5f2516e381df3ee4b72d1db3723cbdbd0a82a99bd1758a0e4a85f507db9eb29c7c2200fb2d6b17a414122b92f6f9f5f479a5a36a8a752fc808080808080",
"7203aa9fae6ecac9de6f2ce9e219a774d3a4ddb4df00a8104f18cba9d373f5ff": "0xf901d1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315a018bf8989600f7cb5f2db11750480e923a3c1fc26f1e9b98549f3c9bb05dc704aa0be9145cf5b2f4ab1dadf4cd984c3d27c52c6bae34faf574f620fbeb7df35902ea0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a0d91555e49efc90de69ef057104a73116eba1e63f1477fd08550d5fd099d26225a02ce574dbdeeff2677fe5e48842d04869154a649b50618099344c074123b77e74a011d2904c2f6317077a852c212bd0bd0403d0faf5b36b7633cd730344e8c2f84f80a0822ad15b83ed5104c4f80d4dcb0671d6178a736ef942ca89d9d4e72ed90725f3a01c230e085931b88a9c43db848f32f7b24442c932984bafdc86d1e648e0de0f8ca0eae699b08720b0cfaf0905e1e2d56dec9ab5a0ed22e444f13709d1bc0b16a17aa069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"71df33d91d443e6d9b59c60da27aafca9bbbcf1d96c923e6d94b6722d3faa72c": "0xf872a020a10bfd00977f54cc3450c9b25c9b3a502a089eba0097ba35fc33c4ea5fcb54b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"41697593b4b1efab8424be62ddf884bce5d3db08936d18ee63cb1d888716bc3f": "0xf869a020656090e4433284646983d4f2862217901b938c0fa875d52f74176e8c866a0db846f8440180a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0e6ec9180bda8da6f42986f43c1ea183b9ac08597afbb18d2a96c4f285e2d2c46",
"6e85ef76502553356554ebde7de6a7b08d707c0f17ea2eeb504665334545c2b1": "0xf8518080a041697593b4b1efab8424be62ddf884bce5d3db08936d18ee63cb1d888716bc3f80a071df33d91d443e6d9b59c60da27aafca9bbbcf1d96c923e6d94b6722d3faa72c808080808080808080808080",
"099e6620eae5f6e76f9f6ccf89437e2a6563fd1ba90a6aa3e50ad513bdafc9d2": "0xf901d1a06e85ef76502553356554ebde7de6a7b08d707c0f17ea2eeb504665334545c2b1a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315a018bf8989600f7cb5f2db11750480e923a3c1fc26f1e9b98549f3c9bb05dc704aa0be9145cf5b2f4ab1dadf4cd984c3d27c52c6bae34faf574f620fbeb7df35902ea0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a0d91555e49efc90de69ef057104a73116eba1e63f1477fd08550d5fd099d26225a02ce574dbdeeff2677fe5e48842d04869154a649b50618099344c074123b77e74a011d2904c2f6317077a852c212bd0bd0403d0faf5b36b7633cd730344e8c2f84f80a0822ad15b83ed5104c4f80d4dcb0671d6178a736ef942ca89d9d4e72ed90725f3a01c230e085931b88a9c43db848f32f7b24442c932984bafdc86d1e648e0de0f8ca0eae699b08720b0cfaf0905e1e2d56dec9ab5a0ed22e444f13709d1bc0b16a17aa069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"8acdd753b51582fda57f44374d2bb3737796361cc8fea4719ef9b87f1e82f1e1": "0xf86ca020a40a9004224e397238839b469142c546607ee7a8b114ded86182fceae00e35b849f84780830cdefea056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"1d9b84ec8c53eff9f59c566d4c5ef6728b989e1cb44e72079643826bf2b81275": "0xf87180a0401c5e6460aaf2eb84db4d62e8be9d779842420a8c4f550da0b903a0fa9fde5d808080808080808080a082f6e0ef9d3ec62e68c811432d52e6e0c907d604aed5a2a561d95e393f487d688080a08acdd753b51582fda57f44374d2bb3737796361cc8fea4719ef9b87f1e82f1e18080",
"42dbc0d24fcc896631c6483dce4f5937ea39ae048347c67a450901da77fe46be": "0xf901d1a06e85ef76502553356554ebde7de6a7b08d707c0f17ea2eeb504665334545c2b1a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315a018bf8989600f7cb5f2db11750480e923a3c1fc26f1e9b98549f3c9bb05dc704aa0be9145cf5b2f4ab1dadf4cd984c3d27c52c6bae34faf574f620fbeb7df35902ea0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a0d91555e49efc90de69ef057104a73116eba1e63f1477fd08550d5fd099d26225a02ce574dbdeeff2677fe5e48842d04869154a649b50618099344c074123b77e74a011d2904c2f6317077a852c212bd0bd0403d0faf5b36b7633cd730344e8c2f84f80a0822ad15b83ed5104c4f80d4dcb0671d6178a736ef942ca89d9d4e72ed90725f3a01c230e085931b88a9c43db848f32f7b24442c932984bafdc86d1e648e0de0f8ca01d9b84ec8c53eff9f59c566d4c5ef6728b989e1cb44e72079643826bf2b81275a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"089d38bea75f580c0284d8e8352e6b72b61e2a259fe9a49ea8bd32ce75b2b60c": "0xf872a02031b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d1789056bc75e2d62a9e338a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"b3591a4f247de555e5081e795327b1289a69acf1124eeffa94da00661e3c24cc": "0xf871a08a3bd2aab1a4a29add591956a4832b3b2b54a22f1c449fca121abafd48f9ddd48080808080808080a0089d38bea75f580c0284d8e8352e6b72b61e2a259fe9a49ea8bd32ce75b2b60ca0e4a85f507db9eb29c7c2200fb2d6b17a414122b92f6f9f5f479a5a36a8a752fc808080808080",
"11664dc3e3f74809d182a603005645618c68d433a819f33b2bf26537af656ea0": "0xf901d1a06e85ef76502553356554ebde7de6a7b08d707c0f17ea2eeb504665334545c2b1a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315a018bf8989600f7cb5f2db11750480e923a3c1fc26f1e9b98549f3c9bb05dc704aa0be9145cf5b2f4ab1dadf4cd984c3d27c52c6bae34faf574f620fbeb7df35902ea0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a0b3591a4f247de555e5081e795327b1289a69acf1124eeffa94da00661e3c24cca02ce574dbdeeff2677fe5e48842d04869154a649b50618099344c074123b77e74a011d2904c2f6317077a852c212bd0bd0403d0faf5b36b7633cd730344e8c2f84f80a0822ad15b83ed5104c4f80d4dcb0671d6178a736ef942ca89d9d4e72ed90725f3a01c230e085931b88a9c43db848f32f7b24442c932984bafdc86d1e648e0de0f8ca01d9b84ec8c53eff9f59c566d4c5ef6728b989e1cb44e72079643826bf2b81275a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"5d937c18a969696d7a900ffa6463a4387fd1942fd5508104c57e67afc5a8dc7a": "0xf869a020735f5e5e13aa216ec39f44cdbb4c8e5d0767dea690c713bdff48e06a5bb222b846f8440180a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0829d76826fabb6f91b94d4318e759d51beb177c333348cfd0f31ba0b1976ea93",
"6b4fb55a590148c08c58d8ec930c1afedc6c6ca667fd9e9a502e6e652e46bb08": "0xf891a08a3bd2aab1a4a29add591956a4832b3b2b54a22f1c449fca121abafd48f9ddd48080808080808080a0089d38bea75f580c0284d8e8352e6b72b61e2a259fe9a49ea8bd32ce75b2b60ca0e4a85f507db9eb29c7c2200fb2d6b17a414122b92f6f9f5f479a5a36a8a752fca05d937c18a969696d7a900ffa6463a4387fd1942fd5508104c57e67afc5a8dc7a8080808080",
"d344ce1bedac19a9a9785796ba9908b5a76eee6af9fe69f26a51c8f47c098a62": "0xf901d1a06e85ef76502553356554ebde7de6a7b08d707c0f17ea2eeb504665334545c2b1a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315a018bf8989600f7cb5f2db11750480e923a3c1fc26f1e9b98549f3c9bb05dc704aa0be9145cf5b2f4ab1dadf4cd984c3d27c52c6bae34faf574f620fbeb7df35902ea0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a06b4fb55a590148c08c58d8ec930c1afedc6c6ca667fd9e9a502e6e652e46bb08a02ce574dbdeeff2677fe5e48842d04869154a649b50618099344c074123b77e74a011d2904c2f6317077a852c212bd0bd0403d0faf5b36b7633cd730344e8c2f84f80a0822ad15b83ed5104c4f80d4dcb0671d6178a736ef942ca89d9d4e72ed90725f3a01c230e085931b88a9c43db848f32f7b24442c932984bafdc86d1e648e0de0f8ca01d9b84ec8c53eff9f59c566d4c5ef6728b989e1cb44e72079643826bf2b81275a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"01ac17f98adcb8b16cdc276772d69c9b1d4162223239161dda73b4eaab8405f8": "0xf86ca020f97556eedd035d0c1b80182155e5f5148b950fe7547a1253e2e74d703b365eb849f847808313df87a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"4e4ec285ac261d3d53f3f7f286bdde22e8855ce702b303100eb3f188cb88feda": "0xf87180a02b3ec9e3123d39ebd33848446a1f104e969935ae41a22a22989cec279023052c80a0d7801c18da1017dad44f80a3bf0366d08425f58aeee6e22031351139d839d7a7808080808080a001ac17f98adcb8b16cdc276772d69c9b1d4162223239161dda73b4eaab8405f8808080808080",
"6fe5554d00913d66b62f85d016d8dcab539031c4028e35a51728232c8bb694ee": "0xf901d1a06e85ef76502553356554ebde7de6a7b08d707c0f17ea2eeb504665334545c2b1a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315a018bf8989600f7cb5f2db11750480e923a3c1fc26f1e9b98549f3c9bb05dc704aa0be9145cf5b2f4ab1dadf4cd984c3d27c52c6bae34faf574f620fbeb7df35902ea0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a06b4fb55a590148c08c58d8ec930c1afedc6c6ca667fd9e9a502e6e652e46bb08a02ce574dbdeeff2677fe5e48842d04869154a649b50618099344c074123b77e74a04e4ec285ac261d3d53f3f7f286bdde22e8855ce702b303100eb3f188cb88feda80a0822ad15b83ed5104c4f80d4dcb0671d6178a736ef942ca89d9d4e72ed90725f3a01c230e085931b88a9c43db848f32f7b24442c932984bafdc86d1e648e0de0f8ca01d9b84ec8c53eff9f59c566d4c5ef6728b989e1cb44e72079643826bf2b81275a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"462c2cb666873710768766ba7c00b3c1c53a07a4d92b25102e8ae3a8364b08b1": "0xf872a02031b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d1889056bc75e2d62988052a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"94619e8518df8e5ee91c04752d222a31d0f5ed207efcad6045a58fc4610bcc0e": "0xf891a08a3bd2aab1a4a29add591956a4832b3b2b54a22f1c449fca121abafd48f9ddd48080808080808080a0462c2cb666873710768766ba7c00b3c1c53a07a4d92b25102e8ae3a8364b08b1a0e4a85f507db9eb29c7c2200fb2d6b17a414122b92f6f9f5f479a5a36a8a752fca05d937c18a969696d7a900ffa6463a4387fd1942fd5508104c57e67afc5a8dc7a8080808080",
"739391b341d7fdd3a3b079b9a0771632f67107ee25e18b9d4f0204bb7a2ca4bc": "0xf901d1a06e85ef76502553356554ebde7de6a7b08d707c0f17ea2eeb504665334545c2b1a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315a018bf8989600f7cb5f2db11750480e923a3c1fc26f1e9b98549f3c9bb05dc704aa0be9145cf5b2f4ab1dadf4cd984c3d27c52c6bae34faf574f620fbeb7df35902ea0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a094619e8518df8e5ee91c04752d222a31d0f5ed207efcad6045a58fc4610bcc0ea02ce574dbdeeff2677fe5e48842d04869154a649b50618099344c074123b77e74a04e4ec285ac261d3d53f3f7f286bdde22e8855ce702b303100eb3f188cb88feda80a0822ad15b83ed5104c4f80d4dcb0671d6178a736ef942ca89d9d4e72ed90725f3a01c230e085931b88a9c43db848f32f7b24442c932984bafdc86d1e648e0de0f8ca01d9b84ec8c53eff9f59c566d4c5ef6728b989e1cb44e72079643826bf2b81275a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80",
"a0da2c03f4f89328f254c4ae566f19942113d4a1c7b700c2ab4868253c29a75d": "0xf86ca02076d49790cfa3f0c5e6fc28e31afd97efcab3ccef5b50ddc3276fdd9f50c730b849f84780831b0152a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"75ecf521fd46e30fffde4aabdc0cc482df9890cef32ac54372695dda78c1bd6f": "0xf871808080808080a0fe5ee46d99dc13c6a38f59a81a976485954c1b2ce23e0e4f72db9159e0fc52648080808080a0a0da2c03f4f89328f254c4ae566f19942113d4a1c7b700c2ab4868253c29a75d80a044f4e9f85a1436adae8b769f3c19b974a3f13dad10e37c8329bf36874c6766078080",
"6a17e38f28d2ed3b390b0c11cc023a50fb07664c8add086ba75ea51e825cd779": "0xf901d1a06e85ef76502553356554ebde7de6a7b08d707c0f17ea2eeb504665334545c2b1a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315a018bf8989600f7cb5f2db11750480e923a3c1fc26f1e9b98549f3c9bb05dc704aa0be9145cf5b2f4ab1dadf4cd984c3d27c52c6bae34faf574f620fbeb7df35902ea0199a88924711d888f5536a2b13fd5fcf4b053f18af493d74adba4e5cc80834c5a094619e8518df8e5ee91c04752d222a31d0f5ed207efcad6045a58fc4610bcc0ea075ecf521fd46e30fffde4aabdc0cc482df9890cef32ac54372695dda78c1bd6fa04e4ec285ac261d3d53f3f7f286bdde22e8855ce702b303100eb3f188cb88feda80a0822ad15b83ed5104c4f80d4dcb0671d6178a736ef942ca89d9d4e72ed90725f3a01c230e085931b88a9c43db848f32f7b24442c932984bafdc86d1e648e0de0f8ca01d9b84ec8c53eff9f59c566d4c5ef6728b989e1cb44e72079643826bf2b81275a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0e82cb06ff56b4d14f704324598b74e022d38c9fe79333bf4a8be32bbc54b24dd80a024edcc46233e7b26f3890b1846e6ab96ce3259e6df1fc9d8b8b662a0008d8bad80"
},
"blocks": [
"0xf9023ff90239a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940e9281e9c6a0808672eaba6bd1220e144c9bb07aa00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008080837a1200808466604e3f80a0000000000000000000000000000000000000000000000000000000000000000088000000000000000007a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000c0c0c0",
"0xf90443f90239a032f7fd80366dc337f03b205d5c88423610b8c28cdd66d39872032ac2157d1564a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948945a1288dc78a6d8952a92c77aee6730b414778a00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800183026e0c808466604f2580a0000000000000000000000000000000000000000000000000000000000000000088000000000000000001a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000f90202b901ff02f901fb0180010783026e0c8080b901aa608060405234801561001057600080fd5b5061018a806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80638903573014610030575b600080fd5b6100386100b4565b604051808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018362ffffff1681526020018260020b81526020019550505050505060405180910390f35b60008060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900462ffffff16908060020160179054906101000a900460020b90508556fea26469706673582212200378d2ff0d7c9f16988ebde765ed257c146db0d749daebad6530ff885908277264736f6c63430007060033c001a0dd264eee94c8deefdd560cd9034e4df2096dd8cd70c56cc9183eb1467b193f44a02e1025625c38fdb0808a7dda4b93d760414d33c8d607b709f76389b2a0203c7fc0c0",
"0xf98b80f90239a0e840d88c941fa3d9311530d5ca2f88069e4912a5df3f7b1287bd94c6e803f469a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d493479494d76e24f818426ae84aa404140e8d5f60e10e7ea00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008002832dc6c0808466604f5380a0000000000000000000000000000000000000000000000000000000000000000088000000000000000001a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000f9893fb9893c02f9893801010107832dc6c08080b988e76101606040523480156200001257600080fd5b503073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505060003373ffffffffffffffffffffffffffffffffffffffff1663890357306040518163ffffffff1660e01b815260040160a06040518083038186803b1580156200009357600080fd5b505afa158015620000a8573d6000803e3d6000fd5b505050506040513d60a0811015620000bf57600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050508095508162ffffff166101009062ffffff1660e81b8152508273ffffffffffffffffffffffffffffffffffffffff1660e09073ffffffffffffffffffffffffffffffffffffffff1660601b8152508373ffffffffffffffffffffffffffffffffffffffff1660c09073ffffffffffffffffffffffffffffffffffffffff1660601b8152508473ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff1660601b81525050505050508060020b6101208160020b60e81b81525050620001df816200021560201b620044521760201c565b6fffffffffffffffffffffffffffffffff16610140816fffffffffffffffffffffffffffffffff1660801b8152505050620002cd565b600080828360020b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860020b816200024957fe5b050290506000838460020b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860000360020b816200028357fe5b05029050600060018560020b84840360020b816200029d57fe5b050190508062ffffff166fffffffffffffffffffffffffffffffff801681620002c257fe5b049350505050919050565b60805160601c60a05160601c60c05160601c60e05160601c6101005160e81c6101205160e81c6101405160801c61854d6200039a600039806131985280617311528061735a52508061123e528061406d52806173a052806173dd52508061143a528061279b52806127d252806140b5525080611b6d528061285c5280612ff352806138a852806140915280615d6f525080610c985280611ced52806128275280612f3e528061379b5280615bab52508061325d52806135035280614049525080614508525061854d6000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806370cf754a116100de578063c45a015511610097578063ddca3f4311610071578063ddca3f4314610b65578063f305839914610b88578063f30dba9314610ba6578063f637731d14610c525761018e565b8063c45a015514610adc578063d0c93a7c14610b10578063d21220a714610b315761018e565b806370cf754a146107a95780638206a4d1146107d957806385b6672914610817578063883bdbfd146108d2578063a34123a7146109e8578063a38807f214610a5d5761018e565b80633850c7bd1161014b578063490e6cbc11610125578063490e6cbc1461054e5780634f1eb3d8146105fb578063514ea4bf146106d05780635339c296146107645761018e565b80633850c7bd146103d45780633c8a7d8d1461044657806346141319146105305761018e565b80630dfe168114610193578063128acb08146101c75780631a686502146102b15780631ad8b03b146102e1578063252c09d71461032a57806332148f67146103a2575b600080fd5b61019b610c96565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610294600480360360a08110156101dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561025057600080fd5b82018360208201111561026257600080fd5b8035906020019184600183028401116401000000008311171561028457600080fd5b9091929391929390505050610cba565b604051808381526020018281526020019250505060405180910390f35b6102b9611f43565b60405180826fffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102e9611f65565b60405180836fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6103566004803603602081101561034057600080fd5b8101908080359060200190929190505050611faf565b604051808563ffffffff1681526020018460060b81526020018373ffffffffffffffffffffffffffffffffffffffff168152602001821515815260200194505050505060405180910390f35b6103d2600480360360208110156103b857600080fd5b81019080803561ffff16906020019092919050505061202d565b005b6103dc61219f565b604051808873ffffffffffffffffffffffffffffffffffffffff1681526020018760020b81526020018661ffff1681526020018561ffff1681526020018461ffff1681526020018360ff168152602001821515815260200197505050505050505060405180910390f35b610513600480360360a081101561045c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560020b9060200190929190803560020b906020019092919080356fffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156104cf57600080fd5b8201836020820111156104e157600080fd5b8035906020019184600183028401116401000000008311171561050357600080fd5b9091929391929390505050612240565b604051808381526020018281526020019250505060405180910390f35b610538612639565b6040518082815260200191505060405180910390f35b6105f96004803603608081101561056457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001906401000000008111156105b557600080fd5b8201836020820111156105c757600080fd5b803590602001918460018302840111640100000000831117156105e957600080fd5b909192939192939050505061263f565b005b61068f600480360360a081101561061157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560020b9060200190929190803560020b906020019092919080356fffffffffffffffffffffffffffffffff16906020019092919080356fffffffffffffffffffffffffffffffff169060200190929190505050612d18565b60405180836fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6106fc600480360360208110156106e657600080fd5b81019080803590602001909291905050506130f4565b60405180866fffffffffffffffffffffffffffffffff168152602001858152602001848152602001836fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff1681526020019550505050505060405180910390f35b6107936004803603602081101561077a57600080fd5b81019080803560010b906020019092919050505061317e565b6040518082815260200191505060405180910390f35b6107b1613196565b60405180826fffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610815600480360360408110156107ef57600080fd5b81019080803560ff169060200190929190803560ff1690602001909291905050506131ba565b005b6108916004803603606081101561082d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080356fffffffffffffffffffffffffffffffff16906020019092919080356fffffffffffffffffffffffffffffffff16906020019092919050505061345d565b60405180836fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b610949600480360360208110156108e857600080fd5b810190808035906020019064010000000081111561090557600080fd5b82018360208201111561091757600080fd5b8035906020019184602083028401116401000000008311171561093957600080fd5b9091929391929390505050613997565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610990578082015181840152602081019050610975565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156109d25780820151818401526020810190506109b7565b5050505090500194505050505060405180910390f35b610a40600480360360608110156109fe57600080fd5b81019080803560020b9060200190929190803560020b906020019092919080356fffffffffffffffffffffffffffffffff169060200190929190505050613a66565b604051808381526020018281526020019250505060405180910390f35b610a9960048036036040811015610a7357600080fd5b81019080803560020b9060200190929190803560020b9060200190929190505050613cfd565b604051808460060b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018263ffffffff168152602001935050505060405180910390f35b610ae4614047565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b1861406b565b604051808260020b815260200191505060405180910390f35b610b3961408f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b6d6140b3565b604051808262ffffff16815260200191505060405180910390f35b610b906140d7565b6040518082815260200191505060405180910390f35b610bd560048036036020811015610bbc57600080fd5b81019080803560020b90602001909291905050506140dd565b60405180896fffffffffffffffffffffffffffffffff16815260200188600f0b81526020018781526020018681526020018560060b81526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018363ffffffff16815260200182151581526020019850505050505050505060405180910390f35b610c9460048036036020811015610c6857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614198565b005b7f000000000000000000000000000000000000000000000000000000000000000081565b600080610cc5614506565b6000861415610d3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f415300000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000806040518060e00160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460020b60020b60020b81526020016000820160179054906101000a900461ffff1661ffff1661ffff1681526020016000820160199054906101000a900461ffff1661ffff1661ffff16815260200160008201601b9054906101000a900461ffff1661ffff1661ffff16815260200160008201601d9054906101000a900460ff1660ff1660ff16815260200160008201601e9054906101000a900460ff16151515158152505090508060c00151610ece576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4c4f4b000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b87610f5657806000015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16118015610f51575073fffd8963efd1fc6a506488495d951d5263988d2673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16105b610fc6565b806000015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16108015610fc557506401000276a373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16115b5b611038576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f53504c000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600001601e6101000a81548160ff02191690831515021790555060006040518060c001604052808a6110785760048460a0015160ff16901c61108b565b60108460a0015160ff168161108957fe5b065b60ff168152602001600460009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016110d1614560565b63ffffffff168152602001600060060b8152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000151581525090506000808913905060006040518060e001604052808b815260200160008152602001856000015173ffffffffffffffffffffffffffffffffffffffff168152602001856020015160020b81526020018c6111675760025461116b565b6001545b815260200160006fffffffffffffffffffffffffffffffff16815260200184602001516fffffffffffffffffffffffffffffffff1681525090505b60008160000151141580156111eb57508873ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff1614155b15611835576111f8618460565b8160400151816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061127082606001517f00000000000000000000000000000000000000000000000000000000000000008e6006614568909392919063ffffffff16565b826020018360400182151515158152508260020b60020b81525050507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860020b816020015160020b12156112f5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618816020019060020b908160020b81525050611361565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860000360020b816020015160020b1315611360577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618600003816020019060020b908160020b815250505b5b61136e81602001516146c0565b816060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061145e82604001518d6113ea578b73ffffffffffffffffffffffffffffffffffffffff16836060015173ffffffffffffffffffffffffffffffffffffffff161161141e565b8b73ffffffffffffffffffffffffffffffffffffffff16836060015173ffffffffffffffffffffffffffffffffffffffff16105b61142c57826060015161142e565b8b5b8460c0015185600001517f0000000000000000000000000000000000000000000000000000000000000000614afb565b85604001856080018660a0018760c0018481525084815250848152508473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250505050508215611507576114c78160c00151826080015101614d57565b8260000181815103915081815250506114f96114e68260a00151614d57565b8360200151614d8d90919063ffffffff16565b826020018181525050611556565b6115148160a00151614d57565b82600001818151019150818152505061154c6115398260c00151836080015101614d57565b8360200151614db090919063ffffffff16565b8260200181815250505b6000846000015160ff1611156115c7576000846000015160ff168260c001518161157c57fe5b049050808260c0018181510391508181525050808360a001818151019150906fffffffffffffffffffffffffffffffff1690816fffffffffffffffffffffffffffffffff1681525050505b60008260c001516fffffffffffffffffffffffffffffffff16111561162c5761161c8160c001517001000000000000000000000000000000008460c001516fffffffffffffffffffffffffffffffff16614dd3565b8260800181815101915081815250505b806060015173ffffffffffffffffffffffffffffffffffffffff16826040015173ffffffffffffffffffffffffffffffffffffffff1614156117d4578060400151156117a6578360a00151611704576116ae846040015160008760200151886040015188602001518a606001516008614ead909695949392919063ffffffff16565b85606001866080018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508260060b60060b815250505060018460a00190151590811515815250505b600061175882602001518e61171b57600154611721565b84608001515b8f611730578560800151611734565b6002545b886080015189606001518a6040015160056150e0909695949392919063ffffffff16565b90508c15611767578060000390505b6117758360c001518261521c565b8360c001906fffffffffffffffffffffffffffffffff1690816fffffffffffffffffffffffffffffffff1681525050505b8b6117b55780602001516117be565b60018160200151035b826060019060020b908160020b8152505061182f565b806000015173ffffffffffffffffffffffffffffffffffffffff16826040015173ffffffffffffffffffffffffffffffffffffffff161461182e5761181c8260400151615375565b826060019060020b908160020b815250505b5b506111a6565b836020015160020b816060015160020b1461194b5760008061188386604001518660400151886020015188602001518a606001518b608001516008615771909695949392919063ffffffff16565b915091508260400151836060015183836000800160008060000160146000800160176000800160198891906101000a81548161ffff021916908361ffff1602179055508791906101000a81548161ffff021916908361ffff1602179055508691906101000a81548162ffffff021916908360020b62ffffff1602179055508591906101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050611993565b80604001516000800160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8060c001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff1614611a04578060c00151600460006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b8a15611a9b57806080015160018190555060008160a001516fffffffffffffffffffffffffffffffff161115611a96578060a00151600360000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b611b28565b806080015160028190555060008160a001516fffffffffffffffffffffffffffffffff161115611b27578060a00151600360000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b5b8115158b151514611b4457806020015181600001518b03611b51565b80600001518a0381602001515b80965081975050508a15611cdf576000851215611b9757611b967f00000000000000000000000000000000000000000000000000000000000000008d876000036159a3565b5b6000611ba1615ba4565b90503373ffffffffffffffffffffffffffffffffffffffff1663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611c3257600080fd5b505af1158015611c46573d6000803e3d6000fd5b50505050611c52615ba4565b611c658883615d4e90919063ffffffff16565b1115611cd9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f494941000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b50611e5b565b6000861215611d1757611d167f00000000000000000000000000000000000000000000000000000000000000008d886000036159a3565b5b6000611d21615d68565b90503373ffffffffffffffffffffffffffffffffffffffff1663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611db257600080fd5b505af1158015611dc6573d6000803e3d6000fd5b50505050611dd2615d68565b611de58783615d4e90919063ffffffff16565b1115611e59576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f494941000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b505b8b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67888885604001518660c001518760600151604051808681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff168152602001836fffffffffffffffffffffffffffffffff1681526020018260020b81526020019550505050505060405180910390a3600160008001601e6101000a81548160ff02191690831515021790555050505050965096945050505050565b600460009054906101000a90046fffffffffffffffffffffffffffffffff1681565b60038060000160009054906101000a90046fffffffffffffffffffffffffffffffff16908060000160109054906101000a90046fffffffffffffffffffffffffffffffff16905082565b60088161ffff8110611fc057600080fd5b016000915090508060000160009054906101000a900463ffffffff16908060000160049054906101000a900460060b9080600001600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600001601f9054906101000a900460ff16905084565b60008001601e9054906101000a900460ff166120b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4c4f4b000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600001601e6101000a81548160ff0219169083151502179055506120d6614506565b600080600001601b9054906101000a900461ffff169050600061210582846008615f129092919063ffffffff16565b90508060008001601b6101000a81548161ffff021916908361ffff1602179055508061ffff168261ffff161461217d577fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a8282604051808361ffff1681526020018261ffff1681526020019250505060405180910390a15b5050600160008001601e6101000a81548160ff02191690831515021790555050565b60008060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460020b908060000160179054906101000a900461ffff16908060000160199054906101000a900461ffff169080600001601b9054906101000a900461ffff169080600001601d9054906101000a900460ff169080600001601e9054906101000a900460ff16905087565b60008060008001601e9054906101000a900460ff166122c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4c4f4b000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600001601e6101000a81548160ff0219169083151502179055506000856fffffffffffffffffffffffffffffffff161161230357600080fd5b60008061236860405180608001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b60020b81526020018a60020b815260200161235d8a6fffffffffffffffffffffffffffffffff16616008565b600f0b815250616021565b9250925050819350809250600080600086111561238a57612387615ba4565b91505b600085111561239e5761239b615d68565b90505b3373ffffffffffffffffffffffffffffffffffffffff1663d348799787878b8b6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561242d57600080fd5b505af1158015612441573d6000803e3d6000fd5b5050505060008611156124de57612456615ba4565b6124698784615d4e90919063ffffffff16565b11156124dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f4d3000000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b6000851115612577576124ef615d68565b6125028683615d4e90919063ffffffff16565b1115612576576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f4d3100000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b8960020b8b60020b8d73ffffffffffffffffffffffffffffffffffffffff167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde338d8b8b604051808573ffffffffffffffffffffffffffffffffffffffff168152602001846fffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a450505050600160008001601e6101000a81548160ff021916908315150217905550965096945050505050565b60025481565b60008001601e9054906101000a900460ff166126c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4c4f4b000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600001601e6101000a81548160ff0219169083151502179055506126e8614506565b6000600460009054906101000a90046fffffffffffffffffffffffffffffffff1690506000816fffffffffffffffffffffffffffffffff1611612793576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260018152602001807f4c0000000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60006127c8867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f4240616345565b905060006127ff867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f4240616345565b9050600061280b615ba4565b90506000612817615d68565b9050600089111561284e5761284d7f00000000000000000000000000000000000000000000000000000000000000008b8b6159a3565b5b6000881115612883576128827f00000000000000000000000000000000000000000000000000000000000000008b8a6159a3565b5b3373ffffffffffffffffffffffffffffffffffffffff1663e9cbafb085858a8a6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561291257600080fd5b505af1158015612926573d6000803e3d6000fd5b505050506000612934615ba4565b90506000612940615d68565b9050816129568786615d4e90919063ffffffff16565b11156129ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f463000000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806129de8685615d4e90919063ffffffff16565b1115612a52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f463100000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008483039050600084830390506000821115612b6a576000601060008001601d9054906101000a900460ff1660ff1681612a8957fe5b0690506000808260ff1614612aaa578160ff168481612aa457fe5b04612aad565b60005b90506000816fffffffffffffffffffffffffffffffff161115612b285780600360000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b612b588185037001000000000000000000000000000000008d6fffffffffffffffffffffffffffffffff16614dd3565b60016000828254019250508190555050505b6000811115612c6e576000600460008001601d9054906101000a900460ff1660ff16901c90506000808260ff1614612bae578160ff168381612ba857fe5b04612bb1565b60005b90506000816fffffffffffffffffffffffffffffffff161115612c2c5780600360000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b612c5c8184037001000000000000000000000000000000008d6fffffffffffffffffffffffffffffffff16614dd3565b60026000828254019250508190555050505b8d73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6338f8f86866040518085815260200184815260200183815260200182815260200194505050505060405180910390a3505050505050505050600160008001601e6101000a81548160ff0219169083151502179055505050505050565b60008060008001601e9054906101000a900460ff16612d9f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4c4f4b000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600001601e6101000a81548160ff0219169083151502179055506000612dd633888860076163a3909392919063ffffffff16565b90508060030160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16856fffffffffffffffffffffffffffffffff1611612e295784612e4b565b8060030160009054906101000a90046fffffffffffffffffffffffffffffffff165b92508060030160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff1611612e9e5783612ec0565b8060030160109054906101000a90046fffffffffffffffffffffffffffffffff165b91506000836fffffffffffffffffffffffffffffffff161115612f7757828160030160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550612f767f000000000000000000000000000000000000000000000000000000000000000089856fffffffffffffffffffffffffffffffff166159a3565b5b6000826fffffffffffffffffffffffffffffffff16111561302c57818160030160108282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555061302b7f000000000000000000000000000000000000000000000000000000000000000089846fffffffffffffffffffffffffffffffff166159a3565b5b8560020b8760020b3373ffffffffffffffffffffffffffffffffffffffff167f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c08b8787604051808473ffffffffffffffffffffffffffffffffffffffff168152602001836fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff168152602001935050505060405180910390a450600160008001601e6101000a81548160ff0219169083151502179055509550959350505050565b60076020528060005260406000206000915090508060000160009054906101000a90046fffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a90046fffffffffffffffffffffffffffffffff16908060030160109054906101000a90046fffffffffffffffffffffffffffffffff16905085565b60066020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008001601e9054906101000a900460ff1661323e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4c4f4b000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600001601e6101000a81548160ff0219169083151502179055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156132c157600080fd5b505afa1580156132d5573d6000803e3d6000fd5b505050506040513d60208110156132eb57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461333357600080fd5b60008260ff161480613359575060048260ff16101580156133585750600a8260ff1611155b5b8015613387575060008160ff161480613386575060048160ff16101580156133855750600a8160ff1611155b5b5b61339057600080fd5b600080600001601d9054906101000a900460ff16905060048260ff16901b830160008001601d6101000a81548160ff021916908360ff1602179055507f973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b13360108260ff16816133fa57fe5b0660048360ff16901c8585604051808560ff1681526020018460ff1681526020018360ff1681526020018260ff16815260200194505050505060405180910390a150600160008001601e6101000a81548160ff0219169083151502179055505050565b60008060008001601e9054906101000a900460ff166134e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4c4f4b000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600001601e6101000a81548160ff0219169083151502179055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561356757600080fd5b505afa15801561357b573d6000803e3d6000fd5b505050506040513d602081101561359157600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146135d957600080fd5b600360000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff161161362b578361364e565b600360000160009054906101000a90046fffffffffffffffffffffffffffffffff165b9150600360000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff16116136a257826136c5565b600360000160109054906101000a90046fffffffffffffffffffffffffffffffff165b90506000826fffffffffffffffffffffffffffffffff1611156137d457600360000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff161415613739578180600190039250505b81600360000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506137d37f000000000000000000000000000000000000000000000000000000000000000086846fffffffffffffffffffffffffffffffff166159a3565b5b6000816fffffffffffffffffffffffffffffffff1611156138e157600360000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff161415613846578080600190039150505b80600360000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506138e07f000000000000000000000000000000000000000000000000000000000000000086836fffffffffffffffffffffffffffffffff166159a3565b5b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151848460405180836fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff1681526020019250505060405180910390a3600160008001601e6101000a81548160ff021916908315150217905550935093915050565b6060806139a2614506565b613a5b6139ad614560565b858580806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050506000800160149054906101000a900460020b6000800160179054906101000a900461ffff16600460009054906101000a90046fffffffffffffffffffffffffffffffff166000800160199054906101000a900461ffff16600861641c909695949392919063ffffffff16565b915091509250929050565b60008060008001601e9054906101000a900460ff16613aed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4c4f4b000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600001601e6101000a81548160ff0219169083151502179055506000806000613b7460405180608001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018a60020b81526020018960020b8152602001613b66896fffffffffffffffffffffffffffffffff16616008565b600003600f0b815250616021565b9250925092508160000394508060000393506000851180613b955750600084115b15613c5d57848360030160009054906101000a90046fffffffffffffffffffffffffffffffff1601848460030160109054906101000a90046fffffffffffffffffffffffffffffffff16018460030160008660030160108491906101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055508391906101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050505b8660020b8860020b3373ffffffffffffffffffffffffffffffffffffffff167f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c89898960405180846fffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a4505050600160008001601e6101000a81548160ff021916908315150217905550935093915050565b6000806000613d0a614506565b613d1485856165d7565b6000806000806000806000600560008d60020b60020b815260200190815260200160002090506000600560008d60020b60020b8152602001908152602001600020905060008260030160009054906101000a900460060b8360030160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684600301601b9054906101000a900463ffffffff1685600301601f9054906101000a900460ff16809450819850829a50839c505050505080613dd157600080fd5b60008260030160009054906101000a900460060b8360030160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684600301601b9054906101000a900463ffffffff1685600301601f9054906101000a900460ff16809450819850829a50839c505050505080613e4b57600080fd5b505050506000806040518060e00160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460020b60020b60020b81526020016000820160179054906101000a900461ffff1661ffff1661ffff1681526020016000820160199054906101000a900461ffff1661ffff1661ffff16815260200160008201601b9054906101000a900461ffff1661ffff1661ffff16815260200160008201601d9054906101000a900460ff1660ff1660ff16815260200160008201601e9054906101000a900460ff16151515158152505090508b60020b816020015160020b1215613f975785870384860383850399509950995050505050505050614040565b8a60020b816020015160020b1215614029576000613fb3614560565b905060008061400183600086602001518760400151600460009054906101000a90046fffffffffffffffffffffffffffffffff1689606001516008614ead909695949392919063ffffffff16565b91509150888a830303878983030386888603039c509c509c5050505050505050505050614040565b868603858503848403995099509950505050505050505b9250925092565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015481565b60056020528060005260406000206000915090508060000160009054906101000a90046fffffffffffffffffffffffffffffffff16908060000160109054906101000a9004600f0b908060010154908060020154908060030160009054906101000a900460060b908060030160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600301601b9054906101000a900463ffffffff169080600301601f9054906101000a900460ff16905088565b60008060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614248576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f414900000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600061425382615375565b9050600080614273614263614560565b600861679190919063ffffffff16565b915091506040518060e001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018460020b8152602001600061ffff1681526020018361ffff1681526020018261ffff168152602001600060ff168152602001600115158152506000808201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548162ffffff021916908360020b62ffffff16021790555060408201518160000160176101000a81548161ffff021916908361ffff16021790555060608201518160000160196101000a81548161ffff021916908361ffff160217905550608082015181600001601b6101000a81548161ffff021916908361ffff16021790555060a082015181600001601d6101000a81548160ff021916908360ff16021790555060c082015181600001601e6101000a81548160ff0219169083151502179055509050507f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c958484604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018260020b81526020019250505060405180910390a150505050565b600080828360020b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860020b8161448557fe5b050290506000838460020b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860000360020b816144be57fe5b05029050600060018560020b84840360020b816144d757fe5b050190508062ffffff166fffffffffffffffffffffffffffffffff8016816144fb57fe5b049350505050919050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461455e57600080fd5b565b600042905090565b60008060008460020b8660020b8161457c57fe5b05905060008660020b1280156145a5575060008560020b8760020b8161459e57fe5b0760020b14155b156145b4578080600190039150505b8315614638576000806145c6836168b7565b9150915060008160ff166001901b60018360ff166001901b030190506000818b60008660010b60010b815260200190815260200160002054169050600081141595508561461a57888360ff1686030261462d565b88614624826168da565b840360ff168603025b9650505050506146b6565b600080614647600184016168b7565b91509150600060018260ff166001901b031990506000818b60008660010b60010b815260200190815260200160002054169050600081141595508561469957888360ff0360ff166001870101026146af565b88836146a4836169b5565b0360ff166001870101025b9650505050505b5094509492505050565b60008060008360020b126146d7578260020b6146df565b8260020b6000035b90507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860000360020b81111561477d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260018152602001807f540000000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000806001831614156147a1577001000000000000000000000000000000006147b3565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff169050600060028316146147ed5760806ffff97272373d413259a46990580e213a8202901c90505b600060048316146148125760806ffff2e50f5f656932ef12357cf3c7fdcc8202901c90505b600060088316146148375760806fffe5caca7e10e4e61c3624eaa0941cd08202901c90505b6000601083161461485c5760806fffcb9843d60f6159c9db58835c9266448202901c90505b600060208316146148815760806fff973b41fa98c081472e6896dfb254c08202901c90505b600060408316146148a65760806fff2ea16466c96a3843ec78b326b528618202901c90505b600060808316146148cb5760806ffe5dee046a99a2a811c461f1969c30538202901c90505b60006101008316146148f15760806ffcbe86c7900a88aedcffc83b479aa3a48202901c90505b60006102008316146149175760806ff987a7253ac413176f2b074cf7815e548202901c90505b600061040083161461493d5760806ff3392b0822b70005940c7a398e4b70f38202901c90505b60006108008316146149635760806fe7159475a2c29b7443b29c7fa6e889d98202901c90505b60006110008316146149895760806fd097f3bdfd2022b8845ad8f792aa58258202901c90505b60006120008316146149af5760806fa9f746462d870fdf8a65dc1f90e061e58202901c90505b60006140008316146149d55760806f70d869a156d2a1b890bb3df62baf32f78202901c90505b60006180008316146149fb5760806f31be135f97d08fd981231505542fcfa68202901c90505b600062010000831614614a225760806f09aa508b5b7a84e1c677de54f3e99bc98202901c90505b600062020000831614614a485760806e5d6af8dedb81196699c329225ee6048202901c90505b600062040000831614614a6d5760806d2216e584f5fa1ea926041bedfe988202901c90505b600062080000831614614a905760806b048a170391f7dc42444e8fa28202901c90505b60008460020b1315614ac957807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81614ac557fe5b0490505b60006401000000008281614ad957fe5b0614614ae6576001614ae9565b60005b60ff16602082901c0192505050919050565b60008060008060008873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161015905060008088121590508015614baa576000614b5d8989620f42400362ffffff16620f4240614dd3565b905082614b7657614b718c8c8c6001616adc565b614b84565b614b838b8d8c6001616bb6565b5b9550858110614b95578a9650614ba4565b614ba18c8b8386616cec565b96505b50614bf6565b81614bc157614bbc8b8b8b6000616bb6565b614bcf565b614bce8a8c8b6000616adc565b5b9350838860000310614be357899550614bf5565b614bf28b8a8a60000385616d5e565b95505b5b60008673ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff161490508215614c7d57808015614c395750815b614c4f57614c4a878d8c6001616bb6565b614c51565b855b9550808015614c5e575081155b614c7457614c6f878d8c6000616adc565b614c76565b845b9450614cc7565b808015614c875750815b614c9d57614c988c888c6001616adc565b614c9f565b855b9550808015614cac575081155b614cc257614cbd8c888c6000616bb6565b614cc4565b845b94505b81158015614cd757508860000385115b15614ce3578860000394505b818015614d1c57508a73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b15614d2b578589039350614d48565b614d45868962ffffff168a620f42400362ffffff16616345565b93505b50505095509550955095915050565b60007f80000000000000000000000000000000000000000000000000000000000000008210614d8557600080fd5b819050919050565b6000808212151515838385039250821315151514614daa57600080fd5b92915050565b6000808212151515838385019250821215151514614dcd57600080fd5b92915050565b600080600080198587098587029250828110838203039150506000811415614e0e5760008411614e0257600080fd5b83820492505050614ea6565b808411614e1a57600080fd5b600084868809905082811182039150808303925060008586600003169050808604955080840493506001818260000304019050808302841793506000600287600302189050808702600203810290508087026002038102905080870260020381029050808702600203810290508087026002038102905080870260020381029050808502955050505050505b9392505050565b60008060008763ffffffff161415614fce576000898661ffff1661ffff8110614ed257fe5b016040518060800160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900460060b60060b60060b815260200160008201600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160008201601f9054906101000a900460ff16151515158152505090508863ffffffff16816000015163ffffffff1614614fba57614fb7818a8988616dd0565b90505b8060200151816040015192509250506150d4565b60008789039050600080614fe78c8c858c8c8c8c616ebb565b91509150816000015163ffffffff168363ffffffff1614156150195781602001518260400151945094505050506150d4565b806000015163ffffffff168363ffffffff1614156150475780602001518160400151945094505050506150d4565b60008260000151826000015103905060008360000151850390508063ffffffff168263ffffffff16856020015185602001510360060b8161508457fe5b05028460200151018263ffffffff168263ffffffff16866040015186604001510373ffffffffffffffffffffffffffffffffffffffff1602816150c357fe5b048560400151019650965050505050505b97509795505050505050565b6000808860008960020b60020b815260200190815260200160002090508060010154870381600101819055508060020154860381600201819055508060030160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685038160030160076101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060030160009054906101000a900460060b84038160030160006101000a81548166ffffffffffffff021916908360060b66ffffffffffffff16021790555080600301601b9054906101000a900463ffffffff16830381600301601b6101000a81548163ffffffff021916908363ffffffff1602179055508060000160109054906101000a9004600f0b915050979650505050505050565b60008082600f0b12156152cf57826fffffffffffffffffffffffffffffffff168260000384039150816fffffffffffffffffffffffffffffffff16106152ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f4c5300000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b61536f565b826fffffffffffffffffffffffffffffffff168284019150816fffffffffffffffffffffffffffffffff16101561536e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f4c4100000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b92915050565b60006401000276a373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16101580156153f7575073fffd8963efd1fc6a506488495d951d5263988d2673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16105b615469576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260018152602001807f520000000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600060208373ffffffffffffffffffffffffffffffffffffffff16901b9050600081905060006fffffffffffffffffffffffffffffffff821160071b808217915082811c92505067ffffffffffffffff821160061b808217915082811c92505063ffffffff821160051b808217915082811c92505061ffff821160041b808217915082811c92505060ff821160031b808217915082811c925050600f821160021b808217915082811c9250506003821160011b808217915082811c925050600182118082179150506080811061554757607f810383901c9150615551565b80607f0383901b91505b6000604060808303901b9050828302607f1c92508260801c80603f1b8217915083811c935050828302607f1c92508260801c80603e1b8217915083811c935050828302607f1c92508260801c80603d1b8217915083811c935050828302607f1c92508260801c80603c1b8217915083811c935050828302607f1c92508260801c80603b1b8217915083811c935050828302607f1c92508260801c80603a1b8217915083811c935050828302607f1c92508260801c8060391b8217915083811c935050828302607f1c92508260801c8060381b8217915083811c935050828302607f1c92508260801c8060371b8217915083811c935050828302607f1c92508260801c8060361b8217915083811c935050828302607f1c92508260801c8060351b8217915083811c935050828302607f1c92508260801c8060341b8217915083811c935050828302607f1c92508260801c8060331b8217915083811c935050828302607f1c92508260801c8060321b82179150506000693627a301d71055774c8582029050600060806f028f6481ab7f045a5af012a19d003aaa8303901d9050600060806fdb2df09e81959a81455e260799a0632f8401901d90508060020b8260020b14615761578873ffffffffffffffffffffffffffffffffffffffff16615738826146c0565b73ffffffffffffffffffffffffffffffffffffffff16111561575a578161575c565b805b615763565b815b975050505050505050919050565b6000806000898961ffff1661ffff811061578757fe5b016040518060800160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900460060b60060b60060b815260200160008201600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160008201601f9054906101000a900460ff16151515158152505090508763ffffffff16816000015163ffffffff16141561586d5788859250925050615997565b8461ffff168461ffff1611801561588e57506001850361ffff168961ffff16145b1561589b5783915061589f565b8491505b8161ffff1660018a0161ffff16816158b357fe5b0692506158c281898989616dd0565b8a8461ffff1661ffff81106158d357fe5b0160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548166ffffffffffffff021916908360060b66ffffffffffffff160217905550604082015181600001600b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600001601f6101000a81548160ff021916908315150217905550905050505b97509795505050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b8585604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310615a845780518252602082019150602081019050602083039250615a61565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114615ae6576040519150601f19603f3d011682016040523d82523d6000602084013e615aeb565b606091505b5091509150818015615b2b5750600081511480615b2a5750808060200190516020811015615b1857600080fd5b81019080805190602001909291905050505b5b615b9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f544600000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b5050505050565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a0823160e01b30604051602401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310615c9f5780518252602082019150602081019050602083039250615c7c565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114615cff576040519150601f19603f3d011682016040523d82523d6000602084013e615d04565b606091505b5091509150818015615d1857506020815110155b615d2157600080fd5b808060200190516020811015615d3657600080fd5b81019080805190602001909291905050509250505090565b6000828284019150811015615d6257600080fd5b92915050565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a0823160e01b30604051602401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310615e635780518252602082019150602081019050602083039250615e40565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114615ec3576040519150601f19603f3d011682016040523d82523d6000602084013e615ec8565b606091505b5091509150818015615edc57506020815110155b615ee557600080fd5b808060200190516020811015615efa57600080fd5b81019080805190602001909291905050509250505090565b6000808361ffff1611615f8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260018152602001807f490000000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8261ffff168261ffff1611615fa457829050616001565b60008390505b8261ffff168161ffff161015615ffc576001858261ffff1661ffff8110615fcd57fe5b0160000160006101000a81548163ffffffff021916908363ffffffff1602179055508080600101915050615faa565b508190505b9392505050565b60008182915081600f0b1461601c57600080fd5b919050565b600080600061602e614506565b616040846020015185604001516165d7565b6000806040518060e00160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460020b60020b60020b81526020016000820160179054906101000a900461ffff1661ffff1661ffff1681526020016000820160199054906101000a900461ffff1661ffff1661ffff16815260200160008201601b9054906101000a900461ffff1661ffff1661ffff16815260200160008201601d9054906101000a900460ff1660ff1660ff16815260200160008201601e9054906101000a900460ff161515151581525050905061617c85600001518660200151876040015188606001518560200151617245565b935060008560600151600f0b1461633d57846020015160020b816020015160020b12156161d1576161ca6161b386602001516146c0565b6161c087604001516146c0565b876060015161749e565b925061633c565b846040015160020b816020015160020b1215616311576000600460009054906101000a90046fffffffffffffffffffffffffffffffff16905061623f826040015161621a614560565b846020015184866060015187608001516008615771909695949392919063ffffffff16565b6000800160176000800160198491906101000a81548161ffff021916908361ffff1602179055508391906101000a81548161ffff021916908361ffff16021790555050506162a2826000015161629888604001516146c0565b886060015161749e565b93506162c36162b487602001516146c0565b836000015188606001516174e9565b92506162d381876060015161521c565b600460006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505061633b565b61633861632186602001516146c0565b61632e87604001516146c0565b87606001516174e9565b91505b5b5b509193909250565b6000616352848484614dd3565b90506000828061635e57fe5b848609111561639c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811061639357600080fd5b80806001019150505b9392505050565b6000846000858585604051602001808473ffffffffffffffffffffffffffffffffffffffff1660601b81526014018360020b60e81b81526003018260020b60e81b815260030193505050506040516020818303038152906040528051906020012081526020019081526020016000209050949350505050565b60608060008361ffff1611616499576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260018152602001807f490000000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b865167ffffffffffffffff811180156164b157600080fd5b506040519080825280602002602001820160405280156164e05781602001602082028036833780820191505090505b509150865167ffffffffffffffff811180156164fb57600080fd5b5060405190808252806020026020018201604052801561652a5781602001602082028036833780820191505090505b50905060005b87518110156165ca5761655b8a8a8a848151811061654a57fe5b60200260200101518a8a8a8a614ead565b84838151811061656757fe5b6020026020010184848151811061657a57fe5b602002602001018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508260060b60060b81525050508080600101915050616530565b5097509795505050505050565b8060020b8260020b12616652576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f544c55000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860020b8260020b12156166ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f544c4d000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860000360020b8160020b131561678d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f54554d000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b5050565b60008060405180608001604052808463ffffffff168152602001600060060b8152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016001151581525084600061ffff81106167e757fe5b0160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548166ffffffffffffff021916908360060b66ffffffffffffff160217905550604082015181600001600b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600001601f6101000a81548160ff021916908315150217905550905050600180915091509250929050565b60008060088360020b901d91506101008360020b816168d257fe5b079050915091565b60008082116168e857600080fd5b700100000000000000000000000000000000821061690e57608082901c91506080810190505b68010000000000000000821061692c57604082901c91506040810190505b640100000000821061694657602082901c91506020810190505b62010000821061695e57601082901c91506010810190505b610100821061697557600882901c91506008810190505b6010821061698b57600482901c91506004810190505b600482106169a157600282901c91506002810190505b600282106169b0576001810190505b919050565b60008082116169c357600080fd5b60ff905060006fffffffffffffffffffffffffffffffff8016831611156169ef576080810390506169f7565b608082901c91505b600067ffffffffffffffff801683161115616a1757604081039050616a1f565b604082901c91505b600063ffffffff801683161115616a3b57602081039050616a43565b602082901c91505b600061ffff801683161115616a5d57601081039050616a65565b601082901c91505b600060ff801683161115616a7e57600881039050616a86565b600882901c91505b6000600f83161115616a9d57600481039050616aa5565b600482901c91505b6000600383161115616abc57600281039050616ac4565b600282901c91505b6000600183161115616ad7576001810390505b919050565b60008373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161115616b1d57838580955081965050505b81616b6957616b64836fffffffffffffffffffffffffffffffff1686860373ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000614dd3565b616bac565b616bab836fffffffffffffffffffffffffffffffff1686860373ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000616345565b5b9050949350505050565b60008373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161115616bf757838580955081965050505b6000606060ff16846fffffffffffffffffffffffffffffffff16901b9050600086860373ffffffffffffffffffffffffffffffffffffffff16905060008773ffffffffffffffffffffffffffffffffffffffff1611616c5557600080fd5b83616c9f578673ffffffffffffffffffffffffffffffffffffffff16616c9283838973ffffffffffffffffffffffffffffffffffffffff16614dd3565b81616c9957fe5b04616ce0565b616cdf616cc383838973ffffffffffffffffffffffffffffffffffffffff16616345565b8873ffffffffffffffffffffffffffffffffffffffff16617534565b5b92505050949350505050565b6000808573ffffffffffffffffffffffffffffffffffffffff1611616d1057600080fd5b6000846fffffffffffffffffffffffffffffffff1611616d2f57600080fd5b81616d4657616d418585856001617547565b616d54565b616d5385858560016176b9565b5b9050949350505050565b6000808573ffffffffffffffffffffffffffffffffffffffff1611616d8257600080fd5b6000846fffffffffffffffffffffffffffffffff1611616da157600080fd5b81616db857616db385858560006176b9565b616dc6565b616dc58585856000617547565b5b9050949350505050565b616dd86184ce565b600085600001518503905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b0288602001510160060b81526020016000856fffffffffffffffffffffffffffffffff1611616e35576001616e37565b845b6fffffffffffffffffffffffffffffffff1660808463ffffffff1673ffffffffffffffffffffffffffffffffffffffff16901b73ffffffffffffffffffffffffffffffffffffffff1681616e8757fe5b0488604001510173ffffffffffffffffffffffffffffffffffffffff16815260200160011515815250915050949350505050565b616ec36184ce565b616ecb6184ce565b888561ffff1661ffff8110616edc57fe5b016040518060800160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900460060b60060b60060b815260200160008201600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160008201601f9054906101000a900460ff1615151515815250509150616fad88836000015189617843565b15616fe5578663ffffffff16826000015163ffffffff161415616fcf57617239565b81616fdc83898988616dd0565b91509150617239565b888361ffff166001870161ffff1681616ffa57fe5b0661ffff1661ffff811061700a57fe5b016040518060800160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900460060b60060b60060b815260200160008201600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160008201601f9054906101000a900460ff161515151581525050915081606001516171a65788600061ffff81106170e357fe5b016040518060800160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900460060b60060b60060b815260200160008201600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160008201601f9054906101000a900460ff16151515158152505091505b6171b588836000015189617843565b617227576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4f4c44000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b617234898989888761790b565b915091505b97509795505050505050565b600061725f86868660076163a3909392919063ffffffff16565b90506000600154905060006002549050600080600087600f0b14617412576000617287614560565b90506000806172fe8360008060000160149054906101000a900460020b6000800160179054906101000a900461ffff16600460009054906101000a90046fffffffffffffffffffffffffffffffff166000800160199054906101000a900461ffff166008614ead909695949392919063ffffffff16565b915091506173498c8a8c8a8a86888a60007f00000000000000000000000000000000000000000000000000000000000000006005617b8e909a9998979695949392919063ffffffff16565b94506173928b8a8c8a8a86888a60017f00000000000000000000000000000000000000000000000000000000000000006005617b8e909a9998979695949392919063ffffffff16565b935084156173d1576173d08c7f00000000000000000000000000000000000000000000000000000000000000006006617e909092919063ffffffff16565b5b831561740e5761740d8b7f00000000000000000000000000000000000000000000000000000000000000006006617e909092919063ffffffff16565b5b5050505b6000806174318b8b8a89896005617f089095949392919063ffffffff16565b9150915061744c8983838a617fcf909392919063ffffffff16565b600089600f0b121561748f578315617473576174728b600561835390919063ffffffff16565b5b821561748e5761748d8a600561835390919063ffffffff16565b5b5b50505050505095945050505050565b60008082600f0b126174c4576174bf6174ba8585856001616bb6565b614d57565b6174e0565b6174dc6174d78585856000036000616bb6565b614d57565b6000035b90509392505050565b60008082600f0b1261750f5761750a6175058585856001616adc565b614d57565b61752b565b6175276175228585856000036000616adc565b614d57565b6000035b90509392505050565b6000808284061182840401905092915050565b600081156175fd57600073ffffffffffffffffffffffffffffffffffffffff801684111561759e57617599846c01000000000000000000000000876fffffffffffffffffffffffffffffffff16614dd3565b6175c2565b846fffffffffffffffffffffffffffffffff16606060ff1685901b816175c057fe5b045b90506175f56175f0828873ffffffffffffffffffffffffffffffffffffffff16615d4e90919063ffffffff16565b618434565b9150506176b1565b600073ffffffffffffffffffffffffffffffffffffffff801684111561764c57617647846c01000000000000000000000000876fffffffffffffffffffffffffffffffff16616345565b617670565b61766f606060ff1685901b866fffffffffffffffffffffffffffffffff16617534565b5b9050808673ffffffffffffffffffffffffffffffffffffffff161161769457600080fd5b808673ffffffffffffffffffffffffffffffffffffffff16039150505b949350505050565b6000808314156176cb5784905061783b565b6000606060ff16856fffffffffffffffffffffffffffffffff16901b905082156177b25760008673ffffffffffffffffffffffffffffffffffffffff16858873ffffffffffffffffffffffffffffffffffffffff1687029250828161772c57fe5b04141561776e576000818301905082811061776c57617762838973ffffffffffffffffffffffffffffffffffffffff1683616345565b935050505061783b565b505b6177a9826177a4878a73ffffffffffffffffffffffffffffffffffffffff16868161779557fe5b04615d4e90919063ffffffff16565b617534565b9250505061783b565b60008673ffffffffffffffffffffffffffffffffffffffff16858873ffffffffffffffffffffffffffffffffffffffff168702925082816177ef57fe5b041480156177fc57508082115b61780557600080fd5b60008183039050617835617830848a73ffffffffffffffffffffffffffffffffffffffff1684616345565b618434565b93505050505b949350505050565b60008363ffffffff168363ffffffff161115801561786d57508363ffffffff168263ffffffff1611155b15617889578163ffffffff168363ffffffff1611159050617904565b60008463ffffffff168463ffffffff16116178b1576401000000008463ffffffff16016178b9565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff16116178ea576401000000008463ffffffff16016178f2565b8363ffffffff165b64ffffffffff16905080821115925050505b9392505050565b6179136184ce565b61791b6184ce565b60008361ffff166001860161ffff168161793157fe5b0661ffff169050600060018561ffff16830103905060005b600115617b815760028284018161795c57fe5b049050898661ffff16828161796d57fe5b0661ffff811061797957fe5b016040518060800160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900460060b60060b60060b815260200160008201600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160008201601f9054906101000a900460ff16151515158152505094508460600151617a4f57600181019250617949565b898661ffff166001830181617a6057fe5b0661ffff8110617a6c57fe5b016040518060800160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900460060b60060b60060b815260200160008201600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160008201601f9054906101000a900460ff16151515158152505093506000617b3f8a87600001518b617843565b9050808015617b595750617b588a8a8760000151617843565b5b15617b645750617b81565b80617b7457600182039250617b7b565b6001820193505b50617949565b5050509550959350505050565b6000808c60008d60020b60020b8152602001908152602001600020905060008160000160009054906101000a90046fffffffffffffffffffffffffffffffff1690506000617bdc828d61521c565b9050846fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff161115617c78576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f4c4f00000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000826fffffffffffffffffffffffffffffffff161415156000826fffffffffffffffffffffffffffffffff16141515141593506000826fffffffffffffffffffffffffffffffff161415617d97578c60020b8e60020b13617d79578a8360010181905550898360020181905550888360030160076101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550878360030160006101000a81548166ffffffffffffff021916908360060b66ffffffffffffff1602179055508683600301601b6101000a81548163ffffffff021916908363ffffffff1602179055505b600183600301601f6101000a81548160ff0219169083151502179055505b808360000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555085617e0e57617e09617e048d600f0b8560000160109054906101000a9004600f0b600f0b614db090919063ffffffff16565b616008565b617e41565b617e40617e3b8d600f0b8560000160109054906101000a9004600f0b600f0b614d8d90919063ffffffff16565b616008565b5b8360000160106101000a8154816fffffffffffffffffffffffffffffffff0219169083600f0b6fffffffffffffffffffffffffffffffff1602179055505050509b9a5050505050505050505050565b60008160020b8360020b81617ea157fe5b0760020b14617eaf57600080fd5b600080617eca8360020b8560020b81617ec457fe5b056168b7565b9150915060008160ff166001901b9050808660008560010b60010b815260200190815260200160002060008282541892505081905550505050505050565b60008060008860008960020b60020b8152602001908152602001600020905060008960008960020b60020b815260200190815260200160002090506000808a60020b8960020b12617f66578360010154915083600201549050617f79565b8360010154880391508360020154870390505b6000808b60020b8b60020b1215617f9d578460010154915084600201549050617fb0565b84600101548a0391508460020154890390505b81848b0303975080838a03039650505050505050965096945050505050565b6000846040518060a00160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015481526020016003820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016003820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681525050905060008085600f0b141561817657600082600001516fffffffffffffffffffffffffffffffff161161816a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f4e5000000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81600001519050618187565b61818482600001518661521c565b90505b60006181c18360200151860384600001516fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000614dd3565b905060006181fd8460400151860385600001516fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000614dd3565b9050600087600f0b1461824657828860000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b8588600101819055508488600201819055506000826fffffffffffffffffffffffffffffffff16118061828b57506000816fffffffffffffffffffffffffffffffff16115b1561834957818860030160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550808860030160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b5050505050505050565b8160008260020b60020b8152602001908152602001600020600080820160006101000a8154906fffffffffffffffffffffffffffffffff02191690556000820160106101000a8154906fffffffffffffffffffffffffffffffff0219169055600182016000905560028201600090556003820160006101000a81549066ffffffffffffff02191690556003820160076101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560038201601b6101000a81549063ffffffff021916905560038201601f6101000a81549060ff021916905550505050565b6000818291508173ffffffffffffffffffffffffffffffffffffffff161461845b57600080fd5b919050565b6040518060e00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600060020b8152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081525090565b6040518060800160405280600063ffffffff168152602001600060060b8152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600015158152509056fea264697066735822122069f211cc1a6aac0a67e3e3e6b89f37b130e1aa6b10cc7cf2336ddad89f3d968564736f6c63430007060033c001a00da1a7291e4020ff3268c98c167b7d13845f2d33d5f4750e4a2cab9dd3d015daa04cf53d88a0d886822456a03526164476e3377d1467ae71c425adfd94dcc02286c0c0",
"0xf98b80f90239a0213ca8662c2675d17dfd73058c68fc7f07221d6eb84336d1abda2d2eb3b744d0a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940e9281e9c6a0808672eaba6bd1220e144c9bb07aa00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008003835b8d80808466604f9480a0000000000000000000000000000000000000000000000000000000000000000088000000000000000001a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000f9893fb9893c02f9893801020107835b8d808080b988e76101606040523480156200001257600080fd5b503073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505060003373ffffffffffffffffffffffffffffffffffffffff1663890357306040518163ffffffff1660e01b815260040160a06040518083038186803b1580156200009357600080fd5b505afa158015620000a8573d6000803e3d6000fd5b505050506040513d60a0811015620000bf57600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050508095508162ffffff166101009062ffffff1660e81b8152508273ffffffffffffffffffffffffffffffffffffffff1660e09073ffffffffffffffffffffffffffffffffffffffff1660601b8152508373ffffffffffffffffffffffffffffffffffffffff1660c09073ffffffffffffffffffffffffffffffffffffffff1660601b8152508473ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff1660601b81525050505050508060020b6101208160020b60e81b81525050620001df816200021560201b620044521760201c565b6fffffffffffffffffffffffffffffffff16610140816fffffffffffffffffffffffffffffffff1660801b8152505050620002cd565b600080828360020b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860020b816200024957fe5b050290506000838460020b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860000360020b816200028357fe5b05029050600060018560020b84840360020b816200029d57fe5b050190508062ffffff166fffffffffffffffffffffffffffffffff801681620002c257fe5b049350505050919050565b60805160601c60a05160601c60c05160601c60e05160601c6101005160e81c6101205160e81c6101405160801c61854d6200039a600039806131985280617311528061735a52508061123e528061406d52806173a052806173dd52508061143a528061279b52806127d252806140b5525080611b6d528061285c5280612ff352806138a852806140915280615d6f525080610c985280611ced52806128275280612f3e528061379b5280615bab52508061325d52806135035280614049525080614508525061854d6000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806370cf754a116100de578063c45a015511610097578063ddca3f4311610071578063ddca3f4314610b65578063f305839914610b88578063f30dba9314610ba6578063f637731d14610c525761018e565b8063c45a015514610adc578063d0c93a7c14610b10578063d21220a714610b315761018e565b806370cf754a146107a95780638206a4d1146107d957806385b6672914610817578063883bdbfd146108d2578063a34123a7146109e8578063a38807f214610a5d5761018e565b80633850c7bd1161014b578063490e6cbc11610125578063490e6cbc1461054e5780634f1eb3d8146105fb578063514ea4bf146106d05780635339c296146107645761018e565b80633850c7bd146103d45780633c8a7d8d1461044657806346141319146105305761018e565b80630dfe168114610193578063128acb08146101c75780631a686502146102b15780631ad8b03b146102e1578063252c09d71461032a57806332148f67146103a2575b600080fd5b61019b610c96565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610294600480360360a08110156101dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561025057600080fd5b82018360208201111561026257600080fd5b8035906020019184600183028401116401000000008311171561028457600080fd5b9091929391929390505050610cba565b604051808381526020018281526020019250505060405180910390f35b6102b9611f43565b60405180826fffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102e9611f65565b60405180836fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6103566004803603602081101561034057600080fd5b8101908080359060200190929190505050611faf565b604051808563ffffffff1681526020018460060b81526020018373ffffffffffffffffffffffffffffffffffffffff168152602001821515815260200194505050505060405180910390f35b6103d2600480360360208110156103b857600080fd5b81019080803561ffff16906020019092919050505061202d565b005b6103dc61219f565b604051808873ffffffffffffffffffffffffffffffffffffffff1681526020018760020b81526020018661ffff1681526020018561ffff1681526020018461ffff1681526020018360ff168152602001821515815260200197505050505050505060405180910390f35b610513600480360360a081101561045c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560020b9060200190929190803560020b906020019092919080356fffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156104cf57600080fd5b8201836020820111156104e157600080fd5b8035906020019184600183028401116401000000008311171561050357600080fd5b9091929391929390505050612240565b604051808381526020018281526020019250505060405180910390f35b610538612639565b6040518082815260200191505060405180910390f35b6105f96004803603608081101561056457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001906401000000008111156105b557600080fd5b8201836020820111156105c757600080fd5b803590602001918460018302840111640100000000831117156105e957600080fd5b909192939192939050505061263f565b005b61068f600480360360a081101561061157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560020b9060200190929190803560020b906020019092919080356fffffffffffffffffffffffffffffffff16906020019092919080356fffffffffffffffffffffffffffffffff169060200190929190505050612d18565b60405180836fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6106fc600480360360208110156106e657600080fd5b81019080803590602001909291905050506130f4565b60405180866fffffffffffffffffffffffffffffffff168152602001858152602001848152602001836fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff1681526020019550505050505060405180910390f35b6107936004803603602081101561077a57600080fd5b81019080803560010b906020019092919050505061317e565b6040518082815260200191505060405180910390f35b6107b1613196565b60405180826fffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610815600480360360408110156107ef57600080fd5b81019080803560ff169060200190929190803560ff1690602001909291905050506131ba565b005b6108916004803603606081101561082d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080356fffffffffffffffffffffffffffffffff16906020019092919080356fffffffffffffffffffffffffffffffff16906020019092919050505061345d565b60405180836fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b610949600480360360208110156108e857600080fd5b810190808035906020019064010000000081111561090557600080fd5b82018360208201111561091757600080fd5b8035906020019184602083028401116401000000008311171561093957600080fd5b9091929391929390505050613997565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610990578082015181840152602081019050610975565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156109d25780820151818401526020810190506109b7565b5050505090500194505050505060405180910390f35b610a40600480360360608110156109fe57600080fd5b81019080803560020b9060200190929190803560020b906020019092919080356fffffffffffffffffffffffffffffffff169060200190929190505050613a66565b604051808381526020018281526020019250505060405180910390f35b610a9960048036036040811015610a7357600080fd5b81019080803560020b9060200190929190803560020b9060200190929190505050613cfd565b604051808460060b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018263ffffffff168152602001935050505060405180910390f35b610ae4614047565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b1861406b565b604051808260020b815260200191505060405180910390f35b610b3961408f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b6d6140b3565b604051808262ffffff16815260200191505060405180910390f35b610b906140d7565b6040518082815260200191505060405180910390f35b610bd560048036036020811015610bbc57600080fd5b81019080803560020b90602001909291905050506140dd565b60405180896fffffffffffffffffffffffffffffffff16815260200188600f0b81526020018781526020018681526020018560060b81526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018363ffffffff16815260200182151581526020019850505050505050505060405180910390f35b610c9460048036036020811015610c6857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614198565b005b7f000000000000000000000000000000000000000000000000000000000000000081565b600080610cc5614506565b6000861415610d3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f415300000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000806040518060e00160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460020b60020b60020b81526020016000820160179054906101000a900461ffff1661ffff1661ffff1681526020016000820160199054906101000a900461ffff1661ffff1661ffff16815260200160008201601b9054906101000a900461ffff1661ffff1661ffff16815260200160008201601d9054906101000a900460ff1660ff1660ff16815260200160008201601e9054906101000a900460ff16151515158152505090508060c00151610ece576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4c4f4b000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b87610f5657806000015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16118015610f51575073fffd8963efd1fc6a506488495d951d5263988d2673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16105b610fc6565b806000015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16108015610fc557506401000276a373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16115b5b611038576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f53504c000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600001601e6101000a81548160ff02191690831515021790555060006040518060c001604052808a6110785760048460a0015160ff16901c61108b565b60108460a0015160ff168161108957fe5b065b60ff168152602001600460009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016110d1614560565b63ffffffff168152602001600060060b8152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000151581525090506000808913905060006040518060e001604052808b815260200160008152602001856000015173ffffffffffffffffffffffffffffffffffffffff168152602001856020015160020b81526020018c6111675760025461116b565b6001545b815260200160006fffffffffffffffffffffffffffffffff16815260200184602001516fffffffffffffffffffffffffffffffff1681525090505b60008160000151141580156111eb57508873ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff1614155b15611835576111f8618460565b8160400151816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061127082606001517f00000000000000000000000000000000000000000000000000000000000000008e6006614568909392919063ffffffff16565b826020018360400182151515158152508260020b60020b81525050507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860020b816020015160020b12156112f5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618816020019060020b908160020b81525050611361565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860000360020b816020015160020b1315611360577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618600003816020019060020b908160020b815250505b5b61136e81602001516146c0565b816060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061145e82604001518d6113ea578b73ffffffffffffffffffffffffffffffffffffffff16836060015173ffffffffffffffffffffffffffffffffffffffff161161141e565b8b73ffffffffffffffffffffffffffffffffffffffff16836060015173ffffffffffffffffffffffffffffffffffffffff16105b61142c57826060015161142e565b8b5b8460c0015185600001517f0000000000000000000000000000000000000000000000000000000000000000614afb565b85604001856080018660a0018760c0018481525084815250848152508473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250505050508215611507576114c78160c00151826080015101614d57565b8260000181815103915081815250506114f96114e68260a00151614d57565b8360200151614d8d90919063ffffffff16565b826020018181525050611556565b6115148160a00151614d57565b82600001818151019150818152505061154c6115398260c00151836080015101614d57565b8360200151614db090919063ffffffff16565b8260200181815250505b6000846000015160ff1611156115c7576000846000015160ff168260c001518161157c57fe5b049050808260c0018181510391508181525050808360a001818151019150906fffffffffffffffffffffffffffffffff1690816fffffffffffffffffffffffffffffffff1681525050505b60008260c001516fffffffffffffffffffffffffffffffff16111561162c5761161c8160c001517001000000000000000000000000000000008460c001516fffffffffffffffffffffffffffffffff16614dd3565b8260800181815101915081815250505b806060015173ffffffffffffffffffffffffffffffffffffffff16826040015173ffffffffffffffffffffffffffffffffffffffff1614156117d4578060400151156117a6578360a00151611704576116ae846040015160008760200151886040015188602001518a606001516008614ead909695949392919063ffffffff16565b85606001866080018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508260060b60060b815250505060018460a00190151590811515815250505b600061175882602001518e61171b57600154611721565b84608001515b8f611730578560800151611734565b6002545b886080015189606001518a6040015160056150e0909695949392919063ffffffff16565b90508c15611767578060000390505b6117758360c001518261521c565b8360c001906fffffffffffffffffffffffffffffffff1690816fffffffffffffffffffffffffffffffff1681525050505b8b6117b55780602001516117be565b60018160200151035b826060019060020b908160020b8152505061182f565b806000015173ffffffffffffffffffffffffffffffffffffffff16826040015173ffffffffffffffffffffffffffffffffffffffff161461182e5761181c8260400151615375565b826060019060020b908160020b815250505b5b506111a6565b836020015160020b816060015160020b1461194b5760008061188386604001518660400151886020015188602001518a606001518b608001516008615771909695949392919063ffffffff16565b915091508260400151836060015183836000800160008060000160146000800160176000800160198891906101000a81548161ffff021916908361ffff1602179055508791906101000a81548161ffff021916908361ffff1602179055508691906101000a81548162ffffff021916908360020b62ffffff1602179055508591906101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050611993565b80604001516000800160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8060c001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff1614611a04578060c00151600460006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b8a15611a9b57806080015160018190555060008160a001516fffffffffffffffffffffffffffffffff161115611a96578060a00151600360000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b611b28565b806080015160028190555060008160a001516fffffffffffffffffffffffffffffffff161115611b27578060a00151600360000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b5b8115158b151514611b4457806020015181600001518b03611b51565b80600001518a0381602001515b80965081975050508a15611cdf576000851215611b9757611b967f00000000000000000000000000000000000000000000000000000000000000008d876000036159a3565b5b6000611ba1615ba4565b90503373ffffffffffffffffffffffffffffffffffffffff1663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611c3257600080fd5b505af1158015611c46573d6000803e3d6000fd5b50505050611c52615ba4565b611c658883615d4e90919063ffffffff16565b1115611cd9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f494941000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b50611e5b565b6000861215611d1757611d167f00000000000000000000000000000000000000000000000000000000000000008d886000036159a3565b5b6000611d21615d68565b90503373ffffffffffffffffffffffffffffffffffffffff1663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611db257600080fd5b505af1158015611dc6573d6000803e3d6000fd5b50505050611dd2615d68565b611de58783615d4e90919063ffffffff16565b1115611e59576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f494941000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b505b8b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67888885604001518660c001518760600151604051808681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff168152602001836fffffffffffffffffffffffffffffffff1681526020018260020b81526020019550505050505060405180910390a3600160008001601e6101000a81548160ff02191690831515021790555050505050965096945050505050565b600460009054906101000a90046fffffffffffffffffffffffffffffffff1681565b60038060000160009054906101000a90046fffffffffffffffffffffffffffffffff16908060000160109054906101000a90046fffffffffffffffffffffffffffffffff16905082565b60088161ffff8110611fc057600080fd5b016000915090508060000160009054906101000a900463ffffffff16908060000160049054906101000a900460060b9080600001600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600001601f9054906101000a900460ff16905084565b60008001601e9054906101000a900460ff166120b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4c4f4b000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600001601e6101000a81548160ff0219169083151502179055506120d6614506565b600080600001601b9054906101000a900461ffff169050600061210582846008615f129092919063ffffffff16565b90508060008001601b6101000a81548161ffff021916908361ffff1602179055508061ffff168261ffff161461217d577fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a8282604051808361ffff1681526020018261ffff1681526020019250505060405180910390a15b5050600160008001601e6101000a81548160ff02191690831515021790555050565b60008060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460020b908060000160179054906101000a900461ffff16908060000160199054906101000a900461ffff169080600001601b9054906101000a900461ffff169080600001601d9054906101000a900460ff169080600001601e9054906101000a900460ff16905087565b60008060008001601e9054906101000a900460ff166122c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4c4f4b000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600001601e6101000a81548160ff0219169083151502179055506000856fffffffffffffffffffffffffffffffff161161230357600080fd5b60008061236860405180608001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b60020b81526020018a60020b815260200161235d8a6fffffffffffffffffffffffffffffffff16616008565b600f0b815250616021565b9250925050819350809250600080600086111561238a57612387615ba4565b91505b600085111561239e5761239b615d68565b90505b3373ffffffffffffffffffffffffffffffffffffffff1663d348799787878b8b6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561242d57600080fd5b505af1158015612441573d6000803e3d6000fd5b5050505060008611156124de57612456615ba4565b6124698784615d4e90919063ffffffff16565b11156124dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f4d3000000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b6000851115612577576124ef615d68565b6125028683615d4e90919063ffffffff16565b1115612576576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f4d3100000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b8960020b8b60020b8d73ffffffffffffffffffffffffffffffffffffffff167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde338d8b8b604051808573ffffffffffffffffffffffffffffffffffffffff168152602001846fffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a450505050600160008001601e6101000a81548160ff021916908315150217905550965096945050505050565b60025481565b60008001601e9054906101000a900460ff166126c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4c4f4b000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600001601e6101000a81548160ff0219169083151502179055506126e8614506565b6000600460009054906101000a90046fffffffffffffffffffffffffffffffff1690506000816fffffffffffffffffffffffffffffffff1611612793576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260018152602001807f4c0000000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60006127c8867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f4240616345565b905060006127ff867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f4240616345565b9050600061280b615ba4565b90506000612817615d68565b9050600089111561284e5761284d7f00000000000000000000000000000000000000000000000000000000000000008b8b6159a3565b5b6000881115612883576128827f00000000000000000000000000000000000000000000000000000000000000008b8a6159a3565b5b3373ffffffffffffffffffffffffffffffffffffffff1663e9cbafb085858a8a6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561291257600080fd5b505af1158015612926573d6000803e3d6000fd5b505050506000612934615ba4565b90506000612940615d68565b9050816129568786615d4e90919063ffffffff16565b11156129ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f463000000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806129de8685615d4e90919063ffffffff16565b1115612a52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f463100000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008483039050600084830390506000821115612b6a576000601060008001601d9054906101000a900460ff1660ff1681612a8957fe5b0690506000808260ff1614612aaa578160ff168481612aa457fe5b04612aad565b60005b90506000816fffffffffffffffffffffffffffffffff161115612b285780600360000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b612b588185037001000000000000000000000000000000008d6fffffffffffffffffffffffffffffffff16614dd3565b60016000828254019250508190555050505b6000811115612c6e576000600460008001601d9054906101000a900460ff1660ff16901c90506000808260ff1614612bae578160ff168381612ba857fe5b04612bb1565b60005b90506000816fffffffffffffffffffffffffffffffff161115612c2c5780600360000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b612c5c8184037001000000000000000000000000000000008d6fffffffffffffffffffffffffffffffff16614dd3565b60026000828254019250508190555050505b8d73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6338f8f86866040518085815260200184815260200183815260200182815260200194505050505060405180910390a3505050505050505050600160008001601e6101000a81548160ff0219169083151502179055505050505050565b60008060008001601e9054906101000a900460ff16612d9f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4c4f4b000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600001601e6101000a81548160ff0219169083151502179055506000612dd633888860076163a3909392919063ffffffff16565b90508060030160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16856fffffffffffffffffffffffffffffffff1611612e295784612e4b565b8060030160009054906101000a90046fffffffffffffffffffffffffffffffff165b92508060030160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff1611612e9e5783612ec0565b8060030160109054906101000a90046fffffffffffffffffffffffffffffffff165b91506000836fffffffffffffffffffffffffffffffff161115612f7757828160030160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550612f767f000000000000000000000000000000000000000000000000000000000000000089856fffffffffffffffffffffffffffffffff166159a3565b5b6000826fffffffffffffffffffffffffffffffff16111561302c57818160030160108282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555061302b7f000000000000000000000000000000000000000000000000000000000000000089846fffffffffffffffffffffffffffffffff166159a3565b5b8560020b8760020b3373ffffffffffffffffffffffffffffffffffffffff167f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c08b8787604051808473ffffffffffffffffffffffffffffffffffffffff168152602001836fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff168152602001935050505060405180910390a450600160008001601e6101000a81548160ff0219169083151502179055509550959350505050565b60076020528060005260406000206000915090508060000160009054906101000a90046fffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a90046fffffffffffffffffffffffffffffffff16908060030160109054906101000a90046fffffffffffffffffffffffffffffffff16905085565b60066020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008001601e9054906101000a900460ff1661323e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4c4f4b000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600001601e6101000a81548160ff0219169083151502179055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156132c157600080fd5b505afa1580156132d5573d6000803e3d6000fd5b505050506040513d60208110156132eb57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461333357600080fd5b60008260ff161480613359575060048260ff16101580156133585750600a8260ff1611155b5b8015613387575060008160ff161480613386575060048160ff16101580156133855750600a8160ff1611155b5b5b61339057600080fd5b600080600001601d9054906101000a900460ff16905060048260ff16901b830160008001601d6101000a81548160ff021916908360ff1602179055507f973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b13360108260ff16816133fa57fe5b0660048360ff16901c8585604051808560ff1681526020018460ff1681526020018360ff1681526020018260ff16815260200194505050505060405180910390a150600160008001601e6101000a81548160ff0219169083151502179055505050565b60008060008001601e9054906101000a900460ff166134e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4c4f4b000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600001601e6101000a81548160ff0219169083151502179055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561356757600080fd5b505afa15801561357b573d6000803e3d6000fd5b505050506040513d602081101561359157600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146135d957600080fd5b600360000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff161161362b578361364e565b600360000160009054906101000a90046fffffffffffffffffffffffffffffffff165b9150600360000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff16116136a257826136c5565b600360000160109054906101000a90046fffffffffffffffffffffffffffffffff165b90506000826fffffffffffffffffffffffffffffffff1611156137d457600360000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff161415613739578180600190039250505b81600360000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506137d37f000000000000000000000000000000000000000000000000000000000000000086846fffffffffffffffffffffffffffffffff166159a3565b5b6000816fffffffffffffffffffffffffffffffff1611156138e157600360000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff161415613846578080600190039150505b80600360000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506138e07f000000000000000000000000000000000000000000000000000000000000000086836fffffffffffffffffffffffffffffffff166159a3565b5b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151848460405180836fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff1681526020019250505060405180910390a3600160008001601e6101000a81548160ff021916908315150217905550935093915050565b6060806139a2614506565b613a5b6139ad614560565b858580806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050506000800160149054906101000a900460020b6000800160179054906101000a900461ffff16600460009054906101000a90046fffffffffffffffffffffffffffffffff166000800160199054906101000a900461ffff16600861641c909695949392919063ffffffff16565b915091509250929050565b60008060008001601e9054906101000a900460ff16613aed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4c4f4b000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600001601e6101000a81548160ff0219169083151502179055506000806000613b7460405180608001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018a60020b81526020018960020b8152602001613b66896fffffffffffffffffffffffffffffffff16616008565b600003600f0b815250616021565b9250925092508160000394508060000393506000851180613b955750600084115b15613c5d57848360030160009054906101000a90046fffffffffffffffffffffffffffffffff1601848460030160109054906101000a90046fffffffffffffffffffffffffffffffff16018460030160008660030160108491906101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055508391906101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050505b8660020b8860020b3373ffffffffffffffffffffffffffffffffffffffff167f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c89898960405180846fffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a4505050600160008001601e6101000a81548160ff021916908315150217905550935093915050565b6000806000613d0a614506565b613d1485856165d7565b6000806000806000806000600560008d60020b60020b815260200190815260200160002090506000600560008d60020b60020b8152602001908152602001600020905060008260030160009054906101000a900460060b8360030160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684600301601b9054906101000a900463ffffffff1685600301601f9054906101000a900460ff16809450819850829a50839c505050505080613dd157600080fd5b60008260030160009054906101000a900460060b8360030160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684600301601b9054906101000a900463ffffffff1685600301601f9054906101000a900460ff16809450819850829a50839c505050505080613e4b57600080fd5b505050506000806040518060e00160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460020b60020b60020b81526020016000820160179054906101000a900461ffff1661ffff1661ffff1681526020016000820160199054906101000a900461ffff1661ffff1661ffff16815260200160008201601b9054906101000a900461ffff1661ffff1661ffff16815260200160008201601d9054906101000a900460ff1660ff1660ff16815260200160008201601e9054906101000a900460ff16151515158152505090508b60020b816020015160020b1215613f975785870384860383850399509950995050505050505050614040565b8a60020b816020015160020b1215614029576000613fb3614560565b905060008061400183600086602001518760400151600460009054906101000a90046fffffffffffffffffffffffffffffffff1689606001516008614ead909695949392919063ffffffff16565b91509150888a830303878983030386888603039c509c509c5050505050505050505050614040565b868603858503848403995099509950505050505050505b9250925092565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015481565b60056020528060005260406000206000915090508060000160009054906101000a90046fffffffffffffffffffffffffffffffff16908060000160109054906101000a9004600f0b908060010154908060020154908060030160009054906101000a900460060b908060030160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600301601b9054906101000a900463ffffffff169080600301601f9054906101000a900460ff16905088565b60008060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614248576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f414900000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600061425382615375565b9050600080614273614263614560565b600861679190919063ffffffff16565b915091506040518060e001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018460020b8152602001600061ffff1681526020018361ffff1681526020018261ffff168152602001600060ff168152602001600115158152506000808201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548162ffffff021916908360020b62ffffff16021790555060408201518160000160176101000a81548161ffff021916908361ffff16021790555060608201518160000160196101000a81548161ffff021916908361ffff160217905550608082015181600001601b6101000a81548161ffff021916908361ffff16021790555060a082015181600001601d6101000a81548160ff021916908360ff16021790555060c082015181600001601e6101000a81548160ff0219169083151502179055509050507f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c958484604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018260020b81526020019250505060405180910390a150505050565b600080828360020b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860020b8161448557fe5b050290506000838460020b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860000360020b816144be57fe5b05029050600060018560020b84840360020b816144d757fe5b050190508062ffffff166fffffffffffffffffffffffffffffffff8016816144fb57fe5b049350505050919050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461455e57600080fd5b565b600042905090565b60008060008460020b8660020b8161457c57fe5b05905060008660020b1280156145a5575060008560020b8760020b8161459e57fe5b0760020b14155b156145b4578080600190039150505b8315614638576000806145c6836168b7565b9150915060008160ff166001901b60018360ff166001901b030190506000818b60008660010b60010b815260200190815260200160002054169050600081141595508561461a57888360ff1686030261462d565b88614624826168da565b840360ff168603025b9650505050506146b6565b600080614647600184016168b7565b91509150600060018260ff166001901b031990506000818b60008660010b60010b815260200190815260200160002054169050600081141595508561469957888360ff0360ff166001870101026146af565b88836146a4836169b5565b0360ff166001870101025b9650505050505b5094509492505050565b60008060008360020b126146d7578260020b6146df565b8260020b6000035b90507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860000360020b81111561477d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260018152602001807f540000000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000806001831614156147a1577001000000000000000000000000000000006147b3565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff169050600060028316146147ed5760806ffff97272373d413259a46990580e213a8202901c90505b600060048316146148125760806ffff2e50f5f656932ef12357cf3c7fdcc8202901c90505b600060088316146148375760806fffe5caca7e10e4e61c3624eaa0941cd08202901c90505b6000601083161461485c5760806fffcb9843d60f6159c9db58835c9266448202901c90505b600060208316146148815760806fff973b41fa98c081472e6896dfb254c08202901c90505b600060408316146148a65760806fff2ea16466c96a3843ec78b326b528618202901c90505b600060808316146148cb5760806ffe5dee046a99a2a811c461f1969c30538202901c90505b60006101008316146148f15760806ffcbe86c7900a88aedcffc83b479aa3a48202901c90505b60006102008316146149175760806ff987a7253ac413176f2b074cf7815e548202901c90505b600061040083161461493d5760806ff3392b0822b70005940c7a398e4b70f38202901c90505b60006108008316146149635760806fe7159475a2c29b7443b29c7fa6e889d98202901c90505b60006110008316146149895760806fd097f3bdfd2022b8845ad8f792aa58258202901c90505b60006120008316146149af5760806fa9f746462d870fdf8a65dc1f90e061e58202901c90505b60006140008316146149d55760806f70d869a156d2a1b890bb3df62baf32f78202901c90505b60006180008316146149fb5760806f31be135f97d08fd981231505542fcfa68202901c90505b600062010000831614614a225760806f09aa508b5b7a84e1c677de54f3e99bc98202901c90505b600062020000831614614a485760806e5d6af8dedb81196699c329225ee6048202901c90505b600062040000831614614a6d5760806d2216e584f5fa1ea926041bedfe988202901c90505b600062080000831614614a905760806b048a170391f7dc42444e8fa28202901c90505b60008460020b1315614ac957807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81614ac557fe5b0490505b60006401000000008281614ad957fe5b0614614ae6576001614ae9565b60005b60ff16602082901c0192505050919050565b60008060008060008873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161015905060008088121590508015614baa576000614b5d8989620f42400362ffffff16620f4240614dd3565b905082614b7657614b718c8c8c6001616adc565b614b84565b614b838b8d8c6001616bb6565b5b9550858110614b95578a9650614ba4565b614ba18c8b8386616cec565b96505b50614bf6565b81614bc157614bbc8b8b8b6000616bb6565b614bcf565b614bce8a8c8b6000616adc565b5b9350838860000310614be357899550614bf5565b614bf28b8a8a60000385616d5e565b95505b5b60008673ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff161490508215614c7d57808015614c395750815b614c4f57614c4a878d8c6001616bb6565b614c51565b855b9550808015614c5e575081155b614c7457614c6f878d8c6000616adc565b614c76565b845b9450614cc7565b808015614c875750815b614c9d57614c988c888c6001616adc565b614c9f565b855b9550808015614cac575081155b614cc257614cbd8c888c6000616bb6565b614cc4565b845b94505b81158015614cd757508860000385115b15614ce3578860000394505b818015614d1c57508a73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b15614d2b578589039350614d48565b614d45868962ffffff168a620f42400362ffffff16616345565b93505b50505095509550955095915050565b60007f80000000000000000000000000000000000000000000000000000000000000008210614d8557600080fd5b819050919050565b6000808212151515838385039250821315151514614daa57600080fd5b92915050565b6000808212151515838385019250821215151514614dcd57600080fd5b92915050565b600080600080198587098587029250828110838203039150506000811415614e0e5760008411614e0257600080fd5b83820492505050614ea6565b808411614e1a57600080fd5b600084868809905082811182039150808303925060008586600003169050808604955080840493506001818260000304019050808302841793506000600287600302189050808702600203810290508087026002038102905080870260020381029050808702600203810290508087026002038102905080870260020381029050808502955050505050505b9392505050565b60008060008763ffffffff161415614fce576000898661ffff1661ffff8110614ed257fe5b016040518060800160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900460060b60060b60060b815260200160008201600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160008201601f9054906101000a900460ff16151515158152505090508863ffffffff16816000015163ffffffff1614614fba57614fb7818a8988616dd0565b90505b8060200151816040015192509250506150d4565b60008789039050600080614fe78c8c858c8c8c8c616ebb565b91509150816000015163ffffffff168363ffffffff1614156150195781602001518260400151945094505050506150d4565b806000015163ffffffff168363ffffffff1614156150475780602001518160400151945094505050506150d4565b60008260000151826000015103905060008360000151850390508063ffffffff168263ffffffff16856020015185602001510360060b8161508457fe5b05028460200151018263ffffffff168263ffffffff16866040015186604001510373ffffffffffffffffffffffffffffffffffffffff1602816150c357fe5b048560400151019650965050505050505b97509795505050505050565b6000808860008960020b60020b815260200190815260200160002090508060010154870381600101819055508060020154860381600201819055508060030160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685038160030160076101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060030160009054906101000a900460060b84038160030160006101000a81548166ffffffffffffff021916908360060b66ffffffffffffff16021790555080600301601b9054906101000a900463ffffffff16830381600301601b6101000a81548163ffffffff021916908363ffffffff1602179055508060000160109054906101000a9004600f0b915050979650505050505050565b60008082600f0b12156152cf57826fffffffffffffffffffffffffffffffff168260000384039150816fffffffffffffffffffffffffffffffff16106152ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f4c5300000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b61536f565b826fffffffffffffffffffffffffffffffff168284019150816fffffffffffffffffffffffffffffffff16101561536e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f4c4100000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b92915050565b60006401000276a373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16101580156153f7575073fffd8963efd1fc6a506488495d951d5263988d2673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16105b615469576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260018152602001807f520000000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600060208373ffffffffffffffffffffffffffffffffffffffff16901b9050600081905060006fffffffffffffffffffffffffffffffff821160071b808217915082811c92505067ffffffffffffffff821160061b808217915082811c92505063ffffffff821160051b808217915082811c92505061ffff821160041b808217915082811c92505060ff821160031b808217915082811c925050600f821160021b808217915082811c9250506003821160011b808217915082811c925050600182118082179150506080811061554757607f810383901c9150615551565b80607f0383901b91505b6000604060808303901b9050828302607f1c92508260801c80603f1b8217915083811c935050828302607f1c92508260801c80603e1b8217915083811c935050828302607f1c92508260801c80603d1b8217915083811c935050828302607f1c92508260801c80603c1b8217915083811c935050828302607f1c92508260801c80603b1b8217915083811c935050828302607f1c92508260801c80603a1b8217915083811c935050828302607f1c92508260801c8060391b8217915083811c935050828302607f1c92508260801c8060381b8217915083811c935050828302607f1c92508260801c8060371b8217915083811c935050828302607f1c92508260801c8060361b8217915083811c935050828302607f1c92508260801c8060351b8217915083811c935050828302607f1c92508260801c8060341b8217915083811c935050828302607f1c92508260801c8060331b8217915083811c935050828302607f1c92508260801c8060321b82179150506000693627a301d71055774c8582029050600060806f028f6481ab7f045a5af012a19d003aaa8303901d9050600060806fdb2df09e81959a81455e260799a0632f8401901d90508060020b8260020b14615761578873ffffffffffffffffffffffffffffffffffffffff16615738826146c0565b73ffffffffffffffffffffffffffffffffffffffff16111561575a578161575c565b805b615763565b815b975050505050505050919050565b6000806000898961ffff1661ffff811061578757fe5b016040518060800160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900460060b60060b60060b815260200160008201600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160008201601f9054906101000a900460ff16151515158152505090508763ffffffff16816000015163ffffffff16141561586d5788859250925050615997565b8461ffff168461ffff1611801561588e57506001850361ffff168961ffff16145b1561589b5783915061589f565b8491505b8161ffff1660018a0161ffff16816158b357fe5b0692506158c281898989616dd0565b8a8461ffff1661ffff81106158d357fe5b0160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548166ffffffffffffff021916908360060b66ffffffffffffff160217905550604082015181600001600b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600001601f6101000a81548160ff021916908315150217905550905050505b97509795505050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b8585604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310615a845780518252602082019150602081019050602083039250615a61565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114615ae6576040519150601f19603f3d011682016040523d82523d6000602084013e615aeb565b606091505b5091509150818015615b2b5750600081511480615b2a5750808060200190516020811015615b1857600080fd5b81019080805190602001909291905050505b5b615b9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f544600000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b5050505050565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a0823160e01b30604051602401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310615c9f5780518252602082019150602081019050602083039250615c7c565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114615cff576040519150601f19603f3d011682016040523d82523d6000602084013e615d04565b606091505b5091509150818015615d1857506020815110155b615d2157600080fd5b808060200190516020811015615d3657600080fd5b81019080805190602001909291905050509250505090565b6000828284019150811015615d6257600080fd5b92915050565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a0823160e01b30604051602401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310615e635780518252602082019150602081019050602083039250615e40565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114615ec3576040519150601f19603f3d011682016040523d82523d6000602084013e615ec8565b606091505b5091509150818015615edc57506020815110155b615ee557600080fd5b808060200190516020811015615efa57600080fd5b81019080805190602001909291905050509250505090565b6000808361ffff1611615f8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260018152602001807f490000000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8261ffff168261ffff1611615fa457829050616001565b60008390505b8261ffff168161ffff161015615ffc576001858261ffff1661ffff8110615fcd57fe5b0160000160006101000a81548163ffffffff021916908363ffffffff1602179055508080600101915050615faa565b508190505b9392505050565b60008182915081600f0b1461601c57600080fd5b919050565b600080600061602e614506565b616040846020015185604001516165d7565b6000806040518060e00160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460020b60020b60020b81526020016000820160179054906101000a900461ffff1661ffff1661ffff1681526020016000820160199054906101000a900461ffff1661ffff1661ffff16815260200160008201601b9054906101000a900461ffff1661ffff1661ffff16815260200160008201601d9054906101000a900460ff1660ff1660ff16815260200160008201601e9054906101000a900460ff161515151581525050905061617c85600001518660200151876040015188606001518560200151617245565b935060008560600151600f0b1461633d57846020015160020b816020015160020b12156161d1576161ca6161b386602001516146c0565b6161c087604001516146c0565b876060015161749e565b925061633c565b846040015160020b816020015160020b1215616311576000600460009054906101000a90046fffffffffffffffffffffffffffffffff16905061623f826040015161621a614560565b846020015184866060015187608001516008615771909695949392919063ffffffff16565b6000800160176000800160198491906101000a81548161ffff021916908361ffff1602179055508391906101000a81548161ffff021916908361ffff16021790555050506162a2826000015161629888604001516146c0565b886060015161749e565b93506162c36162b487602001516146c0565b836000015188606001516174e9565b92506162d381876060015161521c565b600460006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505061633b565b61633861632186602001516146c0565b61632e87604001516146c0565b87606001516174e9565b91505b5b5b509193909250565b6000616352848484614dd3565b90506000828061635e57fe5b848609111561639c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811061639357600080fd5b80806001019150505b9392505050565b6000846000858585604051602001808473ffffffffffffffffffffffffffffffffffffffff1660601b81526014018360020b60e81b81526003018260020b60e81b815260030193505050506040516020818303038152906040528051906020012081526020019081526020016000209050949350505050565b60608060008361ffff1611616499576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260018152602001807f490000000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b865167ffffffffffffffff811180156164b157600080fd5b506040519080825280602002602001820160405280156164e05781602001602082028036833780820191505090505b509150865167ffffffffffffffff811180156164fb57600080fd5b5060405190808252806020026020018201604052801561652a5781602001602082028036833780820191505090505b50905060005b87518110156165ca5761655b8a8a8a848151811061654a57fe5b60200260200101518a8a8a8a614ead565b84838151811061656757fe5b6020026020010184848151811061657a57fe5b602002602001018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508260060b60060b81525050508080600101915050616530565b5097509795505050505050565b8060020b8260020b12616652576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f544c55000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860020b8260020b12156166ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f544c4d000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860000360020b8160020b131561678d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f54554d000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b5050565b60008060405180608001604052808463ffffffff168152602001600060060b8152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016001151581525084600061ffff81106167e757fe5b0160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548166ffffffffffffff021916908360060b66ffffffffffffff160217905550604082015181600001600b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600001601f6101000a81548160ff021916908315150217905550905050600180915091509250929050565b60008060088360020b901d91506101008360020b816168d257fe5b079050915091565b60008082116168e857600080fd5b700100000000000000000000000000000000821061690e57608082901c91506080810190505b68010000000000000000821061692c57604082901c91506040810190505b640100000000821061694657602082901c91506020810190505b62010000821061695e57601082901c91506010810190505b610100821061697557600882901c91506008810190505b6010821061698b57600482901c91506004810190505b600482106169a157600282901c91506002810190505b600282106169b0576001810190505b919050565b60008082116169c357600080fd5b60ff905060006fffffffffffffffffffffffffffffffff8016831611156169ef576080810390506169f7565b608082901c91505b600067ffffffffffffffff801683161115616a1757604081039050616a1f565b604082901c91505b600063ffffffff801683161115616a3b57602081039050616a43565b602082901c91505b600061ffff801683161115616a5d57601081039050616a65565b601082901c91505b600060ff801683161115616a7e57600881039050616a86565b600882901c91505b6000600f83161115616a9d57600481039050616aa5565b600482901c91505b6000600383161115616abc57600281039050616ac4565b600282901c91505b6000600183161115616ad7576001810390505b919050565b60008373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161115616b1d57838580955081965050505b81616b6957616b64836fffffffffffffffffffffffffffffffff1686860373ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000614dd3565b616bac565b616bab836fffffffffffffffffffffffffffffffff1686860373ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000616345565b5b9050949350505050565b60008373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161115616bf757838580955081965050505b6000606060ff16846fffffffffffffffffffffffffffffffff16901b9050600086860373ffffffffffffffffffffffffffffffffffffffff16905060008773ffffffffffffffffffffffffffffffffffffffff1611616c5557600080fd5b83616c9f578673ffffffffffffffffffffffffffffffffffffffff16616c9283838973ffffffffffffffffffffffffffffffffffffffff16614dd3565b81616c9957fe5b04616ce0565b616cdf616cc383838973ffffffffffffffffffffffffffffffffffffffff16616345565b8873ffffffffffffffffffffffffffffffffffffffff16617534565b5b92505050949350505050565b6000808573ffffffffffffffffffffffffffffffffffffffff1611616d1057600080fd5b6000846fffffffffffffffffffffffffffffffff1611616d2f57600080fd5b81616d4657616d418585856001617547565b616d54565b616d5385858560016176b9565b5b9050949350505050565b6000808573ffffffffffffffffffffffffffffffffffffffff1611616d8257600080fd5b6000846fffffffffffffffffffffffffffffffff1611616da157600080fd5b81616db857616db385858560006176b9565b616dc6565b616dc58585856000617547565b5b9050949350505050565b616dd86184ce565b600085600001518503905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b0288602001510160060b81526020016000856fffffffffffffffffffffffffffffffff1611616e35576001616e37565b845b6fffffffffffffffffffffffffffffffff1660808463ffffffff1673ffffffffffffffffffffffffffffffffffffffff16901b73ffffffffffffffffffffffffffffffffffffffff1681616e8757fe5b0488604001510173ffffffffffffffffffffffffffffffffffffffff16815260200160011515815250915050949350505050565b616ec36184ce565b616ecb6184ce565b888561ffff1661ffff8110616edc57fe5b016040518060800160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900460060b60060b60060b815260200160008201600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160008201601f9054906101000a900460ff1615151515815250509150616fad88836000015189617843565b15616fe5578663ffffffff16826000015163ffffffff161415616fcf57617239565b81616fdc83898988616dd0565b91509150617239565b888361ffff166001870161ffff1681616ffa57fe5b0661ffff1661ffff811061700a57fe5b016040518060800160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900460060b60060b60060b815260200160008201600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160008201601f9054906101000a900460ff161515151581525050915081606001516171a65788600061ffff81106170e357fe5b016040518060800160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900460060b60060b60060b815260200160008201600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160008201601f9054906101000a900460ff16151515158152505091505b6171b588836000015189617843565b617227576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4f4c44000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b617234898989888761790b565b915091505b97509795505050505050565b600061725f86868660076163a3909392919063ffffffff16565b90506000600154905060006002549050600080600087600f0b14617412576000617287614560565b90506000806172fe8360008060000160149054906101000a900460020b6000800160179054906101000a900461ffff16600460009054906101000a90046fffffffffffffffffffffffffffffffff166000800160199054906101000a900461ffff166008614ead909695949392919063ffffffff16565b915091506173498c8a8c8a8a86888a60007f00000000000000000000000000000000000000000000000000000000000000006005617b8e909a9998979695949392919063ffffffff16565b94506173928b8a8c8a8a86888a60017f00000000000000000000000000000000000000000000000000000000000000006005617b8e909a9998979695949392919063ffffffff16565b935084156173d1576173d08c7f00000000000000000000000000000000000000000000000000000000000000006006617e909092919063ffffffff16565b5b831561740e5761740d8b7f00000000000000000000000000000000000000000000000000000000000000006006617e909092919063ffffffff16565b5b5050505b6000806174318b8b8a89896005617f089095949392919063ffffffff16565b9150915061744c8983838a617fcf909392919063ffffffff16565b600089600f0b121561748f578315617473576174728b600561835390919063ffffffff16565b5b821561748e5761748d8a600561835390919063ffffffff16565b5b5b50505050505095945050505050565b60008082600f0b126174c4576174bf6174ba8585856001616bb6565b614d57565b6174e0565b6174dc6174d78585856000036000616bb6565b614d57565b6000035b90509392505050565b60008082600f0b1261750f5761750a6175058585856001616adc565b614d57565b61752b565b6175276175228585856000036000616adc565b614d57565b6000035b90509392505050565b6000808284061182840401905092915050565b600081156175fd57600073ffffffffffffffffffffffffffffffffffffffff801684111561759e57617599846c01000000000000000000000000876fffffffffffffffffffffffffffffffff16614dd3565b6175c2565b846fffffffffffffffffffffffffffffffff16606060ff1685901b816175c057fe5b045b90506175f56175f0828873ffffffffffffffffffffffffffffffffffffffff16615d4e90919063ffffffff16565b618434565b9150506176b1565b600073ffffffffffffffffffffffffffffffffffffffff801684111561764c57617647846c01000000000000000000000000876fffffffffffffffffffffffffffffffff16616345565b617670565b61766f606060ff1685901b866fffffffffffffffffffffffffffffffff16617534565b5b9050808673ffffffffffffffffffffffffffffffffffffffff161161769457600080fd5b808673ffffffffffffffffffffffffffffffffffffffff16039150505b949350505050565b6000808314156176cb5784905061783b565b6000606060ff16856fffffffffffffffffffffffffffffffff16901b905082156177b25760008673ffffffffffffffffffffffffffffffffffffffff16858873ffffffffffffffffffffffffffffffffffffffff1687029250828161772c57fe5b04141561776e576000818301905082811061776c57617762838973ffffffffffffffffffffffffffffffffffffffff1683616345565b935050505061783b565b505b6177a9826177a4878a73ffffffffffffffffffffffffffffffffffffffff16868161779557fe5b04615d4e90919063ffffffff16565b617534565b9250505061783b565b60008673ffffffffffffffffffffffffffffffffffffffff16858873ffffffffffffffffffffffffffffffffffffffff168702925082816177ef57fe5b041480156177fc57508082115b61780557600080fd5b60008183039050617835617830848a73ffffffffffffffffffffffffffffffffffffffff1684616345565b618434565b93505050505b949350505050565b60008363ffffffff168363ffffffff161115801561786d57508363ffffffff168263ffffffff1611155b15617889578163ffffffff168363ffffffff1611159050617904565b60008463ffffffff168463ffffffff16116178b1576401000000008463ffffffff16016178b9565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff16116178ea576401000000008463ffffffff16016178f2565b8363ffffffff165b64ffffffffff16905080821115925050505b9392505050565b6179136184ce565b61791b6184ce565b60008361ffff166001860161ffff168161793157fe5b0661ffff169050600060018561ffff16830103905060005b600115617b815760028284018161795c57fe5b049050898661ffff16828161796d57fe5b0661ffff811061797957fe5b016040518060800160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900460060b60060b60060b815260200160008201600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160008201601f9054906101000a900460ff16151515158152505094508460600151617a4f57600181019250617949565b898661ffff166001830181617a6057fe5b0661ffff8110617a6c57fe5b016040518060800160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900460060b60060b60060b815260200160008201600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160008201601f9054906101000a900460ff16151515158152505093506000617b3f8a87600001518b617843565b9050808015617b595750617b588a8a8760000151617843565b5b15617b645750617b81565b80617b7457600182039250617b7b565b6001820193505b50617949565b5050509550959350505050565b6000808c60008d60020b60020b8152602001908152602001600020905060008160000160009054906101000a90046fffffffffffffffffffffffffffffffff1690506000617bdc828d61521c565b9050846fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff161115617c78576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f4c4f00000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000826fffffffffffffffffffffffffffffffff161415156000826fffffffffffffffffffffffffffffffff16141515141593506000826fffffffffffffffffffffffffffffffff161415617d97578c60020b8e60020b13617d79578a8360010181905550898360020181905550888360030160076101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550878360030160006101000a81548166ffffffffffffff021916908360060b66ffffffffffffff1602179055508683600301601b6101000a81548163ffffffff021916908363ffffffff1602179055505b600183600301601f6101000a81548160ff0219169083151502179055505b808360000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555085617e0e57617e09617e048d600f0b8560000160109054906101000a9004600f0b600f0b614db090919063ffffffff16565b616008565b617e41565b617e40617e3b8d600f0b8560000160109054906101000a9004600f0b600f0b614d8d90919063ffffffff16565b616008565b5b8360000160106101000a8154816fffffffffffffffffffffffffffffffff0219169083600f0b6fffffffffffffffffffffffffffffffff1602179055505050509b9a5050505050505050505050565b60008160020b8360020b81617ea157fe5b0760020b14617eaf57600080fd5b600080617eca8360020b8560020b81617ec457fe5b056168b7565b9150915060008160ff166001901b9050808660008560010b60010b815260200190815260200160002060008282541892505081905550505050505050565b60008060008860008960020b60020b8152602001908152602001600020905060008960008960020b60020b815260200190815260200160002090506000808a60020b8960020b12617f66578360010154915083600201549050617f79565b8360010154880391508360020154870390505b6000808b60020b8b60020b1215617f9d578460010154915084600201549050617fb0565b84600101548a0391508460020154890390505b81848b0303975080838a03039650505050505050965096945050505050565b6000846040518060a00160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015481526020016003820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016003820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681525050905060008085600f0b141561817657600082600001516fffffffffffffffffffffffffffffffff161161816a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f4e5000000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81600001519050618187565b61818482600001518661521c565b90505b60006181c18360200151860384600001516fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000614dd3565b905060006181fd8460400151860385600001516fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000614dd3565b9050600087600f0b1461824657828860000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b8588600101819055508488600201819055506000826fffffffffffffffffffffffffffffffff16118061828b57506000816fffffffffffffffffffffffffffffffff16115b1561834957818860030160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550808860030160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b5050505050505050565b8160008260020b60020b8152602001908152602001600020600080820160006101000a8154906fffffffffffffffffffffffffffffffff02191690556000820160106101000a8154906fffffffffffffffffffffffffffffffff0219169055600182016000905560028201600090556003820160006101000a81549066ffffffffffffff02191690556003820160076101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560038201601b6101000a81549063ffffffff021916905560038201601f6101000a81549060ff021916905550505050565b6000818291508173ffffffffffffffffffffffffffffffffffffffff161461845b57600080fd5b919050565b6040518060e00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600060020b8152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081525090565b6040518060800160405280600063ffffffff168152602001600060060b8152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600015158152509056fea264697066735822122069f211cc1a6aac0a67e3e3e6b89f37b130e1aa6b10cc7cf2336ddad89f3d968564736f6c63430007060033c001a0e830b14b39056055358aaf88c1190a66a15ccaa1e122682eee3783a0bc8a0ddfa01a294a547d0dc2b3c200ca967fe662ec215069351ff57d7429f7baef4ea7b998c0c0",
"0xf9030ef90239a00db5bd2f2ecb00c991936cd32cbbb9b6140f3f1dba6d134213bc269e04e15dc9a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948945a1288dc78a6d8952a92c77aee6730b414778a00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008004835b8d80808466604fce80a0000000000000000000000000000000000000000000000000000000000000000088000000000000000001a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000f8ceb8cc02f8c901030107835b8d808080b87960566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eb548a29628352d10317a28ec6ed6629b2ad2bd6a49608f93868fd0661aa40d064736f6c63430007060033c080a0c919b9a0d80293cf448e5c33d3a538b03a17245cde9c5884d5b6ffb352a423e7a055d71782187fdd38c338fb4d6665af61f4fe0f44489bc8f31dfb0217fa39d1cbc0c0",
"0xf9030ef90239a099ead5fd8bc8e9465255e42cea1355184d67948b52143b3953c7dad222132fb9a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d493479494d76e24f818426ae84aa404140e8d5f60e10e7ea00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008005835b8d80808466604fe080a0000000000000000000000000000000000000000000000000000000000000000088000000000000000001a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000f8ceb8cc02f8c901040107835b8d808080b87960566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204791323b1c512870c0c681b26b806f7c75ffc5461296837c5b412ec349c465fe64736f6c63430007060033c001a02e82984be523d64e96cea9302f31b280c74e0ad99fb54fbb7e7a14815e15a4f7a0329a74f2c1e0ecc6c9853c211728b249ad0a3fc3cc683b253ebe376cca4bf583c0c0",
"0xf9030ef90239a04cee006920d076756c8b870adf73012f2be75e08c7b2136d508b4435199a5d3fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940e9281e9c6a0808672eaba6bd1220e144c9bb07aa00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008006835b8d80808466604fea80a0000000000000000000000000000000000000000000000000000000000000000088000000000000000001a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000f8ceb8cc02f8c901050107835b8d808080b87960566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203cb198813bc9dc416243f9a042f83a3aa0509d0abe46a7b6352003c7a4d87cbd64736f6c63430007060033c001a00642a1e2e18ab5ecefca40eacd446572b021ba02fefeb8c82ee60f10ace61e3ca004b4a492bf3d4a5d638b9fe24e243e65b5d81432a3091ee902c4e73812ba267fc0c0",
"0xf9030ef90239a0cc985e8756b12274b6026a05f9c2f53ad93cce2acc0dd841f5b5a0ba03e530a4a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948945a1288dc78a6d8952a92c77aee6730b414778a00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008007835b8d80808466604ff380a0000000000000000000000000000000000000000000000000000000000000000088000000000000000001a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000f8ceb8cc02f8c901060107835b8d808080b87960566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c2df93f2416c5c3a37aefa30463378c728b5e68ef955161a39512395c9c0b0c864736f6c63430007060033c001a030cbe6b015d1f944f71f887359431cb78b4067a8a40b4f60b61fd799233fb07ba0308725fbb1d01db58d14fdf417af730b35a3b01c371babef6fde31d9c5c1eff7c0c0",
"0xf9030ef90239a079a6780f2c58803084333282b0b25d0435ec0e1bd26c332dee7cc76a3056004aa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d493479494d76e24f818426ae84aa404140e8d5f60e10e7ea00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008008835b8d80808466604ffb80a0000000000000000000000000000000000000000000000000000000000000000088000000000000000001a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000f8ceb8cc02f8c901070107835b8d808080b87960566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e6292c76caa52ebb1c74d7970f88a97720a2f498b5a8b007b7be18b669cbfba064736f6c63430007060033c001a0cdfa824a3687039c73e6126ba6d3ce40bd05dccf6c2101ea9760e3ef86568e8ba043f597e9a166a5a0f4a2fe507852f1687dda2cfbea7a73e7894e4aecb4d79cf7c0c0",
"0xf9030ef90239a0639251da44a575870cc1e1a1a9c499f2b7ac17e19f0c6eb1c7a73f15e70ca612a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940e9281e9c6a0808672eaba6bd1220e144c9bb07aa00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008009835b8d8080846660500380a0000000000000000000000000000000000000000000000000000000000000000088000000000000000001a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000f8ceb8cc02f8c901080107835b8d808080b87960566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a68b5b338813c94b9d8c1d94749de9c43eaeaebdcd891a1e10acece22eb34ad564736f6c63430007060033c001a00a041eb1492304525610ab6d48302788b4a9ecccf9b51746527090be015228c9a07752a29749d523e748dc635e603b8d14156518e3a12b19a4e521ac75088ae0e3c0c0",
"0xf9030ef90239a0c7c77a9282fb75c9a54a08c84a3a530baae63053742663abcc1137ec25964f97a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948945a1288dc78a6d8952a92c77aee6730b414778a00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800a835b8d8080846660500c80a0000000000000000000000000000000000000000000000000000000000000000088000000000000000001a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000f8ceb8cc02f8c901090107835b8d808080b87960566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122041e0db242bc76c0a16a18232238943972059256ff8028fbe76b49867aaaac0b464736f6c63430007060033c080a0a569813b13f8f702929fd3a770f342f20572abb5382b3f54e78ea5c8d6ef3efba03b3c5112755c2c8ce07ab22c7ce0b79192ecb07b441fe9fcab5a1565b64f6b61c0c0",
"0xf9030ef90239a07fc123571d0d27dfc40e107c0522effd922d814c5c89feb483e86a372915bdf0a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d493479494d76e24f818426ae84aa404140e8d5f60e10e7ea00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800b835b8d8080846660501680a0000000000000000000000000000000000000000000000000000000000000000088000000000000000001a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000f8ceb8cc02f8c9010a0107835b8d808080b87960566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220294a270458705c32b9c1959e973fa74f24c6f0982002c9e0de0a7885a7c0609764736f6c63430007060033c001a0e940f78771064a196ed6f63463c9d623d7983c14329b72a6db57e98e18e0d33ea0177828ead964b1e46aad72f4f5c07403c79ca661639f9776ff41d89b92fdaaa1c0c0",
"0xf9030ef90239a0c851a2c7b21b4c6b54c7daa271954080e0eaaa3dfdbda0023108c5dbfe8235b6a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940e9281e9c6a0808672eaba6bd1220e144c9bb07aa00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800c835b8d8080846660501f80a0000000000000000000000000000000000000000000000000000000000000000088000000000000000001a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000f8ceb8cc02f8c9010b0107835b8d808080b87960566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122032a14e6e4a9207a4e13c69e9f2e944c9c461f3b0d50c2ef601731478e8e6128164736f6c63430007060033c080a07b4d58060f8e0f14b24dbf44f7021310c38f732295743c72fe02643108221408a02638025207bb42c21a3ab3976d75ba7d9f6381fde5185ec66bcb8521df29dbf0c0c0",
"0xf9030ef90239a02963ee631b321fbe3eb145760026595e18cefa0f42f44e2f4c68131a432dbd65a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948945a1288dc78a6d8952a92c77aee6730b414778a00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800d835b8d8080846660502680a0000000000000000000000000000000000000000000000000000000000000000088000000000000000001a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000f8ceb8cc02f8c9010c0107835b8d808080b87960566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201400694b2749dbcbb3d1efe0134e12fdeae93963b92e748cbea1fc3bd2349b7564736f6c63430007060033c080a09b8f9aab0dd6dbb5148feda1907649b2d9b0a7826ed25621bfe8598779c472e5a018c2315b754b8898ec91849017886857d689a276dabc52ef9bc9805cd2f63a3ac0c0",
"0xf9030ef90239a05a8f81a748564e5a316277084dd8090d78886e482044d686f5ffcb227c334edca01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d493479494d76e24f818426ae84aa404140e8d5f60e10e7ea00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800e835b8d8080846660502e80a0000000000000000000000000000000000000000000000000000000000000000088000000000000000001a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000f8ceb8cc02f8c9010d0107835b8d808080b87960566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a58571378c7b90a52a5929c5c3a8869c2406b5385e4fd0d8be9f6b2a112f261e64736f6c63430007060033c080a0de900f396bf41f8d5756a51253bd5ee422198826ce35750f45b4c226adeef74ea051837ece7626d069fe4ef44a4ce6209448c5ad97d0dacce18f478c8742e31d92c0c0",
"0xf9030ef90239a091e97e20e1374a88e5a33f50e2b9080955924106807205994974aa8bc07f9d2fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940e9281e9c6a0808672eaba6bd1220e144c9bb07aa00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800f835b8d8080846660503980a0000000000000000000000000000000000000000000000000000000000000000088000000000000000001a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000f8ceb8cc02f8c9010e0107835b8d808080b87960566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f61cba66699be9bffbde93d3288770b9c6037988528648959df4a104910929ba64736f6c63430007060033c080a0851099d6e78ce9ca8a03a036e125fc55dd96d86e93ccbe04ce4c1ec2b4cd2b15a031a0fb739c314cbb5e9993cec4d3834eaaa4cfe2964693a2ca4495c708ef186cc0c0",
"0xf9030ef90239a03fb8eabcb39d578e0c6d164b9d9153b97b8761b75e0a22997ea300e0841644b3a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948945a1288dc78a6d8952a92c77aee6730b414778a00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008010835b8d8080846660504080a0000000000000000000000000000000000000000000000000000000000000000088000000000000000001a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000f8ceb8cc02f8c9010f0107835b8d808080b87960566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201c8e39a13ee4edec604be77115457d8c8c2b9d82b1d4908f69ba3c30e1c1755e64736f6c63430007060033c001a0368293e26e63d024e813d9a8d676ed4f21c7e7bed8f6b8021f3282e53c7ba116a05831a3b27602e069eb08cc4e4141303a068e6b12671e6c98f71d6218feb3dcc1c0c0",
"0xf9030ef90239a0d8094f5556e8b6b51f3dfbf8fe51cc7fde0fffdae2a465a3816e5e3f2e95ceafa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d493479494d76e24f818426ae84aa404140e8d5f60e10e7ea00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008011835b8d8080846660504b80a0000000000000000000000000000000000000000000000000000000000000000088000000000000000001a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000f8ceb8cc02f8c901100107835b8d808080b87960566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207f93b4724b2fead947e5a79982abacec3f03d5e0d166bb321562d2eaa26544b864736f6c63430007060033c080a0e3da3a7bad126628e4795f39f8db5a43605f6d3877f781ed5f98cb13d7d57680a0738b038dba608f4eb6f21bbe923a9794b5fcca3fbad5e1274e76a682fd40d096c0c0",
"0xf9030ef90239a07bacedda0b047deaa08435ee94eedf16ab89e3e7bfc0a337c3b59efe08a8f1c6a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940e9281e9c6a0808672eaba6bd1220e144c9bb07aa00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008012835b8d8080846660505380a0000000000000000000000000000000000000000000000000000000000000000088000000000000000001a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000f8ceb8cc02f8c901110107835b8d808080b87960566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208a0e00cdfb9351afdd24fb392dd77a237795b97d3a326a39dd9d97e4ab377ef564736f6c63430007060033c080a060cd913a0f608a21f41745766d2b94cbce3b9ff698da40cc3b4f49e2aceff09fa00fd5ad34f3b25df9ff3586b9c125d4fc52baa0d40c0cb59dfab78ae18af42a57c0c0",
"0xf9030ef90239a0268465d2aaf2066a20040f68b9da2e45a65ef4d45c7d5ebe58bc27b4f87fd4e0a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948945a1288dc78a6d8952a92c77aee6730b414778a00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008013835b8d8080846660505c80a0000000000000000000000000000000000000000000000000000000000000000088000000000000000001a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000f8ceb8cc02f8c901120107835b8d808080b87960566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204d0e75b95328c60174cce4395dbf546ea52f07fad93169698a8b669374fd9fbb64736f6c63430007060033c001a0f9986f52c3128798c900a043ed639e1d6340ca6a0e435da7482a4a055d4007a3a077671fd269b2b1851ac6335de6249d535ccc6bda8303fcafaf5fa45f7de38100c0c0",
"0xf90602f90239a0171545157f4a5781bc8215455f3747beeaee5c30810efb0e1c05770154e411f4a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d493479494d76e24f818426ae84aa404140e8d5f60e10e7ea00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008014835b8d8080846660513f80a0000000000000000000000000000000000000000000000000000000000000000088000000000000000001a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000f903c1b903be02f903ba01130107835b8d808080b90369608060405234801561001057600080fd5b50610349806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80632d711e0c1461003b578063f94ac90e14610069575b600080fd5b6100676004803603602081101561005157600080fd5b8101908080359060200190929190505050610097565b005b6100956004803603602081101561007f57600080fd5b81019080803590602001909291905050506100d0565b005b60006100a282610111565b905060008160ff1660020a831614156100b757fe5b600060018260ff1660020a038316146100cc57fe5b5050565b60006100db82610238565b90508060ff1660020a8210156100ed57fe5b60ff8160ff16148061010757506001810160ff1660020a82105b61010d57fe5b5050565b600080821161011f57600080fd5b60ff905060006fffffffffffffffffffffffffffffffff80168316111561014b57608081039050610153565b608082901c91505b600067ffffffffffffffff8016831611156101735760408103905061017b565b604082901c91505b600063ffffffff8016831611156101975760208103905061019f565b602082901c91505b600061ffff8016831611156101b9576010810390506101c1565b601082901c91505b600060ff8016831611156101da576008810390506101e2565b600882901c91505b6000600f831611156101f957600481039050610201565b600482901c91505b600060038316111561021857600281039050610220565b600282901c91505b6000600183161115610233576001810390505b919050565b600080821161024657600080fd5b700100000000000000000000000000000000821061026c57608082901c91506080810190505b68010000000000000000821061028a57604082901c91506040810190505b64010000000082106102a457602082901c91506020810190505b6201000082106102bc57601082901c91506010810190505b61010082106102d357600882901c91506008810190505b601082106102e957600482901c91506004810190505b600482106102ff57600282901c91506002810190505b6002821061030e576001810190505b91905056fea26469706673582212200031f599ec4e0d47ec90110e56ba2e93facd69ecd97097b025ae5dbd2d97a7e764736f6c63430007060033c001a0726edf7fd3cd6a5f6f931997fd42e7e3e08930e4ec72750200a35f0934ece8b8a078d1fa53d0ec66c9ef9f85817ea581ea5c85e72cda3a8f77a2368035cf1daf4ac0c0",
"0xf906a9f90239a07f281af6cb10c9a875506d2bd8bba6e33894e9e582fce6d5522526a25fad9740a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940e9281e9c6a0808672eaba6bd1220e144c9bb07aa00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008015835b8d808084666051c780a0000000000000000000000000000000000000000000000000000000000000000088000000000000000001a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000f90468b9046502f9046101140107835b8d808080b90410608060405234801561001057600080fd5b506103f0806100206000396000f3fe608060405234801561001057600080fd5b506004361061004b5760003560e01c806246b777146100505780636b83cf2614610092578063d230d23f146100d4578063e6bcbc6514610119575b600080fd5b61007c6004803603602081101561006657600080fd5b810190808035906020019092919050505061015e565b6040518082815260200191505060405180910390f35b6100be600480360360208110156100a857600080fd5b8101908080359060200190929190505050610179565b6040518082815260200191505060405180910390f35b610100600480360360208110156100ea57600080fd5b8101908080359060200190929190505050610194565b604051808260ff16815260200191505060405180910390f35b6101456004803603602081101561012f57600080fd5b81019080803590602001909291905050506101a6565b604051808260ff16815260200191505060405180910390f35b6000805a905061016d836101b8565b505a8103915050919050565b6000805a905061018883610293565b505a8103915050919050565b600061019f82610293565b9050919050565b60006101b1826101b8565b9050919050565b60008082116101c657600080fd5b70010000000000000000000000000000000082106101ec57608082901c91506080810190505b68010000000000000000821061020a57604082901c91506040810190505b640100000000821061022457602082901c91506020810190505b62010000821061023c57601082901c91506010810190505b610100821061025357600882901c91506008810190505b6010821061026957600482901c91506004810190505b6004821061027f57600282901c91506002810190505b6002821061028e576001810190505b919050565b60008082116102a157600080fd5b60ff905060006fffffffffffffffffffffffffffffffff8016831611156102cd576080810390506102d5565b608082901c91505b600067ffffffffffffffff8016831611156102f5576040810390506102fd565b604082901c91505b600063ffffffff80168316111561031957602081039050610321565b602082901c91505b600061ffff80168316111561033b57601081039050610343565b601082901c91505b600060ff80168316111561035c57600881039050610364565b600882901c91505b6000600f8316111561037b57600481039050610383565b600482901c91505b600060038316111561039a576002810390506103a2565b600282901c91505b60006001831611156103b5576001810390505b91905056fea2646970667358221220606d08d97d7451ea41838153d4168f459eef3c416120d734324e7cdbeaeaff4b64736f6c63430007060033c080a0f12474582c934056ee9beefda11be810f80051985cab712981f47be368d9b00ca0439e797a57aad4e5f1d6fa40a9b24da57271135afdce6d7c809df0605cceff62c0c0",
"0xf906b5f90239a021f55f2b92d670ecf099cd7482fb9787260762769c1387d1cd19fc9bf50315eba01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948945a1288dc78a6d8952a92c77aee6730b414778a00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008016835b8d808084666051d080a0000000000000000000000000000000000000000000000000000000000000000088000000000000000001a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000f90474b9047102f9046d01150107835b8d808080b9041c608060405234801561001057600080fd5b506103fc806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063695363a31461004657806379eee48714610088578063bf08c391146100ca575b600080fd5b6100866004803603606081101561005c57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061010c565b005b6100c86004803603606081101561009e57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061016c565b005b61010a600480360360608110156100e057600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506101fd565b005b6000811161011957600080fd5b600061012684848461028e565b905060006101358585856102ec565b90506000838061014157fe5b858709111561015b5760018183031461015657fe5b610165565b80821461016457fe5b5b5050505050565b6000811161017957600080fd5b600061018684848461028e565b905060008414806101975750600083145b156101ac57600081146101a657fe5b506101f8565b60006101b98284866102ec565b905060006101c88385886102ec565b9050858210156101d457fe5b848110156101de57fe5b83868303106101e957fe5b83858203106101f457fe5b5050505b505050565b6000811161020a57600080fd5b60006102178484846102ec565b905060008414806102285750600083145b1561023d576000811461023757fe5b50610289565b600061024a8284866102ec565b905060006102598385886102ec565b90508582111561026557fe5b8481111561026f57fe5b838287031061027a57fe5b838186031061028557fe5b5050505b505050565b600061029b8484846102ec565b9050600082806102a757fe5b84860911156102e5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81106102dc57600080fd5b80806001019150505b9392505050565b600080600080198587098587029250828110838203039150506000811415610327576000841161031b57600080fd5b838204925050506103bf565b80841161033357600080fd5b600084868809905082811182039150808303925060008586600003169050808604955080840493506001818260000304019050808302841793506000600287600302189050808702600203810290508087026002038102905080870260020381029050808702600203810290508087026002038102905080870260020381029050808502955050505050505b939250505056fea2646970667358221220f630b3605be0de5e623362e1eca035a8f6cfe0e94bcba5ea55f170ccfbb36bee64736f6c63430007060033c080a0bcff67f11fb973e2b903455ff2f1c315d85e4ef64c4c0c54ede640d226632b8ca05eee0505cf11eaa7ca7549f106be4cf8b11a0fb27cc194450bd1819a13017ed9c0c0",
"0xf90443f90239a0403083fe790f10d34899f41a4c2310028a6173a5a7028fdbcc742ccbbd97d48ea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d493479494d76e24f818426ae84aa404140e8d5f60e10e7ea00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008017835b8d8080846660522780a0000000000000000000000000000000000000000000000000000000000000000088000000000000000001a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000f90202b901ff02f901fb01160107835b8d808080b901aa608060405234801561001057600080fd5b5061018a806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80638903573014610030575b600080fd5b6100386100b4565b604051808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018362ffffff1681526020018260020b81526020019550505050505060405180910390f35b60008060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900462ffffff16908060020160179054906101000a900460020b90508556fea26469706673582212200378d2ff0d7c9f16988ebde765ed257c146db0d749daebad6530ff885908277264736f6c63430007060033c080a0a9d876b30162d25026c62089af97c87975af108fdefafd1236dcc0b980029507a0440f46b29c40963d4dfb4305afec2a7af55442ae0d0e60f6f36a71310bb8ad12c0c0",
"0xf98b80f90239a0de1c1bb071d5f420dc44265f0381f236979b8ffffe12fb586f9a126cdbaa2393a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940e9281e9c6a0808672eaba6bd1220e144c9bb07aa00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008018835b8d8080846660522780a0000000000000000000000000000000000000000000000000000000000000000088000000000000000001a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000f9893fb9893c02f9893801170107835b8d808080b988e76101606040523480156200001257600080fd5b503073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505060003373ffffffffffffffffffffffffffffffffffffffff1663890357306040518163ffffffff1660e01b815260040160a06040518083038186803b1580156200009357600080fd5b505afa158015620000a8573d6000803e3d6000fd5b505050506040513d60a0811015620000bf57600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050508095508162ffffff166101009062ffffff1660e81b8152508273ffffffffffffffffffffffffffffffffffffffff1660e09073ffffffffffffffffffffffffffffffffffffffff1660601b8152508373ffffffffffffffffffffffffffffffffffffffff1660c09073ffffffffffffffffffffffffffffffffffffffff1660601b8152508473ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff1660601b81525050505050508060020b6101208160020b60e81b81525050620001df816200021560201b620044521760201c565b6fffffffffffffffffffffffffffffffff16610140816fffffffffffffffffffffffffffffffff1660801b8152505050620002cd565b600080828360020b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860020b816200024957fe5b050290506000838460020b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860000360020b816200028357fe5b05029050600060018560020b84840360020b816200029d57fe5b050190508062ffffff166fffffffffffffffffffffffffffffffff801681620002c257fe5b049350505050919050565b60805160601c60a05160601c60c05160601c60e05160601c6101005160e81c6101205160e81c6101405160801c61854d6200039a600039806131985280617311528061735a52508061123e528061406d52806173a052806173dd52508061143a528061279b52806127d252806140b5525080611b6d528061285c5280612ff352806138a852806140915280615d6f525080610c985280611ced52806128275280612f3e528061379b5280615bab52508061325d52806135035280614049525080614508525061854d6000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806370cf754a116100de578063c45a015511610097578063ddca3f4311610071578063ddca3f4314610b65578063f305839914610b88578063f30dba9314610ba6578063f637731d14610c525761018e565b8063c45a015514610adc578063d0c93a7c14610b10578063d21220a714610b315761018e565b806370cf754a146107a95780638206a4d1146107d957806385b6672914610817578063883bdbfd146108d2578063a34123a7146109e8578063a38807f214610a5d5761018e565b80633850c7bd1161014b578063490e6cbc11610125578063490e6cbc1461054e5780634f1eb3d8146105fb578063514ea4bf146106d05780635339c296146107645761018e565b80633850c7bd146103d45780633c8a7d8d1461044657806346141319146105305761018e565b80630dfe168114610193578063128acb08146101c75780631a686502146102b15780631ad8b03b146102e1578063252c09d71461032a57806332148f67146103a2575b600080fd5b61019b610c96565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610294600480360360a08110156101dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561025057600080fd5b82018360208201111561026257600080fd5b8035906020019184600183028401116401000000008311171561028457600080fd5b9091929391929390505050610cba565b604051808381526020018281526020019250505060405180910390f35b6102b9611f43565b60405180826fffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102e9611f65565b60405180836fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6103566004803603602081101561034057600080fd5b8101908080359060200190929190505050611faf565b604051808563ffffffff1681526020018460060b81526020018373ffffffffffffffffffffffffffffffffffffffff168152602001821515815260200194505050505060405180910390f35b6103d2600480360360208110156103b857600080fd5b81019080803561ffff16906020019092919050505061202d565b005b6103dc61219f565b604051808873ffffffffffffffffffffffffffffffffffffffff1681526020018760020b81526020018661ffff1681526020018561ffff1681526020018461ffff1681526020018360ff168152602001821515815260200197505050505050505060405180910390f35b610513600480360360a081101561045c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560020b9060200190929190803560020b906020019092919080356fffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156104cf57600080fd5b8201836020820111156104e157600080fd5b8035906020019184600183028401116401000000008311171561050357600080fd5b9091929391929390505050612240565b604051808381526020018281526020019250505060405180910390f35b610538612639565b6040518082815260200191505060405180910390f35b6105f96004803603608081101561056457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001906401000000008111156105b557600080fd5b8201836020820111156105c757600080fd5b803590602001918460018302840111640100000000831117156105e957600080fd5b909192939192939050505061263f565b005b61068f600480360360a081101561061157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560020b9060200190929190803560020b906020019092919080356fffffffffffffffffffffffffffffffff16906020019092919080356fffffffffffffffffffffffffffffffff169060200190929190505050612d18565b60405180836fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6106fc600480360360208110156106e657600080fd5b81019080803590602001909291905050506130f4565b60405180866fffffffffffffffffffffffffffffffff168152602001858152602001848152602001836fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff1681526020019550505050505060405180910390f35b6107936004803603602081101561077a57600080fd5b81019080803560010b906020019092919050505061317e565b6040518082815260200191505060405180910390f35b6107b1613196565b60405180826fffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610815600480360360408110156107ef57600080fd5b81019080803560ff169060200190929190803560ff1690602001909291905050506131ba565b005b6108916004803603606081101561082d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080356fffffffffffffffffffffffffffffffff16906020019092919080356fffffffffffffffffffffffffffffffff16906020019092919050505061345d565b60405180836fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b610949600480360360208110156108e857600080fd5b810190808035906020019064010000000081111561090557600080fd5b82018360208201111561091757600080fd5b8035906020019184602083028401116401000000008311171561093957600080fd5b9091929391929390505050613997565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610990578082015181840152602081019050610975565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156109d25780820151818401526020810190506109b7565b5050505090500194505050505060405180910390f35b610a40600480360360608110156109fe57600080fd5b81019080803560020b9060200190929190803560020b906020019092919080356fffffffffffffffffffffffffffffffff169060200190929190505050613a66565b604051808381526020018281526020019250505060405180910390f35b610a9960048036036040811015610a7357600080fd5b81019080803560020b9060200190929190803560020b9060200190929190505050613cfd565b604051808460060b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018263ffffffff168152602001935050505060405180910390f35b610ae4614047565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b1861406b565b604051808260020b815260200191505060405180910390f35b610b3961408f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b6d6140b3565b604051808262ffffff16815260200191505060405180910390f35b610b906140d7565b6040518082815260200191505060405180910390f35b610bd560048036036020811015610bbc57600080fd5b81019080803560020b90602001909291905050506140dd565b60405180896fffffffffffffffffffffffffffffffff16815260200188600f0b81526020018781526020018681526020018560060b81526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018363ffffffff16815260200182151581526020019850505050505050505060405180910390f35b610c9460048036036020811015610c6857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614198565b005b7f000000000000000000000000000000000000000000000000000000000000000081565b600080610cc5614506565b6000861415610d3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f415300000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000806040518060e00160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460020b60020b60020b81526020016000820160179054906101000a900461ffff1661ffff1661ffff1681526020016000820160199054906101000a900461ffff1661ffff1661ffff16815260200160008201601b9054906101000a900461ffff1661ffff1661ffff16815260200160008201601d9054906101000a900460ff1660ff1660ff16815260200160008201601e9054906101000a900460ff16151515158152505090508060c00151610ece576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4c4f4b000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b87610f5657806000015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16118015610f51575073fffd8963efd1fc6a506488495d951d5263988d2673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16105b610fc6565b806000015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16108015610fc557506401000276a373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16115b5b611038576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f53504c000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600001601e6101000a81548160ff02191690831515021790555060006040518060c001604052808a6110785760048460a0015160ff16901c61108b565b60108460a0015160ff168161108957fe5b065b60ff168152602001600460009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016110d1614560565b63ffffffff168152602001600060060b8152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000151581525090506000808913905060006040518060e001604052808b815260200160008152602001856000015173ffffffffffffffffffffffffffffffffffffffff168152602001856020015160020b81526020018c6111675760025461116b565b6001545b815260200160006fffffffffffffffffffffffffffffffff16815260200184602001516fffffffffffffffffffffffffffffffff1681525090505b60008160000151141580156111eb57508873ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff1614155b15611835576111f8618460565b8160400151816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061127082606001517f00000000000000000000000000000000000000000000000000000000000000008e6006614568909392919063ffffffff16565b826020018360400182151515158152508260020b60020b81525050507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860020b816020015160020b12156112f5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618816020019060020b908160020b81525050611361565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860000360020b816020015160020b1315611360577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618600003816020019060020b908160020b815250505b5b61136e81602001516146c0565b816060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061145e82604001518d6113ea578b73ffffffffffffffffffffffffffffffffffffffff16836060015173ffffffffffffffffffffffffffffffffffffffff161161141e565b8b73ffffffffffffffffffffffffffffffffffffffff16836060015173ffffffffffffffffffffffffffffffffffffffff16105b61142c57826060015161142e565b8b5b8460c0015185600001517f0000000000000000000000000000000000000000000000000000000000000000614afb565b85604001856080018660a0018760c0018481525084815250848152508473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250505050508215611507576114c78160c00151826080015101614d57565b8260000181815103915081815250506114f96114e68260a00151614d57565b8360200151614d8d90919063ffffffff16565b826020018181525050611556565b6115148160a00151614d57565b82600001818151019150818152505061154c6115398260c00151836080015101614d57565b8360200151614db090919063ffffffff16565b8260200181815250505b6000846000015160ff1611156115c7576000846000015160ff168260c001518161157c57fe5b049050808260c0018181510391508181525050808360a001818151019150906fffffffffffffffffffffffffffffffff1690816fffffffffffffffffffffffffffffffff1681525050505b60008260c001516fffffffffffffffffffffffffffffffff16111561162c5761161c8160c001517001000000000000000000000000000000008460c001516fffffffffffffffffffffffffffffffff16614dd3565b8260800181815101915081815250505b806060015173ffffffffffffffffffffffffffffffffffffffff16826040015173ffffffffffffffffffffffffffffffffffffffff1614156117d4578060400151156117a6578360a00151611704576116ae846040015160008760200151886040015188602001518a606001516008614ead909695949392919063ffffffff16565b85606001866080018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508260060b60060b815250505060018460a00190151590811515815250505b600061175882602001518e61171b57600154611721565b84608001515b8f611730578560800151611734565b6002545b886080015189606001518a6040015160056150e0909695949392919063ffffffff16565b90508c15611767578060000390505b6117758360c001518261521c565b8360c001906fffffffffffffffffffffffffffffffff1690816fffffffffffffffffffffffffffffffff1681525050505b8b6117b55780602001516117be565b60018160200151035b826060019060020b908160020b8152505061182f565b806000015173ffffffffffffffffffffffffffffffffffffffff16826040015173ffffffffffffffffffffffffffffffffffffffff161461182e5761181c8260400151615375565b826060019060020b908160020b815250505b5b506111a6565b836020015160020b816060015160020b1461194b5760008061188386604001518660400151886020015188602001518a606001518b608001516008615771909695949392919063ffffffff16565b915091508260400151836060015183836000800160008060000160146000800160176000800160198891906101000a81548161ffff021916908361ffff1602179055508791906101000a81548161ffff021916908361ffff1602179055508691906101000a81548162ffffff021916908360020b62ffffff1602179055508591906101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050611993565b80604001516000800160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8060c001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff1614611a04578060c00151600460006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b8a15611a9b57806080015160018190555060008160a001516fffffffffffffffffffffffffffffffff161115611a96578060a00151600360000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b611b28565b806080015160028190555060008160a001516fffffffffffffffffffffffffffffffff161115611b27578060a00151600360000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b5b8115158b151514611b4457806020015181600001518b03611b51565b80600001518a0381602001515b80965081975050508a15611cdf576000851215611b9757611b967f00000000000000000000000000000000000000000000000000000000000000008d876000036159a3565b5b6000611ba1615ba4565b90503373ffffffffffffffffffffffffffffffffffffffff1663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611c3257600080fd5b505af1158015611c46573d6000803e3d6000fd5b50505050611c52615ba4565b611c658883615d4e90919063ffffffff16565b1115611cd9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f494941000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b50611e5b565b6000861215611d1757611d167f00000000000000000000000000000000000000000000000000000000000000008d886000036159a3565b5b6000611d21615d68565b90503373ffffffffffffffffffffffffffffffffffffffff1663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611db257600080fd5b505af1158015611dc6573d6000803e3d6000fd5b50505050611dd2615d68565b611de58783615d4e90919063ffffffff16565b1115611e59576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f494941000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b505b8b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67888885604001518660c001518760600151604051808681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff168152602001836fffffffffffffffffffffffffffffffff1681526020018260020b81526020019550505050505060405180910390a3600160008001601e6101000a81548160ff02191690831515021790555050505050965096945050505050565b600460009054906101000a90046fffffffffffffffffffffffffffffffff1681565b60038060000160009054906101000a90046fffffffffffffffffffffffffffffffff16908060000160109054906101000a90046fffffffffffffffffffffffffffffffff16905082565b60088161ffff8110611fc057600080fd5b016000915090508060000160009054906101000a900463ffffffff16908060000160049054906101000a900460060b9080600001600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600001601f9054906101000a900460ff16905084565b60008001601e9054906101000a900460ff166120b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4c4f4b000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600001601e6101000a81548160ff0219169083151502179055506120d6614506565b600080600001601b9054906101000a900461ffff169050600061210582846008615f129092919063ffffffff16565b90508060008001601b6101000a81548161ffff021916908361ffff1602179055508061ffff168261ffff161461217d577fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a8282604051808361ffff1681526020018261ffff1681526020019250505060405180910390a15b5050600160008001601e6101000a81548160ff02191690831515021790555050565b60008060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460020b908060000160179054906101000a900461ffff16908060000160199054906101000a900461ffff169080600001601b9054906101000a900461ffff169080600001601d9054906101000a900460ff169080600001601e9054906101000a900460ff16905087565b60008060008001601e9054906101000a900460ff166122c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4c4f4b000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600001601e6101000a81548160ff0219169083151502179055506000856fffffffffffffffffffffffffffffffff161161230357600080fd5b60008061236860405180608001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b60020b81526020018a60020b815260200161235d8a6fffffffffffffffffffffffffffffffff16616008565b600f0b815250616021565b9250925050819350809250600080600086111561238a57612387615ba4565b91505b600085111561239e5761239b615d68565b90505b3373ffffffffffffffffffffffffffffffffffffffff1663d348799787878b8b6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561242d57600080fd5b505af1158015612441573d6000803e3d6000fd5b5050505060008611156124de57612456615ba4565b6124698784615d4e90919063ffffffff16565b11156124dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f4d3000000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b6000851115612577576124ef615d68565b6125028683615d4e90919063ffffffff16565b1115612576576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f4d3100000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b8960020b8b60020b8d73ffffffffffffffffffffffffffffffffffffffff167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde338d8b8b604051808573ffffffffffffffffffffffffffffffffffffffff168152602001846fffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a450505050600160008001601e6101000a81548160ff021916908315150217905550965096945050505050565b60025481565b60008001601e9054906101000a900460ff166126c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4c4f4b000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600001601e6101000a81548160ff0219169083151502179055506126e8614506565b6000600460009054906101000a90046fffffffffffffffffffffffffffffffff1690506000816fffffffffffffffffffffffffffffffff1611612793576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260018152602001807f4c0000000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60006127c8867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f4240616345565b905060006127ff867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f4240616345565b9050600061280b615ba4565b90506000612817615d68565b9050600089111561284e5761284d7f00000000000000000000000000000000000000000000000000000000000000008b8b6159a3565b5b6000881115612883576128827f00000000000000000000000000000000000000000000000000000000000000008b8a6159a3565b5b3373ffffffffffffffffffffffffffffffffffffffff1663e9cbafb085858a8a6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561291257600080fd5b505af1158015612926573d6000803e3d6000fd5b505050506000612934615ba4565b90506000612940615d68565b9050816129568786615d4e90919063ffffffff16565b11156129ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f463000000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806129de8685615d4e90919063ffffffff16565b1115612a52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f463100000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008483039050600084830390506000821115612b6a576000601060008001601d9054906101000a900460ff1660ff1681612a8957fe5b0690506000808260ff1614612aaa578160ff168481612aa457fe5b04612aad565b60005b90506000816fffffffffffffffffffffffffffffffff161115612b285780600360000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b612b588185037001000000000000000000000000000000008d6fffffffffffffffffffffffffffffffff16614dd3565b60016000828254019250508190555050505b6000811115612c6e576000600460008001601d9054906101000a900460ff1660ff16901c90506000808260ff1614612bae578160ff168381612ba857fe5b04612bb1565b60005b90506000816fffffffffffffffffffffffffffffffff161115612c2c5780600360000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b612c5c8184037001000000000000000000000000000000008d6fffffffffffffffffffffffffffffffff16614dd3565b60026000828254019250508190555050505b8d73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6338f8f86866040518085815260200184815260200183815260200182815260200194505050505060405180910390a3505050505050505050600160008001601e6101000a81548160ff0219169083151502179055505050505050565b60008060008001601e9054906101000a900460ff16612d9f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4c4f4b000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600001601e6101000a81548160ff0219169083151502179055506000612dd633888860076163a3909392919063ffffffff16565b90508060030160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16856fffffffffffffffffffffffffffffffff1611612e295784612e4b565b8060030160009054906101000a90046fffffffffffffffffffffffffffffffff165b92508060030160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff1611612e9e5783612ec0565b8060030160109054906101000a90046fffffffffffffffffffffffffffffffff165b91506000836fffffffffffffffffffffffffffffffff161115612f7757828160030160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550612f767f000000000000000000000000000000000000000000000000000000000000000089856fffffffffffffffffffffffffffffffff166159a3565b5b6000826fffffffffffffffffffffffffffffffff16111561302c57818160030160108282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555061302b7f000000000000000000000000000000000000000000000000000000000000000089846fffffffffffffffffffffffffffffffff166159a3565b5b8560020b8760020b3373ffffffffffffffffffffffffffffffffffffffff167f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c08b8787604051808473ffffffffffffffffffffffffffffffffffffffff168152602001836fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff168152602001935050505060405180910390a450600160008001601e6101000a81548160ff0219169083151502179055509550959350505050565b60076020528060005260406000206000915090508060000160009054906101000a90046fffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a90046fffffffffffffffffffffffffffffffff16908060030160109054906101000a90046fffffffffffffffffffffffffffffffff16905085565b60066020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008001601e9054906101000a900460ff1661323e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4c4f4b000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600001601e6101000a81548160ff0219169083151502179055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156132c157600080fd5b505afa1580156132d5573d6000803e3d6000fd5b505050506040513d60208110156132eb57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461333357600080fd5b60008260ff161480613359575060048260ff16101580156133585750600a8260ff1611155b5b8015613387575060008160ff161480613386575060048160ff16101580156133855750600a8160ff1611155b5b5b61339057600080fd5b600080600001601d9054906101000a900460ff16905060048260ff16901b830160008001601d6101000a81548160ff021916908360ff1602179055507f973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b13360108260ff16816133fa57fe5b0660048360ff16901c8585604051808560ff1681526020018460ff1681526020018360ff1681526020018260ff16815260200194505050505060405180910390a150600160008001601e6101000a81548160ff0219169083151502179055505050565b60008060008001601e9054906101000a900460ff166134e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4c4f4b000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600001601e6101000a81548160ff0219169083151502179055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561356757600080fd5b505afa15801561357b573d6000803e3d6000fd5b505050506040513d602081101561359157600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146135d957600080fd5b600360000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff161161362b578361364e565b600360000160009054906101000a90046fffffffffffffffffffffffffffffffff165b9150600360000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff16116136a257826136c5565b600360000160109054906101000a90046fffffffffffffffffffffffffffffffff165b90506000826fffffffffffffffffffffffffffffffff1611156137d457600360000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff161415613739578180600190039250505b81600360000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506137d37f000000000000000000000000000000000000000000000000000000000000000086846fffffffffffffffffffffffffffffffff166159a3565b5b6000816fffffffffffffffffffffffffffffffff1611156138e157600360000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff161415613846578080600190039150505b80600360000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506138e07f000000000000000000000000000000000000000000000000000000000000000086836fffffffffffffffffffffffffffffffff166159a3565b5b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151848460405180836fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff1681526020019250505060405180910390a3600160008001601e6101000a81548160ff021916908315150217905550935093915050565b6060806139a2614506565b613a5b6139ad614560565b858580806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050506000800160149054906101000a900460020b6000800160179054906101000a900461ffff16600460009054906101000a90046fffffffffffffffffffffffffffffffff166000800160199054906101000a900461ffff16600861641c909695949392919063ffffffff16565b915091509250929050565b60008060008001601e9054906101000a900460ff16613aed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4c4f4b000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600001601e6101000a81548160ff0219169083151502179055506000806000613b7460405180608001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018a60020b81526020018960020b8152602001613b66896fffffffffffffffffffffffffffffffff16616008565b600003600f0b815250616021565b9250925092508160000394508060000393506000851180613b955750600084115b15613c5d57848360030160009054906101000a90046fffffffffffffffffffffffffffffffff1601848460030160109054906101000a90046fffffffffffffffffffffffffffffffff16018460030160008660030160108491906101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055508391906101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050505b8660020b8860020b3373ffffffffffffffffffffffffffffffffffffffff167f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c89898960405180846fffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a4505050600160008001601e6101000a81548160ff021916908315150217905550935093915050565b6000806000613d0a614506565b613d1485856165d7565b6000806000806000806000600560008d60020b60020b815260200190815260200160002090506000600560008d60020b60020b8152602001908152602001600020905060008260030160009054906101000a900460060b8360030160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684600301601b9054906101000a900463ffffffff1685600301601f9054906101000a900460ff16809450819850829a50839c505050505080613dd157600080fd5b60008260030160009054906101000a900460060b8360030160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684600301601b9054906101000a900463ffffffff1685600301601f9054906101000a900460ff16809450819850829a50839c505050505080613e4b57600080fd5b505050506000806040518060e00160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460020b60020b60020b81526020016000820160179054906101000a900461ffff1661ffff1661ffff1681526020016000820160199054906101000a900461ffff1661ffff1661ffff16815260200160008201601b9054906101000a900461ffff1661ffff1661ffff16815260200160008201601d9054906101000a900460ff1660ff1660ff16815260200160008201601e9054906101000a900460ff16151515158152505090508b60020b816020015160020b1215613f975785870384860383850399509950995050505050505050614040565b8a60020b816020015160020b1215614029576000613fb3614560565b905060008061400183600086602001518760400151600460009054906101000a90046fffffffffffffffffffffffffffffffff1689606001516008614ead909695949392919063ffffffff16565b91509150888a830303878983030386888603039c509c509c5050505050505050505050614040565b868603858503848403995099509950505050505050505b9250925092565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015481565b60056020528060005260406000206000915090508060000160009054906101000a90046fffffffffffffffffffffffffffffffff16908060000160109054906101000a9004600f0b908060010154908060020154908060030160009054906101000a900460060b908060030160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600301601b9054906101000a900463ffffffff169080600301601f9054906101000a900460ff16905088565b60008060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614248576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f414900000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600061425382615375565b9050600080614273614263614560565b600861679190919063ffffffff16565b915091506040518060e001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018460020b8152602001600061ffff1681526020018361ffff1681526020018261ffff168152602001600060ff168152602001600115158152506000808201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548162ffffff021916908360020b62ffffff16021790555060408201518160000160176101000a81548161ffff021916908361ffff16021790555060608201518160000160196101000a81548161ffff021916908361ffff160217905550608082015181600001601b6101000a81548161ffff021916908361ffff16021790555060a082015181600001601d6101000a81548160ff021916908360ff16021790555060c082015181600001601e6101000a81548160ff0219169083151502179055509050507f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c958484604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018260020b81526020019250505060405180910390a150505050565b600080828360020b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860020b8161448557fe5b050290506000838460020b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860000360020b816144be57fe5b05029050600060018560020b84840360020b816144d757fe5b050190508062ffffff166fffffffffffffffffffffffffffffffff8016816144fb57fe5b049350505050919050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461455e57600080fd5b565b600042905090565b60008060008460020b8660020b8161457c57fe5b05905060008660020b1280156145a5575060008560020b8760020b8161459e57fe5b0760020b14155b156145b4578080600190039150505b8315614638576000806145c6836168b7565b9150915060008160ff166001901b60018360ff166001901b030190506000818b60008660010b60010b815260200190815260200160002054169050600081141595508561461a57888360ff1686030261462d565b88614624826168da565b840360ff168603025b9650505050506146b6565b600080614647600184016168b7565b91509150600060018260ff166001901b031990506000818b60008660010b60010b815260200190815260200160002054169050600081141595508561469957888360ff0360ff166001870101026146af565b88836146a4836169b5565b0360ff166001870101025b9650505050505b5094509492505050565b60008060008360020b126146d7578260020b6146df565b8260020b6000035b90507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860000360020b81111561477d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260018152602001807f540000000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000806001831614156147a1577001000000000000000000000000000000006147b3565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff169050600060028316146147ed5760806ffff97272373d413259a46990580e213a8202901c90505b600060048316146148125760806ffff2e50f5f656932ef12357cf3c7fdcc8202901c90505b600060088316146148375760806fffe5caca7e10e4e61c3624eaa0941cd08202901c90505b6000601083161461485c5760806fffcb9843d60f6159c9db58835c9266448202901c90505b600060208316146148815760806fff973b41fa98c081472e6896dfb254c08202901c90505b600060408316146148a65760806fff2ea16466c96a3843ec78b326b528618202901c90505b600060808316146148cb5760806ffe5dee046a99a2a811c461f1969c30538202901c90505b60006101008316146148f15760806ffcbe86c7900a88aedcffc83b479aa3a48202901c90505b60006102008316146149175760806ff987a7253ac413176f2b074cf7815e548202901c90505b600061040083161461493d5760806ff3392b0822b70005940c7a398e4b70f38202901c90505b60006108008316146149635760806fe7159475a2c29b7443b29c7fa6e889d98202901c90505b60006110008316146149895760806fd097f3bdfd2022b8845ad8f792aa58258202901c90505b60006120008316146149af5760806fa9f746462d870fdf8a65dc1f90e061e58202901c90505b60006140008316146149d55760806f70d869a156d2a1b890bb3df62baf32f78202901c90505b60006180008316146149fb5760806f31be135f97d08fd981231505542fcfa68202901c90505b600062010000831614614a225760806f09aa508b5b7a84e1c677de54f3e99bc98202901c90505b600062020000831614614a485760806e5d6af8dedb81196699c329225ee6048202901c90505b600062040000831614614a6d5760806d2216e584f5fa1ea926041bedfe988202901c90505b600062080000831614614a905760806b048a170391f7dc42444e8fa28202901c90505b60008460020b1315614ac957807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81614ac557fe5b0490505b60006401000000008281614ad957fe5b0614614ae6576001614ae9565b60005b60ff16602082901c0192505050919050565b60008060008060008873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161015905060008088121590508015614baa576000614b5d8989620f42400362ffffff16620f4240614dd3565b905082614b7657614b718c8c8c6001616adc565b614b84565b614b838b8d8c6001616bb6565b5b9550858110614b95578a9650614ba4565b614ba18c8b8386616cec565b96505b50614bf6565b81614bc157614bbc8b8b8b6000616bb6565b614bcf565b614bce8a8c8b6000616adc565b5b9350838860000310614be357899550614bf5565b614bf28b8a8a60000385616d5e565b95505b5b60008673ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff161490508215614c7d57808015614c395750815b614c4f57614c4a878d8c6001616bb6565b614c51565b855b9550808015614c5e575081155b614c7457614c6f878d8c6000616adc565b614c76565b845b9450614cc7565b808015614c875750815b614c9d57614c988c888c6001616adc565b614c9f565b855b9550808015614cac575081155b614cc257614cbd8c888c6000616bb6565b614cc4565b845b94505b81158015614cd757508860000385115b15614ce3578860000394505b818015614d1c57508a73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b15614d2b578589039350614d48565b614d45868962ffffff168a620f42400362ffffff16616345565b93505b50505095509550955095915050565b60007f80000000000000000000000000000000000000000000000000000000000000008210614d8557600080fd5b819050919050565b6000808212151515838385039250821315151514614daa57600080fd5b92915050565b6000808212151515838385019250821215151514614dcd57600080fd5b92915050565b600080600080198587098587029250828110838203039150506000811415614e0e5760008411614e0257600080fd5b83820492505050614ea6565b808411614e1a57600080fd5b600084868809905082811182039150808303925060008586600003169050808604955080840493506001818260000304019050808302841793506000600287600302189050808702600203810290508087026002038102905080870260020381029050808702600203810290508087026002038102905080870260020381029050808502955050505050505b9392505050565b60008060008763ffffffff161415614fce576000898661ffff1661ffff8110614ed257fe5b016040518060800160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900460060b60060b60060b815260200160008201600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160008201601f9054906101000a900460ff16151515158152505090508863ffffffff16816000015163ffffffff1614614fba57614fb7818a8988616dd0565b90505b8060200151816040015192509250506150d4565b60008789039050600080614fe78c8c858c8c8c8c616ebb565b91509150816000015163ffffffff168363ffffffff1614156150195781602001518260400151945094505050506150d4565b806000015163ffffffff168363ffffffff1614156150475780602001518160400151945094505050506150d4565b60008260000151826000015103905060008360000151850390508063ffffffff168263ffffffff16856020015185602001510360060b8161508457fe5b05028460200151018263ffffffff168263ffffffff16866040015186604001510373ffffffffffffffffffffffffffffffffffffffff1602816150c357fe5b048560400151019650965050505050505b97509795505050505050565b6000808860008960020b60020b815260200190815260200160002090508060010154870381600101819055508060020154860381600201819055508060030160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685038160030160076101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060030160009054906101000a900460060b84038160030160006101000a81548166ffffffffffffff021916908360060b66ffffffffffffff16021790555080600301601b9054906101000a900463ffffffff16830381600301601b6101000a81548163ffffffff021916908363ffffffff1602179055508060000160109054906101000a9004600f0b915050979650505050505050565b60008082600f0b12156152cf57826fffffffffffffffffffffffffffffffff168260000384039150816fffffffffffffffffffffffffffffffff16106152ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f4c5300000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b61536f565b826fffffffffffffffffffffffffffffffff168284019150816fffffffffffffffffffffffffffffffff16101561536e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f4c4100000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b92915050565b60006401000276a373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16101580156153f7575073fffd8963efd1fc6a506488495d951d5263988d2673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16105b615469576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260018152602001807f520000000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600060208373ffffffffffffffffffffffffffffffffffffffff16901b9050600081905060006fffffffffffffffffffffffffffffffff821160071b808217915082811c92505067ffffffffffffffff821160061b808217915082811c92505063ffffffff821160051b808217915082811c92505061ffff821160041b808217915082811c92505060ff821160031b808217915082811c925050600f821160021b808217915082811c9250506003821160011b808217915082811c925050600182118082179150506080811061554757607f810383901c9150615551565b80607f0383901b91505b6000604060808303901b9050828302607f1c92508260801c80603f1b8217915083811c935050828302607f1c92508260801c80603e1b8217915083811c935050828302607f1c92508260801c80603d1b8217915083811c935050828302607f1c92508260801c80603c1b8217915083811c935050828302607f1c92508260801c80603b1b8217915083811c935050828302607f1c92508260801c80603a1b8217915083811c935050828302607f1c92508260801c8060391b8217915083811c935050828302607f1c92508260801c8060381b8217915083811c935050828302607f1c92508260801c8060371b8217915083811c935050828302607f1c92508260801c8060361b8217915083811c935050828302607f1c92508260801c8060351b8217915083811c935050828302607f1c92508260801c8060341b8217915083811c935050828302607f1c92508260801c8060331b8217915083811c935050828302607f1c92508260801c8060321b82179150506000693627a301d71055774c8582029050600060806f028f6481ab7f045a5af012a19d003aaa8303901d9050600060806fdb2df09e81959a81455e260799a0632f8401901d90508060020b8260020b14615761578873ffffffffffffffffffffffffffffffffffffffff16615738826146c0565b73ffffffffffffffffffffffffffffffffffffffff16111561575a578161575c565b805b615763565b815b975050505050505050919050565b6000806000898961ffff1661ffff811061578757fe5b016040518060800160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900460060b60060b60060b815260200160008201600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160008201601f9054906101000a900460ff16151515158152505090508763ffffffff16816000015163ffffffff16141561586d5788859250925050615997565b8461ffff168461ffff1611801561588e57506001850361ffff168961ffff16145b1561589b5783915061589f565b8491505b8161ffff1660018a0161ffff16816158b357fe5b0692506158c281898989616dd0565b8a8461ffff1661ffff81106158d357fe5b0160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548166ffffffffffffff021916908360060b66ffffffffffffff160217905550604082015181600001600b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600001601f6101000a81548160ff021916908315150217905550905050505b97509795505050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b8585604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310615a845780518252602082019150602081019050602083039250615a61565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114615ae6576040519150601f19603f3d011682016040523d82523d6000602084013e615aeb565b606091505b5091509150818015615b2b5750600081511480615b2a5750808060200190516020811015615b1857600080fd5b81019080805190602001909291905050505b5b615b9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f544600000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b5050505050565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a0823160e01b30604051602401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310615c9f5780518252602082019150602081019050602083039250615c7c565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114615cff576040519150601f19603f3d011682016040523d82523d6000602084013e615d04565b606091505b5091509150818015615d1857506020815110155b615d2157600080fd5b808060200190516020811015615d3657600080fd5b81019080805190602001909291905050509250505090565b6000828284019150811015615d6257600080fd5b92915050565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a0823160e01b30604051602401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310615e635780518252602082019150602081019050602083039250615e40565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114615ec3576040519150601f19603f3d011682016040523d82523d6000602084013e615ec8565b606091505b5091509150818015615edc57506020815110155b615ee557600080fd5b808060200190516020811015615efa57600080fd5b81019080805190602001909291905050509250505090565b6000808361ffff1611615f8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260018152602001807f490000000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8261ffff168261ffff1611615fa457829050616001565b60008390505b8261ffff168161ffff161015615ffc576001858261ffff1661ffff8110615fcd57fe5b0160000160006101000a81548163ffffffff021916908363ffffffff1602179055508080600101915050615faa565b508190505b9392505050565b60008182915081600f0b1461601c57600080fd5b919050565b600080600061602e614506565b616040846020015185604001516165d7565b6000806040518060e00160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460020b60020b60020b81526020016000820160179054906101000a900461ffff1661ffff1661ffff1681526020016000820160199054906101000a900461ffff1661ffff1661ffff16815260200160008201601b9054906101000a900461ffff1661ffff1661ffff16815260200160008201601d9054906101000a900460ff1660ff1660ff16815260200160008201601e9054906101000a900460ff161515151581525050905061617c85600001518660200151876040015188606001518560200151617245565b935060008560600151600f0b1461633d57846020015160020b816020015160020b12156161d1576161ca6161b386602001516146c0565b6161c087604001516146c0565b876060015161749e565b925061633c565b846040015160020b816020015160020b1215616311576000600460009054906101000a90046fffffffffffffffffffffffffffffffff16905061623f826040015161621a614560565b846020015184866060015187608001516008615771909695949392919063ffffffff16565b6000800160176000800160198491906101000a81548161ffff021916908361ffff1602179055508391906101000a81548161ffff021916908361ffff16021790555050506162a2826000015161629888604001516146c0565b886060015161749e565b93506162c36162b487602001516146c0565b836000015188606001516174e9565b92506162d381876060015161521c565b600460006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505061633b565b61633861632186602001516146c0565b61632e87604001516146c0565b87606001516174e9565b91505b5b5b509193909250565b6000616352848484614dd3565b90506000828061635e57fe5b848609111561639c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811061639357600080fd5b80806001019150505b9392505050565b6000846000858585604051602001808473ffffffffffffffffffffffffffffffffffffffff1660601b81526014018360020b60e81b81526003018260020b60e81b815260030193505050506040516020818303038152906040528051906020012081526020019081526020016000209050949350505050565b60608060008361ffff1611616499576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260018152602001807f490000000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b865167ffffffffffffffff811180156164b157600080fd5b506040519080825280602002602001820160405280156164e05781602001602082028036833780820191505090505b509150865167ffffffffffffffff811180156164fb57600080fd5b5060405190808252806020026020018201604052801561652a5781602001602082028036833780820191505090505b50905060005b87518110156165ca5761655b8a8a8a848151811061654a57fe5b60200260200101518a8a8a8a614ead565b84838151811061656757fe5b6020026020010184848151811061657a57fe5b602002602001018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508260060b60060b81525050508080600101915050616530565b5097509795505050505050565b8060020b8260020b12616652576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f544c55000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860020b8260020b12156166ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f544c4d000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860000360020b8160020b131561678d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f54554d000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b5050565b60008060405180608001604052808463ffffffff168152602001600060060b8152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016001151581525084600061ffff81106167e757fe5b0160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548166ffffffffffffff021916908360060b66ffffffffffffff160217905550604082015181600001600b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600001601f6101000a81548160ff021916908315150217905550905050600180915091509250929050565b60008060088360020b901d91506101008360020b816168d257fe5b079050915091565b60008082116168e857600080fd5b700100000000000000000000000000000000821061690e57608082901c91506080810190505b68010000000000000000821061692c57604082901c91506040810190505b640100000000821061694657602082901c91506020810190505b62010000821061695e57601082901c91506010810190505b610100821061697557600882901c91506008810190505b6010821061698b57600482901c91506004810190505b600482106169a157600282901c91506002810190505b600282106169b0576001810190505b919050565b60008082116169c357600080fd5b60ff905060006fffffffffffffffffffffffffffffffff8016831611156169ef576080810390506169f7565b608082901c91505b600067ffffffffffffffff801683161115616a1757604081039050616a1f565b604082901c91505b600063ffffffff801683161115616a3b57602081039050616a43565b602082901c91505b600061ffff801683161115616a5d57601081039050616a65565b601082901c91505b600060ff801683161115616a7e57600881039050616a86565b600882901c91505b6000600f83161115616a9d57600481039050616aa5565b600482901c91505b6000600383161115616abc57600281039050616ac4565b600282901c91505b6000600183161115616ad7576001810390505b919050565b60008373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161115616b1d57838580955081965050505b81616b6957616b64836fffffffffffffffffffffffffffffffff1686860373ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000614dd3565b616bac565b616bab836fffffffffffffffffffffffffffffffff1686860373ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000616345565b5b9050949350505050565b60008373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161115616bf757838580955081965050505b6000606060ff16846fffffffffffffffffffffffffffffffff16901b9050600086860373ffffffffffffffffffffffffffffffffffffffff16905060008773ffffffffffffffffffffffffffffffffffffffff1611616c5557600080fd5b83616c9f578673ffffffffffffffffffffffffffffffffffffffff16616c9283838973ffffffffffffffffffffffffffffffffffffffff16614dd3565b81616c9957fe5b04616ce0565b616cdf616cc383838973ffffffffffffffffffffffffffffffffffffffff16616345565b8873ffffffffffffffffffffffffffffffffffffffff16617534565b5b92505050949350505050565b6000808573ffffffffffffffffffffffffffffffffffffffff1611616d1057600080fd5b6000846fffffffffffffffffffffffffffffffff1611616d2f57600080fd5b81616d4657616d418585856001617547565b616d54565b616d5385858560016176b9565b5b9050949350505050565b6000808573ffffffffffffffffffffffffffffffffffffffff1611616d8257600080fd5b6000846fffffffffffffffffffffffffffffffff1611616da157600080fd5b81616db857616db385858560006176b9565b616dc6565b616dc58585856000617547565b5b9050949350505050565b616dd86184ce565b600085600001518503905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b0288602001510160060b81526020016000856fffffffffffffffffffffffffffffffff1611616e35576001616e37565b845b6fffffffffffffffffffffffffffffffff1660808463ffffffff1673ffffffffffffffffffffffffffffffffffffffff16901b73ffffffffffffffffffffffffffffffffffffffff1681616e8757fe5b0488604001510173ffffffffffffffffffffffffffffffffffffffff16815260200160011515815250915050949350505050565b616ec36184ce565b616ecb6184ce565b888561ffff1661ffff8110616edc57fe5b016040518060800160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900460060b60060b60060b815260200160008201600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160008201601f9054906101000a900460ff1615151515815250509150616fad88836000015189617843565b15616fe5578663ffffffff16826000015163ffffffff161415616fcf57617239565b81616fdc83898988616dd0565b91509150617239565b888361ffff166001870161ffff1681616ffa57fe5b0661ffff1661ffff811061700a57fe5b016040518060800160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900460060b60060b60060b815260200160008201600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160008201601f9054906101000a900460ff161515151581525050915081606001516171a65788600061ffff81106170e357fe5b016040518060800160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900460060b60060b60060b815260200160008201600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160008201601f9054906101000a900460ff16151515158152505091505b6171b588836000015189617843565b617227576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f4f4c44000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b617234898989888761790b565b915091505b97509795505050505050565b600061725f86868660076163a3909392919063ffffffff16565b90506000600154905060006002549050600080600087600f0b14617412576000617287614560565b90506000806172fe8360008060000160149054906101000a900460020b6000800160179054906101000a900461ffff16600460009054906101000a90046fffffffffffffffffffffffffffffffff166000800160199054906101000a900461ffff166008614ead909695949392919063ffffffff16565b915091506173498c8a8c8a8a86888a60007f00000000000000000000000000000000000000000000000000000000000000006005617b8e909a9998979695949392919063ffffffff16565b94506173928b8a8c8a8a86888a60017f00000000000000000000000000000000000000000000000000000000000000006005617b8e909a9998979695949392919063ffffffff16565b935084156173d1576173d08c7f00000000000000000000000000000000000000000000000000000000000000006006617e909092919063ffffffff16565b5b831561740e5761740d8b7f00000000000000000000000000000000000000000000000000000000000000006006617e909092919063ffffffff16565b5b5050505b6000806174318b8b8a89896005617f089095949392919063ffffffff16565b9150915061744c8983838a617fcf909392919063ffffffff16565b600089600f0b121561748f578315617473576174728b600561835390919063ffffffff16565b5b821561748e5761748d8a600561835390919063ffffffff16565b5b5b50505050505095945050505050565b60008082600f0b126174c4576174bf6174ba8585856001616bb6565b614d57565b6174e0565b6174dc6174d78585856000036000616bb6565b614d57565b6000035b90509392505050565b60008082600f0b1261750f5761750a6175058585856001616adc565b614d57565b61752b565b6175276175228585856000036000616adc565b614d57565b6000035b90509392505050565b6000808284061182840401905092915050565b600081156175fd57600073ffffffffffffffffffffffffffffffffffffffff801684111561759e57617599846c01000000000000000000000000876fffffffffffffffffffffffffffffffff16614dd3565b6175c2565b846fffffffffffffffffffffffffffffffff16606060ff1685901b816175c057fe5b045b90506175f56175f0828873ffffffffffffffffffffffffffffffffffffffff16615d4e90919063ffffffff16565b618434565b9150506176b1565b600073ffffffffffffffffffffffffffffffffffffffff801684111561764c57617647846c01000000000000000000000000876fffffffffffffffffffffffffffffffff16616345565b617670565b61766f606060ff1685901b866fffffffffffffffffffffffffffffffff16617534565b5b9050808673ffffffffffffffffffffffffffffffffffffffff161161769457600080fd5b808673ffffffffffffffffffffffffffffffffffffffff16039150505b949350505050565b6000808314156176cb5784905061783b565b6000606060ff16856fffffffffffffffffffffffffffffffff16901b905082156177b25760008673ffffffffffffffffffffffffffffffffffffffff16858873ffffffffffffffffffffffffffffffffffffffff1687029250828161772c57fe5b04141561776e576000818301905082811061776c57617762838973ffffffffffffffffffffffffffffffffffffffff1683616345565b935050505061783b565b505b6177a9826177a4878a73ffffffffffffffffffffffffffffffffffffffff16868161779557fe5b04615d4e90919063ffffffff16565b617534565b9250505061783b565b60008673ffffffffffffffffffffffffffffffffffffffff16858873ffffffffffffffffffffffffffffffffffffffff168702925082816177ef57fe5b041480156177fc57508082115b61780557600080fd5b60008183039050617835617830848a73ffffffffffffffffffffffffffffffffffffffff1684616345565b618434565b93505050505b949350505050565b60008363ffffffff168363ffffffff161115801561786d57508363ffffffff168263ffffffff1611155b15617889578163ffffffff168363ffffffff1611159050617904565b60008463ffffffff168463ffffffff16116178b1576401000000008463ffffffff16016178b9565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff16116178ea576401000000008463ffffffff16016178f2565b8363ffffffff165b64ffffffffff16905080821115925050505b9392505050565b6179136184ce565b61791b6184ce565b60008361ffff166001860161ffff168161793157fe5b0661ffff169050600060018561ffff16830103905060005b600115617b815760028284018161795c57fe5b049050898661ffff16828161796d57fe5b0661ffff811061797957fe5b016040518060800160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900460060b60060b60060b815260200160008201600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160008201601f9054906101000a900460ff16151515158152505094508460600151617a4f57600181019250617949565b898661ffff166001830181617a6057fe5b0661ffff8110617a6c57fe5b016040518060800160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900460060b60060b60060b815260200160008201600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160008201601f9054906101000a900460ff16151515158152505093506000617b3f8a87600001518b617843565b9050808015617b595750617b588a8a8760000151617843565b5b15617b645750617b81565b80617b7457600182039250617b7b565b6001820193505b50617949565b5050509550959350505050565b6000808c60008d60020b60020b8152602001908152602001600020905060008160000160009054906101000a90046fffffffffffffffffffffffffffffffff1690506000617bdc828d61521c565b9050846fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff161115617c78576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f4c4f00000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000826fffffffffffffffffffffffffffffffff161415156000826fffffffffffffffffffffffffffffffff16141515141593506000826fffffffffffffffffffffffffffffffff161415617d97578c60020b8e60020b13617d79578a8360010181905550898360020181905550888360030160076101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550878360030160006101000a81548166ffffffffffffff021916908360060b66ffffffffffffff1602179055508683600301601b6101000a81548163ffffffff021916908363ffffffff1602179055505b600183600301601f6101000a81548160ff0219169083151502179055505b808360000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555085617e0e57617e09617e048d600f0b8560000160109054906101000a9004600f0b600f0b614db090919063ffffffff16565b616008565b617e41565b617e40617e3b8d600f0b8560000160109054906101000a9004600f0b600f0b614d8d90919063ffffffff16565b616008565b5b8360000160106101000a8154816fffffffffffffffffffffffffffffffff0219169083600f0b6fffffffffffffffffffffffffffffffff1602179055505050509b9a5050505050505050505050565b60008160020b8360020b81617ea157fe5b0760020b14617eaf57600080fd5b600080617eca8360020b8560020b81617ec457fe5b056168b7565b9150915060008160ff166001901b9050808660008560010b60010b815260200190815260200160002060008282541892505081905550505050505050565b60008060008860008960020b60020b8152602001908152602001600020905060008960008960020b60020b815260200190815260200160002090506000808a60020b8960020b12617f66578360010154915083600201549050617f79565b8360010154880391508360020154870390505b6000808b60020b8b60020b1215617f9d578460010154915084600201549050617fb0565b84600101548a0391508460020154890390505b81848b0303975080838a03039650505050505050965096945050505050565b6000846040518060a00160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015481526020016003820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016003820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681525050905060008085600f0b141561817657600082600001516fffffffffffffffffffffffffffffffff161161816a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f4e5000000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81600001519050618187565b61818482600001518661521c565b90505b60006181c18360200151860384600001516fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000614dd3565b905060006181fd8460400151860385600001516fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000614dd3565b9050600087600f0b1461824657828860000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b8588600101819055508488600201819055506000826fffffffffffffffffffffffffffffffff16118061828b57506000816fffffffffffffffffffffffffffffffff16115b1561834957818860030160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550808860030160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b5050505050505050565b8160008260020b60020b8152602001908152602001600020600080820160006101000a8154906fffffffffffffffffffffffffffffffff02191690556000820160106101000a8154906fffffffffffffffffffffffffffffffff0219169055600182016000905560028201600090556003820160006101000a81549066ffffffffffffff02191690556003820160076101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560038201601b6101000a81549063ffffffff021916905560038201601f6101000a81549060ff021916905550505050565b6000818291508173ffffffffffffffffffffffffffffffffffffffff161461845b57600080fd5b919050565b6040518060e00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600060020b8152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081525090565b6040518060800160405280600063ffffffff168152602001600060060b8152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600015158152509056fea264697066735822122069f211cc1a6aac0a67e3e3e6b89f37b130e1aa6b10cc7cf2336ddad89f3d968564736f6c63430007060033c080a0e0e4ec4fcddb3458e631ace7f5422f4a6dac66c7a97c7c0c152e645a0105b3efa06bf99ac04f72b355872728687e8481dde391330a33f9dafc6319b9d4080d3f44c0c0"
],
"latestBlockNumber": "0x18"
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"goerli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212208f68110beda417e94f6015d2da9f8f3516bae3903ebda4bb5212cdea3d162a9264736f6c634300081a0033",
"opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP16 PUSH9 0x110BEDA417E94F6015 0xD2 0xDA SWAP16 DUP16 CALLDATALOAD AND 0xBA 0xE3 SWAP1 RETURNDATACOPY 0xBD LOG4 0xBB MSTORE SLT 0xCD 0xEA RETURNDATASIZE AND 0x2A SWAP3 PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ",
"sourceMap": "1727:8435:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212208f68110beda417e94f6015d2da9f8f3516bae3903ebda4bb5212cdea3d162a9264736f6c634300081a0033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP16 PUSH9 0x110BEDA417E94F6015 0xD2 0xDA SWAP16 DUP16 CALLDATALOAD AND 0xBA 0xE3 SWAP1 RETURNDATACOPY 0xBD LOG4 0xBB MSTORE SLT 0xCD 0xEA RETURNDATASIZE AND 0x2A SWAP3 PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ",
"sourceMap": "1727:8435:0:-:0;;;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17000",
"executionCost": "92",
"totalCost": "17092"
},
"internal": {
"append(struct Buffer.buffer memory,bytes memory)": "infinite",
"append(struct Buffer.buffer memory,bytes memory,uint256)": "infinite",
"append(struct Buffer.buffer memory,bytes32,uint256)": "infinite",
"appendBytes20(struct Buffer.buffer memory,bytes20)": "infinite",
"appendBytes32(struct Buffer.buffer memory,bytes32)": "infinite",
"appendInt(struct Buffer.buffer memory,uint256,uint256)": "infinite",
"appendUint8(struct Buffer.buffer memory,uint8)": "infinite",
"fromBytes(bytes memory)": "infinite",
"init(struct Buffer.buffer memory,uint256)": "infinite",
"resize(struct Buffer.buffer memory,uint256)": "infinite",
"truncate(struct Buffer.buffer memory)": "infinite"
}
},
"methodIdentifiers": {}
},
"abi": []
}
{
"compiler": {
"version": "0.8.26+commit.8a97fa7a"
},
"language": "Solidity",
"output": {
"abi": [],
"devdoc": {
"details": "A library for working with mutable byte buffers in Solidity. Byte buffers are mutable and expandable, and provide a variety of primitives for appending to them. At any time you can fetch a bytes object containing the current contents of the buffer. The bytes object should not be stored between operations, as it may change due to resizing of the buffer.",
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"Ethereum-Name-Service//@ensdomains/buffer/contracts/Buffer.sol": "Buffer"
},
"evmVersion": "cancun",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"Ethereum-Name-Service//@ensdomains/buffer/contracts/Buffer.sol": {
"keccak256": "0xd1fee0aa65189690c5d8e47078cf14769d86b46657adeab76c92df8f7a97ded7",
"license": "BSD-2-Clause",
"urls": [
"bzz-raw://eac4083eb1d3e9b3370117084d765849f89004b13fc8ea59dc2453c89ebb9601",
"dweb:/ipfs/QmQxUcDJ9ikYgmnXxpTVXXxSiHw7PmTJ2w8gXLUFPvPTCP"
]
}
},
"version": 1
}
{
"id": "4a54105db7f325b08a06fa60d87622ca",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.8.26",
"solcLongVersion": "0.8.26+commit.8a97fa7a",
"input": {
"language": "Solidity",
"sources": {
"Ethereum-Name-Service//@ensdomains/buffer/contracts/Buffer.sol": {
"content": "/*\n \n ██████ ██████ ██████ ██ ██ ██████ ██████ ██████ ██ ██ ██████ ███████ ██ ██\n ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██\n ██ ██ ██ ██ ██ █████ ██████ ██ ██ ██ ██ █████ ██ ██ █████ ██ ██\n ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██\n ██████ ██████ ██████ ██ ██ ██████ ██████ ██████ ██ ██ ██ ██████ ███████ ████\n \n Find any smart contract, and build your project faster: https://www.cookbook.dev\n Twitter: https://twitter.com/cookbook_dev\n Discord: https://discord.gg/cookbookdev\n \n Find this contract on Cookbook: https://www.cookbook.dev/protocols/Ethereum-Name-Service?utm=code\n */\n \n // SPDX-License-Identifier: BSD-2-Clause\npragma solidity ^0.8.4;\n\n/**\n* @dev A library for working with mutable byte buffers in Solidity.\n*\n* Byte buffers are mutable and expandable, and provide a variety of primitives\n* for appending to them. At any time you can fetch a bytes object containing the\n* current contents of the buffer. The bytes object should not be stored between\n* operations, as it may change due to resizing of the buffer.\n*/\nlibrary Buffer {\n /**\n * @dev Represents a mutable buffer. Buffers have a current value (buf) and\n * a capacity. The capacity may be longer than the current value, in\n * which case it can be extended without the need to allocate more memory.\n */\n struct buffer {\n bytes buf;\n uint capacity;\n }\n\n /**\n * @dev Initializes a buffer with an initial capacity.\n * @param buf The buffer to initialize.\n * @param capacity The number of bytes of space to allocate the buffer.\n * @return The buffer, for chaining.\n */\n function init(buffer memory buf, uint capacity) internal pure returns(buffer memory) {\n if (capacity % 32 != 0) {\n capacity += 32 - (capacity % 32);\n }\n // Allocate space for the buffer data\n buf.capacity = capacity;\n assembly {\n let ptr := mload(0x40)\n mstore(buf, ptr)\n mstore(ptr, 0)\n let fpm := add(32, add(ptr, capacity))\n if lt(fpm, ptr) {\n revert(0, 0)\n }\n mstore(0x40, fpm)\n }\n return buf;\n }\n\n /**\n * @dev Initializes a new buffer from an existing bytes object.\n * Changes to the buffer may mutate the original value.\n * @param b The bytes object to initialize the buffer with.\n * @return A new buffer.\n */\n function fromBytes(bytes memory b) internal pure returns(buffer memory) {\n buffer memory buf;\n buf.buf = b;\n buf.capacity = b.length;\n return buf;\n }\n\n function resize(buffer memory buf, uint capacity) private pure {\n bytes memory oldbuf = buf.buf;\n init(buf, capacity);\n append(buf, oldbuf);\n }\n\n /**\n * @dev Sets buffer length to 0.\n * @param buf The buffer to truncate.\n * @return The original buffer, for chaining..\n */\n function truncate(buffer memory buf) internal pure returns (buffer memory) {\n assembly {\n let bufptr := mload(buf)\n mstore(bufptr, 0)\n }\n return buf;\n }\n\n /**\n * @dev Appends len bytes of a byte string to a buffer. Resizes if doing so would exceed\n * the capacity of the buffer.\n * @param buf The buffer to append to.\n * @param data The data to append.\n * @param len The number of bytes to copy.\n * @return The original buffer, for chaining.\n */\n function append(buffer memory buf, bytes memory data, uint len) internal pure returns(buffer memory) {\n require(len <= data.length);\n\n uint off = buf.buf.length;\n uint newCapacity = off + len;\n if (newCapacity > buf.capacity) {\n resize(buf, newCapacity * 2);\n }\n\n uint dest;\n uint src;\n assembly {\n // Memory address of the buffer data\n let bufptr := mload(buf)\n // Length of existing buffer data\n let buflen := mload(bufptr)\n // Start address = buffer address + offset + sizeof(buffer length)\n dest := add(add(bufptr, 32), off)\n // Update buffer length if we're extending it\n if gt(newCapacity, buflen) {\n mstore(bufptr, newCapacity)\n }\n src := add(data, 32)\n }\n\n // Copy word-length chunks while possible\n for (; len >= 32; len -= 32) {\n assembly {\n mstore(dest, mload(src))\n }\n dest += 32;\n src += 32;\n }\n\n // Copy remaining bytes\n unchecked {\n uint mask = (256 ** (32 - len)) - 1;\n assembly {\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n }\n }\n\n return buf;\n }\n\n /**\n * @dev Appends a byte string to a buffer. Resizes if doing so would exceed\n * the capacity of the buffer.\n * @param buf The buffer to append to.\n * @param data The data to append.\n * @return The original buffer, for chaining.\n */\n function append(buffer memory buf, bytes memory data) internal pure returns (buffer memory) {\n return append(buf, data, data.length);\n }\n\n /**\n * @dev Appends a byte to the buffer. Resizes if doing so would exceed the\n * capacity of the buffer.\n * @param buf The buffer to append to.\n * @param data The data to append.\n * @return The original buffer, for chaining.\n */\n function appendUint8(buffer memory buf, uint8 data) internal pure returns(buffer memory) {\n uint off = buf.buf.length;\n uint offPlusOne = off + 1;\n if (off >= buf.capacity) {\n resize(buf, offPlusOne * 2);\n }\n\n assembly {\n // Memory address of the buffer data\n let bufptr := mload(buf)\n // Address = buffer address + sizeof(buffer length) + off\n let dest := add(add(bufptr, off), 32)\n mstore8(dest, data)\n // Update buffer length if we extended it\n if gt(offPlusOne, mload(bufptr)) {\n mstore(bufptr, offPlusOne)\n }\n }\n\n return buf;\n }\n\n /**\n * @dev Appends len bytes of bytes32 to a buffer. Resizes if doing so would\n * exceed the capacity of the buffer.\n * @param buf The buffer to append to.\n * @param data The data to append.\n * @param len The number of bytes to write (left-aligned).\n * @return The original buffer, for chaining.\n */\n function append(buffer memory buf, bytes32 data, uint len) private pure returns(buffer memory) {\n uint off = buf.buf.length;\n uint newCapacity = len + off;\n if (newCapacity > buf.capacity) {\n resize(buf, newCapacity * 2);\n }\n\n unchecked {\n uint mask = (256 ** len) - 1;\n // Right-align data\n data = data >> (8 * (32 - len));\n assembly {\n // Memory address of the buffer data\n let bufptr := mload(buf)\n // Address = buffer address + sizeof(buffer length) + newCapacity\n let dest := add(bufptr, newCapacity)\n mstore(dest, or(and(mload(dest), not(mask)), data))\n // Update buffer length if we extended it\n if gt(newCapacity, mload(bufptr)) {\n mstore(bufptr, newCapacity)\n }\n }\n }\n return buf;\n }\n\n /**\n * @dev Appends a bytes20 to the buffer. Resizes if doing so would exceed\n * the capacity of the buffer.\n * @param buf The buffer to append to.\n * @param data The data to append.\n * @return The original buffer, for chhaining.\n */\n function appendBytes20(buffer memory buf, bytes20 data) internal pure returns (buffer memory) {\n return append(buf, bytes32(data), 20);\n }\n\n /**\n * @dev Appends a bytes32 to the buffer. Resizes if doing so would exceed\n * the capacity of the buffer.\n * @param buf The buffer to append to.\n * @param data The data to append.\n * @return The original buffer, for chaining.\n */\n function appendBytes32(buffer memory buf, bytes32 data) internal pure returns (buffer memory) {\n return append(buf, data, 32);\n }\n\n /**\n * @dev Appends a byte to the end of the buffer. Resizes if doing so would\n * exceed the capacity of the buffer.\n * @param buf The buffer to append to.\n * @param data The data to append.\n * @param len The number of bytes to write (right-aligned).\n * @return The original buffer.\n */\n function appendInt(buffer memory buf, uint data, uint len) internal pure returns(buffer memory) {\n uint off = buf.buf.length;\n uint newCapacity = len + off;\n if (newCapacity > buf.capacity) {\n resize(buf, newCapacity * 2);\n }\n\n uint mask = (256 ** len) - 1;\n assembly {\n // Memory address of the buffer data\n let bufptr := mload(buf)\n // Address = buffer address + sizeof(buffer length) + newCapacity\n let dest := add(bufptr, newCapacity)\n mstore(dest, or(and(mload(dest), not(mask)), data))\n // Update buffer length if we extended it\n if gt(newCapacity, mload(bufptr)) {\n mstore(bufptr, newCapacity)\n }\n }\n return buf;\n }\n}\n"
}
},
"settings": {
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"": [
"ast"
],
"*": [
"abi",
"metadata",
"devdoc",
"userdoc",
"storageLayout",
"evm.legacyAssembly",
"evm.bytecode",
"evm.deployedBytecode",
"evm.methodIdentifiers",
"evm.gasEstimates",
"evm.assembly"
]
}
},
"remappings": []
}
},
"output": {
"contracts": {
"Ethereum-Name-Service//@ensdomains/buffer/contracts/Buffer.sol": {
"Buffer": {
"abi": [],
"devdoc": {
"details": "A library for working with mutable byte buffers in Solidity. Byte buffers are mutable and expandable, and provide a variety of primitives for appending to them. At any time you can fetch a bytes object containing the current contents of the buffer. The bytes object should not be stored between operations, as it may change due to resizing of the buffer.",
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": " /* \"Ethereum-Name-Service//@ensdomains/buffer/contracts/Buffer.sol\":1727:10162 library Buffer {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"Ethereum-Name-Service//@ensdomains/buffer/contracts/Buffer.sol\":1727:10162 library Buffer {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212208f68110beda417e94f6015d2da9f8f3516bae3903ebda4bb5212cdea3d162a9264736f6c634300081a0033\n}\n",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212208f68110beda417e94f6015d2da9f8f3516bae3903ebda4bb5212cdea3d162a9264736f6c634300081a0033",
"opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP16 PUSH9 0x110BEDA417E94F6015 0xD2 0xDA SWAP16 DUP16 CALLDATALOAD AND 0xBA 0xE3 SWAP1 RETURNDATACOPY 0xBD LOG4 0xBB MSTORE SLT 0xCD 0xEA RETURNDATASIZE AND 0x2A SWAP3 PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ",
"sourceMap": "1727:8435:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212208f68110beda417e94f6015d2da9f8f3516bae3903ebda4bb5212cdea3d162a9264736f6c634300081a0033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP16 PUSH9 0x110BEDA417E94F6015 0xD2 0xDA SWAP16 DUP16 CALLDATALOAD AND 0xBA 0xE3 SWAP1 RETURNDATACOPY 0xBD LOG4 0xBB MSTORE SLT 0xCD 0xEA RETURNDATASIZE AND 0x2A SWAP3 PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ",
"sourceMap": "1727:8435:0:-:0;;;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17000",
"executionCost": "92",
"totalCost": "17092"
},
"internal": {
"append(struct Buffer.buffer memory,bytes memory)": "infinite",
"append(struct Buffer.buffer memory,bytes memory,uint256)": "infinite",
"append(struct Buffer.buffer memory,bytes32,uint256)": "infinite",
"appendBytes20(struct Buffer.buffer memory,bytes20)": "infinite",
"appendBytes32(struct Buffer.buffer memory,bytes32)": "infinite",
"appendInt(struct Buffer.buffer memory,uint256,uint256)": "infinite",
"appendUint8(struct Buffer.buffer memory,uint8)": "infinite",
"fromBytes(bytes memory)": "infinite",
"init(struct Buffer.buffer memory,uint256)": "infinite",
"resize(struct Buffer.buffer memory,uint256)": "infinite",
"truncate(struct Buffer.buffer memory)": "infinite"
}
},
"legacyAssembly": {
".code": [
{
"begin": 1727,
"end": 10162,
"name": "PUSH #[$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 1727,
"end": 10162,
"name": "PUSH [$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 1727,
"end": 10162,
"name": "PUSH",
"source": 0,
"value": "B"
},
{
"begin": 1727,
"end": 10162,
"name": "DUP3",
"source": 0
},
{
"begin": 1727,
"end": 10162,
"name": "DUP3",
"source": 0
},
{
"begin": 1727,
"end": 10162,
"name": "DUP3",
"source": 0
},
{
"begin": 1727,
"end": 10162,
"name": "CODECOPY",
"source": 0
},
{
"begin": 1727,
"end": 10162,
"name": "DUP1",
"source": 0
},
{
"begin": 1727,
"end": 10162,
"name": "MLOAD",
"source": 0
},
{
"begin": 1727,
"end": 10162,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 1727,
"end": 10162,
"name": "BYTE",
"source": 0
},
{
"begin": 1727,
"end": 10162,
"name": "PUSH",
"source": 0,
"value": "73"
},
{
"begin": 1727,
"end": 10162,
"name": "EQ",
"source": 0
},
{
"begin": 1727,
"end": 10162,
"name": "PUSH [tag]",
"source": 0,
"value": "1"
},
{
"begin": 1727,
"end": 10162,
"name": "JUMPI",
"source": 0
},
{
"begin": 1727,
"end": 10162,
"name": "PUSH",
"source": 0,
"value": "4E487B7100000000000000000000000000000000000000000000000000000000"
},
{
"begin": 1727,
"end": 10162,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 1727,
"end": 10162,
"name": "MSTORE",
"source": 0
},
{
"begin": 1727,
"end": 10162,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 1727,
"end": 10162,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 1727,
"end": 10162,
"name": "MSTORE",
"source": 0
},
{
"begin": 1727,
"end": 10162,
"name": "PUSH",
"source": 0,
"value": "24"
},
{
"begin": 1727,
"end": 10162,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 1727,
"end": 10162,
"name": "REVERT",
"source": 0
},
{
"begin": 1727,
"end": 10162,
"name": "tag",
"source": 0,
"value": "1"
},
{
"begin": 1727,
"end": 10162,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 1727,
"end": 10162,
"name": "ADDRESS",
"source": 0
},
{
"begin": 1727,
"end": 10162,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 1727,
"end": 10162,
"name": "MSTORE",
"source": 0
},
{
"begin": 1727,
"end": 10162,
"name": "PUSH",
"source": 0,
"value": "73"
},
{
"begin": 1727,
"end": 10162,
"name": "DUP2",
"source": 0
},
{
"begin": 1727,
"end": 10162,
"name": "MSTORE8",
"source": 0
},
{
"begin": 1727,
"end": 10162,
"name": "DUP3",
"source": 0
},
{
"begin": 1727,
"end": 10162,
"name": "DUP2",
"source": 0
},
{
"begin": 1727,
"end": 10162,
"name": "RETURN",
"source": 0
}
],
".data": {
"0": {
".auxdata": "a26469706673582212208f68110beda417e94f6015d2da9f8f3516bae3903ebda4bb5212cdea3d162a9264736f6c634300081a0033",
".code": [
{
"begin": 1727,
"end": 10162,
"name": "PUSHDEPLOYADDRESS",
"source": 0
},
{
"begin": 1727,
"end": 10162,
"name": "ADDRESS",
"source": 0
},
{
"begin": 1727,
"end": 10162,
"name": "EQ",
"source": 0
},
{
"begin": 1727,
"end": 10162,
"name": "PUSH",
"source": 0,
"value": "80"
},
{
"begin": 1727,
"end": 10162,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 1727,
"end": 10162,
"name": "MSTORE",
"source": 0
},
{
"begin": 1727,
"end": 10162,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 1727,
"end": 10162,
"name": "DUP1",
"source": 0
},
{
"begin": 1727,
"end": 10162,
"name": "REVERT",
"source": 0
}
]
}
},
"sourceList": [
"Ethereum-Name-Service//@ensdomains/buffer/contracts/Buffer.sol",
"#utility.yul"
]
},
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"A library for working with mutable byte buffers in Solidity. Byte buffers are mutable and expandable, and provide a variety of primitives for appending to them. At any time you can fetch a bytes object containing the current contents of the buffer. The bytes object should not be stored between operations, as it may change due to resizing of the buffer.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"Ethereum-Name-Service//@ensdomains/buffer/contracts/Buffer.sol\":\"Buffer\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"Ethereum-Name-Service//@ensdomains/buffer/contracts/Buffer.sol\":{\"keccak256\":\"0xd1fee0aa65189690c5d8e47078cf14769d86b46657adeab76c92df8f7a97ded7\",\"license\":\"BSD-2-Clause\",\"urls\":[\"bzz-raw://eac4083eb1d3e9b3370117084d765849f89004b13fc8ea59dc2453c89ebb9601\",\"dweb:/ipfs/QmQxUcDJ9ikYgmnXxpTVXXxSiHw7PmTJ2w8gXLUFPvPTCP\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
}
},
"sources": {
"Ethereum-Name-Service//@ensdomains/buffer/contracts/Buffer.sol": {
"ast": {
"absolutePath": "Ethereum-Name-Service//@ensdomains/buffer/contracts/Buffer.sol",
"exportedSymbols": {
"Buffer": [
421
]
},
"id": 422,
"license": "BSD-2-Clause",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1,
"literals": [
"solidity",
"^",
"0.8",
".4"
],
"nodeType": "PragmaDirective",
"src": "1323:23:0"
},
{
"abstract": false,
"baseContracts": [],
"canonicalName": "Buffer",
"contractDependencies": [],
"contractKind": "library",
"documentation": {
"id": 2,
"nodeType": "StructuredDocumentation",
"src": "1348:378:0",
"text": " @dev A library for working with mutable byte buffers in Solidity.\n Byte buffers are mutable and expandable, and provide a variety of primitives\n for appending to them. At any time you can fetch a bytes object containing the\n current contents of the buffer. The bytes object should not be stored between\n operations, as it may change due to resizing of the buffer."
},
"fullyImplemented": true,
"id": 421,
"linearizedBaseContracts": [
421
],
"name": "Buffer",
"nameLocation": "1735:6:0",
"nodeType": "ContractDefinition",
"nodes": [
{
"canonicalName": "Buffer.buffer",
"documentation": {
"id": 3,
"nodeType": "StructuredDocumentation",
"src": "1748:249:0",
"text": " @dev Represents a mutable buffer. Buffers have a current value (buf) and\n a capacity. The capacity may be longer than the current value, in\n which case it can be extended without the need to allocate more memory."
},
"id": 8,
"members": [
{
"constant": false,
"id": 5,
"mutability": "mutable",
"name": "buf",
"nameLocation": "2032:3:0",
"nodeType": "VariableDeclaration",
"scope": 8,
"src": "2026:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 4,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2026:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 7,
"mutability": "mutable",
"name": "capacity",
"nameLocation": "2050:8:0",
"nodeType": "VariableDeclaration",
"scope": 8,
"src": "2045:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 6,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "2045:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"name": "buffer",
"nameLocation": "2009:6:0",
"nodeType": "StructDefinition",
"scope": 421,
"src": "2002:63:0",
"visibility": "public"
},
{
"body": {
"id": 45,
"nodeType": "Block",
"src": "2387:470:0",
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 24,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 22,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 20,
"name": "capacity",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 14,
"src": "2401:8:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "%",
"rightExpression": {
"hexValue": "3332",
"id": 21,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2412:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
},
"src": "2401:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"hexValue": "30",
"id": 23,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2418:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2401:18:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 35,
"nodeType": "IfStatement",
"src": "2397:81:0",
"trueBody": {
"id": 34,
"nodeType": "Block",
"src": "2421:57:0",
"statements": [
{
"expression": {
"id": 32,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 25,
"name": "capacity",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 14,
"src": "2435:8:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 31,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"hexValue": "3332",
"id": 26,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2447:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 29,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 27,
"name": "capacity",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 14,
"src": "2453:8:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "%",
"rightExpression": {
"hexValue": "3332",
"id": 28,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2464:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
},
"src": "2453:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 30,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "2452:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2447:20:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2435:32:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 33,
"nodeType": "ExpressionStatement",
"src": "2435:32:0"
}
]
}
},
{
"expression": {
"id": 40,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"id": 36,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12,
"src": "2533:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
"id": 38,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "2537:8:0",
"memberName": "capacity",
"nodeType": "MemberAccess",
"referencedDeclaration": 7,
"src": "2533:12:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 39,
"name": "capacity",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 14,
"src": "2548:8:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2533:23:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 41,
"nodeType": "ExpressionStatement",
"src": "2533:23:0"
},
{
"AST": {
"nativeSrc": "2575:256:0",
"nodeType": "YulBlock",
"src": "2575:256:0",
"statements": [
{
"nativeSrc": "2589:22:0",
"nodeType": "YulVariableDeclaration",
"src": "2589:22:0",
"value": {
"arguments": [
{
"kind": "number",
"nativeSrc": "2606:4:0",
"nodeType": "YulLiteral",
"src": "2606:4:0",
"type": "",
"value": "0x40"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "2600:5:0",
"nodeType": "YulIdentifier",
"src": "2600:5:0"
},
"nativeSrc": "2600:11:0",
"nodeType": "YulFunctionCall",
"src": "2600:11:0"
},
"variables": [
{
"name": "ptr",
"nativeSrc": "2593:3:0",
"nodeType": "YulTypedName",
"src": "2593:3:0",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "buf",
"nativeSrc": "2631:3:0",
"nodeType": "YulIdentifier",
"src": "2631:3:0"
},
{
"name": "ptr",
"nativeSrc": "2636:3:0",
"nodeType": "YulIdentifier",
"src": "2636:3:0"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "2624:6:0",
"nodeType": "YulIdentifier",
"src": "2624:6:0"
},
"nativeSrc": "2624:16:0",
"nodeType": "YulFunctionCall",
"src": "2624:16:0"
},
"nativeSrc": "2624:16:0",
"nodeType": "YulExpressionStatement",
"src": "2624:16:0"
},
{
"expression": {
"arguments": [
{
"name": "ptr",
"nativeSrc": "2660:3:0",
"nodeType": "YulIdentifier",
"src": "2660:3:0"
},
{
"kind": "number",
"nativeSrc": "2665:1:0",
"nodeType": "YulLiteral",
"src": "2665:1:0",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "2653:6:0",
"nodeType": "YulIdentifier",
"src": "2653:6:0"
},
"nativeSrc": "2653:14:0",
"nodeType": "YulFunctionCall",
"src": "2653:14:0"
},
"nativeSrc": "2653:14:0",
"nodeType": "YulExpressionStatement",
"src": "2653:14:0"
},
{
"nativeSrc": "2680:38:0",
"nodeType": "YulVariableDeclaration",
"src": "2680:38:0",
"value": {
"arguments": [
{
"kind": "number",
"nativeSrc": "2695:2:0",
"nodeType": "YulLiteral",
"src": "2695:2:0",
"type": "",
"value": "32"
},
{
"arguments": [
{
"name": "ptr",
"nativeSrc": "2703:3:0",
"nodeType": "YulIdentifier",
"src": "2703:3:0"
},
{
"name": "capacity",
"nativeSrc": "2708:8:0",
"nodeType": "YulIdentifier",
"src": "2708:8:0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2699:3:0",
"nodeType": "YulIdentifier",
"src": "2699:3:0"
},
"nativeSrc": "2699:18:0",
"nodeType": "YulFunctionCall",
"src": "2699:18:0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2691:3:0",
"nodeType": "YulIdentifier",
"src": "2691:3:0"
},
"nativeSrc": "2691:27:0",
"nodeType": "YulFunctionCall",
"src": "2691:27:0"
},
"variables": [
{
"name": "fpm",
"nativeSrc": "2684:3:0",
"nodeType": "YulTypedName",
"src": "2684:3:0",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "2747:44:0",
"nodeType": "YulBlock",
"src": "2747:44:0",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "2772:1:0",
"nodeType": "YulLiteral",
"src": "2772:1:0",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "2775:1:0",
"nodeType": "YulLiteral",
"src": "2775:1:0",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "2765:6:0",
"nodeType": "YulIdentifier",
"src": "2765:6:0"
},
"nativeSrc": "2765:12:0",
"nodeType": "YulFunctionCall",
"src": "2765:12:0"
},
"nativeSrc": "2765:12:0",
"nodeType": "YulExpressionStatement",
"src": "2765:12:0"
}
]
},
"condition": {
"arguments": [
{
"name": "fpm",
"nativeSrc": "2737:3:0",
"nodeType": "YulIdentifier",
"src": "2737:3:0"
},
{
"name": "ptr",
"nativeSrc": "2742:3:0",
"nodeType": "YulIdentifier",
"src": "2742:3:0"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "2734:2:0",
"nodeType": "YulIdentifier",
"src": "2734:2:0"
},
"nativeSrc": "2734:12:0",
"nodeType": "YulFunctionCall",
"src": "2734:12:0"
},
"nativeSrc": "2731:60:0",
"nodeType": "YulIf",
"src": "2731:60:0"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "2811:4:0",
"nodeType": "YulLiteral",
"src": "2811:4:0",
"type": "",
"value": "0x40"
},
{
"name": "fpm",
"nativeSrc": "2817:3:0",
"nodeType": "YulIdentifier",
"src": "2817:3:0"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "2804:6:0",
"nodeType": "YulIdentifier",
"src": "2804:6:0"
},
"nativeSrc": "2804:17:0",
"nodeType": "YulFunctionCall",
"src": "2804:17:0"
},
"nativeSrc": "2804:17:0",
"nodeType": "YulExpressionStatement",
"src": "2804:17:0"
}
]
},
"evmVersion": "cancun",
"externalReferences": [
{
"declaration": 12,
"isOffset": false,
"isSlot": false,
"src": "2631:3:0",
"valueSize": 1
},
{
"declaration": 14,
"isOffset": false,
"isSlot": false,
"src": "2708:8:0",
"valueSize": 1
}
],
"id": 42,
"nodeType": "InlineAssembly",
"src": "2566:265:0"
},
{
"expression": {
"id": 43,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12,
"src": "2847:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
"functionReturnParameters": 19,
"id": 44,
"nodeType": "Return",
"src": "2840:10:0"
}
]
},
"documentation": {
"id": 9,
"nodeType": "StructuredDocumentation",
"src": "2071:226:0",
"text": " @dev Initializes a buffer with an initial capacity.\n @param buf The buffer to initialize.\n @param capacity The number of bytes of space to allocate the buffer.\n @return The buffer, for chaining."
},
"id": 46,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "init",
"nameLocation": "2311:4:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 15,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 12,
"mutability": "mutable",
"name": "buf",
"nameLocation": "2330:3:0",
"nodeType": "VariableDeclaration",
"scope": 46,
"src": "2316:17:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer"
},
"typeName": {
"id": 11,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 10,
"name": "buffer",
"nameLocations": [
"2316:6:0"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 8,
"src": "2316:6:0"
},
"referencedDeclaration": 8,
"src": "2316:6:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_storage_ptr",
"typeString": "struct Buffer.buffer"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 14,
"mutability": "mutable",
"name": "capacity",
"nameLocation": "2340:8:0",
"nodeType": "VariableDeclaration",
"scope": 46,
"src": "2335:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 13,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "2335:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "2315:34:0"
},
"returnParameters": {
"id": 19,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 18,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 46,
"src": "2372:13:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer"
},
"typeName": {
"id": 17,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 16,
"name": "buffer",
"nameLocations": [
"2372:6:0"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 8,
"src": "2372:6:0"
},
"referencedDeclaration": 8,
"src": "2372:6:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_storage_ptr",
"typeString": "struct Buffer.buffer"
}
},
"visibility": "internal"
}
],
"src": "2371:15:0"
},
"scope": 421,
"src": "2302:555:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 74,
"nodeType": "Block",
"src": "3172:108:0",
"statements": [
{
"assignments": [
57
],
"declarations": [
{
"constant": false,
"id": 57,
"mutability": "mutable",
"name": "buf",
"nameLocation": "3196:3:0",
"nodeType": "VariableDeclaration",
"scope": 74,
"src": "3182:17:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer"
},
"typeName": {
"id": 56,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 55,
"name": "buffer",
"nameLocations": [
"3182:6:0"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 8,
"src": "3182:6:0"
},
"referencedDeclaration": 8,
"src": "3182:6:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_storage_ptr",
"typeString": "struct Buffer.buffer"
}
},
"visibility": "internal"
}
],
"id": 58,
"nodeType": "VariableDeclarationStatement",
"src": "3182:17:0"
},
{
"expression": {
"id": 63,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"id": 59,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 57,
"src": "3209:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
"id": 61,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "3213:3:0",
"memberName": "buf",
"nodeType": "MemberAccess",
"referencedDeclaration": 5,
"src": "3209:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 62,
"name": "b",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49,
"src": "3219:1:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"src": "3209:11:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 64,
"nodeType": "ExpressionStatement",
"src": "3209:11:0"
},
{
"expression": {
"id": 70,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"id": 65,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 57,
"src": "3230:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
"id": 67,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "3234:8:0",
"memberName": "capacity",
"nodeType": "MemberAccess",
"referencedDeclaration": 7,
"src": "3230:12:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"expression": {
"id": 68,
"name": "b",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49,
"src": "3245:1:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 69,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "3247:6:0",
"memberName": "length",
"nodeType": "MemberAccess",
"src": "3245:8:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3230:23:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 71,
"nodeType": "ExpressionStatement",
"src": "3230:23:0"
},
{
"expression": {
"id": 72,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 57,
"src": "3270:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
"functionReturnParameters": 54,
"id": 73,
"nodeType": "Return",
"src": "3263:10:0"
}
]
},
"documentation": {
"id": 47,
"nodeType": "StructuredDocumentation",
"src": "2863:232:0",
"text": " @dev Initializes a new buffer from an existing bytes object.\n Changes to the buffer may mutate the original value.\n @param b The bytes object to initialize the buffer with.\n @return A new buffer."
},
"id": 75,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "fromBytes",
"nameLocation": "3109:9:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 50,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 49,
"mutability": "mutable",
"name": "b",
"nameLocation": "3132:1:0",
"nodeType": "VariableDeclaration",
"scope": 75,
"src": "3119:14:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 48,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3119:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "3118:16:0"
},
"returnParameters": {
"id": 54,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 53,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 75,
"src": "3157:13:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer"
},
"typeName": {
"id": 52,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 51,
"name": "buffer",
"nameLocations": [
"3157:6:0"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 8,
"src": "3157:6:0"
},
"referencedDeclaration": 8,
"src": "3157:6:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_storage_ptr",
"typeString": "struct Buffer.buffer"
}
},
"visibility": "internal"
}
],
"src": "3156:15:0"
},
"scope": 421,
"src": "3100:180:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 98,
"nodeType": "Block",
"src": "3349:104:0",
"statements": [
{
"assignments": [
84
],
"declarations": [
{
"constant": false,
"id": 84,
"mutability": "mutable",
"name": "oldbuf",
"nameLocation": "3372:6:0",
"nodeType": "VariableDeclaration",
"scope": 98,
"src": "3359:19:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 83,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3359:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"id": 87,
"initialValue": {
"expression": {
"id": 85,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 78,
"src": "3381:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
"id": 86,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "3385:3:0",
"memberName": "buf",
"nodeType": "MemberAccess",
"referencedDeclaration": 5,
"src": "3381:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3359:29:0"
},
{
"expression": {
"arguments": [
{
"id": 89,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 78,
"src": "3403:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
{
"id": 90,
"name": "capacity",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 80,
"src": "3408:8:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 88,
"name": "init",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 46,
"src": "3398:4:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$8_memory_ptr_$_t_uint256_$returns$_t_struct$_buffer_$8_memory_ptr_$",
"typeString": "function (struct Buffer.buffer memory,uint256) pure returns (struct Buffer.buffer memory)"
}
},
"id": 91,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3398:19:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
"id": 92,
"nodeType": "ExpressionStatement",
"src": "3398:19:0"
},
{
"expression": {
"arguments": [
{
"id": 94,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 78,
"src": "3434:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
{
"id": 95,
"name": "oldbuf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 84,
"src": "3439:6:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 93,
"name": "append",
"nodeType": "Identifier",
"overloadedDeclarations": [
201,
221,
327
],
"referencedDeclaration": 221,
"src": "3427:6:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$8_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_struct$_buffer_$8_memory_ptr_$",
"typeString": "function (struct Buffer.buffer memory,bytes memory) pure returns (struct Buffer.buffer memory)"
}
},
"id": 96,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3427:19:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
"id": 97,
"nodeType": "ExpressionStatement",
"src": "3427:19:0"
}
]
},
"id": 99,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "resize",
"nameLocation": "3295:6:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 81,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 78,
"mutability": "mutable",
"name": "buf",
"nameLocation": "3316:3:0",
"nodeType": "VariableDeclaration",
"scope": 99,
"src": "3302:17:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer"
},
"typeName": {
"id": 77,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 76,
"name": "buffer",
"nameLocations": [
"3302:6:0"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 8,
"src": "3302:6:0"
},
"referencedDeclaration": 8,
"src": "3302:6:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_storage_ptr",
"typeString": "struct Buffer.buffer"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 80,
"mutability": "mutable",
"name": "capacity",
"nameLocation": "3326:8:0",
"nodeType": "VariableDeclaration",
"scope": 99,
"src": "3321:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 79,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "3321:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "3301:34:0"
},
"returnParameters": {
"id": 82,
"nodeType": "ParameterList",
"parameters": [],
"src": "3349:0:0"
},
"scope": 421,
"src": "3286:167:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 112,
"nodeType": "Block",
"src": "3676:123:0",
"statements": [
{
"AST": {
"nativeSrc": "3695:78:0",
"nodeType": "YulBlock",
"src": "3695:78:0",
"statements": [
{
"nativeSrc": "3709:24:0",
"nodeType": "YulVariableDeclaration",
"src": "3709:24:0",
"value": {
"arguments": [
{
"name": "buf",
"nativeSrc": "3729:3:0",
"nodeType": "YulIdentifier",
"src": "3729:3:0"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "3723:5:0",
"nodeType": "YulIdentifier",
"src": "3723:5:0"
},
"nativeSrc": "3723:10:0",
"nodeType": "YulFunctionCall",
"src": "3723:10:0"
},
"variables": [
{
"name": "bufptr",
"nativeSrc": "3713:6:0",
"nodeType": "YulTypedName",
"src": "3713:6:0",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "bufptr",
"nativeSrc": "3753:6:0",
"nodeType": "YulIdentifier",
"src": "3753:6:0"
},
{
"kind": "number",
"nativeSrc": "3761:1:0",
"nodeType": "YulLiteral",
"src": "3761:1:0",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "3746:6:0",
"nodeType": "YulIdentifier",
"src": "3746:6:0"
},
"nativeSrc": "3746:17:0",
"nodeType": "YulFunctionCall",
"src": "3746:17:0"
},
"nativeSrc": "3746:17:0",
"nodeType": "YulExpressionStatement",
"src": "3746:17:0"
}
]
},
"evmVersion": "cancun",
"externalReferences": [
{
"declaration": 103,
"isOffset": false,
"isSlot": false,
"src": "3729:3:0",
"valueSize": 1
}
],
"id": 109,
"nodeType": "InlineAssembly",
"src": "3686:87:0"
},
{
"expression": {
"id": 110,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 103,
"src": "3789:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
"functionReturnParameters": 108,
"id": 111,
"nodeType": "Return",
"src": "3782:10:0"
}
]
},
"documentation": {
"id": 100,
"nodeType": "StructuredDocumentation",
"src": "3459:137:0",
"text": " @dev Sets buffer length to 0.\n @param buf The buffer to truncate.\n @return The original buffer, for chaining.."
},
"id": 113,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "truncate",
"nameLocation": "3610:8:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 104,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 103,
"mutability": "mutable",
"name": "buf",
"nameLocation": "3633:3:0",
"nodeType": "VariableDeclaration",
"scope": 113,
"src": "3619:17:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer"
},
"typeName": {
"id": 102,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 101,
"name": "buffer",
"nameLocations": [
"3619:6:0"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 8,
"src": "3619:6:0"
},
"referencedDeclaration": 8,
"src": "3619:6:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_storage_ptr",
"typeString": "struct Buffer.buffer"
}
},
"visibility": "internal"
}
],
"src": "3618:19:0"
},
"returnParameters": {
"id": 108,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 107,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 113,
"src": "3661:13:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer"
},
"typeName": {
"id": 106,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 105,
"name": "buffer",
"nameLocations": [
"3661:6:0"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 8,
"src": "3661:6:0"
},
"referencedDeclaration": 8,
"src": "3661:6:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_storage_ptr",
"typeString": "struct Buffer.buffer"
}
},
"visibility": "internal"
}
],
"src": "3660:15:0"
},
"scope": 421,
"src": "3601:198:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 200,
"nodeType": "Block",
"src": "4227:1326:0",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 131,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 128,
"name": "len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 121,
"src": "4245:3:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"expression": {
"id": 129,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 119,
"src": "4252:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 130,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4257:6:0",
"memberName": "length",
"nodeType": "MemberAccess",
"src": "4252:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4245:18:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 127,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "4237:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 132,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4237:27:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 133,
"nodeType": "ExpressionStatement",
"src": "4237:27:0"
},
{
"assignments": [
135
],
"declarations": [
{
"constant": false,
"id": 135,
"mutability": "mutable",
"name": "off",
"nameLocation": "4280:3:0",
"nodeType": "VariableDeclaration",
"scope": 200,
"src": "4275:8:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 134,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "4275:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 139,
"initialValue": {
"expression": {
"expression": {
"id": 136,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 117,
"src": "4286:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
"id": 137,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4290:3:0",
"memberName": "buf",
"nodeType": "MemberAccess",
"referencedDeclaration": 5,
"src": "4286:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 138,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4294:6:0",
"memberName": "length",
"nodeType": "MemberAccess",
"src": "4286:14:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4275:25:0"
},
{
"assignments": [
141
],
"declarations": [
{
"constant": false,
"id": 141,
"mutability": "mutable",
"name": "newCapacity",
"nameLocation": "4315:11:0",
"nodeType": "VariableDeclaration",
"scope": 200,
"src": "4310:16:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 140,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "4310:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 145,
"initialValue": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 144,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 142,
"name": "off",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 135,
"src": "4329:3:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"id": 143,
"name": "len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 121,
"src": "4335:3:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4329:9:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4310:28:0"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 149,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 146,
"name": "newCapacity",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 141,
"src": "4352:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"expression": {
"id": 147,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 117,
"src": "4366:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
"id": 148,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4370:8:0",
"memberName": "capacity",
"nodeType": "MemberAccess",
"referencedDeclaration": 7,
"src": "4366:12:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4352:26:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 158,
"nodeType": "IfStatement",
"src": "4348:85:0",
"trueBody": {
"id": 157,
"nodeType": "Block",
"src": "4380:53:0",
"statements": [
{
"expression": {
"arguments": [
{
"id": 151,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 117,
"src": "4401:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 154,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 152,
"name": "newCapacity",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 141,
"src": "4406:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"hexValue": "32",
"id": 153,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4420:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"src": "4406:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 150,
"name": "resize",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 99,
"src": "4394:6:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$8_memory_ptr_$_t_uint256_$returns$__$",
"typeString": "function (struct Buffer.buffer memory,uint256) pure"
}
},
"id": 155,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4394:28:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 156,
"nodeType": "ExpressionStatement",
"src": "4394:28:0"
}
]
}
},
{
"assignments": [
160
],
"declarations": [
{
"constant": false,
"id": 160,
"mutability": "mutable",
"name": "dest",
"nameLocation": "4448:4:0",
"nodeType": "VariableDeclaration",
"scope": 200,
"src": "4443:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 159,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "4443:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 161,
"nodeType": "VariableDeclarationStatement",
"src": "4443:9:0"
},
{
"assignments": [
163
],
"declarations": [
{
"constant": false,
"id": 163,
"mutability": "mutable",
"name": "src",
"nameLocation": "4467:3:0",
"nodeType": "VariableDeclaration",
"scope": 200,
"src": "4462:8:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 162,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "4462:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 164,
"nodeType": "VariableDeclarationStatement",
"src": "4462:8:0"
},
{
"AST": {
"nativeSrc": "4489:498:0",
"nodeType": "YulBlock",
"src": "4489:498:0",
"statements": [
{
"nativeSrc": "4552:24:0",
"nodeType": "YulVariableDeclaration",
"src": "4552:24:0",
"value": {
"arguments": [
{
"name": "buf",
"nativeSrc": "4572:3:0",
"nodeType": "YulIdentifier",
"src": "4572:3:0"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "4566:5:0",
"nodeType": "YulIdentifier",
"src": "4566:5:0"
},
"nativeSrc": "4566:10:0",
"nodeType": "YulFunctionCall",
"src": "4566:10:0"
},
"variables": [
{
"name": "bufptr",
"nativeSrc": "4556:6:0",
"nodeType": "YulTypedName",
"src": "4556:6:0",
"type": ""
}
]
},
{
"nativeSrc": "4635:27:0",
"nodeType": "YulVariableDeclaration",
"src": "4635:27:0",
"value": {
"arguments": [
{
"name": "bufptr",
"nativeSrc": "4655:6:0",
"nodeType": "YulIdentifier",
"src": "4655:6:0"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "4649:5:0",
"nodeType": "YulIdentifier",
"src": "4649:5:0"
},
"nativeSrc": "4649:13:0",
"nodeType": "YulFunctionCall",
"src": "4649:13:0"
},
"variables": [
{
"name": "buflen",
"nativeSrc": "4639:6:0",
"nodeType": "YulTypedName",
"src": "4639:6:0",
"type": ""
}
]
},
{
"nativeSrc": "4754:33:0",
"nodeType": "YulAssignment",
"src": "4754:33:0",
"value": {
"arguments": [
{
"arguments": [
{
"name": "bufptr",
"nativeSrc": "4770:6:0",
"nodeType": "YulIdentifier",
"src": "4770:6:0"
},
{
"kind": "number",
"nativeSrc": "4778:2:0",
"nodeType": "YulLiteral",
"src": "4778:2:0",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4766:3:0",
"nodeType": "YulIdentifier",
"src": "4766:3:0"
},
"nativeSrc": "4766:15:0",
"nodeType": "YulFunctionCall",
"src": "4766:15:0"
},
{
"name": "off",
"nativeSrc": "4783:3:0",
"nodeType": "YulIdentifier",
"src": "4783:3:0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4762:3:0",
"nodeType": "YulIdentifier",
"src": "4762:3:0"
},
"nativeSrc": "4762:25:0",
"nodeType": "YulFunctionCall",
"src": "4762:25:0"
},
"variableNames": [
{
"name": "dest",
"nativeSrc": "4754:4:0",
"nodeType": "YulIdentifier",
"src": "4754:4:0"
}
]
},
{
"body": {
"nativeSrc": "4885:59:0",
"nodeType": "YulBlock",
"src": "4885:59:0",
"statements": [
{
"expression": {
"arguments": [
{
"name": "bufptr",
"nativeSrc": "4910:6:0",
"nodeType": "YulIdentifier",
"src": "4910:6:0"
},
{
"name": "newCapacity",
"nativeSrc": "4918:11:0",
"nodeType": "YulIdentifier",
"src": "4918:11:0"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "4903:6:0",
"nodeType": "YulIdentifier",
"src": "4903:6:0"
},
"nativeSrc": "4903:27:0",
"nodeType": "YulFunctionCall",
"src": "4903:27:0"
},
"nativeSrc": "4903:27:0",
"nodeType": "YulExpressionStatement",
"src": "4903:27:0"
}
]
},
"condition": {
"arguments": [
{
"name": "newCapacity",
"nativeSrc": "4864:11:0",
"nodeType": "YulIdentifier",
"src": "4864:11:0"
},
{
"name": "buflen",
"nativeSrc": "4877:6:0",
"nodeType": "YulIdentifier",
"src": "4877:6:0"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "4861:2:0",
"nodeType": "YulIdentifier",
"src": "4861:2:0"
},
"nativeSrc": "4861:23:0",
"nodeType": "YulFunctionCall",
"src": "4861:23:0"
},
"nativeSrc": "4858:86:0",
"nodeType": "YulIf",
"src": "4858:86:0"
},
{
"nativeSrc": "4957:20:0",
"nodeType": "YulAssignment",
"src": "4957:20:0",
"value": {
"arguments": [
{
"name": "data",
"nativeSrc": "4968:4:0",
"nodeType": "YulIdentifier",
"src": "4968:4:0"
},
{
"kind": "number",
"nativeSrc": "4974:2:0",
"nodeType": "YulLiteral",
"src": "4974:2:0",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4964:3:0",
"nodeType": "YulIdentifier",
"src": "4964:3:0"
},
"nativeSrc": "4964:13:0",
"nodeType": "YulFunctionCall",
"src": "4964:13:0"
},
"variableNames": [
{
"name": "src",
"nativeSrc": "4957:3:0",
"nodeType": "YulIdentifier",
"src": "4957:3:0"
}
]
}
]
},
"evmVersion": "cancun",
"externalReferences": [
{
"declaration": 117,
"isOffset": false,
"isSlot": false,
"src": "4572:3:0",
"valueSize": 1
},
{
"declaration": 119,
"isOffset": false,
"isSlot": false,
"src": "4968:4:0",
"valueSize": 1
},
{
"declaration": 160,
"isOffset": false,
"isSlot": false,
"src": "4754:4:0",
"valueSize": 1
},
{
"declaration": 141,
"isOffset": false,
"isSlot": false,
"src": "4864:11:0",
"valueSize": 1
},
{
"declaration": 141,
"isOffset": false,
"isSlot": false,
"src": "4918:11:0",
"valueSize": 1
},
{
"declaration": 135,
"isOffset": false,
"isSlot": false,
"src": "4783:3:0",
"valueSize": 1
},
{
"declaration": 163,
"isOffset": false,
"isSlot": false,
"src": "4957:3:0",
"valueSize": 1
}
],
"id": 165,
"nodeType": "InlineAssembly",
"src": "4480:507:0"
},
{
"body": {
"id": 182,
"nodeType": "Block",
"src": "5076:136:0",
"statements": [
{
"AST": {
"nativeSrc": "5099:56:0",
"nodeType": "YulBlock",
"src": "5099:56:0",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dest",
"nativeSrc": "5124:4:0",
"nodeType": "YulIdentifier",
"src": "5124:4:0"
},
{
"arguments": [
{
"name": "src",
"nativeSrc": "5136:3:0",
"nodeType": "YulIdentifier",
"src": "5136:3:0"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "5130:5:0",
"nodeType": "YulIdentifier",
"src": "5130:5:0"
},
"nativeSrc": "5130:10:0",
"nodeType": "YulFunctionCall",
"src": "5130:10:0"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "5117:6:0",
"nodeType": "YulIdentifier",
"src": "5117:6:0"
},
"nativeSrc": "5117:24:0",
"nodeType": "YulFunctionCall",
"src": "5117:24:0"
},
"nativeSrc": "5117:24:0",
"nodeType": "YulExpressionStatement",
"src": "5117:24:0"
}
]
},
"evmVersion": "cancun",
"externalReferences": [
{
"declaration": 160,
"isOffset": false,
"isSlot": false,
"src": "5124:4:0",
"valueSize": 1
},
{
"declaration": 163,
"isOffset": false,
"isSlot": false,
"src": "5136:3:0",
"valueSize": 1
}
],
"id": 173,
"nodeType": "InlineAssembly",
"src": "5090:65:0"
},
{
"expression": {
"id": 176,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 174,
"name": "dest",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 160,
"src": "5168:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"hexValue": "3332",
"id": 175,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5176:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
},
"src": "5168:10:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 177,
"nodeType": "ExpressionStatement",
"src": "5168:10:0"
},
{
"expression": {
"id": 180,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 178,
"name": "src",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 163,
"src": "5192:3:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"hexValue": "3332",
"id": 179,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5199:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
},
"src": "5192:9:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 181,
"nodeType": "ExpressionStatement",
"src": "5192:9:0"
}
]
},
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 168,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 166,
"name": "len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 121,
"src": "5054:3:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"hexValue": "3332",
"id": 167,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5061:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
},
"src": "5054:9:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 183,
"isSimpleCounterLoop": false,
"loopExpression": {
"expression": {
"id": 171,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 169,
"name": "len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 121,
"src": "5065:3:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "-=",
"rightHandSide": {
"hexValue": "3332",
"id": 170,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5072:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
},
"src": "5065:9:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 172,
"nodeType": "ExpressionStatement",
"src": "5065:9:0"
},
"nodeType": "ForStatement",
"src": "5047:165:0"
},
{
"id": 197,
"nodeType": "UncheckedBlock",
"src": "5254:272:0",
"statements": [
{
"assignments": [
185
],
"declarations": [
{
"constant": false,
"id": 185,
"mutability": "mutable",
"name": "mask",
"nameLocation": "5283:4:0",
"nodeType": "VariableDeclaration",
"scope": 197,
"src": "5278:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 184,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "5278:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 195,
"initialValue": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 194,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 191,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"hexValue": "323536",
"id": 186,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5291:3:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_256_by_1",
"typeString": "int_const 256"
},
"value": "256"
},
"nodeType": "BinaryOperation",
"operator": "**",
"rightExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 189,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"hexValue": "3332",
"id": 187,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5299:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"id": 188,
"name": "len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 121,
"src": "5304:3:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "5299:8:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 190,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "5298:10:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "5291:17:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 192,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "5290:19:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"hexValue": "31",
"id": 193,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5312:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "5290:23:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5278:35:0"
},
{
"AST": {
"nativeSrc": "5336:180:0",
"nodeType": "YulBlock",
"src": "5336:180:0",
"statements": [
{
"nativeSrc": "5354:41:0",
"nodeType": "YulVariableDeclaration",
"src": "5354:41:0",
"value": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nativeSrc": "5379:3:0",
"nodeType": "YulIdentifier",
"src": "5379:3:0"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "5373:5:0",
"nodeType": "YulIdentifier",
"src": "5373:5:0"
},
"nativeSrc": "5373:10:0",
"nodeType": "YulFunctionCall",
"src": "5373:10:0"
},
{
"arguments": [
{
"name": "mask",
"nativeSrc": "5389:4:0",
"nodeType": "YulIdentifier",
"src": "5389:4:0"
}
],
"functionName": {
"name": "not",
"nativeSrc": "5385:3:0",
"nodeType": "YulIdentifier",
"src": "5385:3:0"
},
"nativeSrc": "5385:9:0",
"nodeType": "YulFunctionCall",
"src": "5385:9:0"
}
],
"functionName": {
"name": "and",
"nativeSrc": "5369:3:0",
"nodeType": "YulIdentifier",
"src": "5369:3:0"
},
"nativeSrc": "5369:26:0",
"nodeType": "YulFunctionCall",
"src": "5369:26:0"
},
"variables": [
{
"name": "srcpart",
"nativeSrc": "5358:7:0",
"nodeType": "YulTypedName",
"src": "5358:7:0",
"type": ""
}
]
},
{
"nativeSrc": "5412:38:0",
"nodeType": "YulVariableDeclaration",
"src": "5412:38:0",
"value": {
"arguments": [
{
"arguments": [
{
"name": "dest",
"nativeSrc": "5438:4:0",
"nodeType": "YulIdentifier",
"src": "5438:4:0"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "5432:5:0",
"nodeType": "YulIdentifier",
"src": "5432:5:0"
},
"nativeSrc": "5432:11:0",
"nodeType": "YulFunctionCall",
"src": "5432:11:0"
},
{
"name": "mask",
"nativeSrc": "5445:4:0",
"nodeType": "YulIdentifier",
"src": "5445:4:0"
}
],
"functionName": {
"name": "and",
"nativeSrc": "5428:3:0",
"nodeType": "YulIdentifier",
"src": "5428:3:0"
},
"nativeSrc": "5428:22:0",
"nodeType": "YulFunctionCall",
"src": "5428:22:0"
},
"variables": [
{
"name": "destpart",
"nativeSrc": "5416:8:0",
"nodeType": "YulTypedName",
"src": "5416:8:0",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "dest",
"nativeSrc": "5474:4:0",
"nodeType": "YulIdentifier",
"src": "5474:4:0"
},
{
"arguments": [
{
"name": "destpart",
"nativeSrc": "5483:8:0",
"nodeType": "YulIdentifier",
"src": "5483:8:0"
},
{
"name": "srcpart",
"nativeSrc": "5493:7:0",
"nodeType": "YulIdentifier",
"src": "5493:7:0"
}
],
"functionName": {
"name": "or",
"nativeSrc": "5480:2:0",
"nodeType": "YulIdentifier",
"src": "5480:2:0"
},
"nativeSrc": "5480:21:0",
"nodeType": "YulFunctionCall",
"src": "5480:21:0"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "5467:6:0",
"nodeType": "YulIdentifier",
"src": "5467:6:0"
},
"nativeSrc": "5467:35:0",
"nodeType": "YulFunctionCall",
"src": "5467:35:0"
},
"nativeSrc": "5467:35:0",
"nodeType": "YulExpressionStatement",
"src": "5467:35:0"
}
]
},
"evmVersion": "cancun",
"externalReferences": [
{
"declaration": 160,
"isOffset": false,
"isSlot": false,
"src": "5438:4:0",
"valueSize": 1
},
{
"declaration": 160,
"isOffset": false,
"isSlot": false,
"src": "5474:4:0",
"valueSize": 1
},
{
"declaration": 185,
"isOffset": false,
"isSlot": false,
"src": "5389:4:0",
"valueSize": 1
},
{
"declaration": 185,
"isOffset": false,
"isSlot": false,
"src": "5445:4:0",
"valueSize": 1
},
{
"declaration": 163,
"isOffset": false,
"isSlot": false,
"src": "5379:3:0",
"valueSize": 1
}
],
"id": 196,
"nodeType": "InlineAssembly",
"src": "5327:189:0"
}
]
},
{
"expression": {
"id": 198,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 117,
"src": "5543:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
"functionReturnParameters": 126,
"id": 199,
"nodeType": "Return",
"src": "5536:10:0"
}
]
},
"documentation": {
"id": 114,
"nodeType": "StructuredDocumentation",
"src": "3805:316:0",
"text": " @dev Appends len bytes of a byte string to a buffer. Resizes if doing so would exceed\n the capacity of the buffer.\n @param buf The buffer to append to.\n @param data The data to append.\n @param len The number of bytes to copy.\n @return The original buffer, for chaining."
},
"id": 201,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "append",
"nameLocation": "4135:6:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 122,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 117,
"mutability": "mutable",
"name": "buf",
"nameLocation": "4156:3:0",
"nodeType": "VariableDeclaration",
"scope": 201,
"src": "4142:17:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer"
},
"typeName": {
"id": 116,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 115,
"name": "buffer",
"nameLocations": [
"4142:6:0"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 8,
"src": "4142:6:0"
},
"referencedDeclaration": 8,
"src": "4142:6:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_storage_ptr",
"typeString": "struct Buffer.buffer"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 119,
"mutability": "mutable",
"name": "data",
"nameLocation": "4174:4:0",
"nodeType": "VariableDeclaration",
"scope": 201,
"src": "4161:17:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 118,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "4161:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 121,
"mutability": "mutable",
"name": "len",
"nameLocation": "4185:3:0",
"nodeType": "VariableDeclaration",
"scope": 201,
"src": "4180:8:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 120,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "4180:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "4141:48:0"
},
"returnParameters": {
"id": 126,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 125,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 201,
"src": "4212:13:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer"
},
"typeName": {
"id": 124,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 123,
"name": "buffer",
"nameLocations": [
"4212:6:0"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 8,
"src": "4212:6:0"
},
"referencedDeclaration": 8,
"src": "4212:6:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_storage_ptr",
"typeString": "struct Buffer.buffer"
}
},
"visibility": "internal"
}
],
"src": "4211:15:0"
},
"scope": 421,
"src": "4126:1427:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 220,
"nodeType": "Block",
"src": "5913:54:0",
"statements": [
{
"expression": {
"arguments": [
{
"id": 214,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 205,
"src": "5937:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
{
"id": 215,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 207,
"src": "5942:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"expression": {
"id": 216,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 207,
"src": "5948:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 217,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5953:6:0",
"memberName": "length",
"nodeType": "MemberAccess",
"src": "5948:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 213,
"name": "append",
"nodeType": "Identifier",
"overloadedDeclarations": [
201,
221,
327
],
"referencedDeclaration": 201,
"src": "5930:6:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$8_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_struct$_buffer_$8_memory_ptr_$",
"typeString": "function (struct Buffer.buffer memory,bytes memory,uint256) pure returns (struct Buffer.buffer memory)"
}
},
"id": 218,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5930:30:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
"functionReturnParameters": 212,
"id": 219,
"nodeType": "Return",
"src": "5923:37:0"
}
]
},
"documentation": {
"id": 202,
"nodeType": "StructuredDocumentation",
"src": "5559:257:0",
"text": " @dev Appends a byte string to a buffer. Resizes if doing so would exceed\n the capacity of the buffer.\n @param buf The buffer to append to.\n @param data The data to append.\n @return The original buffer, for chaining."
},
"id": 221,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "append",
"nameLocation": "5830:6:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 208,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 205,
"mutability": "mutable",
"name": "buf",
"nameLocation": "5851:3:0",
"nodeType": "VariableDeclaration",
"scope": 221,
"src": "5837:17:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer"
},
"typeName": {
"id": 204,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 203,
"name": "buffer",
"nameLocations": [
"5837:6:0"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 8,
"src": "5837:6:0"
},
"referencedDeclaration": 8,
"src": "5837:6:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_storage_ptr",
"typeString": "struct Buffer.buffer"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 207,
"mutability": "mutable",
"name": "data",
"nameLocation": "5869:4:0",
"nodeType": "VariableDeclaration",
"scope": 221,
"src": "5856:17:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 206,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "5856:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "5836:38:0"
},
"returnParameters": {
"id": 212,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 211,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 221,
"src": "5898:13:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer"
},
"typeName": {
"id": 210,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 209,
"name": "buffer",
"nameLocations": [
"5898:6:0"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 8,
"src": "5898:6:0"
},
"referencedDeclaration": 8,
"src": "5898:6:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_storage_ptr",
"typeString": "struct Buffer.buffer"
}
},
"visibility": "internal"
}
],
"src": "5897:15:0"
},
"scope": 421,
"src": "5821:146:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 261,
"nodeType": "Block",
"src": "6319:610:0",
"statements": [
{
"assignments": [
234
],
"declarations": [
{
"constant": false,
"id": 234,
"mutability": "mutable",
"name": "off",
"nameLocation": "6334:3:0",
"nodeType": "VariableDeclaration",
"scope": 261,
"src": "6329:8:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 233,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "6329:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 238,
"initialValue": {
"expression": {
"expression": {
"id": 235,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 225,
"src": "6340:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
"id": 236,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6344:3:0",
"memberName": "buf",
"nodeType": "MemberAccess",
"referencedDeclaration": 5,
"src": "6340:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 237,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6348:6:0",
"memberName": "length",
"nodeType": "MemberAccess",
"src": "6340:14:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6329:25:0"
},
{
"assignments": [
240
],
"declarations": [
{
"constant": false,
"id": 240,
"mutability": "mutable",
"name": "offPlusOne",
"nameLocation": "6369:10:0",
"nodeType": "VariableDeclaration",
"scope": 261,
"src": "6364:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 239,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "6364:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 244,
"initialValue": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 243,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 241,
"name": "off",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 234,
"src": "6382:3:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"hexValue": "31",
"id": 242,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6388:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "6382:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6364:25:0"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 248,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 245,
"name": "off",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 234,
"src": "6403:3:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"expression": {
"id": 246,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 225,
"src": "6410:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
"id": 247,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6414:8:0",
"memberName": "capacity",
"nodeType": "MemberAccess",
"referencedDeclaration": 7,
"src": "6410:12:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "6403:19:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 257,
"nodeType": "IfStatement",
"src": "6399:77:0",
"trueBody": {
"id": 256,
"nodeType": "Block",
"src": "6424:52:0",
"statements": [
{
"expression": {
"arguments": [
{
"id": 250,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 225,
"src": "6445:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 253,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 251,
"name": "offPlusOne",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 240,
"src": "6450:10:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"hexValue": "32",
"id": 252,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6463:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"src": "6450:14:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 249,
"name": "resize",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 99,
"src": "6438:6:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$8_memory_ptr_$_t_uint256_$returns$__$",
"typeString": "function (struct Buffer.buffer memory,uint256) pure"
}
},
"id": 254,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6438:27:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 255,
"nodeType": "ExpressionStatement",
"src": "6438:27:0"
}
]
}
},
{
"AST": {
"nativeSrc": "6495:407:0",
"nodeType": "YulBlock",
"src": "6495:407:0",
"statements": [
{
"nativeSrc": "6558:24:0",
"nodeType": "YulVariableDeclaration",
"src": "6558:24:0",
"value": {
"arguments": [
{
"name": "buf",
"nativeSrc": "6578:3:0",
"nodeType": "YulIdentifier",
"src": "6578:3:0"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "6572:5:0",
"nodeType": "YulIdentifier",
"src": "6572:5:0"
},
"nativeSrc": "6572:10:0",
"nodeType": "YulFunctionCall",
"src": "6572:10:0"
},
"variables": [
{
"name": "bufptr",
"nativeSrc": "6562:6:0",
"nodeType": "YulTypedName",
"src": "6562:6:0",
"type": ""
}
]
},
{
"nativeSrc": "6665:37:0",
"nodeType": "YulVariableDeclaration",
"src": "6665:37:0",
"value": {
"arguments": [
{
"arguments": [
{
"name": "bufptr",
"nativeSrc": "6685:6:0",
"nodeType": "YulIdentifier",
"src": "6685:6:0"
},
{
"name": "off",
"nativeSrc": "6693:3:0",
"nodeType": "YulIdentifier",
"src": "6693:3:0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "6681:3:0",
"nodeType": "YulIdentifier",
"src": "6681:3:0"
},
"nativeSrc": "6681:16:0",
"nodeType": "YulFunctionCall",
"src": "6681:16:0"
},
{
"kind": "number",
"nativeSrc": "6699:2:0",
"nodeType": "YulLiteral",
"src": "6699:2:0",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "6677:3:0",
"nodeType": "YulIdentifier",
"src": "6677:3:0"
},
"nativeSrc": "6677:25:0",
"nodeType": "YulFunctionCall",
"src": "6677:25:0"
},
"variables": [
{
"name": "dest",
"nativeSrc": "6669:4:0",
"nodeType": "YulTypedName",
"src": "6669:4:0",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "dest",
"nativeSrc": "6723:4:0",
"nodeType": "YulIdentifier",
"src": "6723:4:0"
},
{
"name": "data",
"nativeSrc": "6729:4:0",
"nodeType": "YulIdentifier",
"src": "6729:4:0"
}
],
"functionName": {
"name": "mstore8",
"nativeSrc": "6715:7:0",
"nodeType": "YulIdentifier",
"src": "6715:7:0"
},
"nativeSrc": "6715:19:0",
"nodeType": "YulFunctionCall",
"src": "6715:19:0"
},
"nativeSrc": "6715:19:0",
"nodeType": "YulExpressionStatement",
"src": "6715:19:0"
},
{
"body": {
"nativeSrc": "6834:58:0",
"nodeType": "YulBlock",
"src": "6834:58:0",
"statements": [
{
"expression": {
"arguments": [
{
"name": "bufptr",
"nativeSrc": "6859:6:0",
"nodeType": "YulIdentifier",
"src": "6859:6:0"
},
{
"name": "offPlusOne",
"nativeSrc": "6867:10:0",
"nodeType": "YulIdentifier",
"src": "6867:10:0"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "6852:6:0",
"nodeType": "YulIdentifier",
"src": "6852:6:0"
},
"nativeSrc": "6852:26:0",
"nodeType": "YulFunctionCall",
"src": "6852:26:0"
},
"nativeSrc": "6852:26:0",
"nodeType": "YulExpressionStatement",
"src": "6852:26:0"
}
]
},
"condition": {
"arguments": [
{
"name": "offPlusOne",
"nativeSrc": "6807:10:0",
"nodeType": "YulIdentifier",
"src": "6807:10:0"
},
{
"arguments": [
{
"name": "bufptr",
"nativeSrc": "6825:6:0",
"nodeType": "YulIdentifier",
"src": "6825:6:0"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "6819:5:0",
"nodeType": "YulIdentifier",
"src": "6819:5:0"
},
"nativeSrc": "6819:13:0",
"nodeType": "YulFunctionCall",
"src": "6819:13:0"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "6804:2:0",
"nodeType": "YulIdentifier",
"src": "6804:2:0"
},
"nativeSrc": "6804:29:0",
"nodeType": "YulFunctionCall",
"src": "6804:29:0"
},
"nativeSrc": "6801:91:0",
"nodeType": "YulIf",
"src": "6801:91:0"
}
]
},
"evmVersion": "cancun",
"externalReferences": [
{
"declaration": 225,
"isOffset": false,
"isSlot": false,
"src": "6578:3:0",
"valueSize": 1
},
{
"declaration": 227,
"isOffset": false,
"isSlot": false,
"src": "6729:4:0",
"valueSize": 1
},
{
"declaration": 234,
"isOffset": false,
"isSlot": false,
"src": "6693:3:0",
"valueSize": 1
},
{
"declaration": 240,
"isOffset": false,
"isSlot": false,
"src": "6807:10:0",
"valueSize": 1
},
{
"declaration": 240,
"isOffset": false,
"isSlot": false,
"src": "6867:10:0",
"valueSize": 1
}
],
"id": 258,
"nodeType": "InlineAssembly",
"src": "6486:416:0"
},
{
"expression": {
"id": 259,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 225,
"src": "6919:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
"functionReturnParameters": 232,
"id": 260,
"nodeType": "Return",
"src": "6912:10:0"
}
]
},
"documentation": {
"id": 222,
"nodeType": "StructuredDocumentation",
"src": "5973:252:0",
"text": " @dev Appends a byte to the buffer. Resizes if doing so would exceed the\n capacity of the buffer.\n @param buf The buffer to append to.\n @param data The data to append.\n @return The original buffer, for chaining."
},
"id": 262,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "appendUint8",
"nameLocation": "6239:11:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 228,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 225,
"mutability": "mutable",
"name": "buf",
"nameLocation": "6265:3:0",
"nodeType": "VariableDeclaration",
"scope": 262,
"src": "6251:17:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer"
},
"typeName": {
"id": 224,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 223,
"name": "buffer",
"nameLocations": [
"6251:6:0"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 8,
"src": "6251:6:0"
},
"referencedDeclaration": 8,
"src": "6251:6:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_storage_ptr",
"typeString": "struct Buffer.buffer"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 227,
"mutability": "mutable",
"name": "data",
"nameLocation": "6276:4:0",
"nodeType": "VariableDeclaration",
"scope": 262,
"src": "6270:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 226,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "6270:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"visibility": "internal"
}
],
"src": "6250:31:0"
},
"returnParameters": {
"id": 232,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 231,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 262,
"src": "6304:13:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer"
},
"typeName": {
"id": 230,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 229,
"name": "buffer",
"nameLocations": [
"6304:6:0"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 8,
"src": "6304:6:0"
},
"referencedDeclaration": 8,
"src": "6304:6:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_storage_ptr",
"typeString": "struct Buffer.buffer"
}
},
"visibility": "internal"
}
],
"src": "6303:15:0"
},
"scope": 421,
"src": "6230:699:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 326,
"nodeType": "Block",
"src": "7361:854:0",
"statements": [
{
"assignments": [
277
],
"declarations": [
{
"constant": false,
"id": 277,
"mutability": "mutable",
"name": "off",
"nameLocation": "7376:3:0",
"nodeType": "VariableDeclaration",
"scope": 326,
"src": "7371:8:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 276,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "7371:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 281,
"initialValue": {
"expression": {
"expression": {
"id": 278,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 266,
"src": "7382:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
"id": 279,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7386:3:0",
"memberName": "buf",
"nodeType": "MemberAccess",
"referencedDeclaration": 5,
"src": "7382:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 280,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7390:6:0",
"memberName": "length",
"nodeType": "MemberAccess",
"src": "7382:14:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "7371:25:0"
},
{
"assignments": [
283
],
"declarations": [
{
"constant": false,
"id": 283,
"mutability": "mutable",
"name": "newCapacity",
"nameLocation": "7411:11:0",
"nodeType": "VariableDeclaration",
"scope": 326,
"src": "7406:16:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 282,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "7406:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 287,
"initialValue": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 286,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 284,
"name": "len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 270,
"src": "7425:3:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"id": 285,
"name": "off",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 277,
"src": "7431:3:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "7425:9:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "7406:28:0"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 291,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 288,
"name": "newCapacity",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 283,
"src": "7448:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"expression": {
"id": 289,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 266,
"src": "7462:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
"id": 290,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7466:8:0",
"memberName": "capacity",
"nodeType": "MemberAccess",
"referencedDeclaration": 7,
"src": "7462:12:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "7448:26:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 300,
"nodeType": "IfStatement",
"src": "7444:85:0",
"trueBody": {
"id": 299,
"nodeType": "Block",
"src": "7476:53:0",
"statements": [
{
"expression": {
"arguments": [
{
"id": 293,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 266,
"src": "7497:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 296,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 294,
"name": "newCapacity",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 283,
"src": "7502:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"hexValue": "32",
"id": 295,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7516:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"src": "7502:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 292,
"name": "resize",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 99,
"src": "7490:6:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$8_memory_ptr_$_t_uint256_$returns$__$",
"typeString": "function (struct Buffer.buffer memory,uint256) pure"
}
},
"id": 297,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7490:28:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 298,
"nodeType": "ExpressionStatement",
"src": "7490:28:0"
}
]
}
},
{
"id": 323,
"nodeType": "UncheckedBlock",
"src": "7539:650:0",
"statements": [
{
"assignments": [
302
],
"declarations": [
{
"constant": false,
"id": 302,
"mutability": "mutable",
"name": "mask",
"nameLocation": "7568:4:0",
"nodeType": "VariableDeclaration",
"scope": 323,
"src": "7563:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 301,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "7563:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 309,
"initialValue": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 308,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 305,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"hexValue": "323536",
"id": 303,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7576:3:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_256_by_1",
"typeString": "int_const 256"
},
"value": "256"
},
"nodeType": "BinaryOperation",
"operator": "**",
"rightExpression": {
"id": 304,
"name": "len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 270,
"src": "7583:3:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "7576:10:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 306,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "7575:12:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"hexValue": "31",
"id": 307,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7590:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "7575:16:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "7563:28:0"
},
{
"expression": {
"id": 320,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 310,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 268,
"src": "7637:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"commonType": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"id": 319,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 311,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 268,
"src": "7644:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "BinaryOperation",
"operator": ">>",
"rightExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 317,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"hexValue": "38",
"id": 312,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7653:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_8_by_1",
"typeString": "int_const 8"
},
"value": "8"
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 315,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"hexValue": "3332",
"id": 313,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7658:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"id": 314,
"name": "len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 270,
"src": "7663:3:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "7658:8:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 316,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "7657:10:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "7653:14:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 318,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "7652:16:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "7644:24:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"src": "7637:31:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 321,
"nodeType": "ExpressionStatement",
"src": "7637:31:0"
},
{
"AST": {
"nativeSrc": "7691:488:0",
"nodeType": "YulBlock",
"src": "7691:488:0",
"statements": [
{
"nativeSrc": "7762:24:0",
"nodeType": "YulVariableDeclaration",
"src": "7762:24:0",
"value": {
"arguments": [
{
"name": "buf",
"nativeSrc": "7782:3:0",
"nodeType": "YulIdentifier",
"src": "7782:3:0"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "7776:5:0",
"nodeType": "YulIdentifier",
"src": "7776:5:0"
},
"nativeSrc": "7776:10:0",
"nodeType": "YulFunctionCall",
"src": "7776:10:0"
},
"variables": [
{
"name": "bufptr",
"nativeSrc": "7766:6:0",
"nodeType": "YulTypedName",
"src": "7766:6:0",
"type": ""
}
]
},
{
"nativeSrc": "7885:36:0",
"nodeType": "YulVariableDeclaration",
"src": "7885:36:0",
"value": {
"arguments": [
{
"name": "bufptr",
"nativeSrc": "7901:6:0",
"nodeType": "YulIdentifier",
"src": "7901:6:0"
},
{
"name": "newCapacity",
"nativeSrc": "7909:11:0",
"nodeType": "YulIdentifier",
"src": "7909:11:0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "7897:3:0",
"nodeType": "YulIdentifier",
"src": "7897:3:0"
},
"nativeSrc": "7897:24:0",
"nodeType": "YulFunctionCall",
"src": "7897:24:0"
},
"variables": [
{
"name": "dest",
"nativeSrc": "7889:4:0",
"nodeType": "YulTypedName",
"src": "7889:4:0",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "dest",
"nativeSrc": "7945:4:0",
"nodeType": "YulIdentifier",
"src": "7945:4:0"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "dest",
"nativeSrc": "7964:4:0",
"nodeType": "YulIdentifier",
"src": "7964:4:0"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "7958:5:0",
"nodeType": "YulIdentifier",
"src": "7958:5:0"
},
"nativeSrc": "7958:11:0",
"nodeType": "YulFunctionCall",
"src": "7958:11:0"
},
{
"arguments": [
{
"name": "mask",
"nativeSrc": "7975:4:0",
"nodeType": "YulIdentifier",
"src": "7975:4:0"
}
],
"functionName": {
"name": "not",
"nativeSrc": "7971:3:0",
"nodeType": "YulIdentifier",
"src": "7971:3:0"
},
"nativeSrc": "7971:9:0",
"nodeType": "YulFunctionCall",
"src": "7971:9:0"
}
],
"functionName": {
"name": "and",
"nativeSrc": "7954:3:0",
"nodeType": "YulIdentifier",
"src": "7954:3:0"
},
"nativeSrc": "7954:27:0",
"nodeType": "YulFunctionCall",
"src": "7954:27:0"
},
{
"name": "data",
"nativeSrc": "7983:4:0",
"nodeType": "YulIdentifier",
"src": "7983:4:0"
}
],
"functionName": {
"name": "or",
"nativeSrc": "7951:2:0",
"nodeType": "YulIdentifier",
"src": "7951:2:0"
},
"nativeSrc": "7951:37:0",
"nodeType": "YulFunctionCall",
"src": "7951:37:0"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "7938:6:0",
"nodeType": "YulIdentifier",
"src": "7938:6:0"
},
"nativeSrc": "7938:51:0",
"nodeType": "YulFunctionCall",
"src": "7938:51:0"
},
"nativeSrc": "7938:51:0",
"nodeType": "YulExpressionStatement",
"src": "7938:51:0"
},
{
"body": {
"nativeSrc": "8098:67:0",
"nodeType": "YulBlock",
"src": "8098:67:0",
"statements": [
{
"expression": {
"arguments": [
{
"name": "bufptr",
"nativeSrc": "8127:6:0",
"nodeType": "YulIdentifier",
"src": "8127:6:0"
},
{
"name": "newCapacity",
"nativeSrc": "8135:11:0",
"nodeType": "YulIdentifier",
"src": "8135:11:0"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "8120:6:0",
"nodeType": "YulIdentifier",
"src": "8120:6:0"
},
"nativeSrc": "8120:27:0",
"nodeType": "YulFunctionCall",
"src": "8120:27:0"
},
"nativeSrc": "8120:27:0",
"nodeType": "YulExpressionStatement",
"src": "8120:27:0"
}
]
},
"condition": {
"arguments": [
{
"name": "newCapacity",
"nativeSrc": "8070:11:0",
"nodeType": "YulIdentifier",
"src": "8070:11:0"
},
{
"arguments": [
{
"name": "bufptr",
"nativeSrc": "8089:6:0",
"nodeType": "YulIdentifier",
"src": "8089:6:0"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "8083:5:0",
"nodeType": "YulIdentifier",
"src": "8083:5:0"
},
"nativeSrc": "8083:13:0",
"nodeType": "YulFunctionCall",
"src": "8083:13:0"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "8067:2:0",
"nodeType": "YulIdentifier",
"src": "8067:2:0"
},
"nativeSrc": "8067:30:0",
"nodeType": "YulFunctionCall",
"src": "8067:30:0"
},
"nativeSrc": "8064:101:0",
"nodeType": "YulIf",
"src": "8064:101:0"
}
]
},
"evmVersion": "cancun",
"externalReferences": [
{
"declaration": 266,
"isOffset": false,
"isSlot": false,
"src": "7782:3:0",
"valueSize": 1
},
{
"declaration": 268,
"isOffset": false,
"isSlot": false,
"src": "7983:4:0",
"valueSize": 1
},
{
"declaration": 302,
"isOffset": false,
"isSlot": false,
"src": "7975:4:0",
"valueSize": 1
},
{
"declaration": 283,
"isOffset": false,
"isSlot": false,
"src": "7909:11:0",
"valueSize": 1
},
{
"declaration": 283,
"isOffset": false,
"isSlot": false,
"src": "8070:11:0",
"valueSize": 1
},
{
"declaration": 283,
"isOffset": false,
"isSlot": false,
"src": "8135:11:0",
"valueSize": 1
}
],
"id": 322,
"nodeType": "InlineAssembly",
"src": "7682:497:0"
}
]
},
{
"expression": {
"id": 324,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 266,
"src": "8205:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
"functionReturnParameters": 275,
"id": 325,
"nodeType": "Return",
"src": "8198:10:0"
}
]
},
"documentation": {
"id": 263,
"nodeType": "StructuredDocumentation",
"src": "6935:326:0",
"text": " @dev Appends len bytes of bytes32 to a buffer. Resizes if doing so would\n exceed the capacity of the buffer.\n @param buf The buffer to append to.\n @param data The data to append.\n @param len The number of bytes to write (left-aligned).\n @return The original buffer, for chaining."
},
"id": 327,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "append",
"nameLocation": "7275:6:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 271,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 266,
"mutability": "mutable",
"name": "buf",
"nameLocation": "7296:3:0",
"nodeType": "VariableDeclaration",
"scope": 327,
"src": "7282:17:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer"
},
"typeName": {
"id": 265,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 264,
"name": "buffer",
"nameLocations": [
"7282:6:0"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 8,
"src": "7282:6:0"
},
"referencedDeclaration": 8,
"src": "7282:6:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_storage_ptr",
"typeString": "struct Buffer.buffer"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 268,
"mutability": "mutable",
"name": "data",
"nameLocation": "7309:4:0",
"nodeType": "VariableDeclaration",
"scope": 327,
"src": "7301:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 267,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "7301:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 270,
"mutability": "mutable",
"name": "len",
"nameLocation": "7320:3:0",
"nodeType": "VariableDeclaration",
"scope": 327,
"src": "7315:8:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 269,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "7315:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "7281:43:0"
},
"returnParameters": {
"id": 275,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 274,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 327,
"src": "7346:13:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer"
},
"typeName": {
"id": 273,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 272,
"name": "buffer",
"nameLocations": [
"7346:6:0"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 8,
"src": "7346:6:0"
},
"referencedDeclaration": 8,
"src": "7346:6:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_storage_ptr",
"typeString": "struct Buffer.buffer"
}
},
"visibility": "internal"
}
],
"src": "7345:15:0"
},
"scope": 421,
"src": "7266:949:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 348,
"nodeType": "Block",
"src": "8576:54:0",
"statements": [
{
"expression": {
"arguments": [
{
"id": 340,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 331,
"src": "8600:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
{
"arguments": [
{
"id": 343,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 333,
"src": "8613:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes20",
"typeString": "bytes20"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes20",
"typeString": "bytes20"
}
],
"id": 342,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8605:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes32_$",
"typeString": "type(bytes32)"
},
"typeName": {
"id": 341,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "8605:7:0",
"typeDescriptions": {}
}
},
"id": 344,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8605:13:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"hexValue": "3230",
"id": 345,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8620:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_20_by_1",
"typeString": "int_const 20"
},
"value": "20"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_rational_20_by_1",
"typeString": "int_const 20"
}
],
"id": 339,
"name": "append",
"nodeType": "Identifier",
"overloadedDeclarations": [
201,
221,
327
],
"referencedDeclaration": 327,
"src": "8593:6:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$8_memory_ptr_$_t_bytes32_$_t_uint256_$returns$_t_struct$_buffer_$8_memory_ptr_$",
"typeString": "function (struct Buffer.buffer memory,bytes32,uint256) pure returns (struct Buffer.buffer memory)"
}
},
"id": 346,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8593:30:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
"functionReturnParameters": 338,
"id": 347,
"nodeType": "Return",
"src": "8586:37:0"
}
]
},
"documentation": {
"id": 328,
"nodeType": "StructuredDocumentation",
"src": "8221:256:0",
"text": " @dev Appends a bytes20 to the buffer. Resizes if doing so would exceed\n the capacity of the buffer.\n @param buf The buffer to append to.\n @param data The data to append.\n @return The original buffer, for chhaining."
},
"id": 349,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "appendBytes20",
"nameLocation": "8491:13:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 334,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 331,
"mutability": "mutable",
"name": "buf",
"nameLocation": "8519:3:0",
"nodeType": "VariableDeclaration",
"scope": 349,
"src": "8505:17:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer"
},
"typeName": {
"id": 330,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 329,
"name": "buffer",
"nameLocations": [
"8505:6:0"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 8,
"src": "8505:6:0"
},
"referencedDeclaration": 8,
"src": "8505:6:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_storage_ptr",
"typeString": "struct Buffer.buffer"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 333,
"mutability": "mutable",
"name": "data",
"nameLocation": "8532:4:0",
"nodeType": "VariableDeclaration",
"scope": 349,
"src": "8524:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes20",
"typeString": "bytes20"
},
"typeName": {
"id": 332,
"name": "bytes20",
"nodeType": "ElementaryTypeName",
"src": "8524:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes20",
"typeString": "bytes20"
}
},
"visibility": "internal"
}
],
"src": "8504:33:0"
},
"returnParameters": {
"id": 338,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 337,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 349,
"src": "8561:13:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer"
},
"typeName": {
"id": 336,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 335,
"name": "buffer",
"nameLocations": [
"8561:6:0"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 8,
"src": "8561:6:0"
},
"referencedDeclaration": 8,
"src": "8561:6:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_storage_ptr",
"typeString": "struct Buffer.buffer"
}
},
"visibility": "internal"
}
],
"src": "8560:15:0"
},
"scope": 421,
"src": "8482:148:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 367,
"nodeType": "Block",
"src": "8990:45:0",
"statements": [
{
"expression": {
"arguments": [
{
"id": 362,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 353,
"src": "9014:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
{
"id": 363,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 355,
"src": "9019:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"hexValue": "3332",
"id": 364,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9025:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
}
],
"id": 361,
"name": "append",
"nodeType": "Identifier",
"overloadedDeclarations": [
201,
221,
327
],
"referencedDeclaration": 327,
"src": "9007:6:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$8_memory_ptr_$_t_bytes32_$_t_uint256_$returns$_t_struct$_buffer_$8_memory_ptr_$",
"typeString": "function (struct Buffer.buffer memory,bytes32,uint256) pure returns (struct Buffer.buffer memory)"
}
},
"id": 365,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9007:21:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
"functionReturnParameters": 360,
"id": 366,
"nodeType": "Return",
"src": "9000:28:0"
}
]
},
"documentation": {
"id": 350,
"nodeType": "StructuredDocumentation",
"src": "8636:255:0",
"text": " @dev Appends a bytes32 to the buffer. Resizes if doing so would exceed\n the capacity of the buffer.\n @param buf The buffer to append to.\n @param data The data to append.\n @return The original buffer, for chaining."
},
"id": 368,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "appendBytes32",
"nameLocation": "8905:13:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 356,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 353,
"mutability": "mutable",
"name": "buf",
"nameLocation": "8933:3:0",
"nodeType": "VariableDeclaration",
"scope": 368,
"src": "8919:17:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer"
},
"typeName": {
"id": 352,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 351,
"name": "buffer",
"nameLocations": [
"8919:6:0"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 8,
"src": "8919:6:0"
},
"referencedDeclaration": 8,
"src": "8919:6:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_storage_ptr",
"typeString": "struct Buffer.buffer"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 355,
"mutability": "mutable",
"name": "data",
"nameLocation": "8946:4:0",
"nodeType": "VariableDeclaration",
"scope": 368,
"src": "8938:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 354,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "8938:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "internal"
}
],
"src": "8918:33:0"
},
"returnParameters": {
"id": 360,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 359,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 368,
"src": "8975:13:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer"
},
"typeName": {
"id": 358,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 357,
"name": "buffer",
"nameLocations": [
"8975:6:0"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 8,
"src": "8975:6:0"
},
"referencedDeclaration": 8,
"src": "8975:6:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_storage_ptr",
"typeString": "struct Buffer.buffer"
}
},
"visibility": "internal"
}
],
"src": "8974:15:0"
},
"scope": 421,
"src": "8896:139:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 419,
"nodeType": "Block",
"src": "9461:699:0",
"statements": [
{
"assignments": [
383
],
"declarations": [
{
"constant": false,
"id": 383,
"mutability": "mutable",
"name": "off",
"nameLocation": "9476:3:0",
"nodeType": "VariableDeclaration",
"scope": 419,
"src": "9471:8:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 382,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "9471:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 387,
"initialValue": {
"expression": {
"expression": {
"id": 384,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 372,
"src": "9482:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
"id": 385,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "9486:3:0",
"memberName": "buf",
"nodeType": "MemberAccess",
"referencedDeclaration": 5,
"src": "9482:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 386,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "9490:6:0",
"memberName": "length",
"nodeType": "MemberAccess",
"src": "9482:14:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "9471:25:0"
},
{
"assignments": [
389
],
"declarations": [
{
"constant": false,
"id": 389,
"mutability": "mutable",
"name": "newCapacity",
"nameLocation": "9511:11:0",
"nodeType": "VariableDeclaration",
"scope": 419,
"src": "9506:16:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 388,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "9506:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 393,
"initialValue": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 392,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 390,
"name": "len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 376,
"src": "9525:3:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"id": 391,
"name": "off",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 383,
"src": "9531:3:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9525:9:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "9506:28:0"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 397,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 394,
"name": "newCapacity",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 389,
"src": "9548:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"expression": {
"id": 395,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 372,
"src": "9562:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
"id": 396,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "9566:8:0",
"memberName": "capacity",
"nodeType": "MemberAccess",
"referencedDeclaration": 7,
"src": "9562:12:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9548:26:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 406,
"nodeType": "IfStatement",
"src": "9544:85:0",
"trueBody": {
"id": 405,
"nodeType": "Block",
"src": "9576:53:0",
"statements": [
{
"expression": {
"arguments": [
{
"id": 399,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 372,
"src": "9597:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 402,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 400,
"name": "newCapacity",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 389,
"src": "9602:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"hexValue": "32",
"id": 401,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9616:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"src": "9602:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 398,
"name": "resize",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 99,
"src": "9590:6:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_struct$_buffer_$8_memory_ptr_$_t_uint256_$returns$__$",
"typeString": "function (struct Buffer.buffer memory,uint256) pure"
}
},
"id": 403,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9590:28:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 404,
"nodeType": "ExpressionStatement",
"src": "9590:28:0"
}
]
}
},
{
"assignments": [
408
],
"declarations": [
{
"constant": false,
"id": 408,
"mutability": "mutable",
"name": "mask",
"nameLocation": "9644:4:0",
"nodeType": "VariableDeclaration",
"scope": 419,
"src": "9639:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 407,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "9639:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 415,
"initialValue": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 414,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 411,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"hexValue": "323536",
"id": 409,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9652:3:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_256_by_1",
"typeString": "int_const 256"
},
"value": "256"
},
"nodeType": "BinaryOperation",
"operator": "**",
"rightExpression": {
"id": 410,
"name": "len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 376,
"src": "9659:3:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9652:10:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 412,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "9651:12:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"hexValue": "31",
"id": 413,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9666:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "9651:16:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "9639:28:0"
},
{
"AST": {
"nativeSrc": "9686:448:0",
"nodeType": "YulBlock",
"src": "9686:448:0",
"statements": [
{
"nativeSrc": "9749:24:0",
"nodeType": "YulVariableDeclaration",
"src": "9749:24:0",
"value": {
"arguments": [
{
"name": "buf",
"nativeSrc": "9769:3:0",
"nodeType": "YulIdentifier",
"src": "9769:3:0"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "9763:5:0",
"nodeType": "YulIdentifier",
"src": "9763:5:0"
},
"nativeSrc": "9763:10:0",
"nodeType": "YulFunctionCall",
"src": "9763:10:0"
},
"variables": [
{
"name": "bufptr",
"nativeSrc": "9753:6:0",
"nodeType": "YulTypedName",
"src": "9753:6:0",
"type": ""
}
]
},
{
"nativeSrc": "9864:36:0",
"nodeType": "YulVariableDeclaration",
"src": "9864:36:0",
"value": {
"arguments": [
{
"name": "bufptr",
"nativeSrc": "9880:6:0",
"nodeType": "YulIdentifier",
"src": "9880:6:0"
},
{
"name": "newCapacity",
"nativeSrc": "9888:11:0",
"nodeType": "YulIdentifier",
"src": "9888:11:0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "9876:3:0",
"nodeType": "YulIdentifier",
"src": "9876:3:0"
},
"nativeSrc": "9876:24:0",
"nodeType": "YulFunctionCall",
"src": "9876:24:0"
},
"variables": [
{
"name": "dest",
"nativeSrc": "9868:4:0",
"nodeType": "YulTypedName",
"src": "9868:4:0",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "dest",
"nativeSrc": "9920:4:0",
"nodeType": "YulIdentifier",
"src": "9920:4:0"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "dest",
"nativeSrc": "9939:4:0",
"nodeType": "YulIdentifier",
"src": "9939:4:0"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "9933:5:0",
"nodeType": "YulIdentifier",
"src": "9933:5:0"
},
"nativeSrc": "9933:11:0",
"nodeType": "YulFunctionCall",
"src": "9933:11:0"
},
{
"arguments": [
{
"name": "mask",
"nativeSrc": "9950:4:0",
"nodeType": "YulIdentifier",
"src": "9950:4:0"
}
],
"functionName": {
"name": "not",
"nativeSrc": "9946:3:0",
"nodeType": "YulIdentifier",
"src": "9946:3:0"
},
"nativeSrc": "9946:9:0",
"nodeType": "YulFunctionCall",
"src": "9946:9:0"
}
],
"functionName": {
"name": "and",
"nativeSrc": "9929:3:0",
"nodeType": "YulIdentifier",
"src": "9929:3:0"
},
"nativeSrc": "9929:27:0",
"nodeType": "YulFunctionCall",
"src": "9929:27:0"
},
{
"name": "data",
"nativeSrc": "9958:4:0",
"nodeType": "YulIdentifier",
"src": "9958:4:0"
}
],
"functionName": {
"name": "or",
"nativeSrc": "9926:2:0",
"nodeType": "YulIdentifier",
"src": "9926:2:0"
},
"nativeSrc": "9926:37:0",
"nodeType": "YulFunctionCall",
"src": "9926:37:0"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "9913:6:0",
"nodeType": "YulIdentifier",
"src": "9913:6:0"
},
"nativeSrc": "9913:51:0",
"nodeType": "YulFunctionCall",
"src": "9913:51:0"
},
"nativeSrc": "9913:51:0",
"nodeType": "YulExpressionStatement",
"src": "9913:51:0"
},
{
"body": {
"nativeSrc": "10065:59:0",
"nodeType": "YulBlock",
"src": "10065:59:0",
"statements": [
{
"expression": {
"arguments": [
{
"name": "bufptr",
"nativeSrc": "10090:6:0",
"nodeType": "YulIdentifier",
"src": "10090:6:0"
},
{
"name": "newCapacity",
"nativeSrc": "10098:11:0",
"nodeType": "YulIdentifier",
"src": "10098:11:0"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "10083:6:0",
"nodeType": "YulIdentifier",
"src": "10083:6:0"
},
"nativeSrc": "10083:27:0",
"nodeType": "YulFunctionCall",
"src": "10083:27:0"
},
"nativeSrc": "10083:27:0",
"nodeType": "YulExpressionStatement",
"src": "10083:27:0"
}
]
},
"condition": {
"arguments": [
{
"name": "newCapacity",
"nativeSrc": "10037:11:0",
"nodeType": "YulIdentifier",
"src": "10037:11:0"
},
{
"arguments": [
{
"name": "bufptr",
"nativeSrc": "10056:6:0",
"nodeType": "YulIdentifier",
"src": "10056:6:0"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "10050:5:0",
"nodeType": "YulIdentifier",
"src": "10050:5:0"
},
"nativeSrc": "10050:13:0",
"nodeType": "YulFunctionCall",
"src": "10050:13:0"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "10034:2:0",
"nodeType": "YulIdentifier",
"src": "10034:2:0"
},
"nativeSrc": "10034:30:0",
"nodeType": "YulFunctionCall",
"src": "10034:30:0"
},
"nativeSrc": "10031:93:0",
"nodeType": "YulIf",
"src": "10031:93:0"
}
]
},
"evmVersion": "cancun",
"externalReferences": [
{
"declaration": 372,
"isOffset": false,
"isSlot": false,
"src": "9769:3:0",
"valueSize": 1
},
{
"declaration": 374,
"isOffset": false,
"isSlot": false,
"src": "9958:4:0",
"valueSize": 1
},
{
"declaration": 408,
"isOffset": false,
"isSlot": false,
"src": "9950:4:0",
"valueSize": 1
},
{
"declaration": 389,
"isOffset": false,
"isSlot": false,
"src": "10037:11:0",
"valueSize": 1
},
{
"declaration": 389,
"isOffset": false,
"isSlot": false,
"src": "10098:11:0",
"valueSize": 1
},
{
"declaration": 389,
"isOffset": false,
"isSlot": false,
"src": "9888:11:0",
"valueSize": 1
}
],
"id": 416,
"nodeType": "InlineAssembly",
"src": "9677:457:0"
},
{
"expression": {
"id": 417,
"name": "buf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 372,
"src": "10150:3:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer memory"
}
},
"functionReturnParameters": 381,
"id": 418,
"nodeType": "Return",
"src": "10143:10:0"
}
]
},
"documentation": {
"id": 369,
"nodeType": "StructuredDocumentation",
"src": "9041:319:0",
"text": " @dev Appends a byte to the end of the buffer. Resizes if doing so would\n exceed the capacity of the buffer.\n @param buf The buffer to append to.\n @param data The data to append.\n @param len The number of bytes to write (right-aligned).\n @return The original buffer."
},
"id": 420,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "appendInt",
"nameLocation": "9374:9:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 377,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 372,
"mutability": "mutable",
"name": "buf",
"nameLocation": "9398:3:0",
"nodeType": "VariableDeclaration",
"scope": 420,
"src": "9384:17:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer"
},
"typeName": {
"id": 371,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 370,
"name": "buffer",
"nameLocations": [
"9384:6:0"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 8,
"src": "9384:6:0"
},
"referencedDeclaration": 8,
"src": "9384:6:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_storage_ptr",
"typeString": "struct Buffer.buffer"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 374,
"mutability": "mutable",
"name": "data",
"nameLocation": "9408:4:0",
"nodeType": "VariableDeclaration",
"scope": 420,
"src": "9403:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 373,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "9403:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 376,
"mutability": "mutable",
"name": "len",
"nameLocation": "9419:3:0",
"nodeType": "VariableDeclaration",
"scope": 420,
"src": "9414:8:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 375,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "9414:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "9383:40:0"
},
"returnParameters": {
"id": 381,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 380,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 420,
"src": "9446:13:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_memory_ptr",
"typeString": "struct Buffer.buffer"
},
"typeName": {
"id": 379,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 378,
"name": "buffer",
"nameLocations": [
"9446:6:0"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 8,
"src": "9446:6:0"
},
"referencedDeclaration": 8,
"src": "9446:6:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_buffer_$8_storage_ptr",
"typeString": "struct Buffer.buffer"
}
},
"visibility": "internal"
}
],
"src": "9445:15:0"
},
"scope": 421,
"src": "9365:795:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
}
],
"scope": 422,
"src": "1727:8435:0",
"usedErrors": [],
"usedEvents": []
}
],
"src": "1323:8840:0"
},
"id": 0
}
}
}
}
/*
██████ ██████ ██████ ██ ██ ██████ ██████ ██████ ██ ██ ██████ ███████ ██ ██
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██ ██ ██ █████ ██████ ██ ██ ██ ██ █████ ██ ██ █████ ██ ██
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██████ ██████ ██████ ██ ██ ██████ ██████ ██████ ██ ██ ██ ██████ ███████ ████
Find any smart contract, and build your project faster: https://www.cookbook.dev
Twitter: https://twitter.com/cookbook_dev
Discord: https://discord.gg/cookbookdev
Find this contract on Cookbook: https://www.cookbook.dev/protocols/Ethereum-Name-Service?utm=code
*/
// SPDX-License-Identifier: BSD-2-Clause
pragma solidity ^0.8.4;
/**
* @dev A library for working with mutable byte buffers in Solidity.
*
* Byte buffers are mutable and expandable, and provide a variety of primitives
* for appending to them. At any time you can fetch a bytes object containing the
* current contents of the buffer. The bytes object should not be stored between
* operations, as it may change due to resizing of the buffer.
*/
library Buffer {
/**
* @dev Represents a mutable buffer. Buffers have a current value (buf) and
* a capacity. The capacity may be longer than the current value, in
* which case it can be extended without the need to allocate more memory.
*/
struct buffer {
bytes buf;
uint capacity;
}
/**
* @dev Initializes a buffer with an initial capacity.
* @param buf The buffer to initialize.
* @param capacity The number of bytes of space to allocate the buffer.
* @return The buffer, for chaining.
*/
function init(buffer memory buf, uint capacity) internal pure returns(buffer memory) {
if (capacity % 32 != 0) {
capacity += 32 - (capacity % 32);
}
// Allocate space for the buffer data
buf.capacity = capacity;
assembly {
let ptr := mload(0x40)
mstore(buf, ptr)
mstore(ptr, 0)
let fpm := add(32, add(ptr, capacity))
if lt(fpm, ptr) {
revert(0, 0)
}
mstore(0x40, fpm)
}
return buf;
}
/**
* @dev Initializes a new buffer from an existing bytes object.
* Changes to the buffer may mutate the original value.
* @param b The bytes object to initialize the buffer with.
* @return A new buffer.
*/
function fromBytes(bytes memory b) internal pure returns(buffer memory) {
buffer memory buf;
buf.buf = b;
buf.capacity = b.length;
return buf;
}
function resize(buffer memory buf, uint capacity) private pure {
bytes memory oldbuf = buf.buf;
init(buf, capacity);
append(buf, oldbuf);
}
/**
* @dev Sets buffer length to 0.
* @param buf The buffer to truncate.
* @return The original buffer, for chaining..
*/
function truncate(buffer memory buf) internal pure returns (buffer memory) {
assembly {
let bufptr := mload(buf)
mstore(bufptr, 0)
}
return buf;
}
/**
* @dev Appends len bytes of a byte string to a buffer. Resizes if doing so would exceed
* the capacity of the buffer.
* @param buf The buffer to append to.
* @param data The data to append.
* @param len The number of bytes to copy.
* @return The original buffer, for chaining.
*/
function append(buffer memory buf, bytes memory data, uint len) internal pure returns(buffer memory) {
require(len <= data.length);
uint off = buf.buf.length;
uint newCapacity = off + len;
if (newCapacity > buf.capacity) {
resize(buf, newCapacity * 2);
}
uint dest;
uint src;
assembly {
// Memory address of the buffer data
let bufptr := mload(buf)
// Length of existing buffer data
let buflen := mload(bufptr)
// Start address = buffer address + offset + sizeof(buffer length)
dest := add(add(bufptr, 32), off)
// Update buffer length if we're extending it
if gt(newCapacity, buflen) {
mstore(bufptr, newCapacity)
}
src := add(data, 32)
}
// Copy word-length chunks while possible
for (; len >= 32; len -= 32) {
assembly {
mstore(dest, mload(src))
}
dest += 32;
src += 32;
}
// Copy remaining bytes
unchecked {
uint mask = (256 ** (32 - len)) - 1;
assembly {
let srcpart := and(mload(src), not(mask))
let destpart := and(mload(dest), mask)
mstore(dest, or(destpart, srcpart))
}
}
return buf;
}
/**
* @dev Appends a byte string to a buffer. Resizes if doing so would exceed
* the capacity of the buffer.
* @param buf The buffer to append to.
* @param data The data to append.
* @return The original buffer, for chaining.
*/
function append(buffer memory buf, bytes memory data) internal pure returns (buffer memory) {
return append(buf, data, data.length);
}
/**
* @dev Appends a byte to the buffer. Resizes if doing so would exceed the
* capacity of the buffer.
* @param buf The buffer to append to.
* @param data The data to append.
* @return The original buffer, for chaining.
*/
function appendUint8(buffer memory buf, uint8 data) internal pure returns(buffer memory) {
uint off = buf.buf.length;
uint offPlusOne = off + 1;
if (off >= buf.capacity) {
resize(buf, offPlusOne * 2);
}
assembly {
// Memory address of the buffer data
let bufptr := mload(buf)
// Address = buffer address + sizeof(buffer length) + off
let dest := add(add(bufptr, off), 32)
mstore8(dest, data)
// Update buffer length if we extended it
if gt(offPlusOne, mload(bufptr)) {
mstore(bufptr, offPlusOne)
}
}
return buf;
}
/**
* @dev Appends len bytes of bytes32 to a buffer. Resizes if doing so would
* exceed the capacity of the buffer.
* @param buf The buffer to append to.
* @param data The data to append.
* @param len The number of bytes to write (left-aligned).
* @return The original buffer, for chaining.
*/
function append(buffer memory buf, bytes32 data, uint len) private pure returns(buffer memory) {
uint off = buf.buf.length;
uint newCapacity = len + off;
if (newCapacity > buf.capacity) {
resize(buf, newCapacity * 2);
}
unchecked {
uint mask = (256 ** len) - 1;
// Right-align data
data = data >> (8 * (32 - len));
assembly {
// Memory address of the buffer data
let bufptr := mload(buf)
// Address = buffer address + sizeof(buffer length) + newCapacity
let dest := add(bufptr, newCapacity)
mstore(dest, or(and(mload(dest), not(mask)), data))
// Update buffer length if we extended it
if gt(newCapacity, mload(bufptr)) {
mstore(bufptr, newCapacity)
}
}
}
return buf;
}
/**
* @dev Appends a bytes20 to the buffer. Resizes if doing so would exceed
* the capacity of the buffer.
* @param buf The buffer to append to.
* @param data The data to append.
* @return The original buffer, for chhaining.
*/
function appendBytes20(buffer memory buf, bytes20 data) internal pure returns (buffer memory) {
return append(buf, bytes32(data), 20);
}
/**
* @dev Appends a bytes32 to the buffer. Resizes if doing so would exceed
* the capacity of the buffer.
* @param buf The buffer to append to.
* @param data The data to append.
* @return The original buffer, for chaining.
*/
function appendBytes32(buffer memory buf, bytes32 data) internal pure returns (buffer memory) {
return append(buf, data, 32);
}
/**
* @dev Appends a byte to the end of the buffer. Resizes if doing so would
* exceed the capacity of the buffer.
* @param buf The buffer to append to.
* @param data The data to append.
* @param len The number of bytes to write (right-aligned).
* @return The original buffer.
*/
function appendInt(buffer memory buf, uint data, uint len) internal pure returns(buffer memory) {
uint off = buf.buf.length;
uint newCapacity = len + off;
if (newCapacity > buf.capacity) {
resize(buf, newCapacity * 2);
}
uint mask = (256 ** len) - 1;
assembly {
// Memory address of the buffer data
let bufptr := mload(buf)
// Address = buffer address + sizeof(buffer length) + newCapacity
let dest := add(bufptr, newCapacity)
mstore(dest, or(and(mload(dest), not(mask)), data))
// Update buffer length if we extended it
if gt(newCapacity, mload(bufptr)) {
mstore(bufptr, newCapacity)
}
}
return buf;
}
}
{
"id": "8f0d3d88420c15814635bc74c4e0d4c3",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.8.26",
"solcLongVersion": "0.8.26+commit.8a97fa7a",
"input": {
"language": "Solidity",
"sources": {
"Ethereum-Name-Service//@ensdomains/solsha1/contracts/SHA1.sol": {
"content": "/*\n \n ██████ ██████ ██████ ██ ██ ██████ ██████ ██████ ██ ██ ██████ ███████ ██ ██\n ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██\n ██ ██ ██ ██ ██ █████ ██████ ██ ██ ██ ██ █████ ██ ██ █████ ██ ██\n ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██\n ██████ ██████ ██████ ██ ██ ██████ ██████ ██████ ██ ██ ██ ██████ ███████ ████\n \n Find any smart contract, and build your project faster: https://www.cookbook.dev\n Twitter: https://twitter.com/cookbook_dev\n Discord: https://discord.gg/cookbookdev\n \n Find this contract on Cookbook: https://www.cookbook.dev/protocols/Ethereum-Name-Service?utm=code\n */\n \n pragma solidity ^0.8.4;\n\nlibrary SHA1 {\n event Debug(bytes32 x);\n\n function sha1(bytes memory data) internal pure returns(bytes20 ret) {\n assembly {\n // Get a safe scratch location\n let scratch := mload(0x40)\n\n // Get the data length, and point data at the first byte\n let len := mload(data)\n data := add(data, 32)\n\n // Find the length after padding\n let totallen := add(and(add(len, 1), 0xFFFFFFFFFFFFFFC0), 64)\n switch lt(sub(totallen, len), 9)\n case 1 { totallen := add(totallen, 64) }\n\n let h := 0x6745230100EFCDAB890098BADCFE001032547600C3D2E1F0\n\n function readword(ptr, off, count) -> result {\n result := 0\n if lt(off, count) {\n result := mload(add(ptr, off))\n count := sub(count, off)\n if lt(count, 32) {\n let mask := not(sub(exp(256, sub(32, count)), 1))\n result := and(result, mask)\n }\n }\n }\n\n for { let i := 0 } lt(i, totallen) { i := add(i, 64) } {\n mstore(scratch, readword(data, i, len))\n mstore(add(scratch, 32), readword(data, add(i, 32), len))\n\n // If we loaded the last byte, store the terminator byte\n switch lt(sub(len, i), 64)\n case 1 { mstore8(add(scratch, sub(len, i)), 0x80) }\n\n // If this is the last block, store the length\n switch eq(i, sub(totallen, 64))\n case 1 { mstore(add(scratch, 32), or(mload(add(scratch, 32)), mul(len, 8))) }\n\n // Expand the 16 32-bit words into 80\n for { let j := 64 } lt(j, 128) { j := add(j, 12) } {\n let temp := xor(xor(mload(add(scratch, sub(j, 12))), mload(add(scratch, sub(j, 32)))), xor(mload(add(scratch, sub(j, 56))), mload(add(scratch, sub(j, 64)))))\n temp := or(and(mul(temp, 2), 0xFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFE), and(div(temp, 0x80000000), 0x0000000100000001000000010000000100000001000000010000000100000001))\n mstore(add(scratch, j), temp)\n }\n for { let j := 128 } lt(j, 320) { j := add(j, 24) } {\n let temp := xor(xor(mload(add(scratch, sub(j, 24))), mload(add(scratch, sub(j, 64)))), xor(mload(add(scratch, sub(j, 112))), mload(add(scratch, sub(j, 128)))))\n temp := or(and(mul(temp, 4), 0xFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC), and(div(temp, 0x40000000), 0x0000000300000003000000030000000300000003000000030000000300000003))\n mstore(add(scratch, j), temp)\n }\n\n let x := h\n let f := 0\n let k := 0\n for { let j := 0 } lt(j, 80) { j := add(j, 1) } {\n switch div(j, 20)\n case 0 {\n // f = d xor (b and (c xor d))\n f := xor(div(x, 0x100000000000000000000), div(x, 0x10000000000))\n f := and(div(x, 0x1000000000000000000000000000000), f)\n f := xor(div(x, 0x10000000000), f)\n k := 0x5A827999\n }\n case 1{\n // f = b xor c xor d\n f := xor(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000))\n f := xor(div(x, 0x10000000000), f)\n k := 0x6ED9EBA1\n }\n case 2 {\n // f = (b and c) or (d and (b or c))\n f := or(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000))\n f := and(div(x, 0x10000000000), f)\n f := or(and(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000)), f)\n k := 0x8F1BBCDC\n }\n case 3 {\n // f = b xor c xor d\n f := xor(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000))\n f := xor(div(x, 0x10000000000), f)\n k := 0xCA62C1D6\n }\n // temp = (a leftrotate 5) + f + e + k + w[i]\n let temp := and(div(x, 0x80000000000000000000000000000000000000000000000), 0x1F)\n temp := or(and(div(x, 0x800000000000000000000000000000000000000), 0xFFFFFFE0), temp)\n temp := add(f, temp)\n temp := add(and(x, 0xFFFFFFFF), temp)\n temp := add(k, temp)\n temp := add(div(mload(add(scratch, mul(j, 4))), 0x100000000000000000000000000000000000000000000000000000000), temp)\n x := or(div(x, 0x10000000000), mul(temp, 0x10000000000000000000000000000000000000000))\n x := or(and(x, 0xFFFFFFFF00FFFFFFFF000000000000FFFFFFFF00FFFFFFFF), mul(or(and(div(x, 0x4000000000000), 0xC0000000), and(div(x, 0x400000000000000000000), 0x3FFFFFFF)), 0x100000000000000000000))\n }\n\n h := and(add(h, x), 0xFFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF)\n }\n ret := mul(or(or(or(or(and(div(h, 0x100000000), 0xFFFFFFFF00000000000000000000000000000000), and(div(h, 0x1000000), 0xFFFFFFFF000000000000000000000000)), and(div(h, 0x10000), 0xFFFFFFFF0000000000000000)), and(div(h, 0x100), 0xFFFFFFFF00000000)), and(h, 0xFFFFFFFF)), 0x1000000000000000000000000)\n }\n }\n}\n"
}
},
"settings": {
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"": [
"ast"
],
"*": [
"abi",
"metadata",
"devdoc",
"userdoc",
"storageLayout",
"evm.legacyAssembly",
"evm.bytecode",
"evm.deployedBytecode",
"evm.methodIdentifiers",
"evm.gasEstimates",
"evm.assembly"
]
}
},
"remappings": []
}
},
"output": {
"contracts": {
"Ethereum-Name-Service//@ensdomains/solsha1/contracts/SHA1.sol": {
"SHA1": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
}
],
"name": "Debug",
"type": "event"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": " /* \"Ethereum-Name-Service//@ensdomains/solsha1/contracts/SHA1.sol\":1307:7018 library SHA1 {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"Ethereum-Name-Service//@ensdomains/solsha1/contracts/SHA1.sol\":1307:7018 library SHA1 {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa2646970667358221220bf253c854f4da65f4295bebd7d8d474409dd54ab811c5127dd5531c18e9f3d8864736f6c634300081a0033\n}\n",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220bf253c854f4da65f4295bebd7d8d474409dd54ab811c5127dd5531c18e9f3d8864736f6c634300081a0033",
"opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF 0x25 EXTCODECOPY DUP6 0x4F 0x4D 0xA6 PUSH0 TIMESTAMP SWAP6 0xBE 0xBD PUSH30 0x8D474409DD54AB811C5127DD5531C18E9F3D8864736F6C634300081A0033 ",
"sourceMap": "1307:5711:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220bf253c854f4da65f4295bebd7d8d474409dd54ab811c5127dd5531c18e9f3d8864736f6c634300081a0033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF 0x25 EXTCODECOPY DUP6 0x4F 0x4D 0xA6 PUSH0 TIMESTAMP SWAP6 0xBE 0xBD PUSH30 0x8D474409DD54AB811C5127DD5531C18E9F3D8864736F6C634300081A0033 ",
"sourceMap": "1307:5711:0:-:0;;;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17000",
"executionCost": "92",
"totalCost": "17092"
},
"internal": {
"sha1(bytes memory)": "infinite"
}
},
"legacyAssembly": {
".code": [
{
"begin": 1307,
"end": 7018,
"name": "PUSH #[$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 1307,
"end": 7018,
"name": "PUSH [$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 1307,
"end": 7018,
"name": "PUSH",
"source": 0,
"value": "B"
},
{
"begin": 1307,
"end": 7018,
"name": "DUP3",
"source": 0
},
{
"begin": 1307,
"end": 7018,
"name": "DUP3",
"source": 0
},
{
"begin": 1307,
"end": 7018,
"name": "DUP3",
"source": 0
},
{
"begin": 1307,
"end": 7018,
"name": "CODECOPY",
"source": 0
},
{
"begin": 1307,
"end": 7018,
"name": "DUP1",
"source": 0
},
{
"begin": 1307,
"end": 7018,
"name": "MLOAD",
"source": 0
},
{
"begin": 1307,
"end": 7018,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 1307,
"end": 7018,
"name": "BYTE",
"source": 0
},
{
"begin": 1307,
"end": 7018,
"name": "PUSH",
"source": 0,
"value": "73"
},
{
"begin": 1307,
"end": 7018,
"name": "EQ",
"source": 0
},
{
"begin": 1307,
"end": 7018,
"name": "PUSH [tag]",
"source": 0,
"value": "1"
},
{
"begin": 1307,
"end": 7018,
"name": "JUMPI",
"source": 0
},
{
"begin": 1307,
"end": 7018,
"name": "PUSH",
"source": 0,
"value": "4E487B7100000000000000000000000000000000000000000000000000000000"
},
{
"begin": 1307,
"end": 7018,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 1307,
"end": 7018,
"name": "MSTORE",
"source": 0
},
{
"begin": 1307,
"end": 7018,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 1307,
"end": 7018,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 1307,
"end": 7018,
"name": "MSTORE",
"source": 0
},
{
"begin": 1307,
"end": 7018,
"name": "PUSH",
"source": 0,
"value": "24"
},
{
"begin": 1307,
"end": 7018,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 1307,
"end": 7018,
"name": "REVERT",
"source": 0
},
{
"begin": 1307,
"end": 7018,
"name": "tag",
"source": 0,
"value": "1"
},
{
"begin": 1307,
"end": 7018,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 1307,
"end": 7018,
"name": "ADDRESS",
"source": 0
},
{
"begin": 1307,
"end": 7018,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 1307,
"end": 7018,
"name": "MSTORE",
"source": 0
},
{
"begin": 1307,
"end": 7018,
"name": "PUSH",
"source": 0,
"value": "73"
},
{
"begin": 1307,
"end": 7018,
"name": "DUP2",
"source": 0
},
{
"begin": 1307,
"end": 7018,
"name": "MSTORE8",
"source": 0
},
{
"begin": 1307,
"end": 7018,
"name": "DUP3",
"source": 0
},
{
"begin": 1307,
"end": 7018,
"name": "DUP2",
"source": 0
},
{
"begin": 1307,
"end": 7018,
"name": "RETURN",
"source": 0
}
],
".data": {
"0": {
".auxdata": "a2646970667358221220bf253c854f4da65f4295bebd7d8d474409dd54ab811c5127dd5531c18e9f3d8864736f6c634300081a0033",
".code": [
{
"begin": 1307,
"end": 7018,
"name": "PUSHDEPLOYADDRESS",
"source": 0
},
{
"begin": 1307,
"end": 7018,
"name": "ADDRESS",
"source": 0
},
{
"begin": 1307,
"end": 7018,
"name": "EQ",
"source": 0
},
{
"begin": 1307,
"end": 7018,
"name": "PUSH",
"source": 0,
"value": "80"
},
{
"begin": 1307,
"end": 7018,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 1307,
"end": 7018,
"name": "MSTORE",
"source": 0
},
{
"begin": 1307,
"end": 7018,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 1307,
"end": 7018,
"name": "DUP1",
"source": 0
},
{
"begin": 1307,
"end": 7018,
"name": "REVERT",
"source": 0
}
]
}
},
"sourceList": [
"Ethereum-Name-Service//@ensdomains/solsha1/contracts/SHA1.sol",
"#utility.yul"
]
},
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"}],\"name\":\"Debug\",\"type\":\"event\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"Ethereum-Name-Service//@ensdomains/solsha1/contracts/SHA1.sol\":\"SHA1\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"Ethereum-Name-Service//@ensdomains/solsha1/contracts/SHA1.sol\":{\"keccak256\":\"0x83e604d93233d85b6e6e44d4e73e2f3945c0005ccf9fcb1aa7745739cda1717b\",\"urls\":[\"bzz-raw://621aa27600d4aa38d5814162d9b39798fef8b42b7c87134643780ab40d44400b\",\"dweb:/ipfs/QmbZGWQG39bhNgkSDQNuxwPdpnMgZbp9LpPwd6ap2Xhf7T\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
}
},
"errors": [
{
"component": "general",
"errorCode": "1878",
"formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> Ethereum-Name-Service//@ensdomains/solsha1/contracts/SHA1.sol\n\n",
"message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
"severity": "warning",
"sourceLocation": {
"end": -1,
"file": "Ethereum-Name-Service//@ensdomains/solsha1/contracts/SHA1.sol",
"start": -1
},
"type": "Warning"
}
],
"sources": {
"Ethereum-Name-Service//@ensdomains/solsha1/contracts/SHA1.sol": {
"ast": {
"absolutePath": "Ethereum-Name-Service//@ensdomains/solsha1/contracts/SHA1.sol",
"exportedSymbols": {
"SHA1": [
15
]
},
"id": 16,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1,
"literals": [
"solidity",
"^",
"0.8",
".4"
],
"nodeType": "PragmaDirective",
"src": "1282:23:0"
},
{
"abstract": false,
"baseContracts": [],
"canonicalName": "SHA1",
"contractDependencies": [],
"contractKind": "library",
"fullyImplemented": true,
"id": 15,
"linearizedBaseContracts": [
15
],
"name": "SHA1",
"nameLocation": "1315:4:0",
"nodeType": "ContractDefinition",
"nodes": [
{
"anonymous": false,
"eventSelector": "f6d7d8f638af86edbd3db0363022953a79197e2b970840dd72ca38b9b4ada892",
"id": 5,
"name": "Debug",
"nameLocation": "1332:5:0",
"nodeType": "EventDefinition",
"parameters": {
"id": 4,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 3,
"indexed": false,
"mutability": "mutable",
"name": "x",
"nameLocation": "1346:1:0",
"nodeType": "VariableDeclaration",
"scope": 5,
"src": "1338:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 2,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1338:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "internal"
}
],
"src": "1337:11:0"
},
"src": "1326:23:0"
},
{
"body": {
"id": 13,
"nodeType": "Block",
"src": "1423:5593:0",
"statements": [
{
"AST": {
"nativeSrc": "1442:5568:0",
"nodeType": "YulBlock",
"src": "1442:5568:0",
"statements": [
{
"nativeSrc": "1499:26:0",
"nodeType": "YulVariableDeclaration",
"src": "1499:26:0",
"value": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1520:4:0",
"nodeType": "YulLiteral",
"src": "1520:4:0",
"type": "",
"value": "0x40"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "1514:5:0",
"nodeType": "YulIdentifier",
"src": "1514:5:0"
},
"nativeSrc": "1514:11:0",
"nodeType": "YulFunctionCall",
"src": "1514:11:0"
},
"variables": [
{
"name": "scratch",
"nativeSrc": "1503:7:0",
"nodeType": "YulTypedName",
"src": "1503:7:0",
"type": ""
}
]
},
{
"nativeSrc": "1608:22:0",
"nodeType": "YulVariableDeclaration",
"src": "1608:22:0",
"value": {
"arguments": [
{
"name": "data",
"nativeSrc": "1625:4:0",
"nodeType": "YulIdentifier",
"src": "1625:4:0"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "1619:5:0",
"nodeType": "YulIdentifier",
"src": "1619:5:0"
},
"nativeSrc": "1619:11:0",
"nodeType": "YulFunctionCall",
"src": "1619:11:0"
},
"variables": [
{
"name": "len",
"nativeSrc": "1612:3:0",
"nodeType": "YulTypedName",
"src": "1612:3:0",
"type": ""
}
]
},
{
"nativeSrc": "1643:21:0",
"nodeType": "YulAssignment",
"src": "1643:21:0",
"value": {
"arguments": [
{
"name": "data",
"nativeSrc": "1655:4:0",
"nodeType": "YulIdentifier",
"src": "1655:4:0"
},
{
"kind": "number",
"nativeSrc": "1661:2:0",
"nodeType": "YulLiteral",
"src": "1661:2:0",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1651:3:0",
"nodeType": "YulIdentifier",
"src": "1651:3:0"
},
"nativeSrc": "1651:13:0",
"nodeType": "YulFunctionCall",
"src": "1651:13:0"
},
"variableNames": [
{
"name": "data",
"nativeSrc": "1643:4:0",
"nodeType": "YulIdentifier",
"src": "1643:4:0"
}
]
},
{
"nativeSrc": "1723:61:0",
"nodeType": "YulVariableDeclaration",
"src": "1723:61:0",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "len",
"nativeSrc": "1751:3:0",
"nodeType": "YulIdentifier",
"src": "1751:3:0"
},
{
"kind": "number",
"nativeSrc": "1756:1:0",
"nodeType": "YulLiteral",
"src": "1756:1:0",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1747:3:0",
"nodeType": "YulIdentifier",
"src": "1747:3:0"
},
"nativeSrc": "1747:11:0",
"nodeType": "YulFunctionCall",
"src": "1747:11:0"
},
{
"kind": "number",
"nativeSrc": "1760:18:0",
"nodeType": "YulLiteral",
"src": "1760:18:0",
"type": "",
"value": "0xFFFFFFFFFFFFFFC0"
}
],
"functionName": {
"name": "and",
"nativeSrc": "1743:3:0",
"nodeType": "YulIdentifier",
"src": "1743:3:0"
},
"nativeSrc": "1743:36:0",
"nodeType": "YulFunctionCall",
"src": "1743:36:0"
},
{
"kind": "number",
"nativeSrc": "1781:2:0",
"nodeType": "YulLiteral",
"src": "1781:2:0",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1739:3:0",
"nodeType": "YulIdentifier",
"src": "1739:3:0"
},
"nativeSrc": "1739:45:0",
"nodeType": "YulFunctionCall",
"src": "1739:45:0"
},
"variables": [
{
"name": "totallen",
"nativeSrc": "1727:8:0",
"nodeType": "YulTypedName",
"src": "1727:8:0",
"type": ""
}
]
},
{
"cases": [
{
"body": {
"nativeSrc": "1849:33:0",
"nodeType": "YulBlock",
"src": "1849:33:0",
"statements": [
{
"nativeSrc": "1851:29:0",
"nodeType": "YulAssignment",
"src": "1851:29:0",
"value": {
"arguments": [
{
"name": "totallen",
"nativeSrc": "1867:8:0",
"nodeType": "YulIdentifier",
"src": "1867:8:0"
},
{
"kind": "number",
"nativeSrc": "1877:2:0",
"nodeType": "YulLiteral",
"src": "1877:2:0",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1863:3:0",
"nodeType": "YulIdentifier",
"src": "1863:3:0"
},
"nativeSrc": "1863:17:0",
"nodeType": "YulFunctionCall",
"src": "1863:17:0"
},
"variableNames": [
{
"name": "totallen",
"nativeSrc": "1851:8:0",
"nodeType": "YulIdentifier",
"src": "1851:8:0"
}
]
}
]
},
"nativeSrc": "1842:40:0",
"nodeType": "YulCase",
"src": "1842:40:0",
"value": {
"kind": "number",
"nativeSrc": "1847:1:0",
"nodeType": "YulLiteral",
"src": "1847:1:0",
"type": "",
"value": "1"
}
}
],
"expression": {
"arguments": [
{
"arguments": [
{
"name": "totallen",
"nativeSrc": "1811:8:0",
"nodeType": "YulIdentifier",
"src": "1811:8:0"
},
{
"name": "len",
"nativeSrc": "1821:3:0",
"nodeType": "YulIdentifier",
"src": "1821:3:0"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "1807:3:0",
"nodeType": "YulIdentifier",
"src": "1807:3:0"
},
"nativeSrc": "1807:18:0",
"nodeType": "YulFunctionCall",
"src": "1807:18:0"
},
{
"kind": "number",
"nativeSrc": "1827:1:0",
"nodeType": "YulLiteral",
"src": "1827:1:0",
"type": "",
"value": "9"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "1804:2:0",
"nodeType": "YulIdentifier",
"src": "1804:2:0"
},
"nativeSrc": "1804:25:0",
"nodeType": "YulFunctionCall",
"src": "1804:25:0"
},
"nativeSrc": "1797:85:0",
"nodeType": "YulSwitch",
"src": "1797:85:0"
},
{
"nativeSrc": "1896:59:0",
"nodeType": "YulVariableDeclaration",
"src": "1896:59:0",
"value": {
"kind": "number",
"nativeSrc": "1905:50:0",
"nodeType": "YulLiteral",
"src": "1905:50:0",
"type": "",
"value": "0x6745230100EFCDAB890098BADCFE001032547600C3D2E1F0"
},
"variables": [
{
"name": "h",
"nativeSrc": "1900:1:0",
"nodeType": "YulTypedName",
"src": "1900:1:0",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "2014:380:0",
"nodeType": "YulBlock",
"src": "2014:380:0",
"statements": [
{
"nativeSrc": "2032:11:0",
"nodeType": "YulAssignment",
"src": "2032:11:0",
"value": {
"kind": "number",
"nativeSrc": "2042:1:0",
"nodeType": "YulLiteral",
"src": "2042:1:0",
"type": "",
"value": "0"
},
"variableNames": [
{
"name": "result",
"nativeSrc": "2032:6:0",
"nodeType": "YulIdentifier",
"src": "2032:6:0"
}
]
},
{
"body": {
"nativeSrc": "2078:302:0",
"nodeType": "YulBlock",
"src": "2078:302:0",
"statements": [
{
"nativeSrc": "2100:30:0",
"nodeType": "YulAssignment",
"src": "2100:30:0",
"value": {
"arguments": [
{
"arguments": [
{
"name": "ptr",
"nativeSrc": "2120:3:0",
"nodeType": "YulIdentifier",
"src": "2120:3:0"
},
{
"name": "off",
"nativeSrc": "2125:3:0",
"nodeType": "YulIdentifier",
"src": "2125:3:0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2116:3:0",
"nodeType": "YulIdentifier",
"src": "2116:3:0"
},
"nativeSrc": "2116:13:0",
"nodeType": "YulFunctionCall",
"src": "2116:13:0"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "2110:5:0",
"nodeType": "YulIdentifier",
"src": "2110:5:0"
},
"nativeSrc": "2110:20:0",
"nodeType": "YulFunctionCall",
"src": "2110:20:0"
},
"variableNames": [
{
"name": "result",
"nativeSrc": "2100:6:0",
"nodeType": "YulIdentifier",
"src": "2100:6:0"
}
]
},
{
"nativeSrc": "2151:24:0",
"nodeType": "YulAssignment",
"src": "2151:24:0",
"value": {
"arguments": [
{
"name": "count",
"nativeSrc": "2164:5:0",
"nodeType": "YulIdentifier",
"src": "2164:5:0"
},
{
"name": "off",
"nativeSrc": "2171:3:0",
"nodeType": "YulIdentifier",
"src": "2171:3:0"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "2160:3:0",
"nodeType": "YulIdentifier",
"src": "2160:3:0"
},
"nativeSrc": "2160:15:0",
"nodeType": "YulFunctionCall",
"src": "2160:15:0"
},
"variableNames": [
{
"name": "count",
"nativeSrc": "2151:5:0",
"nodeType": "YulIdentifier",
"src": "2151:5:0"
}
]
},
{
"body": {
"nativeSrc": "2213:149:0",
"nodeType": "YulBlock",
"src": "2213:149:0",
"statements": [
{
"nativeSrc": "2239:49:0",
"nodeType": "YulVariableDeclaration",
"src": "2239:49:0",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "2263:3:0",
"nodeType": "YulLiteral",
"src": "2263:3:0",
"type": "",
"value": "256"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "2272:2:0",
"nodeType": "YulLiteral",
"src": "2272:2:0",
"type": "",
"value": "32"
},
{
"name": "count",
"nativeSrc": "2276:5:0",
"nodeType": "YulIdentifier",
"src": "2276:5:0"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "2268:3:0",
"nodeType": "YulIdentifier",
"src": "2268:3:0"
},
"nativeSrc": "2268:14:0",
"nodeType": "YulFunctionCall",
"src": "2268:14:0"
}
],
"functionName": {
"name": "exp",
"nativeSrc": "2259:3:0",
"nodeType": "YulIdentifier",
"src": "2259:3:0"
},
"nativeSrc": "2259:24:0",
"nodeType": "YulFunctionCall",
"src": "2259:24:0"
},
{
"kind": "number",
"nativeSrc": "2285:1:0",
"nodeType": "YulLiteral",
"src": "2285:1:0",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "2255:3:0",
"nodeType": "YulIdentifier",
"src": "2255:3:0"
},
"nativeSrc": "2255:32:0",
"nodeType": "YulFunctionCall",
"src": "2255:32:0"
}
],
"functionName": {
"name": "not",
"nativeSrc": "2251:3:0",
"nodeType": "YulIdentifier",
"src": "2251:3:0"
},
"nativeSrc": "2251:37:0",
"nodeType": "YulFunctionCall",
"src": "2251:37:0"
},
"variables": [
{
"name": "mask",
"nativeSrc": "2243:4:0",
"nodeType": "YulTypedName",
"src": "2243:4:0",
"type": ""
}
]
},
{
"nativeSrc": "2313:27:0",
"nodeType": "YulAssignment",
"src": "2313:27:0",
"value": {
"arguments": [
{
"name": "result",
"nativeSrc": "2327:6:0",
"nodeType": "YulIdentifier",
"src": "2327:6:0"
},
{
"name": "mask",
"nativeSrc": "2335:4:0",
"nodeType": "YulIdentifier",
"src": "2335:4:0"
}
],
"functionName": {
"name": "and",
"nativeSrc": "2323:3:0",
"nodeType": "YulIdentifier",
"src": "2323:3:0"
},
"nativeSrc": "2323:17:0",
"nodeType": "YulFunctionCall",
"src": "2323:17:0"
},
"variableNames": [
{
"name": "result",
"nativeSrc": "2313:6:0",
"nodeType": "YulIdentifier",
"src": "2313:6:0"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "count",
"nativeSrc": "2202:5:0",
"nodeType": "YulIdentifier",
"src": "2202:5:0"
},
{
"kind": "number",
"nativeSrc": "2209:2:0",
"nodeType": "YulLiteral",
"src": "2209:2:0",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "2199:2:0",
"nodeType": "YulIdentifier",
"src": "2199:2:0"
},
"nativeSrc": "2199:13:0",
"nodeType": "YulFunctionCall",
"src": "2199:13:0"
},
"nativeSrc": "2196:166:0",
"nodeType": "YulIf",
"src": "2196:166:0"
}
]
},
"condition": {
"arguments": [
{
"name": "off",
"nativeSrc": "2066:3:0",
"nodeType": "YulIdentifier",
"src": "2066:3:0"
},
{
"name": "count",
"nativeSrc": "2071:5:0",
"nodeType": "YulIdentifier",
"src": "2071:5:0"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "2063:2:0",
"nodeType": "YulIdentifier",
"src": "2063:2:0"
},
"nativeSrc": "2063:14:0",
"nodeType": "YulFunctionCall",
"src": "2063:14:0"
},
"nativeSrc": "2060:320:0",
"nodeType": "YulIf",
"src": "2060:320:0"
}
]
},
"name": "readword",
"nativeSrc": "1969:425:0",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "ptr",
"nativeSrc": "1987:3:0",
"nodeType": "YulTypedName",
"src": "1987:3:0",
"type": ""
},
{
"name": "off",
"nativeSrc": "1992:3:0",
"nodeType": "YulTypedName",
"src": "1992:3:0",
"type": ""
},
{
"name": "count",
"nativeSrc": "1997:5:0",
"nodeType": "YulTypedName",
"src": "1997:5:0",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nativeSrc": "2007:6:0",
"nodeType": "YulTypedName",
"src": "2007:6:0",
"type": ""
}
],
"src": "1969:425:0"
},
{
"body": {
"nativeSrc": "2463:4229:0",
"nodeType": "YulBlock",
"src": "2463:4229:0",
"statements": [
{
"expression": {
"arguments": [
{
"name": "scratch",
"nativeSrc": "2488:7:0",
"nodeType": "YulIdentifier",
"src": "2488:7:0"
},
{
"arguments": [
{
"name": "data",
"nativeSrc": "2506:4:0",
"nodeType": "YulIdentifier",
"src": "2506:4:0"
},
{
"name": "i",
"nativeSrc": "2512:1:0",
"nodeType": "YulIdentifier",
"src": "2512:1:0"
},
{
"name": "len",
"nativeSrc": "2515:3:0",
"nodeType": "YulIdentifier",
"src": "2515:3:0"
}
],
"functionName": {
"name": "readword",
"nativeSrc": "2497:8:0",
"nodeType": "YulIdentifier",
"src": "2497:8:0"
},
"nativeSrc": "2497:22:0",
"nodeType": "YulFunctionCall",
"src": "2497:22:0"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "2481:6:0",
"nodeType": "YulIdentifier",
"src": "2481:6:0"
},
"nativeSrc": "2481:39:0",
"nodeType": "YulFunctionCall",
"src": "2481:39:0"
},
"nativeSrc": "2481:39:0",
"nodeType": "YulExpressionStatement",
"src": "2481:39:0"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "scratch",
"nativeSrc": "2548:7:0",
"nodeType": "YulIdentifier",
"src": "2548:7:0"
},
{
"kind": "number",
"nativeSrc": "2557:2:0",
"nodeType": "YulLiteral",
"src": "2557:2:0",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2544:3:0",
"nodeType": "YulIdentifier",
"src": "2544:3:0"
},
"nativeSrc": "2544:16:0",
"nodeType": "YulFunctionCall",
"src": "2544:16:0"
},
{
"arguments": [
{
"name": "data",
"nativeSrc": "2571:4:0",
"nodeType": "YulIdentifier",
"src": "2571:4:0"
},
{
"arguments": [
{
"name": "i",
"nativeSrc": "2581:1:0",
"nodeType": "YulIdentifier",
"src": "2581:1:0"
},
{
"kind": "number",
"nativeSrc": "2584:2:0",
"nodeType": "YulLiteral",
"src": "2584:2:0",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2577:3:0",
"nodeType": "YulIdentifier",
"src": "2577:3:0"
},
"nativeSrc": "2577:10:0",
"nodeType": "YulFunctionCall",
"src": "2577:10:0"
},
{
"name": "len",
"nativeSrc": "2589:3:0",
"nodeType": "YulIdentifier",
"src": "2589:3:0"
}
],
"functionName": {
"name": "readword",
"nativeSrc": "2562:8:0",
"nodeType": "YulIdentifier",
"src": "2562:8:0"
},
"nativeSrc": "2562:31:0",
"nodeType": "YulFunctionCall",
"src": "2562:31:0"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "2537:6:0",
"nodeType": "YulIdentifier",
"src": "2537:6:0"
},
"nativeSrc": "2537:57:0",
"nodeType": "YulFunctionCall",
"src": "2537:57:0"
},
"nativeSrc": "2537:57:0",
"nodeType": "YulExpressionStatement",
"src": "2537:57:0"
},
{
"cases": [
{
"body": {
"nativeSrc": "2735:44:0",
"nodeType": "YulBlock",
"src": "2735:44:0",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "scratch",
"nativeSrc": "2749:7:0",
"nodeType": "YulIdentifier",
"src": "2749:7:0"
},
{
"arguments": [
{
"name": "len",
"nativeSrc": "2762:3:0",
"nodeType": "YulIdentifier",
"src": "2762:3:0"
},
{
"name": "i",
"nativeSrc": "2767:1:0",
"nodeType": "YulIdentifier",
"src": "2767:1:0"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "2758:3:0",
"nodeType": "YulIdentifier",
"src": "2758:3:0"
},
"nativeSrc": "2758:11:0",
"nodeType": "YulFunctionCall",
"src": "2758:11:0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2745:3:0",
"nodeType": "YulIdentifier",
"src": "2745:3:0"
},
"nativeSrc": "2745:25:0",
"nodeType": "YulFunctionCall",
"src": "2745:25:0"
},
{
"kind": "number",
"nativeSrc": "2772:4:0",
"nodeType": "YulLiteral",
"src": "2772:4:0",
"type": "",
"value": "0x80"
}
],
"functionName": {
"name": "mstore8",
"nativeSrc": "2737:7:0",
"nodeType": "YulIdentifier",
"src": "2737:7:0"
},
"nativeSrc": "2737:40:0",
"nodeType": "YulFunctionCall",
"src": "2737:40:0"
},
"nativeSrc": "2737:40:0",
"nodeType": "YulExpressionStatement",
"src": "2737:40:0"
}
]
},
"nativeSrc": "2728:51:0",
"nodeType": "YulCase",
"src": "2728:51:0",
"value": {
"kind": "number",
"nativeSrc": "2733:1:0",
"nodeType": "YulLiteral",
"src": "2733:1:0",
"type": "",
"value": "1"
}
}
],
"expression": {
"arguments": [
{
"arguments": [
{
"name": "len",
"nativeSrc": "2699:3:0",
"nodeType": "YulIdentifier",
"src": "2699:3:0"
},
{
"name": "i",
"nativeSrc": "2704:1:0",
"nodeType": "YulIdentifier",
"src": "2704:1:0"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "2695:3:0",
"nodeType": "YulIdentifier",
"src": "2695:3:0"
},
"nativeSrc": "2695:11:0",
"nodeType": "YulFunctionCall",
"src": "2695:11:0"
},
{
"kind": "number",
"nativeSrc": "2708:2:0",
"nodeType": "YulLiteral",
"src": "2708:2:0",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "2692:2:0",
"nodeType": "YulIdentifier",
"src": "2692:2:0"
},
"nativeSrc": "2692:19:0",
"nodeType": "YulFunctionCall",
"src": "2692:19:0"
},
"nativeSrc": "2685:94:0",
"nodeType": "YulSwitch",
"src": "2685:94:0"
},
{
"cases": [
{
"body": {
"nativeSrc": "2915:70:0",
"nodeType": "YulBlock",
"src": "2915:70:0",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "scratch",
"nativeSrc": "2928:7:0",
"nodeType": "YulIdentifier",
"src": "2928:7:0"
},
{
"kind": "number",
"nativeSrc": "2937:2:0",
"nodeType": "YulLiteral",
"src": "2937:2:0",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2924:3:0",
"nodeType": "YulIdentifier",
"src": "2924:3:0"
},
"nativeSrc": "2924:16:0",
"nodeType": "YulFunctionCall",
"src": "2924:16:0"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "scratch",
"nativeSrc": "2955:7:0",
"nodeType": "YulIdentifier",
"src": "2955:7:0"
},
{
"kind": "number",
"nativeSrc": "2964:2:0",
"nodeType": "YulLiteral",
"src": "2964:2:0",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2951:3:0",
"nodeType": "YulIdentifier",
"src": "2951:3:0"
},
"nativeSrc": "2951:16:0",
"nodeType": "YulFunctionCall",
"src": "2951:16:0"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "2945:5:0",
"nodeType": "YulIdentifier",
"src": "2945:5:0"
},
"nativeSrc": "2945:23:0",
"nodeType": "YulFunctionCall",
"src": "2945:23:0"
},
{
"arguments": [
{
"name": "len",
"nativeSrc": "2974:3:0",
"nodeType": "YulIdentifier",
"src": "2974:3:0"
},
{
"kind": "number",
"nativeSrc": "2979:1:0",
"nodeType": "YulLiteral",
"src": "2979:1:0",
"type": "",
"value": "8"
}
],
"functionName": {
"name": "mul",
"nativeSrc": "2970:3:0",
"nodeType": "YulIdentifier",
"src": "2970:3:0"
},
"nativeSrc": "2970:11:0",
"nodeType": "YulFunctionCall",
"src": "2970:11:0"
}
],
"functionName": {
"name": "or",
"nativeSrc": "2942:2:0",
"nodeType": "YulIdentifier",
"src": "2942:2:0"
},
"nativeSrc": "2942:40:0",
"nodeType": "YulFunctionCall",
"src": "2942:40:0"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "2917:6:0",
"nodeType": "YulIdentifier",
"src": "2917:6:0"
},
"nativeSrc": "2917:66:0",
"nodeType": "YulFunctionCall",
"src": "2917:66:0"
},
"nativeSrc": "2917:66:0",
"nodeType": "YulExpressionStatement",
"src": "2917:66:0"
}
]
},
"nativeSrc": "2908:77:0",
"nodeType": "YulCase",
"src": "2908:77:0",
"value": {
"kind": "number",
"nativeSrc": "2913:1:0",
"nodeType": "YulLiteral",
"src": "2913:1:0",
"type": "",
"value": "1"
}
}
],
"expression": {
"arguments": [
{
"name": "i",
"nativeSrc": "2870:1:0",
"nodeType": "YulIdentifier",
"src": "2870:1:0"
},
{
"arguments": [
{
"name": "totallen",
"nativeSrc": "2877:8:0",
"nodeType": "YulIdentifier",
"src": "2877:8:0"
},
{
"kind": "number",
"nativeSrc": "2887:2:0",
"nodeType": "YulLiteral",
"src": "2887:2:0",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "2873:3:0",
"nodeType": "YulIdentifier",
"src": "2873:3:0"
},
"nativeSrc": "2873:17:0",
"nodeType": "YulFunctionCall",
"src": "2873:17:0"
}
],
"functionName": {
"name": "eq",
"nativeSrc": "2867:2:0",
"nodeType": "YulIdentifier",
"src": "2867:2:0"
},
"nativeSrc": "2867:24:0",
"nodeType": "YulFunctionCall",
"src": "2867:24:0"
},
"nativeSrc": "2860:125:0",
"nodeType": "YulSwitch",
"src": "2860:125:0"
},
{
"body": {
"nativeSrc": "3108:461:0",
"nodeType": "YulBlock",
"src": "3108:461:0",
"statements": [
{
"nativeSrc": "3130:157:0",
"nodeType": "YulVariableDeclaration",
"src": "3130:157:0",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "scratch",
"nativeSrc": "3160:7:0",
"nodeType": "YulIdentifier",
"src": "3160:7:0"
},
{
"arguments": [
{
"name": "j",
"nativeSrc": "3173:1:0",
"nodeType": "YulIdentifier",
"src": "3173:1:0"
},
{
"kind": "number",
"nativeSrc": "3176:2:0",
"nodeType": "YulLiteral",
"src": "3176:2:0",
"type": "",
"value": "12"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "3169:3:0",
"nodeType": "YulIdentifier",
"src": "3169:3:0"
},
"nativeSrc": "3169:10:0",
"nodeType": "YulFunctionCall",
"src": "3169:10:0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3156:3:0",
"nodeType": "YulIdentifier",
"src": "3156:3:0"
},
"nativeSrc": "3156:24:0",
"nodeType": "YulFunctionCall",
"src": "3156:24:0"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "3150:5:0",
"nodeType": "YulIdentifier",
"src": "3150:5:0"
},
"nativeSrc": "3150:31:0",
"nodeType": "YulFunctionCall",
"src": "3150:31:0"
},
{
"arguments": [
{
"arguments": [
{
"name": "scratch",
"nativeSrc": "3193:7:0",
"nodeType": "YulIdentifier",
"src": "3193:7:0"
},
{
"arguments": [
{
"name": "j",
"nativeSrc": "3206:1:0",
"nodeType": "YulIdentifier",
"src": "3206:1:0"
},
{
"kind": "number",
"nativeSrc": "3209:2:0",
"nodeType": "YulLiteral",
"src": "3209:2:0",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "3202:3:0",
"nodeType": "YulIdentifier",
"src": "3202:3:0"
},
"nativeSrc": "3202:10:0",
"nodeType": "YulFunctionCall",
"src": "3202:10:0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3189:3:0",
"nodeType": "YulIdentifier",
"src": "3189:3:0"
},
"nativeSrc": "3189:24:0",
"nodeType": "YulFunctionCall",
"src": "3189:24:0"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "3183:5:0",
"nodeType": "YulIdentifier",
"src": "3183:5:0"
},
"nativeSrc": "3183:31:0",
"nodeType": "YulFunctionCall",
"src": "3183:31:0"
}
],
"functionName": {
"name": "xor",
"nativeSrc": "3146:3:0",
"nodeType": "YulIdentifier",
"src": "3146:3:0"
},
"nativeSrc": "3146:69:0",
"nodeType": "YulFunctionCall",
"src": "3146:69:0"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "scratch",
"nativeSrc": "3231:7:0",
"nodeType": "YulIdentifier",
"src": "3231:7:0"
},
{
"arguments": [
{
"name": "j",
"nativeSrc": "3244:1:0",
"nodeType": "YulIdentifier",
"src": "3244:1:0"
},
{
"kind": "number",
"nativeSrc": "3247:2:0",
"nodeType": "YulLiteral",
"src": "3247:2:0",
"type": "",
"value": "56"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "3240:3:0",
"nodeType": "YulIdentifier",
"src": "3240:3:0"
},
"nativeSrc": "3240:10:0",
"nodeType": "YulFunctionCall",
"src": "3240:10:0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3227:3:0",
"nodeType": "YulIdentifier",
"src": "3227:3:0"
},
"nativeSrc": "3227:24:0",
"nodeType": "YulFunctionCall",
"src": "3227:24:0"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "3221:5:0",
"nodeType": "YulIdentifier",
"src": "3221:5:0"
},
"nativeSrc": "3221:31:0",
"nodeType": "YulFunctionCall",
"src": "3221:31:0"
},
{
"arguments": [
{
"arguments": [
{
"name": "scratch",
"nativeSrc": "3264:7:0",
"nodeType": "YulIdentifier",
"src": "3264:7:0"
},
{
"arguments": [
{
"name": "j",
"nativeSrc": "3277:1:0",
"nodeType": "YulIdentifier",
"src": "3277:1:0"
},
{
"kind": "number",
"nativeSrc": "3280:2:0",
"nodeType": "YulLiteral",
"src": "3280:2:0",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "3273:3:0",
"nodeType": "YulIdentifier",
"src": "3273:3:0"
},
"nativeSrc": "3273:10:0",
"nodeType": "YulFunctionCall",
"src": "3273:10:0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3260:3:0",
"nodeType": "YulIdentifier",
"src": "3260:3:0"
},
"nativeSrc": "3260:24:0",
"nodeType": "YulFunctionCall",
"src": "3260:24:0"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "3254:5:0",
"nodeType": "YulIdentifier",
"src": "3254:5:0"
},
"nativeSrc": "3254:31:0",
"nodeType": "YulFunctionCall",
"src": "3254:31:0"
}
],
"functionName": {
"name": "xor",
"nativeSrc": "3217:3:0",
"nodeType": "YulIdentifier",
"src": "3217:3:0"
},
"nativeSrc": "3217:69:0",
"nodeType": "YulFunctionCall",
"src": "3217:69:0"
}
],
"functionName": {
"name": "xor",
"nativeSrc": "3142:3:0",
"nodeType": "YulIdentifier",
"src": "3142:3:0"
},
"nativeSrc": "3142:145:0",
"nodeType": "YulFunctionCall",
"src": "3142:145:0"
},
"variables": [
{
"name": "temp",
"nativeSrc": "3134:4:0",
"nodeType": "YulTypedName",
"src": "3134:4:0",
"type": ""
}
]
},
{
"nativeSrc": "3308:193:0",
"nodeType": "YulAssignment",
"src": "3308:193:0",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "temp",
"nativeSrc": "3327:4:0",
"nodeType": "YulIdentifier",
"src": "3327:4:0"
},
{
"kind": "number",
"nativeSrc": "3333:1:0",
"nodeType": "YulLiteral",
"src": "3333:1:0",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "mul",
"nativeSrc": "3323:3:0",
"nodeType": "YulIdentifier",
"src": "3323:3:0"
},
"nativeSrc": "3323:12:0",
"nodeType": "YulFunctionCall",
"src": "3323:12:0"
},
{
"kind": "number",
"nativeSrc": "3337:66:0",
"nodeType": "YulLiteral",
"src": "3337:66:0",
"type": "",
"value": "0xFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFE"
}
],
"functionName": {
"name": "and",
"nativeSrc": "3319:3:0",
"nodeType": "YulIdentifier",
"src": "3319:3:0"
},
"nativeSrc": "3319:85:0",
"nodeType": "YulFunctionCall",
"src": "3319:85:0"
},
{
"arguments": [
{
"arguments": [
{
"name": "temp",
"nativeSrc": "3414:4:0",
"nodeType": "YulIdentifier",
"src": "3414:4:0"
},
{
"kind": "number",
"nativeSrc": "3420:10:0",
"nodeType": "YulLiteral",
"src": "3420:10:0",
"type": "",
"value": "0x80000000"
}
],
"functionName": {
"name": "div",
"nativeSrc": "3410:3:0",
"nodeType": "YulIdentifier",
"src": "3410:3:0"
},
"nativeSrc": "3410:21:0",
"nodeType": "YulFunctionCall",
"src": "3410:21:0"
},
{
"kind": "number",
"nativeSrc": "3433:66:0",
"nodeType": "YulLiteral",
"src": "3433:66:0",
"type": "",
"value": "0x0000000100000001000000010000000100000001000000010000000100000001"
}
],
"functionName": {
"name": "and",
"nativeSrc": "3406:3:0",
"nodeType": "YulIdentifier",
"src": "3406:3:0"
},
"nativeSrc": "3406:94:0",
"nodeType": "YulFunctionCall",
"src": "3406:94:0"
}
],
"functionName": {
"name": "or",
"nativeSrc": "3316:2:0",
"nodeType": "YulIdentifier",
"src": "3316:2:0"
},
"nativeSrc": "3316:185:0",
"nodeType": "YulFunctionCall",
"src": "3316:185:0"
},
"variableNames": [
{
"name": "temp",
"nativeSrc": "3308:4:0",
"nodeType": "YulIdentifier",
"src": "3308:4:0"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "scratch",
"nativeSrc": "3533:7:0",
"nodeType": "YulIdentifier",
"src": "3533:7:0"
},
{
"name": "j",
"nativeSrc": "3542:1:0",
"nodeType": "YulIdentifier",
"src": "3542:1:0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3529:3:0",
"nodeType": "YulIdentifier",
"src": "3529:3:0"
},
"nativeSrc": "3529:15:0",
"nodeType": "YulFunctionCall",
"src": "3529:15:0"
},
{
"name": "temp",
"nativeSrc": "3546:4:0",
"nodeType": "YulIdentifier",
"src": "3546:4:0"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "3522:6:0",
"nodeType": "YulIdentifier",
"src": "3522:6:0"
},
"nativeSrc": "3522:29:0",
"nodeType": "YulFunctionCall",
"src": "3522:29:0"
},
"nativeSrc": "3522:29:0",
"nodeType": "YulExpressionStatement",
"src": "3522:29:0"
}
]
},
"condition": {
"arguments": [
{
"name": "j",
"nativeSrc": "3080:1:0",
"nodeType": "YulIdentifier",
"src": "3080:1:0"
},
{
"kind": "number",
"nativeSrc": "3083:3:0",
"nodeType": "YulLiteral",
"src": "3083:3:0",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "3077:2:0",
"nodeType": "YulIdentifier",
"src": "3077:2:0"
},
"nativeSrc": "3077:10:0",
"nodeType": "YulFunctionCall",
"src": "3077:10:0"
},
"nativeSrc": "3057:512:0",
"nodeType": "YulForLoop",
"post": {
"nativeSrc": "3088:19:0",
"nodeType": "YulBlock",
"src": "3088:19:0",
"statements": [
{
"nativeSrc": "3090:15:0",
"nodeType": "YulAssignment",
"src": "3090:15:0",
"value": {
"arguments": [
{
"name": "j",
"nativeSrc": "3099:1:0",
"nodeType": "YulIdentifier",
"src": "3099:1:0"
},
{
"kind": "number",
"nativeSrc": "3102:2:0",
"nodeType": "YulLiteral",
"src": "3102:2:0",
"type": "",
"value": "12"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3095:3:0",
"nodeType": "YulIdentifier",
"src": "3095:3:0"
},
"nativeSrc": "3095:10:0",
"nodeType": "YulFunctionCall",
"src": "3095:10:0"
},
"variableNames": [
{
"name": "j",
"nativeSrc": "3090:1:0",
"nodeType": "YulIdentifier",
"src": "3090:1:0"
}
]
}
]
},
"pre": {
"nativeSrc": "3061:15:0",
"nodeType": "YulBlock",
"src": "3061:15:0",
"statements": [
{
"nativeSrc": "3063:11:0",
"nodeType": "YulVariableDeclaration",
"src": "3063:11:0",
"value": {
"kind": "number",
"nativeSrc": "3072:2:0",
"nodeType": "YulLiteral",
"src": "3072:2:0",
"type": "",
"value": "64"
},
"variables": [
{
"name": "j",
"nativeSrc": "3067:1:0",
"nodeType": "YulTypedName",
"src": "3067:1:0",
"type": ""
}
]
}
]
},
"src": "3057:512:0"
},
{
"body": {
"nativeSrc": "3638:463:0",
"nodeType": "YulBlock",
"src": "3638:463:0",
"statements": [
{
"nativeSrc": "3660:159:0",
"nodeType": "YulVariableDeclaration",
"src": "3660:159:0",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "scratch",
"nativeSrc": "3690:7:0",
"nodeType": "YulIdentifier",
"src": "3690:7:0"
},
{
"arguments": [
{
"name": "j",
"nativeSrc": "3703:1:0",
"nodeType": "YulIdentifier",
"src": "3703:1:0"
},
{
"kind": "number",
"nativeSrc": "3706:2:0",
"nodeType": "YulLiteral",
"src": "3706:2:0",
"type": "",
"value": "24"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "3699:3:0",
"nodeType": "YulIdentifier",
"src": "3699:3:0"
},
"nativeSrc": "3699:10:0",
"nodeType": "YulFunctionCall",
"src": "3699:10:0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3686:3:0",
"nodeType": "YulIdentifier",
"src": "3686:3:0"
},
"nativeSrc": "3686:24:0",
"nodeType": "YulFunctionCall",
"src": "3686:24:0"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "3680:5:0",
"nodeType": "YulIdentifier",
"src": "3680:5:0"
},
"nativeSrc": "3680:31:0",
"nodeType": "YulFunctionCall",
"src": "3680:31:0"
},
{
"arguments": [
{
"arguments": [
{
"name": "scratch",
"nativeSrc": "3723:7:0",
"nodeType": "YulIdentifier",
"src": "3723:7:0"
},
{
"arguments": [
{
"name": "j",
"nativeSrc": "3736:1:0",
"nodeType": "YulIdentifier",
"src": "3736:1:0"
},
{
"kind": "number",
"nativeSrc": "3739:2:0",
"nodeType": "YulLiteral",
"src": "3739:2:0",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "3732:3:0",
"nodeType": "YulIdentifier",
"src": "3732:3:0"
},
"nativeSrc": "3732:10:0",
"nodeType": "YulFunctionCall",
"src": "3732:10:0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3719:3:0",
"nodeType": "YulIdentifier",
"src": "3719:3:0"
},
"nativeSrc": "3719:24:0",
"nodeType": "YulFunctionCall",
"src": "3719:24:0"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "3713:5:0",
"nodeType": "YulIdentifier",
"src": "3713:5:0"
},
"nativeSrc": "3713:31:0",
"nodeType": "YulFunctionCall",
"src": "3713:31:0"
}
],
"functionName": {
"name": "xor",
"nativeSrc": "3676:3:0",
"nodeType": "YulIdentifier",
"src": "3676:3:0"
},
"nativeSrc": "3676:69:0",
"nodeType": "YulFunctionCall",
"src": "3676:69:0"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "scratch",
"nativeSrc": "3761:7:0",
"nodeType": "YulIdentifier",
"src": "3761:7:0"
},
{
"arguments": [
{
"name": "j",
"nativeSrc": "3774:1:0",
"nodeType": "YulIdentifier",
"src": "3774:1:0"
},
{
"kind": "number",
"nativeSrc": "3777:3:0",
"nodeType": "YulLiteral",
"src": "3777:3:0",
"type": "",
"value": "112"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "3770:3:0",
"nodeType": "YulIdentifier",
"src": "3770:3:0"
},
"nativeSrc": "3770:11:0",
"nodeType": "YulFunctionCall",
"src": "3770:11:0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3757:3:0",
"nodeType": "YulIdentifier",
"src": "3757:3:0"
},
"nativeSrc": "3757:25:0",
"nodeType": "YulFunctionCall",
"src": "3757:25:0"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "3751:5:0",
"nodeType": "YulIdentifier",
"src": "3751:5:0"
},
"nativeSrc": "3751:32:0",
"nodeType": "YulFunctionCall",
"src": "3751:32:0"
},
{
"arguments": [
{
"arguments": [
{
"name": "scratch",
"nativeSrc": "3795:7:0",
"nodeType": "YulIdentifier",
"src": "3795:7:0"
},
{
"arguments": [
{
"name": "j",
"nativeSrc": "3808:1:0",
"nodeType": "YulIdentifier",
"src": "3808:1:0"
},
{
"kind": "number",
"nativeSrc": "3811:3:0",
"nodeType": "YulLiteral",
"src": "3811:3:0",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "3804:3:0",
"nodeType": "YulIdentifier",
"src": "3804:3:0"
},
"nativeSrc": "3804:11:0",
"nodeType": "YulFunctionCall",
"src": "3804:11:0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3791:3:0",
"nodeType": "YulIdentifier",
"src": "3791:3:0"
},
"nativeSrc": "3791:25:0",
"nodeType": "YulFunctionCall",
"src": "3791:25:0"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "3785:5:0",
"nodeType": "YulIdentifier",
"src": "3785:5:0"
},
"nativeSrc": "3785:32:0",
"nodeType": "YulFunctionCall",
"src": "3785:32:0"
}
],
"functionName": {
"name": "xor",
"nativeSrc": "3747:3:0",
"nodeType": "YulIdentifier",
"src": "3747:3:0"
},
"nativeSrc": "3747:71:0",
"nodeType": "YulFunctionCall",
"src": "3747:71:0"
}
],
"functionName": {
"name": "xor",
"nativeSrc": "3672:3:0",
"nodeType": "YulIdentifier",
"src": "3672:3:0"
},
"nativeSrc": "3672:147:0",
"nodeType": "YulFunctionCall",
"src": "3672:147:0"
},
"variables": [
{
"name": "temp",
"nativeSrc": "3664:4:0",
"nodeType": "YulTypedName",
"src": "3664:4:0",
"type": ""
}
]
},
{
"nativeSrc": "3840:193:0",
"nodeType": "YulAssignment",
"src": "3840:193:0",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "temp",
"nativeSrc": "3859:4:0",
"nodeType": "YulIdentifier",
"src": "3859:4:0"
},
{
"kind": "number",
"nativeSrc": "3865:1:0",
"nodeType": "YulLiteral",
"src": "3865:1:0",
"type": "",
"value": "4"
}
],
"functionName": {
"name": "mul",
"nativeSrc": "3855:3:0",
"nodeType": "YulIdentifier",
"src": "3855:3:0"
},
"nativeSrc": "3855:12:0",
"nodeType": "YulFunctionCall",
"src": "3855:12:0"
},
{
"kind": "number",
"nativeSrc": "3869:66:0",
"nodeType": "YulLiteral",
"src": "3869:66:0",
"type": "",
"value": "0xFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC"
}
],
"functionName": {
"name": "and",
"nativeSrc": "3851:3:0",
"nodeType": "YulIdentifier",
"src": "3851:3:0"
},
"nativeSrc": "3851:85:0",
"nodeType": "YulFunctionCall",
"src": "3851:85:0"
},
{
"arguments": [
{
"arguments": [
{
"name": "temp",
"nativeSrc": "3946:4:0",
"nodeType": "YulIdentifier",
"src": "3946:4:0"
},
{
"kind": "number",
"nativeSrc": "3952:10:0",
"nodeType": "YulLiteral",
"src": "3952:10:0",
"type": "",
"value": "0x40000000"
}
],
"functionName": {
"name": "div",
"nativeSrc": "3942:3:0",
"nodeType": "YulIdentifier",
"src": "3942:3:0"
},
"nativeSrc": "3942:21:0",
"nodeType": "YulFunctionCall",
"src": "3942:21:0"
},
{
"kind": "number",
"nativeSrc": "3965:66:0",
"nodeType": "YulLiteral",
"src": "3965:66:0",
"type": "",
"value": "0x0000000300000003000000030000000300000003000000030000000300000003"
}
],
"functionName": {
"name": "and",
"nativeSrc": "3938:3:0",
"nodeType": "YulIdentifier",
"src": "3938:3:0"
},
"nativeSrc": "3938:94:0",
"nodeType": "YulFunctionCall",
"src": "3938:94:0"
}
],
"functionName": {
"name": "or",
"nativeSrc": "3848:2:0",
"nodeType": "YulIdentifier",
"src": "3848:2:0"
},
"nativeSrc": "3848:185:0",
"nodeType": "YulFunctionCall",
"src": "3848:185:0"
},
"variableNames": [
{
"name": "temp",
"nativeSrc": "3840:4:0",
"nodeType": "YulIdentifier",
"src": "3840:4:0"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "scratch",
"nativeSrc": "4065:7:0",
"nodeType": "YulIdentifier",
"src": "4065:7:0"
},
{
"name": "j",
"nativeSrc": "4074:1:0",
"nodeType": "YulIdentifier",
"src": "4074:1:0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4061:3:0",
"nodeType": "YulIdentifier",
"src": "4061:3:0"
},
"nativeSrc": "4061:15:0",
"nodeType": "YulFunctionCall",
"src": "4061:15:0"
},
{
"name": "temp",
"nativeSrc": "4078:4:0",
"nodeType": "YulIdentifier",
"src": "4078:4:0"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "4054:6:0",
"nodeType": "YulIdentifier",
"src": "4054:6:0"
},
"nativeSrc": "4054:29:0",
"nodeType": "YulFunctionCall",
"src": "4054:29:0"
},
"nativeSrc": "4054:29:0",
"nodeType": "YulExpressionStatement",
"src": "4054:29:0"
}
]
},
"condition": {
"arguments": [
{
"name": "j",
"nativeSrc": "3610:1:0",
"nodeType": "YulIdentifier",
"src": "3610:1:0"
},
{
"kind": "number",
"nativeSrc": "3613:3:0",
"nodeType": "YulLiteral",
"src": "3613:3:0",
"type": "",
"value": "320"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "3607:2:0",
"nodeType": "YulIdentifier",
"src": "3607:2:0"
},
"nativeSrc": "3607:10:0",
"nodeType": "YulFunctionCall",
"src": "3607:10:0"
},
"nativeSrc": "3586:515:0",
"nodeType": "YulForLoop",
"post": {
"nativeSrc": "3618:19:0",
"nodeType": "YulBlock",
"src": "3618:19:0",
"statements": [
{
"nativeSrc": "3620:15:0",
"nodeType": "YulAssignment",
"src": "3620:15:0",
"value": {
"arguments": [
{
"name": "j",
"nativeSrc": "3629:1:0",
"nodeType": "YulIdentifier",
"src": "3629:1:0"
},
{
"kind": "number",
"nativeSrc": "3632:2:0",
"nodeType": "YulLiteral",
"src": "3632:2:0",
"type": "",
"value": "24"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3625:3:0",
"nodeType": "YulIdentifier",
"src": "3625:3:0"
},
"nativeSrc": "3625:10:0",
"nodeType": "YulFunctionCall",
"src": "3625:10:0"
},
"variableNames": [
{
"name": "j",
"nativeSrc": "3620:1:0",
"nodeType": "YulIdentifier",
"src": "3620:1:0"
}
]
}
]
},
"pre": {
"nativeSrc": "3590:16:0",
"nodeType": "YulBlock",
"src": "3590:16:0",
"statements": [
{
"nativeSrc": "3592:12:0",
"nodeType": "YulVariableDeclaration",
"src": "3592:12:0",
"value": {
"kind": "number",
"nativeSrc": "3601:3:0",
"nodeType": "YulLiteral",
"src": "3601:3:0",
"type": "",
"value": "128"
},
"variables": [
{
"name": "j",
"nativeSrc": "3596:1:0",
"nodeType": "YulTypedName",
"src": "3596:1:0",
"type": ""
}
]
}
]
},
"src": "3586:515:0"
},
{
"nativeSrc": "4119:10:0",
"nodeType": "YulVariableDeclaration",
"src": "4119:10:0",
"value": {
"name": "h",
"nativeSrc": "4128:1:0",
"nodeType": "YulIdentifier",
"src": "4128:1:0"
},
"variables": [
{
"name": "x",
"nativeSrc": "4123:1:0",
"nodeType": "YulTypedName",
"src": "4123:1:0",
"type": ""
}
]
},
{
"nativeSrc": "4146:10:0",
"nodeType": "YulVariableDeclaration",
"src": "4146:10:0",
"value": {
"kind": "number",
"nativeSrc": "4155:1:0",
"nodeType": "YulLiteral",
"src": "4155:1:0",
"type": "",
"value": "0"
},
"variables": [
{
"name": "f",
"nativeSrc": "4150:1:0",
"nodeType": "YulTypedName",
"src": "4150:1:0",
"type": ""
}
]
},
{
"nativeSrc": "4173:10:0",
"nodeType": "YulVariableDeclaration",
"src": "4173:10:0",
"value": {
"kind": "number",
"nativeSrc": "4182:1:0",
"nodeType": "YulLiteral",
"src": "4182:1:0",
"type": "",
"value": "0"
},
"variables": [
{
"name": "k",
"nativeSrc": "4177:1:0",
"nodeType": "YulTypedName",
"src": "4177:1:0",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "4248:2341:0",
"nodeType": "YulBlock",
"src": "4248:2341:0",
"statements": [
{
"cases": [
{
"body": {
"nativeSrc": "4315:345:0",
"nodeType": "YulBlock",
"src": "4315:345:0",
"statements": [
{
"nativeSrc": "4396:64:0",
"nodeType": "YulAssignment",
"src": "4396:64:0",
"value": {
"arguments": [
{
"arguments": [
{
"name": "x",
"nativeSrc": "4409:1:0",
"nodeType": "YulIdentifier",
"src": "4409:1:0"
},
{
"kind": "number",
"nativeSrc": "4412:23:0",
"nodeType": "YulLiteral",
"src": "4412:23:0",
"type": "",
"value": "0x100000000000000000000"
}
],
"functionName": {
"name": "div",
"nativeSrc": "4405:3:0",
"nodeType": "YulIdentifier",
"src": "4405:3:0"
},
"nativeSrc": "4405:31:0",
"nodeType": "YulFunctionCall",
"src": "4405:31:0"
},
{
"arguments": [
{
"name": "x",
"nativeSrc": "4442:1:0",
"nodeType": "YulIdentifier",
"src": "4442:1:0"
},
{
"kind": "number",
"nativeSrc": "4445:13:0",
"nodeType": "YulLiteral",
"src": "4445:13:0",
"type": "",
"value": "0x10000000000"
}
],
"functionName": {
"name": "div",
"nativeSrc": "4438:3:0",
"nodeType": "YulIdentifier",
"src": "4438:3:0"
},
"nativeSrc": "4438:21:0",
"nodeType": "YulFunctionCall",
"src": "4438:21:0"
}
],
"functionName": {
"name": "xor",
"nativeSrc": "4401:3:0",
"nodeType": "YulIdentifier",
"src": "4401:3:0"
},
"nativeSrc": "4401:59:0",
"nodeType": "YulFunctionCall",
"src": "4401:59:0"
},
"variableNames": [
{
"name": "f",
"nativeSrc": "4396:1:0",
"nodeType": "YulIdentifier",
"src": "4396:1:0"
}
]
},
{
"nativeSrc": "4485:54:0",
"nodeType": "YulAssignment",
"src": "4485:54:0",
"value": {
"arguments": [
{
"arguments": [
{
"name": "x",
"nativeSrc": "4498:1:0",
"nodeType": "YulIdentifier",
"src": "4498:1:0"
},
{
"kind": "number",
"nativeSrc": "4501:33:0",
"nodeType": "YulLiteral",
"src": "4501:33:0",
"type": "",
"value": "0x1000000000000000000000000000000"
}
],
"functionName": {
"name": "div",
"nativeSrc": "4494:3:0",
"nodeType": "YulIdentifier",
"src": "4494:3:0"
},
"nativeSrc": "4494:41:0",
"nodeType": "YulFunctionCall",
"src": "4494:41:0"
},
{
"name": "f",
"nativeSrc": "4537:1:0",
"nodeType": "YulIdentifier",
"src": "4537:1:0"
}
],
"functionName": {
"name": "and",
"nativeSrc": "4490:3:0",
"nodeType": "YulIdentifier",
"src": "4490:3:0"
},
"nativeSrc": "4490:49:0",
"nodeType": "YulFunctionCall",
"src": "4490:49:0"
},
"variableNames": [
{
"name": "f",
"nativeSrc": "4485:1:0",
"nodeType": "YulIdentifier",
"src": "4485:1:0"
}
]
},
{
"nativeSrc": "4564:34:0",
"nodeType": "YulAssignment",
"src": "4564:34:0",
"value": {
"arguments": [
{
"arguments": [
{
"name": "x",
"nativeSrc": "4577:1:0",
"nodeType": "YulIdentifier",
"src": "4577:1:0"
},
{
"kind": "number",
"nativeSrc": "4580:13:0",
"nodeType": "YulLiteral",
"src": "4580:13:0",
"type": "",
"value": "0x10000000000"
}
],
"functionName": {
"name": "div",
"nativeSrc": "4573:3:0",
"nodeType": "YulIdentifier",
"src": "4573:3:0"
},
"nativeSrc": "4573:21:0",
"nodeType": "YulFunctionCall",
"src": "4573:21:0"
},
{
"name": "f",
"nativeSrc": "4596:1:0",
"nodeType": "YulIdentifier",
"src": "4596:1:0"
}
],
"functionName": {
"name": "xor",
"nativeSrc": "4569:3:0",
"nodeType": "YulIdentifier",
"src": "4569:3:0"
},
"nativeSrc": "4569:29:0",
"nodeType": "YulFunctionCall",
"src": "4569:29:0"
},
"variableNames": [
{
"name": "f",
"nativeSrc": "4564:1:0",
"nodeType": "YulIdentifier",
"src": "4564:1:0"
}
]
},
{
"nativeSrc": "4623:15:0",
"nodeType": "YulAssignment",
"src": "4623:15:0",
"value": {
"kind": "number",
"nativeSrc": "4628:10:0",
"nodeType": "YulLiteral",
"src": "4628:10:0",
"type": "",
"value": "0x5A827999"
},
"variableNames": [
{
"name": "k",
"nativeSrc": "4623:1:0",
"nodeType": "YulIdentifier",
"src": "4623:1:0"
}
]
}
]
},
"nativeSrc": "4308:352:0",
"nodeType": "YulCase",
"src": "4308:352:0",
"value": {
"kind": "number",
"nativeSrc": "4313:1:0",
"nodeType": "YulLiteral",
"src": "4313:1:0",
"type": "",
"value": "0"
}
},
{
"body": {
"nativeSrc": "4687:276:0",
"nodeType": "YulBlock",
"src": "4687:276:0",
"statements": [
{
"nativeSrc": "4758:84:0",
"nodeType": "YulAssignment",
"src": "4758:84:0",
"value": {
"arguments": [
{
"arguments": [
{
"name": "x",
"nativeSrc": "4771:1:0",
"nodeType": "YulIdentifier",
"src": "4771:1:0"
},
{
"kind": "number",
"nativeSrc": "4774:33:0",
"nodeType": "YulLiteral",
"src": "4774:33:0",
"type": "",
"value": "0x1000000000000000000000000000000"
}
],
"functionName": {
"name": "div",
"nativeSrc": "4767:3:0",
"nodeType": "YulIdentifier",
"src": "4767:3:0"
},
"nativeSrc": "4767:41:0",
"nodeType": "YulFunctionCall",
"src": "4767:41:0"
},
{
"arguments": [
{
"name": "x",
"nativeSrc": "4814:1:0",
"nodeType": "YulIdentifier",
"src": "4814:1:0"
},
{
"kind": "number",
"nativeSrc": "4817:23:0",
"nodeType": "YulLiteral",
"src": "4817:23:0",
"type": "",
"value": "0x100000000000000000000"
}
],
"functionName": {
"name": "div",
"nativeSrc": "4810:3:0",
"nodeType": "YulIdentifier",
"src": "4810:3:0"
},
"nativeSrc": "4810:31:0",
"nodeType": "YulFunctionCall",
"src": "4810:31:0"
}
],
"functionName": {
"name": "xor",
"nativeSrc": "4763:3:0",
"nodeType": "YulIdentifier",
"src": "4763:3:0"
},
"nativeSrc": "4763:79:0",
"nodeType": "YulFunctionCall",
"src": "4763:79:0"
},
"variableNames": [
{
"name": "f",
"nativeSrc": "4758:1:0",
"nodeType": "YulIdentifier",
"src": "4758:1:0"
}
]
},
{
"nativeSrc": "4867:34:0",
"nodeType": "YulAssignment",
"src": "4867:34:0",
"value": {
"arguments": [
{
"arguments": [
{
"name": "x",
"nativeSrc": "4880:1:0",
"nodeType": "YulIdentifier",
"src": "4880:1:0"
},
{
"kind": "number",
"nativeSrc": "4883:13:0",
"nodeType": "YulLiteral",
"src": "4883:13:0",
"type": "",
"value": "0x10000000000"
}
],
"functionName": {
"name": "div",
"nativeSrc": "4876:3:0",
"nodeType": "YulIdentifier",
"src": "4876:3:0"
},
"nativeSrc": "4876:21:0",
"nodeType": "YulFunctionCall",
"src": "4876:21:0"
},
{
"name": "f",
"nativeSrc": "4899:1:0",
"nodeType": "YulIdentifier",
"src": "4899:1:0"
}
],
"functionName": {
"name": "xor",
"nativeSrc": "4872:3:0",
"nodeType": "YulIdentifier",
"src": "4872:3:0"
},
"nativeSrc": "4872:29:0",
"nodeType": "YulFunctionCall",
"src": "4872:29:0"
},
"variableNames": [
{
"name": "f",
"nativeSrc": "4867:1:0",
"nodeType": "YulIdentifier",
"src": "4867:1:0"
}
]
},
{
"nativeSrc": "4926:15:0",
"nodeType": "YulAssignment",
"src": "4926:15:0",
"value": {
"kind": "number",
"nativeSrc": "4931:10:0",
"nodeType": "YulLiteral",
"src": "4931:10:0",
"type": "",
"value": "0x6ED9EBA1"
},
"variableNames": [
{
"name": "k",
"nativeSrc": "4926:1:0",
"nodeType": "YulIdentifier",
"src": "4926:1:0"
}
]
}
]
},
"nativeSrc": "4681:282:0",
"nodeType": "YulCase",
"src": "4681:282:0",
"value": {
"kind": "number",
"nativeSrc": "4686:1:0",
"nodeType": "YulLiteral",
"src": "4686:1:0",
"type": "",
"value": "1"
}
},
{
"body": {
"nativeSrc": "4991:407:0",
"nodeType": "YulBlock",
"src": "4991:407:0",
"statements": [
{
"nativeSrc": "5078:83:0",
"nodeType": "YulAssignment",
"src": "5078:83:0",
"value": {
"arguments": [
{
"arguments": [
{
"name": "x",
"nativeSrc": "5090:1:0",
"nodeType": "YulIdentifier",
"src": "5090:1:0"
},
{
"kind": "number",
"nativeSrc": "5093:33:0",
"nodeType": "YulLiteral",
"src": "5093:33:0",
"type": "",
"value": "0x1000000000000000000000000000000"
}
],
"functionName": {
"name": "div",
"nativeSrc": "5086:3:0",
"nodeType": "YulIdentifier",
"src": "5086:3:0"
},
"nativeSrc": "5086:41:0",
"nodeType": "YulFunctionCall",
"src": "5086:41:0"
},
{
"arguments": [
{
"name": "x",
"nativeSrc": "5133:1:0",
"nodeType": "YulIdentifier",
"src": "5133:1:0"
},
{
"kind": "number",
"nativeSrc": "5136:23:0",
"nodeType": "YulLiteral",
"src": "5136:23:0",
"type": "",
"value": "0x100000000000000000000"
}
],
"functionName": {
"name": "div",
"nativeSrc": "5129:3:0",
"nodeType": "YulIdentifier",
"src": "5129:3:0"
},
"nativeSrc": "5129:31:0",
"nodeType": "YulFunctionCall",
"src": "5129:31:0"
}
],
"functionName": {
"name": "or",
"nativeSrc": "5083:2:0",
"nodeType": "YulIdentifier",
"src": "5083:2:0"
},
"nativeSrc": "5083:78:0",
"nodeType": "YulFunctionCall",
"src": "5083:78:0"
},
"variableNames": [
{
"name": "f",
"nativeSrc": "5078:1:0",
"nodeType": "YulIdentifier",
"src": "5078:1:0"
}
]
},
{
"nativeSrc": "5186:34:0",
"nodeType": "YulAssignment",
"src": "5186:34:0",
"value": {
"arguments": [
{
"arguments": [
{
"name": "x",
"nativeSrc": "5199:1:0",
"nodeType": "YulIdentifier",
"src": "5199:1:0"
},
{
"kind": "number",
"nativeSrc": "5202:13:0",
"nodeType": "YulLiteral",
"src": "5202:13:0",
"type": "",
"value": "0x10000000000"
}
],
"functionName": {
"name": "div",
"nativeSrc": "5195:3:0",
"nodeType": "YulIdentifier",
"src": "5195:3:0"
},
"nativeSrc": "5195:21:0",
"nodeType": "YulFunctionCall",
"src": "5195:21:0"
},
{
"name": "f",
"nativeSrc": "5218:1:0",
"nodeType": "YulIdentifier",
"src": "5218:1:0"
}
],
"functionName": {
"name": "and",
"nativeSrc": "5191:3:0",
"nodeType": "YulIdentifier",
"src": "5191:3:0"
},
"nativeSrc": "5191:29:0",
"nodeType": "YulFunctionCall",
"src": "5191:29:0"
},
"variableNames": [
{
"name": "f",
"nativeSrc": "5186:1:0",
"nodeType": "YulIdentifier",
"src": "5186:1:0"
}
]
},
{
"nativeSrc": "5245:91:0",
"nodeType": "YulAssignment",
"src": "5245:91:0",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "x",
"nativeSrc": "5261:1:0",
"nodeType": "YulIdentifier",
"src": "5261:1:0"
},
{
"kind": "number",
"nativeSrc": "5264:33:0",
"nodeType": "YulLiteral",
"src": "5264:33:0",
"type": "",
"value": "0x1000000000000000000000000000000"
}
],
"functionName": {
"name": "div",
"nativeSrc": "5257:3:0",
"nodeType": "YulIdentifier",
"src": "5257:3:0"
},
"nativeSrc": "5257:41:0",
"nodeType": "YulFunctionCall",
"src": "5257:41:0"
},
{
"arguments": [
{
"name": "x",
"nativeSrc": "5304:1:0",
"nodeType": "YulIdentifier",
"src": "5304:1:0"
},
{
"kind": "number",
"nativeSrc": "5307:23:0",
"nodeType": "YulLiteral",
"src": "5307:23:0",
"type": "",
"value": "0x100000000000000000000"
}
],
"functionName": {
"name": "div",
"nativeSrc": "5300:3:0",
"nodeType": "YulIdentifier",
"src": "5300:3:0"
},
"nativeSrc": "5300:31:0",
"nodeType": "YulFunctionCall",
"src": "5300:31:0"
}
],
"functionName": {
"name": "and",
"nativeSrc": "5253:3:0",
"nodeType": "YulIdentifier",
"src": "5253:3:0"
},
"nativeSrc": "5253:79:0",
"nodeType": "YulFunctionCall",
"src": "5253:79:0"
},
{
"name": "f",
"nativeSrc": "5334:1:0",
"nodeType": "YulIdentifier",
"src": "5334:1:0"
}
],
"functionName": {
"name": "or",
"nativeSrc": "5250:2:0",
"nodeType": "YulIdentifier",
"src": "5250:2:0"
},
"nativeSrc": "5250:86:0",
"nodeType": "YulFunctionCall",
"src": "5250:86:0"
},
"variableNames": [
{
"name": "f",
"nativeSrc": "5245:1:0",
"nodeType": "YulIdentifier",
"src": "5245:1:0"
}
]
},
{
"nativeSrc": "5361:15:0",
"nodeType": "YulAssignment",
"src": "5361:15:0",
"value": {
"kind": "number",
"nativeSrc": "5366:10:0",
"nodeType": "YulLiteral",
"src": "5366:10:0",
"type": "",
"value": "0x8F1BBCDC"
},
"variableNames": [
{
"name": "k",
"nativeSrc": "5361:1:0",
"nodeType": "YulIdentifier",
"src": "5361:1:0"
}
]
}
]
},
"nativeSrc": "4984:414:0",
"nodeType": "YulCase",
"src": "4984:414:0",
"value": {
"kind": "number",
"nativeSrc": "4989:1:0",
"nodeType": "YulLiteral",
"src": "4989:1:0",
"type": "",
"value": "2"
}
},
{
"body": {
"nativeSrc": "5426:276:0",
"nodeType": "YulBlock",
"src": "5426:276:0",
"statements": [
{
"nativeSrc": "5497:84:0",
"nodeType": "YulAssignment",
"src": "5497:84:0",
"value": {
"arguments": [
{
"arguments": [
{
"name": "x",
"nativeSrc": "5510:1:0",
"nodeType": "YulIdentifier",
"src": "5510:1:0"
},
{
"kind": "number",
"nativeSrc": "5513:33:0",
"nodeType": "YulLiteral",
"src": "5513:33:0",
"type": "",
"value": "0x1000000000000000000000000000000"
}
],
"functionName": {
"name": "div",
"nativeSrc": "5506:3:0",
"nodeType": "YulIdentifier",
"src": "5506:3:0"
},
"nativeSrc": "5506:41:0",
"nodeType": "YulFunctionCall",
"src": "5506:41:0"
},
{
"arguments": [
{
"name": "x",
"nativeSrc": "5553:1:0",
"nodeType": "YulIdentifier",
"src": "5553:1:0"
},
{
"kind": "number",
"nativeSrc": "5556:23:0",
"nodeType": "YulLiteral",
"src": "5556:23:0",
"type": "",
"value": "0x100000000000000000000"
}
],
"functionName": {
"name": "div",
"nativeSrc": "5549:3:0",
"nodeType": "YulIdentifier",
"src": "5549:3:0"
},
"nativeSrc": "5549:31:0",
"nodeType": "YulFunctionCall",
"src": "5549:31:0"
}
],
"functionName": {
"name": "xor",
"nativeSrc": "5502:3:0",
"nodeType": "YulIdentifier",
"src": "5502:3:0"
},
"nativeSrc": "5502:79:0",
"nodeType": "YulFunctionCall",
"src": "5502:79:0"
},
"variableNames": [
{
"name": "f",
"nativeSrc": "5497:1:0",
"nodeType": "YulIdentifier",
"src": "5497:1:0"
}
]
},
{
"nativeSrc": "5606:34:0",
"nodeType": "YulAssignment",
"src": "5606:34:0",
"value": {
"arguments": [
{
"arguments": [
{
"name": "x",
"nativeSrc": "5619:1:0",
"nodeType": "YulIdentifier",
"src": "5619:1:0"
},
{
"kind": "number",
"nativeSrc": "5622:13:0",
"nodeType": "YulLiteral",
"src": "5622:13:0",
"type": "",
"value": "0x10000000000"
}
],
"functionName": {
"name": "div",
"nativeSrc": "5615:3:0",
"nodeType": "YulIdentifier",
"src": "5615:3:0"
},
"nativeSrc": "5615:21:0",
"nodeType": "YulFunctionCall",
"src": "5615:21:0"
},
{
"name": "f",
"nativeSrc": "5638:1:0",
"nodeType": "YulIdentifier",
"src": "5638:1:0"
}
],
"functionName": {
"name": "xor",
"nativeSrc": "5611:3:0",
"nodeType": "YulIdentifier",
"src": "5611:3:0"
},
"nativeSrc": "5611:29:0",
"nodeType": "YulFunctionCall",
"src": "5611:29:0"
},
"variableNames": [
{
"name": "f",
"nativeSrc": "5606:1:0",
"nodeType": "YulIdentifier",
"src": "5606:1:0"
}
]
},
{
"nativeSrc": "5665:15:0",
"nodeType": "YulAssignment",
"src": "5665:15:0",
"value": {
"kind": "number",
"nativeSrc": "5670:10:0",
"nodeType": "YulLiteral",
"src": "5670:10:0",
"type": "",
"value": "0xCA62C1D6"
},
"variableNames": [
{
"name": "k",
"nativeSrc": "5665:1:0",
"nodeType": "YulIdentifier",
"src": "5665:1:0"
}
]
}
]
},
"nativeSrc": "5419:283:0",
"nodeType": "YulCase",
"src": "5419:283:0",
"value": {
"kind": "number",
"nativeSrc": "5424:1:0",
"nodeType": "YulLiteral",
"src": "5424:1:0",
"type": "",
"value": "3"
}
}
],
"expression": {
"arguments": [
{
"name": "j",
"nativeSrc": "4281:1:0",
"nodeType": "YulIdentifier",
"src": "4281:1:0"
},
{
"kind": "number",
"nativeSrc": "4284:2:0",
"nodeType": "YulLiteral",
"src": "4284:2:0",
"type": "",
"value": "20"
}
],
"functionName": {
"name": "div",
"nativeSrc": "4277:3:0",
"nodeType": "YulIdentifier",
"src": "4277:3:0"
},
"nativeSrc": "4277:10:0",
"nodeType": "YulFunctionCall",
"src": "4277:10:0"
},
"nativeSrc": "4270:1432:0",
"nodeType": "YulSwitch",
"src": "4270:1432:0"
},
{
"nativeSrc": "5789:80:0",
"nodeType": "YulVariableDeclaration",
"src": "5789:80:0",
"value": {
"arguments": [
{
"arguments": [
{
"name": "x",
"nativeSrc": "5809:1:0",
"nodeType": "YulIdentifier",
"src": "5809:1:0"
},
{
"kind": "number",
"nativeSrc": "5812:49:0",
"nodeType": "YulLiteral",
"src": "5812:49:0",
"type": "",
"value": "0x80000000000000000000000000000000000000000000000"
}
],
"functionName": {
"name": "div",
"nativeSrc": "5805:3:0",
"nodeType": "YulIdentifier",
"src": "5805:3:0"
},
"nativeSrc": "5805:57:0",
"nodeType": "YulFunctionCall",
"src": "5805:57:0"
},
{
"kind": "number",
"nativeSrc": "5864:4:0",
"nodeType": "YulLiteral",
"src": "5864:4:0",
"type": "",
"value": "0x1F"
}
],
"functionName": {
"name": "and",
"nativeSrc": "5801:3:0",
"nodeType": "YulIdentifier",
"src": "5801:3:0"
},
"nativeSrc": "5801:68:0",
"nodeType": "YulFunctionCall",
"src": "5801:68:0"
},
"variables": [
{
"name": "temp",
"nativeSrc": "5793:4:0",
"nodeType": "YulTypedName",
"src": "5793:4:0",
"type": ""
}
]
},
{
"nativeSrc": "5890:84:0",
"nodeType": "YulAssignment",
"src": "5890:84:0",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "x",
"nativeSrc": "5909:1:0",
"nodeType": "YulIdentifier",
"src": "5909:1:0"
},
{
"kind": "number",
"nativeSrc": "5912:41:0",
"nodeType": "YulLiteral",
"src": "5912:41:0",
"type": "",
"value": "0x800000000000000000000000000000000000000"
}
],
"functionName": {
"name": "div",
"nativeSrc": "5905:3:0",
"nodeType": "YulIdentifier",
"src": "5905:3:0"
},
"nativeSrc": "5905:49:0",
"nodeType": "YulFunctionCall",
"src": "5905:49:0"
},
{
"kind": "number",
"nativeSrc": "5956:10:0",
"nodeType": "YulLiteral",
"src": "5956:10:0",
"type": "",
"value": "0xFFFFFFE0"
}
],
"functionName": {
"name": "and",
"nativeSrc": "5901:3:0",
"nodeType": "YulIdentifier",
"src": "5901:3:0"
},
"nativeSrc": "5901:66:0",
"nodeType": "YulFunctionCall",
"src": "5901:66:0"
},
{
"name": "temp",
"nativeSrc": "5969:4:0",
"nodeType": "YulIdentifier",
"src": "5969:4:0"
}
],
"functionName": {
"name": "or",
"nativeSrc": "5898:2:0",
"nodeType": "YulIdentifier",
"src": "5898:2:0"
},
"nativeSrc": "5898:76:0",
"nodeType": "YulFunctionCall",
"src": "5898:76:0"
},
"variableNames": [
{
"name": "temp",
"nativeSrc": "5890:4:0",
"nodeType": "YulIdentifier",
"src": "5890:4:0"
}
]
},
{
"nativeSrc": "5995:20:0",
"nodeType": "YulAssignment",
"src": "5995:20:0",
"value": {
"arguments": [
{
"name": "f",
"nativeSrc": "6007:1:0",
"nodeType": "YulIdentifier",
"src": "6007:1:0"
},
{
"name": "temp",
"nativeSrc": "6010:4:0",
"nodeType": "YulIdentifier",
"src": "6010:4:0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "6003:3:0",
"nodeType": "YulIdentifier",
"src": "6003:3:0"
},
"nativeSrc": "6003:12:0",
"nodeType": "YulFunctionCall",
"src": "6003:12:0"
},
"variableNames": [
{
"name": "temp",
"nativeSrc": "5995:4:0",
"nodeType": "YulIdentifier",
"src": "5995:4:0"
}
]
},
{
"nativeSrc": "6036:37:0",
"nodeType": "YulAssignment",
"src": "6036:37:0",
"value": {
"arguments": [
{
"arguments": [
{
"name": "x",
"nativeSrc": "6052:1:0",
"nodeType": "YulIdentifier",
"src": "6052:1:0"
},
{
"kind": "number",
"nativeSrc": "6055:10:0",
"nodeType": "YulLiteral",
"src": "6055:10:0",
"type": "",
"value": "0xFFFFFFFF"
}
],
"functionName": {
"name": "and",
"nativeSrc": "6048:3:0",
"nodeType": "YulIdentifier",
"src": "6048:3:0"
},
"nativeSrc": "6048:18:0",
"nodeType": "YulFunctionCall",
"src": "6048:18:0"
},
{
"name": "temp",
"nativeSrc": "6068:4:0",
"nodeType": "YulIdentifier",
"src": "6068:4:0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "6044:3:0",
"nodeType": "YulIdentifier",
"src": "6044:3:0"
},
"nativeSrc": "6044:29:0",
"nodeType": "YulFunctionCall",
"src": "6044:29:0"
},
"variableNames": [
{
"name": "temp",
"nativeSrc": "6036:4:0",
"nodeType": "YulIdentifier",
"src": "6036:4:0"
}
]
},
{
"nativeSrc": "6094:20:0",
"nodeType": "YulAssignment",
"src": "6094:20:0",
"value": {
"arguments": [
{
"name": "k",
"nativeSrc": "6106:1:0",
"nodeType": "YulIdentifier",
"src": "6106:1:0"
},
{
"name": "temp",
"nativeSrc": "6109:4:0",
"nodeType": "YulIdentifier",
"src": "6109:4:0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "6102:3:0",
"nodeType": "YulIdentifier",
"src": "6102:3:0"
},
"nativeSrc": "6102:12:0",
"nodeType": "YulFunctionCall",
"src": "6102:12:0"
},
"variableNames": [
{
"name": "temp",
"nativeSrc": "6094:4:0",
"nodeType": "YulIdentifier",
"src": "6094:4:0"
}
]
},
{
"nativeSrc": "6135:115:0",
"nodeType": "YulAssignment",
"src": "6135:115:0",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "scratch",
"nativeSrc": "6161:7:0",
"nodeType": "YulIdentifier",
"src": "6161:7:0"
},
{
"arguments": [
{
"name": "j",
"nativeSrc": "6174:1:0",
"nodeType": "YulIdentifier",
"src": "6174:1:0"
},
{
"kind": "number",
"nativeSrc": "6177:1:0",
"nodeType": "YulLiteral",
"src": "6177:1:0",
"type": "",
"value": "4"
}
],
"functionName": {
"name": "mul",
"nativeSrc": "6170:3:0",
"nodeType": "YulIdentifier",
"src": "6170:3:0"
},
"nativeSrc": "6170:9:0",
"nodeType": "YulFunctionCall",
"src": "6170:9:0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "6157:3:0",
"nodeType": "YulIdentifier",
"src": "6157:3:0"
},
"nativeSrc": "6157:23:0",
"nodeType": "YulFunctionCall",
"src": "6157:23:0"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "6151:5:0",
"nodeType": "YulIdentifier",
"src": "6151:5:0"
},
"nativeSrc": "6151:30:0",
"nodeType": "YulFunctionCall",
"src": "6151:30:0"
},
{
"kind": "number",
"nativeSrc": "6183:59:0",
"nodeType": "YulLiteral",
"src": "6183:59:0",
"type": "",
"value": "0x100000000000000000000000000000000000000000000000000000000"
}
],
"functionName": {
"name": "div",
"nativeSrc": "6147:3:0",
"nodeType": "YulIdentifier",
"src": "6147:3:0"
},
"nativeSrc": "6147:96:0",
"nodeType": "YulFunctionCall",
"src": "6147:96:0"
},
{
"name": "temp",
"nativeSrc": "6245:4:0",
"nodeType": "YulIdentifier",
"src": "6245:4:0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "6143:3:0",
"nodeType": "YulIdentifier",
"src": "6143:3:0"
},
"nativeSrc": "6143:107:0",
"nodeType": "YulFunctionCall",
"src": "6143:107:0"
},
"variableNames": [
{
"name": "temp",
"nativeSrc": "6135:4:0",
"nodeType": "YulIdentifier",
"src": "6135:4:0"
}
]
},
{
"nativeSrc": "6271:86:0",
"nodeType": "YulAssignment",
"src": "6271:86:0",
"value": {
"arguments": [
{
"arguments": [
{
"name": "x",
"nativeSrc": "6283:1:0",
"nodeType": "YulIdentifier",
"src": "6283:1:0"
},
{
"kind": "number",
"nativeSrc": "6286:13:0",
"nodeType": "YulLiteral",
"src": "6286:13:0",
"type": "",
"value": "0x10000000000"
}
],
"functionName": {
"name": "div",
"nativeSrc": "6279:3:0",
"nodeType": "YulIdentifier",
"src": "6279:3:0"
},
"nativeSrc": "6279:21:0",
"nodeType": "YulFunctionCall",
"src": "6279:21:0"
},
{
"arguments": [
{
"name": "temp",
"nativeSrc": "6306:4:0",
"nodeType": "YulIdentifier",
"src": "6306:4:0"
},
{
"kind": "number",
"nativeSrc": "6312:43:0",
"nodeType": "YulLiteral",
"src": "6312:43:0",
"type": "",
"value": "0x10000000000000000000000000000000000000000"
}
],
"functionName": {
"name": "mul",
"nativeSrc": "6302:3:0",
"nodeType": "YulIdentifier",
"src": "6302:3:0"
},
"nativeSrc": "6302:54:0",
"nodeType": "YulFunctionCall",
"src": "6302:54:0"
}
],
"functionName": {
"name": "or",
"nativeSrc": "6276:2:0",
"nodeType": "YulIdentifier",
"src": "6276:2:0"
},
"nativeSrc": "6276:81:0",
"nodeType": "YulFunctionCall",
"src": "6276:81:0"
},
"variableNames": [
{
"name": "x",
"nativeSrc": "6271:1:0",
"nodeType": "YulIdentifier",
"src": "6271:1:0"
}
]
},
{
"nativeSrc": "6378:193:0",
"nodeType": "YulAssignment",
"src": "6378:193:0",
"value": {
"arguments": [
{
"arguments": [
{
"name": "x",
"nativeSrc": "6390:1:0",
"nodeType": "YulIdentifier",
"src": "6390:1:0"
},
{
"kind": "number",
"nativeSrc": "6393:50:0",
"nodeType": "YulLiteral",
"src": "6393:50:0",
"type": "",
"value": "0xFFFFFFFF00FFFFFFFF000000000000FFFFFFFF00FFFFFFFF"
}
],
"functionName": {
"name": "and",
"nativeSrc": "6386:3:0",
"nodeType": "YulIdentifier",
"src": "6386:3:0"
},
"nativeSrc": "6386:58:0",
"nodeType": "YulFunctionCall",
"src": "6386:58:0"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "x",
"nativeSrc": "6461:1:0",
"nodeType": "YulIdentifier",
"src": "6461:1:0"
},
{
"kind": "number",
"nativeSrc": "6464:15:0",
"nodeType": "YulLiteral",
"src": "6464:15:0",
"type": "",
"value": "0x4000000000000"
}
],
"functionName": {
"name": "div",
"nativeSrc": "6457:3:0",
"nodeType": "YulIdentifier",
"src": "6457:3:0"
},
"nativeSrc": "6457:23:0",
"nodeType": "YulFunctionCall",
"src": "6457:23:0"
},
{
"kind": "number",
"nativeSrc": "6482:10:0",
"nodeType": "YulLiteral",
"src": "6482:10:0",
"type": "",
"value": "0xC0000000"
}
],
"functionName": {
"name": "and",
"nativeSrc": "6453:3:0",
"nodeType": "YulIdentifier",
"src": "6453:3:0"
},
"nativeSrc": "6453:40:0",
"nodeType": "YulFunctionCall",
"src": "6453:40:0"
},
{
"arguments": [
{
"arguments": [
{
"name": "x",
"nativeSrc": "6503:1:0",
"nodeType": "YulIdentifier",
"src": "6503:1:0"
},
{
"kind": "number",
"nativeSrc": "6506:23:0",
"nodeType": "YulLiteral",
"src": "6506:23:0",
"type": "",
"value": "0x400000000000000000000"
}
],
"functionName": {
"name": "div",
"nativeSrc": "6499:3:0",
"nodeType": "YulIdentifier",
"src": "6499:3:0"
},
"nativeSrc": "6499:31:0",
"nodeType": "YulFunctionCall",
"src": "6499:31:0"
},
{
"kind": "number",
"nativeSrc": "6532:10:0",
"nodeType": "YulLiteral",
"src": "6532:10:0",
"type": "",
"value": "0x3FFFFFFF"
}
],
"functionName": {
"name": "and",
"nativeSrc": "6495:3:0",
"nodeType": "YulIdentifier",
"src": "6495:3:0"
},
"nativeSrc": "6495:48:0",
"nodeType": "YulFunctionCall",
"src": "6495:48:0"
}
],
"functionName": {
"name": "or",
"nativeSrc": "6450:2:0",
"nodeType": "YulIdentifier",
"src": "6450:2:0"
},
"nativeSrc": "6450:94:0",
"nodeType": "YulFunctionCall",
"src": "6450:94:0"
},
{
"kind": "number",
"nativeSrc": "6546:23:0",
"nodeType": "YulLiteral",
"src": "6546:23:0",
"type": "",
"value": "0x100000000000000000000"
}
],
"functionName": {
"name": "mul",
"nativeSrc": "6446:3:0",
"nodeType": "YulIdentifier",
"src": "6446:3:0"
},
"nativeSrc": "6446:124:0",
"nodeType": "YulFunctionCall",
"src": "6446:124:0"
}
],
"functionName": {
"name": "or",
"nativeSrc": "6383:2:0",
"nodeType": "YulIdentifier",
"src": "6383:2:0"
},
"nativeSrc": "6383:188:0",
"nodeType": "YulFunctionCall",
"src": "6383:188:0"
},
"variableNames": [
{
"name": "x",
"nativeSrc": "6378:1:0",
"nodeType": "YulIdentifier",
"src": "6378:1:0"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "j",
"nativeSrc": "4222:1:0",
"nodeType": "YulIdentifier",
"src": "4222:1:0"
},
{
"kind": "number",
"nativeSrc": "4225:2:0",
"nodeType": "YulLiteral",
"src": "4225:2:0",
"type": "",
"value": "80"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "4219:2:0",
"nodeType": "YulIdentifier",
"src": "4219:2:0"
},
"nativeSrc": "4219:9:0",
"nodeType": "YulFunctionCall",
"src": "4219:9:0"
},
"nativeSrc": "4200:2389:0",
"nodeType": "YulForLoop",
"post": {
"nativeSrc": "4229:18:0",
"nodeType": "YulBlock",
"src": "4229:18:0",
"statements": [
{
"nativeSrc": "4231:14:0",
"nodeType": "YulAssignment",
"src": "4231:14:0",
"value": {
"arguments": [
{
"name": "j",
"nativeSrc": "4240:1:0",
"nodeType": "YulIdentifier",
"src": "4240:1:0"
},
{
"kind": "number",
"nativeSrc": "4243:1:0",
"nodeType": "YulLiteral",
"src": "4243:1:0",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4236:3:0",
"nodeType": "YulIdentifier",
"src": "4236:3:0"
},
"nativeSrc": "4236:9:0",
"nodeType": "YulFunctionCall",
"src": "4236:9:0"
},
"variableNames": [
{
"name": "j",
"nativeSrc": "4231:1:0",
"nodeType": "YulIdentifier",
"src": "4231:1:0"
}
]
}
]
},
"pre": {
"nativeSrc": "4204:14:0",
"nodeType": "YulBlock",
"src": "4204:14:0",
"statements": [
{
"nativeSrc": "4206:10:0",
"nodeType": "YulVariableDeclaration",
"src": "4206:10:0",
"value": {
"kind": "number",
"nativeSrc": "4215:1:0",
"nodeType": "YulLiteral",
"src": "4215:1:0",
"type": "",
"value": "0"
},
"variables": [
{
"name": "j",
"nativeSrc": "4210:1:0",
"nodeType": "YulTypedName",
"src": "4210:1:0",
"type": ""
}
]
}
]
},
"src": "4200:2389:0"
},
{
"nativeSrc": "6607:71:0",
"nodeType": "YulAssignment",
"src": "6607:71:0",
"value": {
"arguments": [
{
"arguments": [
{
"name": "h",
"nativeSrc": "6620:1:0",
"nodeType": "YulIdentifier",
"src": "6620:1:0"
},
{
"name": "x",
"nativeSrc": "6623:1:0",
"nodeType": "YulIdentifier",
"src": "6623:1:0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "6616:3:0",
"nodeType": "YulIdentifier",
"src": "6616:3:0"
},
"nativeSrc": "6616:9:0",
"nodeType": "YulFunctionCall",
"src": "6616:9:0"
},
{
"kind": "number",
"nativeSrc": "6627:50:0",
"nodeType": "YulLiteral",
"src": "6627:50:0",
"type": "",
"value": "0xFFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF"
}
],
"functionName": {
"name": "and",
"nativeSrc": "6612:3:0",
"nodeType": "YulIdentifier",
"src": "6612:3:0"
},
"nativeSrc": "6612:66:0",
"nodeType": "YulFunctionCall",
"src": "6612:66:0"
},
"variableNames": [
{
"name": "h",
"nativeSrc": "6607:1:0",
"nodeType": "YulIdentifier",
"src": "6607:1:0"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nativeSrc": "2430:1:0",
"nodeType": "YulIdentifier",
"src": "2430:1:0"
},
{
"name": "totallen",
"nativeSrc": "2433:8:0",
"nodeType": "YulIdentifier",
"src": "2433:8:0"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "2427:2:0",
"nodeType": "YulIdentifier",
"src": "2427:2:0"
},
"nativeSrc": "2427:15:0",
"nodeType": "YulFunctionCall",
"src": "2427:15:0"
},
"nativeSrc": "2408:4284:0",
"nodeType": "YulForLoop",
"post": {
"nativeSrc": "2443:19:0",
"nodeType": "YulBlock",
"src": "2443:19:0",
"statements": [
{
"nativeSrc": "2445:15:0",
"nodeType": "YulAssignment",
"src": "2445:15:0",
"value": {
"arguments": [
{
"name": "i",
"nativeSrc": "2454:1:0",
"nodeType": "YulIdentifier",
"src": "2454:1:0"
},
{
"kind": "number",
"nativeSrc": "2457:2:0",
"nodeType": "YulLiteral",
"src": "2457:2:0",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2450:3:0",
"nodeType": "YulIdentifier",
"src": "2450:3:0"
},
"nativeSrc": "2450:10:0",
"nodeType": "YulFunctionCall",
"src": "2450:10:0"
},
"variableNames": [
{
"name": "i",
"nativeSrc": "2445:1:0",
"nodeType": "YulIdentifier",
"src": "2445:1:0"
}
]
}
]
},
"pre": {
"nativeSrc": "2412:14:0",
"nodeType": "YulBlock",
"src": "2412:14:0",
"statements": [
{
"nativeSrc": "2414:10:0",
"nodeType": "YulVariableDeclaration",
"src": "2414:10:0",
"value": {
"kind": "number",
"nativeSrc": "2423:1:0",
"nodeType": "YulLiteral",
"src": "2423:1:0",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nativeSrc": "2418:1:0",
"nodeType": "YulTypedName",
"src": "2418:1:0",
"type": ""
}
]
}
]
},
"src": "2408:4284:0"
},
{
"nativeSrc": "6705:295:0",
"nodeType": "YulAssignment",
"src": "6705:295:0",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "h",
"nativeSrc": "6736:1:0",
"nodeType": "YulIdentifier",
"src": "6736:1:0"
},
{
"kind": "number",
"nativeSrc": "6739:11:0",
"nodeType": "YulLiteral",
"src": "6739:11:0",
"type": "",
"value": "0x100000000"
}
],
"functionName": {
"name": "div",
"nativeSrc": "6732:3:0",
"nodeType": "YulIdentifier",
"src": "6732:3:0"
},
"nativeSrc": "6732:19:0",
"nodeType": "YulFunctionCall",
"src": "6732:19:0"
},
{
"kind": "number",
"nativeSrc": "6753:42:0",
"nodeType": "YulLiteral",
"src": "6753:42:0",
"type": "",
"value": "0xFFFFFFFF00000000000000000000000000000000"
}
],
"functionName": {
"name": "and",
"nativeSrc": "6728:3:0",
"nodeType": "YulIdentifier",
"src": "6728:3:0"
},
"nativeSrc": "6728:68:0",
"nodeType": "YulFunctionCall",
"src": "6728:68:0"
},
{
"arguments": [
{
"arguments": [
{
"name": "h",
"nativeSrc": "6806:1:0",
"nodeType": "YulIdentifier",
"src": "6806:1:0"
},
{
"kind": "number",
"nativeSrc": "6809:9:0",
"nodeType": "YulLiteral",
"src": "6809:9:0",
"type": "",
"value": "0x1000000"
}
],
"functionName": {
"name": "div",
"nativeSrc": "6802:3:0",
"nodeType": "YulIdentifier",
"src": "6802:3:0"
},
"nativeSrc": "6802:17:0",
"nodeType": "YulFunctionCall",
"src": "6802:17:0"
},
{
"kind": "number",
"nativeSrc": "6821:34:0",
"nodeType": "YulLiteral",
"src": "6821:34:0",
"type": "",
"value": "0xFFFFFFFF000000000000000000000000"
}
],
"functionName": {
"name": "and",
"nativeSrc": "6798:3:0",
"nodeType": "YulIdentifier",
"src": "6798:3:0"
},
"nativeSrc": "6798:58:0",
"nodeType": "YulFunctionCall",
"src": "6798:58:0"
}
],
"functionName": {
"name": "or",
"nativeSrc": "6725:2:0",
"nodeType": "YulIdentifier",
"src": "6725:2:0"
},
"nativeSrc": "6725:132:0",
"nodeType": "YulFunctionCall",
"src": "6725:132:0"
},
{
"arguments": [
{
"arguments": [
{
"name": "h",
"nativeSrc": "6867:1:0",
"nodeType": "YulIdentifier",
"src": "6867:1:0"
},
{
"kind": "number",
"nativeSrc": "6870:7:0",
"nodeType": "YulLiteral",
"src": "6870:7:0",
"type": "",
"value": "0x10000"
}
],
"functionName": {
"name": "div",
"nativeSrc": "6863:3:0",
"nodeType": "YulIdentifier",
"src": "6863:3:0"
},
"nativeSrc": "6863:15:0",
"nodeType": "YulFunctionCall",
"src": "6863:15:0"
},
{
"kind": "number",
"nativeSrc": "6880:26:0",
"nodeType": "YulLiteral",
"src": "6880:26:0",
"type": "",
"value": "0xFFFFFFFF0000000000000000"
}
],
"functionName": {
"name": "and",
"nativeSrc": "6859:3:0",
"nodeType": "YulIdentifier",
"src": "6859:3:0"
},
"nativeSrc": "6859:48:0",
"nodeType": "YulFunctionCall",
"src": "6859:48:0"
}
],
"functionName": {
"name": "or",
"nativeSrc": "6722:2:0",
"nodeType": "YulIdentifier",
"src": "6722:2:0"
},
"nativeSrc": "6722:186:0",
"nodeType": "YulFunctionCall",
"src": "6722:186:0"
},
{
"arguments": [
{
"arguments": [
{
"name": "h",
"nativeSrc": "6918:1:0",
"nodeType": "YulIdentifier",
"src": "6918:1:0"
},
{
"kind": "number",
"nativeSrc": "6921:5:0",
"nodeType": "YulLiteral",
"src": "6921:5:0",
"type": "",
"value": "0x100"
}
],
"functionName": {
"name": "div",
"nativeSrc": "6914:3:0",
"nodeType": "YulIdentifier",
"src": "6914:3:0"
},
"nativeSrc": "6914:13:0",
"nodeType": "YulFunctionCall",
"src": "6914:13:0"
},
{
"kind": "number",
"nativeSrc": "6929:18:0",
"nodeType": "YulLiteral",
"src": "6929:18:0",
"type": "",
"value": "0xFFFFFFFF00000000"
}
],
"functionName": {
"name": "and",
"nativeSrc": "6910:3:0",
"nodeType": "YulIdentifier",
"src": "6910:3:0"
},
"nativeSrc": "6910:38:0",
"nodeType": "YulFunctionCall",
"src": "6910:38:0"
}
],
"functionName": {
"name": "or",
"nativeSrc": "6719:2:0",
"nodeType": "YulIdentifier",
"src": "6719:2:0"
},
"nativeSrc": "6719:230:0",
"nodeType": "YulFunctionCall",
"src": "6719:230:0"
},
{
"arguments": [
{
"name": "h",
"nativeSrc": "6955:1:0",
"nodeType": "YulIdentifier",
"src": "6955:1:0"
},
{
"kind": "number",
"nativeSrc": "6958:10:0",
"nodeType": "YulLiteral",
"src": "6958:10:0",
"type": "",
"value": "0xFFFFFFFF"
}
],
"functionName": {
"name": "and",
"nativeSrc": "6951:3:0",
"nodeType": "YulIdentifier",
"src": "6951:3:0"
},
"nativeSrc": "6951:18:0",
"nodeType": "YulFunctionCall",
"src": "6951:18:0"
}
],
"functionName": {
"name": "or",
"nativeSrc": "6716:2:0",
"nodeType": "YulIdentifier",
"src": "6716:2:0"
},
"nativeSrc": "6716:254:0",
"nodeType": "YulFunctionCall",
"src": "6716:254:0"
},
{
"kind": "number",
"nativeSrc": "6972:27:0",
"nodeType": "YulLiteral",
"src": "6972:27:0",
"type": "",
"value": "0x1000000000000000000000000"
}
],
"functionName": {
"name": "mul",
"nativeSrc": "6712:3:0",
"nodeType": "YulIdentifier",
"src": "6712:3:0"
},
"nativeSrc": "6712:288:0",
"nodeType": "YulFunctionCall",
"src": "6712:288:0"
},
"variableNames": [
{
"name": "ret",
"nativeSrc": "6705:3:0",
"nodeType": "YulIdentifier",
"src": "6705:3:0"
}
]
}
]
},
"evmVersion": "cancun",
"externalReferences": [
{
"declaration": 7,
"isOffset": false,
"isSlot": false,
"src": "1625:4:0",
"valueSize": 1
},
{
"declaration": 7,
"isOffset": false,
"isSlot": false,
"src": "1643:4:0",
"valueSize": 1
},
{
"declaration": 7,
"isOffset": false,
"isSlot": false,
"src": "1655:4:0",
"valueSize": 1
},
{
"declaration": 7,
"isOffset": false,
"isSlot": false,
"src": "2506:4:0",
"valueSize": 1
},
{
"declaration": 7,
"isOffset": false,
"isSlot": false,
"src": "2571:4:0",
"valueSize": 1
},
{
"declaration": 10,
"isOffset": false,
"isSlot": false,
"src": "6705:3:0",
"valueSize": 1
}
],
"id": 12,
"nodeType": "InlineAssembly",
"src": "1433:5577:0"
}
]
},
"id": 14,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "sha1",
"nameLocation": "1364:4:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 8,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 7,
"mutability": "mutable",
"name": "data",
"nameLocation": "1382:4:0",
"nodeType": "VariableDeclaration",
"scope": 14,
"src": "1369:17:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 6,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "1369:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "1368:19:0"
},
"returnParameters": {
"id": 11,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10,
"mutability": "mutable",
"name": "ret",
"nameLocation": "1418:3:0",
"nodeType": "VariableDeclaration",
"scope": 14,
"src": "1410:11:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes20",
"typeString": "bytes20"
},
"typeName": {
"id": 9,
"name": "bytes20",
"nodeType": "ElementaryTypeName",
"src": "1410:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes20",
"typeString": "bytes20"
}
},
"visibility": "internal"
}
],
"src": "1409:13:0"
},
"scope": 15,
"src": "1355:5661:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
}
],
"scope": 16,
"src": "1307:5711:0",
"usedErrors": [],
"usedEvents": [
5
]
}
],
"src": "1282:5737:0"
},
"id": 0
}
}
}
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"goerli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220bf253c854f4da65f4295bebd7d8d474409dd54ab811c5127dd5531c18e9f3d8864736f6c634300081a0033",
"opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF 0x25 EXTCODECOPY DUP6 0x4F 0x4D 0xA6 PUSH0 TIMESTAMP SWAP6 0xBE 0xBD PUSH30 0x8D474409DD54AB811C5127DD5531C18E9F3D8864736F6C634300081A0033 ",
"sourceMap": "1307:5711:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220bf253c854f4da65f4295bebd7d8d474409dd54ab811c5127dd5531c18e9f3d8864736f6c634300081a0033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF 0x25 EXTCODECOPY DUP6 0x4F 0x4D 0xA6 PUSH0 TIMESTAMP SWAP6 0xBE 0xBD PUSH30 0x8D474409DD54AB811C5127DD5531C18E9F3D8864736F6C634300081A0033 ",
"sourceMap": "1307:5711:0:-:0;;;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17000",
"executionCost": "92",
"totalCost": "17092"
},
"internal": {
"sha1(bytes memory)": "infinite"
}
},
"methodIdentifiers": {}
},
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
}
],
"name": "Debug",
"type": "event"
}
]
}
{
"compiler": {
"version": "0.8.26+commit.8a97fa7a"
},
"language": "Solidity",
"output": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
}
],
"name": "Debug",
"type": "event"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"Ethereum-Name-Service//@ensdomains/solsha1/contracts/SHA1.sol": "SHA1"
},
"evmVersion": "cancun",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"Ethereum-Name-Service//@ensdomains/solsha1/contracts/SHA1.sol": {
"keccak256": "0x83e604d93233d85b6e6e44d4e73e2f3945c0005ccf9fcb1aa7745739cda1717b",
"urls": [
"bzz-raw://621aa27600d4aa38d5814162d9b39798fef8b42b7c87134643780ab40d44400b",
"dweb:/ipfs/QmbZGWQG39bhNgkSDQNuxwPdpnMgZbp9LpPwd6ap2Xhf7T"
]
}
},
"version": 1
}
/*
██████ ██████ ██████ ██ ██ ██████ ██████ ██████ ██ ██ ██████ ███████ ██ ██
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██ ██ ██ █████ ██████ ██ ██ ██ ██ █████ ██ ██ █████ ██ ██
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██████ ██████ ██████ ██ ██ ██████ ██████ ██████ ██ ██ ██ ██████ ███████ ████
Find any smart contract, and build your project faster: https://www.cookbook.dev
Twitter: https://twitter.com/cookbook_dev
Discord: https://discord.gg/cookbookdev
Find this contract on Cookbook: https://www.cookbook.dev/protocols/Ethereum-Name-Service?utm=code
*/
pragma solidity ^0.8.4;
library SHA1 {
event Debug(bytes32 x);
function sha1(bytes memory data) internal pure returns(bytes20 ret) {
assembly {
// Get a safe scratch location
let scratch := mload(0x40)
// Get the data length, and point data at the first byte
let len := mload(data)
data := add(data, 32)
// Find the length after padding
let totallen := add(and(add(len, 1), 0xFFFFFFFFFFFFFFC0), 64)
switch lt(sub(totallen, len), 9)
case 1 { totallen := add(totallen, 64) }
let h := 0x6745230100EFCDAB890098BADCFE001032547600C3D2E1F0
function readword(ptr, off, count) -> result {
result := 0
if lt(off, count) {
result := mload(add(ptr, off))
count := sub(count, off)
if lt(count, 32) {
let mask := not(sub(exp(256, sub(32, count)), 1))
result := and(result, mask)
}
}
}
for { let i := 0 } lt(i, totallen) { i := add(i, 64) } {
mstore(scratch, readword(data, i, len))
mstore(add(scratch, 32), readword(data, add(i, 32), len))
// If we loaded the last byte, store the terminator byte
switch lt(sub(len, i), 64)
case 1 { mstore8(add(scratch, sub(len, i)), 0x80) }
// If this is the last block, store the length
switch eq(i, sub(totallen, 64))
case 1 { mstore(add(scratch, 32), or(mload(add(scratch, 32)), mul(len, 8))) }
// Expand the 16 32-bit words into 80
for { let j := 64 } lt(j, 128) { j := add(j, 12) } {
let temp := xor(xor(mload(add(scratch, sub(j, 12))), mload(add(scratch, sub(j, 32)))), xor(mload(add(scratch, sub(j, 56))), mload(add(scratch, sub(j, 64)))))
temp := or(and(mul(temp, 2), 0xFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFE), and(div(temp, 0x80000000), 0x0000000100000001000000010000000100000001000000010000000100000001))
mstore(add(scratch, j), temp)
}
for { let j := 128 } lt(j, 320) { j := add(j, 24) } {
let temp := xor(xor(mload(add(scratch, sub(j, 24))), mload(add(scratch, sub(j, 64)))), xor(mload(add(scratch, sub(j, 112))), mload(add(scratch, sub(j, 128)))))
temp := or(and(mul(temp, 4), 0xFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC), and(div(temp, 0x40000000), 0x0000000300000003000000030000000300000003000000030000000300000003))
mstore(add(scratch, j), temp)
}
let x := h
let f := 0
let k := 0
for { let j := 0 } lt(j, 80) { j := add(j, 1) } {
switch div(j, 20)
case 0 {
// f = d xor (b and (c xor d))
f := xor(div(x, 0x100000000000000000000), div(x, 0x10000000000))
f := and(div(x, 0x1000000000000000000000000000000), f)
f := xor(div(x, 0x10000000000), f)
k := 0x5A827999
}
case 1{
// f = b xor c xor d
f := xor(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000))
f := xor(div(x, 0x10000000000), f)
k := 0x6ED9EBA1
}
case 2 {
// f = (b and c) or (d and (b or c))
f := or(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000))
f := and(div(x, 0x10000000000), f)
f := or(and(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000)), f)
k := 0x8F1BBCDC
}
case 3 {
// f = b xor c xor d
f := xor(div(x, 0x1000000000000000000000000000000), div(x, 0x100000000000000000000))
f := xor(div(x, 0x10000000000), f)
k := 0xCA62C1D6
}
// temp = (a leftrotate 5) + f + e + k + w[i]
let temp := and(div(x, 0x80000000000000000000000000000000000000000000000), 0x1F)
temp := or(and(div(x, 0x800000000000000000000000000000000000000), 0xFFFFFFE0), temp)
temp := add(f, temp)
temp := add(and(x, 0xFFFFFFFF), temp)
temp := add(k, temp)
temp := add(div(mload(add(scratch, mul(j, 4))), 0x100000000000000000000000000000000000000000000000000000000), temp)
x := or(div(x, 0x10000000000), mul(temp, 0x10000000000000000000000000000000000000000))
x := or(and(x, 0xFFFFFFFF00FFFFFFFF000000000000FFFFFFFF00FFFFFFFF), mul(or(and(div(x, 0x4000000000000), 0xC0000000), and(div(x, 0x400000000000000000000), 0x3FFFFFFF)), 0x100000000000000000000))
}
h := and(add(h, x), 0xFFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFFFF)
}
ret := mul(or(or(or(or(and(div(h, 0x100000000), 0xFFFFFFFF00000000000000000000000000000000), and(div(h, 0x1000000), 0xFFFFFFFF000000000000000000000000)), and(div(h, 0x10000), 0xFFFFFFFF0000000000000000)), and(div(h, 0x100), 0xFFFFFFFF00000000)), and(h, 0xFFFFFFFF)), 0x1000000000000000000000000)
}
}
}
/*
██████ ██████ ██████ ██ ██ ██████ ██████ ██████ ██ ██ ██████ ███████ ██ ██
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██ ██ ██ █████ ██████ ██ ██ ██ ██ █████ ██ ██ █████ ██ ██
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██████ ██████ ██████ ██ ██ ██████ ██████ ██████ ██ ██ ██ ██████ ███████ ████
Find any smart contract, and build your project faster: https://www.cookbook.dev
Twitter: https://twitter.com/cookbook_dev
Discord: https://discord.gg/cookbookdev
Find this contract on Cookbook: https://www.cookbook.dev/protocols/Ethereum-Name-Service?utm=code
*/
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
This file has been truncated, but you can view the full file.
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"goerli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_23": {
"entryPoint": null,
"id": 23,
"parameterSlots": 0,
"returnSlots": 0
},
"@_msgSender_124": {
"entryPoint": 49,
"id": 124,
"parameterSlots": 0,
"returnSlots": 1
},
"@_transferOwnership_111": {
"entryPoint": 56,
"id": 111,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561000f575f80fd5b5061002c61002161003160201b60201c565b61003860201b60201c565b6100f9565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b610476806101065f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c8063715018a6146100435780638da5cb5b1461004d578063f2fde38b1461006b575b5f80fd5b61004b610087565b005b61005561009a565b60405161006291906102c8565b60405180910390f35b6100856004803603810190610080919061030f565b6100c1565b005b61008f610143565b6100985f6101c1565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6100c9610143565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012e906103ba565b60405180910390fd5b610140816101c1565b50565b61014b610282565b73ffffffffffffffffffffffffffffffffffffffff1661016961009a565b73ffffffffffffffffffffffffffffffffffffffff16146101bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101b690610422565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102b282610289565b9050919050565b6102c2816102a8565b82525050565b5f6020820190506102db5f8301846102b9565b92915050565b5f80fd5b6102ee816102a8565b81146102f8575f80fd5b50565b5f81359050610309816102e5565b92915050565b5f60208284031215610324576103236102e1565b5b5f610331848285016102fb565b91505092915050565b5f82825260208201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6103a460268361033a565b91506103af8261034a565b604082019050919050565b5f6020820190508181035f8301526103d181610398565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61040c60208361033a565b9150610417826103d8565b602082019050919050565b5f6020820190508181035f83015261043981610400565b905091905056fea264697066735822122065424da729bd935e4930a967e8543cb98358aaaead29e1db911c6bec13dc651264736f6c634300081a0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C PUSH2 0x21 PUSH2 0x31 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x38 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0xF9 JUMP JUMPDEST PUSH0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x476 DUP1 PUSH2 0x106 PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 EQ PUSH2 0x43 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x4D JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x6B JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x4B PUSH2 0x87 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x55 PUSH2 0x9A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x62 SWAP2 SWAP1 PUSH2 0x2C8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x85 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x80 SWAP2 SWAP1 PUSH2 0x30F JUMP JUMPDEST PUSH2 0xC1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x8F PUSH2 0x143 JUMP JUMPDEST PUSH2 0x98 PUSH0 PUSH2 0x1C1 JUMP JUMPDEST JUMP JUMPDEST PUSH0 DUP1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xC9 PUSH2 0x143 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x137 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12E SWAP1 PUSH2 0x3BA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x140 DUP2 PUSH2 0x1C1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x14B PUSH2 0x282 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x169 PUSH2 0x9A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1BF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B6 SWAP1 PUSH2 0x422 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH0 DUP1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x2B2 DUP3 PUSH2 0x289 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2C2 DUP2 PUSH2 0x2A8 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2DB PUSH0 DUP4 ADD DUP5 PUSH2 0x2B9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x2EE DUP2 PUSH2 0x2A8 JUMP JUMPDEST DUP2 EQ PUSH2 0x2F8 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x309 DUP2 PUSH2 0x2E5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x324 JUMPI PUSH2 0x323 PUSH2 0x2E1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x331 DUP5 DUP3 DUP6 ADD PUSH2 0x2FB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x3A4 PUSH1 0x26 DUP4 PUSH2 0x33A JUMP JUMPDEST SWAP2 POP PUSH2 0x3AF DUP3 PUSH2 0x34A JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x3D1 DUP2 PUSH2 0x398 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x40C PUSH1 0x20 DUP4 PUSH2 0x33A JUMP JUMPDEST SWAP2 POP PUSH2 0x417 DUP3 PUSH2 0x3D8 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x439 DUP2 PUSH2 0x400 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH6 0x424DA729BD93 MCOPY BLOBHASH ADDRESS 0xA9 PUSH8 0xE8543CB98358AAAE 0xAD 0x29 0xE1 0xDB SWAP2 SHR PUSH12 0xEC13DC651264736F6C634300 ADDMOD BYTE STOP CALLER ",
"sourceMap": "1937:1959:0:-:0;;;2186:63;;;;;;;;;;2210:32;2229:12;:10;;;:12;;:::i;:::-;2210:18;;;:32;;:::i;:::-;1937:1959;;1922:96:1;1975:7;2001:10;1994:17;;1922:96;:::o;3707:187:0:-;3780:16;3799:6;;;;;;;;;;;3780:25;;3824:8;3815:6;;:17;;;;;;;;;;;;;;;;;;3878:8;3847:40;;3868:8;3847:40;;;;;;;;;;;;3770:124;3707:187;:::o;1937:1959::-;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@_checkOwner_54": {
"entryPoint": 323,
"id": 54,
"parameterSlots": 0,
"returnSlots": 0
},
"@_msgSender_124": {
"entryPoint": 642,
"id": 124,
"parameterSlots": 0,
"returnSlots": 1
},
"@_transferOwnership_111": {
"entryPoint": 449,
"id": 111,
"parameterSlots": 1,
"returnSlots": 0
},
"@owner_40": {
"entryPoint": 154,
"id": 40,
"parameterSlots": 0,
"returnSlots": 1
},
"@renounceOwnership_68": {
"entryPoint": 135,
"id": 68,
"parameterSlots": 0,
"returnSlots": 0
},
"@transferOwnership_91": {
"entryPoint": 193,
"id": 91,
"parameterSlots": 1,
"returnSlots": 0
},
"abi_decode_t_address": {
"entryPoint": 763,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_address": {
"entryPoint": 783,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 697,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack": {
"entryPoint": 920,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack": {
"entryPoint": 1024,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 712,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 954,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 1058,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_fromStack": {
"entryPoint": 826,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 680,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 649,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 737,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe": {
"entryPoint": 842,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe": {
"entryPoint": 984,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_address": {
"entryPoint": 741,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nativeSrc": "0:3713:2",
"nodeType": "YulBlock",
"src": "0:3713:2",
"statements": [
{
"body": {
"nativeSrc": "52:81:2",
"nodeType": "YulBlock",
"src": "52:81:2",
"statements": [
{
"nativeSrc": "62:65:2",
"nodeType": "YulAssignment",
"src": "62:65:2",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "77:5:2",
"nodeType": "YulIdentifier",
"src": "77:5:2"
},
{
"kind": "number",
"nativeSrc": "84:42:2",
"nodeType": "YulLiteral",
"src": "84:42:2",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nativeSrc": "73:3:2",
"nodeType": "YulIdentifier",
"src": "73:3:2"
},
"nativeSrc": "73:54:2",
"nodeType": "YulFunctionCall",
"src": "73:54:2"
},
"variableNames": [
{
"name": "cleaned",
"nativeSrc": "62:7:2",
"nodeType": "YulIdentifier",
"src": "62:7:2"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nativeSrc": "7:126:2",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "34:5:2",
"nodeType": "YulTypedName",
"src": "34:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nativeSrc": "44:7:2",
"nodeType": "YulTypedName",
"src": "44:7:2",
"type": ""
}
],
"src": "7:126:2"
},
{
"body": {
"nativeSrc": "184:51:2",
"nodeType": "YulBlock",
"src": "184:51:2",
"statements": [
{
"nativeSrc": "194:35:2",
"nodeType": "YulAssignment",
"src": "194:35:2",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "223:5:2",
"nodeType": "YulIdentifier",
"src": "223:5:2"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nativeSrc": "205:17:2",
"nodeType": "YulIdentifier",
"src": "205:17:2"
},
"nativeSrc": "205:24:2",
"nodeType": "YulFunctionCall",
"src": "205:24:2"
},
"variableNames": [
{
"name": "cleaned",
"nativeSrc": "194:7:2",
"nodeType": "YulIdentifier",
"src": "194:7:2"
}
]
}
]
},
"name": "cleanup_t_address",
"nativeSrc": "139:96:2",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "166:5:2",
"nodeType": "YulTypedName",
"src": "166:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nativeSrc": "176:7:2",
"nodeType": "YulTypedName",
"src": "176:7:2",
"type": ""
}
],
"src": "139:96:2"
},
{
"body": {
"nativeSrc": "306:53:2",
"nodeType": "YulBlock",
"src": "306:53:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "323:3:2",
"nodeType": "YulIdentifier",
"src": "323:3:2"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "346:5:2",
"nodeType": "YulIdentifier",
"src": "346:5:2"
}
],
"functionName": {
"name": "cleanup_t_address",
"nativeSrc": "328:17:2",
"nodeType": "YulIdentifier",
"src": "328:17:2"
},
"nativeSrc": "328:24:2",
"nodeType": "YulFunctionCall",
"src": "328:24:2"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "316:6:2",
"nodeType": "YulIdentifier",
"src": "316:6:2"
},
"nativeSrc": "316:37:2",
"nodeType": "YulFunctionCall",
"src": "316:37:2"
},
"nativeSrc": "316:37:2",
"nodeType": "YulExpressionStatement",
"src": "316:37:2"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nativeSrc": "241:118:2",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "294:5:2",
"nodeType": "YulTypedName",
"src": "294:5:2",
"type": ""
},
{
"name": "pos",
"nativeSrc": "301:3:2",
"nodeType": "YulTypedName",
"src": "301:3:2",
"type": ""
}
],
"src": "241:118:2"
},
{
"body": {
"nativeSrc": "463:124:2",
"nodeType": "YulBlock",
"src": "463:124:2",
"statements": [
{
"nativeSrc": "473:26:2",
"nodeType": "YulAssignment",
"src": "473:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "485:9:2",
"nodeType": "YulIdentifier",
"src": "485:9:2"
},
{
"kind": "number",
"nativeSrc": "496:2:2",
"nodeType": "YulLiteral",
"src": "496:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "481:3:2",
"nodeType": "YulIdentifier",
"src": "481:3:2"
},
"nativeSrc": "481:18:2",
"nodeType": "YulFunctionCall",
"src": "481:18:2"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "473:4:2",
"nodeType": "YulIdentifier",
"src": "473:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nativeSrc": "553:6:2",
"nodeType": "YulIdentifier",
"src": "553:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "566:9:2",
"nodeType": "YulIdentifier",
"src": "566:9:2"
},
{
"kind": "number",
"nativeSrc": "577:1:2",
"nodeType": "YulLiteral",
"src": "577:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "562:3:2",
"nodeType": "YulIdentifier",
"src": "562:3:2"
},
"nativeSrc": "562:17:2",
"nodeType": "YulFunctionCall",
"src": "562:17:2"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nativeSrc": "509:43:2",
"nodeType": "YulIdentifier",
"src": "509:43:2"
},
"nativeSrc": "509:71:2",
"nodeType": "YulFunctionCall",
"src": "509:71:2"
},
"nativeSrc": "509:71:2",
"nodeType": "YulExpressionStatement",
"src": "509:71:2"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nativeSrc": "365:222:2",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "435:9:2",
"nodeType": "YulTypedName",
"src": "435:9:2",
"type": ""
},
{
"name": "value0",
"nativeSrc": "447:6:2",
"nodeType": "YulTypedName",
"src": "447:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "458:4:2",
"nodeType": "YulTypedName",
"src": "458:4:2",
"type": ""
}
],
"src": "365:222:2"
},
{
"body": {
"nativeSrc": "633:35:2",
"nodeType": "YulBlock",
"src": "633:35:2",
"statements": [
{
"nativeSrc": "643:19:2",
"nodeType": "YulAssignment",
"src": "643:19:2",
"value": {
"arguments": [
{
"kind": "number",
"nativeSrc": "659:2:2",
"nodeType": "YulLiteral",
"src": "659:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "653:5:2",
"nodeType": "YulIdentifier",
"src": "653:5:2"
},
"nativeSrc": "653:9:2",
"nodeType": "YulFunctionCall",
"src": "653:9:2"
},
"variableNames": [
{
"name": "memPtr",
"nativeSrc": "643:6:2",
"nodeType": "YulIdentifier",
"src": "643:6:2"
}
]
}
]
},
"name": "allocate_unbounded",
"nativeSrc": "593:75:2",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nativeSrc": "626:6:2",
"nodeType": "YulTypedName",
"src": "626:6:2",
"type": ""
}
],
"src": "593:75:2"
},
{
"body": {
"nativeSrc": "763:28:2",
"nodeType": "YulBlock",
"src": "763:28:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "780:1:2",
"nodeType": "YulLiteral",
"src": "780:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "783:1:2",
"nodeType": "YulLiteral",
"src": "783:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "773:6:2",
"nodeType": "YulIdentifier",
"src": "773:6:2"
},
"nativeSrc": "773:12:2",
"nodeType": "YulFunctionCall",
"src": "773:12:2"
},
"nativeSrc": "773:12:2",
"nodeType": "YulExpressionStatement",
"src": "773:12:2"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "674:117:2",
"nodeType": "YulFunctionDefinition",
"src": "674:117:2"
},
{
"body": {
"nativeSrc": "886:28:2",
"nodeType": "YulBlock",
"src": "886:28:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "903:1:2",
"nodeType": "YulLiteral",
"src": "903:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "906:1:2",
"nodeType": "YulLiteral",
"src": "906:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "896:6:2",
"nodeType": "YulIdentifier",
"src": "896:6:2"
},
"nativeSrc": "896:12:2",
"nodeType": "YulFunctionCall",
"src": "896:12:2"
},
"nativeSrc": "896:12:2",
"nodeType": "YulExpressionStatement",
"src": "896:12:2"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nativeSrc": "797:117:2",
"nodeType": "YulFunctionDefinition",
"src": "797:117:2"
},
{
"body": {
"nativeSrc": "963:79:2",
"nodeType": "YulBlock",
"src": "963:79:2",
"statements": [
{
"body": {
"nativeSrc": "1020:16:2",
"nodeType": "YulBlock",
"src": "1020:16:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1029:1:2",
"nodeType": "YulLiteral",
"src": "1029:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "1032:1:2",
"nodeType": "YulLiteral",
"src": "1032:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "1022:6:2",
"nodeType": "YulIdentifier",
"src": "1022:6:2"
},
"nativeSrc": "1022:12:2",
"nodeType": "YulFunctionCall",
"src": "1022:12:2"
},
"nativeSrc": "1022:12:2",
"nodeType": "YulExpressionStatement",
"src": "1022:12:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "986:5:2",
"nodeType": "YulIdentifier",
"src": "986:5:2"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "1011:5:2",
"nodeType": "YulIdentifier",
"src": "1011:5:2"
}
],
"functionName": {
"name": "cleanup_t_address",
"nativeSrc": "993:17:2",
"nodeType": "YulIdentifier",
"src": "993:17:2"
},
"nativeSrc": "993:24:2",
"nodeType": "YulFunctionCall",
"src": "993:24:2"
}
],
"functionName": {
"name": "eq",
"nativeSrc": "983:2:2",
"nodeType": "YulIdentifier",
"src": "983:2:2"
},
"nativeSrc": "983:35:2",
"nodeType": "YulFunctionCall",
"src": "983:35:2"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "976:6:2",
"nodeType": "YulIdentifier",
"src": "976:6:2"
},
"nativeSrc": "976:43:2",
"nodeType": "YulFunctionCall",
"src": "976:43:2"
},
"nativeSrc": "973:63:2",
"nodeType": "YulIf",
"src": "973:63:2"
}
]
},
"name": "validator_revert_t_address",
"nativeSrc": "920:122:2",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "956:5:2",
"nodeType": "YulTypedName",
"src": "956:5:2",
"type": ""
}
],
"src": "920:122:2"
},
{
"body": {
"nativeSrc": "1100:87:2",
"nodeType": "YulBlock",
"src": "1100:87:2",
"statements": [
{
"nativeSrc": "1110:29:2",
"nodeType": "YulAssignment",
"src": "1110:29:2",
"value": {
"arguments": [
{
"name": "offset",
"nativeSrc": "1132:6:2",
"nodeType": "YulIdentifier",
"src": "1132:6:2"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "1119:12:2",
"nodeType": "YulIdentifier",
"src": "1119:12:2"
},
"nativeSrc": "1119:20:2",
"nodeType": "YulFunctionCall",
"src": "1119:20:2"
},
"variableNames": [
{
"name": "value",
"nativeSrc": "1110:5:2",
"nodeType": "YulIdentifier",
"src": "1110:5:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nativeSrc": "1175:5:2",
"nodeType": "YulIdentifier",
"src": "1175:5:2"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nativeSrc": "1148:26:2",
"nodeType": "YulIdentifier",
"src": "1148:26:2"
},
"nativeSrc": "1148:33:2",
"nodeType": "YulFunctionCall",
"src": "1148:33:2"
},
"nativeSrc": "1148:33:2",
"nodeType": "YulExpressionStatement",
"src": "1148:33:2"
}
]
},
"name": "abi_decode_t_address",
"nativeSrc": "1048:139:2",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nativeSrc": "1078:6:2",
"nodeType": "YulTypedName",
"src": "1078:6:2",
"type": ""
},
{
"name": "end",
"nativeSrc": "1086:3:2",
"nodeType": "YulTypedName",
"src": "1086:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nativeSrc": "1094:5:2",
"nodeType": "YulTypedName",
"src": "1094:5:2",
"type": ""
}
],
"src": "1048:139:2"
},
{
"body": {
"nativeSrc": "1259:263:2",
"nodeType": "YulBlock",
"src": "1259:263:2",
"statements": [
{
"body": {
"nativeSrc": "1305:83:2",
"nodeType": "YulBlock",
"src": "1305:83:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "1307:77:2",
"nodeType": "YulIdentifier",
"src": "1307:77:2"
},
"nativeSrc": "1307:79:2",
"nodeType": "YulFunctionCall",
"src": "1307:79:2"
},
"nativeSrc": "1307:79:2",
"nodeType": "YulExpressionStatement",
"src": "1307:79:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "1280:7:2",
"nodeType": "YulIdentifier",
"src": "1280:7:2"
},
{
"name": "headStart",
"nativeSrc": "1289:9:2",
"nodeType": "YulIdentifier",
"src": "1289:9:2"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "1276:3:2",
"nodeType": "YulIdentifier",
"src": "1276:3:2"
},
"nativeSrc": "1276:23:2",
"nodeType": "YulFunctionCall",
"src": "1276:23:2"
},
{
"kind": "number",
"nativeSrc": "1301:2:2",
"nodeType": "YulLiteral",
"src": "1301:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "1272:3:2",
"nodeType": "YulIdentifier",
"src": "1272:3:2"
},
"nativeSrc": "1272:32:2",
"nodeType": "YulFunctionCall",
"src": "1272:32:2"
},
"nativeSrc": "1269:119:2",
"nodeType": "YulIf",
"src": "1269:119:2"
},
{
"nativeSrc": "1398:117:2",
"nodeType": "YulBlock",
"src": "1398:117:2",
"statements": [
{
"nativeSrc": "1413:15:2",
"nodeType": "YulVariableDeclaration",
"src": "1413:15:2",
"value": {
"kind": "number",
"nativeSrc": "1427:1:2",
"nodeType": "YulLiteral",
"src": "1427:1:2",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nativeSrc": "1417:6:2",
"nodeType": "YulTypedName",
"src": "1417:6:2",
"type": ""
}
]
},
{
"nativeSrc": "1442:63:2",
"nodeType": "YulAssignment",
"src": "1442:63:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "1477:9:2",
"nodeType": "YulIdentifier",
"src": "1477:9:2"
},
{
"name": "offset",
"nativeSrc": "1488:6:2",
"nodeType": "YulIdentifier",
"src": "1488:6:2"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1473:3:2",
"nodeType": "YulIdentifier",
"src": "1473:3:2"
},
"nativeSrc": "1473:22:2",
"nodeType": "YulFunctionCall",
"src": "1473:22:2"
},
{
"name": "dataEnd",
"nativeSrc": "1497:7:2",
"nodeType": "YulIdentifier",
"src": "1497:7:2"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nativeSrc": "1452:20:2",
"nodeType": "YulIdentifier",
"src": "1452:20:2"
},
"nativeSrc": "1452:53:2",
"nodeType": "YulFunctionCall",
"src": "1452:53:2"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "1442:6:2",
"nodeType": "YulIdentifier",
"src": "1442:6:2"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_address",
"nativeSrc": "1193:329:2",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "1229:9:2",
"nodeType": "YulTypedName",
"src": "1229:9:2",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "1240:7:2",
"nodeType": "YulTypedName",
"src": "1240:7:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "1252:6:2",
"nodeType": "YulTypedName",
"src": "1252:6:2",
"type": ""
}
],
"src": "1193:329:2"
},
{
"body": {
"nativeSrc": "1624:73:2",
"nodeType": "YulBlock",
"src": "1624:73:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "1641:3:2",
"nodeType": "YulIdentifier",
"src": "1641:3:2"
},
{
"name": "length",
"nativeSrc": "1646:6:2",
"nodeType": "YulIdentifier",
"src": "1646:6:2"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "1634:6:2",
"nodeType": "YulIdentifier",
"src": "1634:6:2"
},
"nativeSrc": "1634:19:2",
"nodeType": "YulFunctionCall",
"
View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment