{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ead0dbdb0e47d59795dcdbc3a46c33e30a54a779d699339ede07a32471c068b864736f6c63430008180033","sourceMap":"1181:414:4:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1181:414:4;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ead0dbdb0e47d59795dcdbc3a46c33e30a54a779d699339ede07a32471c068b864736f6c63430008180033","sourceMap":"1181:414:4:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@dk1a/solidity-stringutils/src/StrCharsIter.sol\":\"StrCharsIter__\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":3000},\"remappings\":[\":@dk1a/solidity-stringutils/=node_modules/@dk1a/solidity-stringutils/\",\":@latticexyz/=node_modules/@latticexyz/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":base/=src/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":solmate/=node_modules/solmate/src/\"]},\"sources\":{\"node_modules/@dk1a/solidity-stringutils/src/Slice.sol\":{\"keccak256\":\"0x275d3a59770ad0b5fbbe55e9199a6e449e88c15668922ad1aef0b895696d7d9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e502f0ebd41bd7e9fdb4df066913fcf8ecabfaabb59734e713eed2f260ac5b7f\",\"dweb:/ipfs/QmZEEXv7x1rZnQTohSoGcJycNdh4u2tYuL7wU8tftsK8Me\"]},\"node_modules/@dk1a/solidity-stringutils/src/SliceIter.sol\":{\"keccak256\":\"0x567f7ae2e0ee107ef510cf7b2f648cb0c2e980e86463b68c29ea7b08a03cf68b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://201250475f59edd22aa4aba7c97e3ce934298b7a6db7a517162c86445932005d\",\"dweb:/ipfs/QmYVGUCzMnG7wvTGFxgz8Bx5948auFxWpdyMvytkFjpWyE\"]},\"node_modules/@dk1a/solidity-stringutils/src/StrChar.sol\":{\"keccak256\":\"0x3dec9f06981ecc0c83fed6f6a421e52ca123805bb243f0159f00eba8dbcc278b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0f7000aec2944ceafc0b7952cbe91169a265ea4935defd3d4df69147fa64a1f\",\"dweb:/ipfs/QmU2MhsyVnTS4dbaSPAi5oanaJpDUnEzGz843pUvWvb8MD\"]},\"node_modules/@dk1a/solidity-stringutils/src/StrCharsIter.sol\":{\"keccak256\":\"0xf2619ef9aac129010c45f53e199a5af41269b749bbd874dc20bff9ef99541964\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6090cf77adbbd60d95d6a1999ca71469122340f318f35f674128e0c0138a31a\",\"dweb:/ipfs/QmQLP1tNVqmkTrcwHDUuQzdHNuPfXeJ3Ev8g4TSRqgN2Af\"]},\"node_modules/@dk1a/solidity-stringutils/src/StrSlice.sol\":{\"keccak256\":\"0xcb4cbbcb40ee8c033cadf8405c1a7f5bc27ed8818d008231719ba66dd83f3d15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e534bc81a7ca7e3199ac334210d2ad644b5ae7e57fb3792fd8fdf187ac98709\",\"dweb:/ipfs/QmfAGZdeLpxrtgDkLBg4a6DCuSzHfR83b3NB5mid3p9iA7\"]},\"node_modules/@dk1a/solidity-stringutils/src/utils/PackPtrLen.sol\":{\"keccak256\":\"0x12db07da53ebb78b4aa163d3b8ea9e6e43049b4a036a734a456fc715f262d226\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cbc45982956c2f3a9553748393293fe7491b87361b35174a47b566df40c9a9f1\",\"dweb:/ipfs/QmYnpwTqppyDHMcoCZDEdZu3mKixRkgs9FfVVMgARXWTHa\"]},\"node_modules/@dk1a/solidity-stringutils/src/utils/mem.sol\":{\"keccak256\":\"0xae6d56e348968bd35d1135fd5aa77a498e78065e8b8da2084c7b6c63580e3e1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f25b07594f24baa7ddc713849fec72e5520d37e98de48ada81e11606dde873a\",\"dweb:/ipfs/QmbWnDh1r3Bjo4VPqAUrRbbynfPmgVP9yKowiRhyiwQVie\"]},\"node_modules/@dk1a/solidity-stringutils/src/utils/memascii.sol\":{\"keccak256\":\"0x1d364e73238cbe120e7e72f2b6850862dedacd54f18fc65692f2655514005a72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa1c6a471335d6e2e978898de0f6d2e3486a70f16fdd93bf529c05c151d13b5d\",\"dweb:/ipfs/Qmf89J2kwx3HE85arZNySkDGfHzAkKuuLMyXL6CfhFWLoi\"]},\"node_modules/@dk1a/solidity-stringutils/src/utils/memchr.sol\":{\"keccak256\":\"0xfcd59abbf0e6fce243a5987aa71be39b2cd001b813dca59df3bab2b1e7a3104b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60ffc7a8195c6ebbe5eb27c49a548487273e96ea9c4e2bfa9e07f50474fa583d\",\"dweb:/ipfs/QmdBFuXRsCV3nYJb31rXwYEQVcrJjjVFReenWxYZYLHX5Z\"]},\"node_modules/@dk1a/solidity-stringutils/src/utils/unicode.sol\":{\"keccak256\":\"0xf8b40a36b96393038457a13cdbb10cf8cd80e321b5ee7aa9d05ec09c95507046\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87e905cdbe7d95374275a808b38a9a0328401282dc724678b8bff4bcd7498ea4\",\"dweb:/ipfs/QmQYjwUtBJW62cosyPPussPj4Y1MiXJB23Y4YUcpUTbC3b\"]},\"node_modules/@dk1a/solidity-stringutils/src/utils/utf8.sol\":{\"keccak256\":\"0x927f19b1af096baa5e88a19e3a652c3ecda68fdc95d032422df6bb2d86a8ffba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e82bcfc00fe71a07e1834c17bf93dd91a39e5891ca1d3e356a3a98ed6d5eda5\",\"dweb:/ipfs/QmWxNrQxQ55bMAQV6HAsWGJUWMRy1oUHTomNcNHJwD3ED8\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@dk1a/solidity-stringutils/=node_modules/@dk1a/solidity-stringutils/","@latticexyz/=node_modules/@latticexyz/","@openzeppelin/=node_modules/@openzeppelin/","base/=src/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","solmate/=node_modules/solmate/src/"],"optimizer":{"enabled":true,"runs":3000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@dk1a/solidity-stringutils/src/StrCharsIter.sol":"StrCharsIter__"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@dk1a/solidity-stringutils/src/Slice.sol":{"keccak256":"0x275d3a59770ad0b5fbbe55e9199a6e449e88c15668922ad1aef0b895696d7d9c","urls":["bzz-raw://e502f0ebd41bd7e9fdb4df066913fcf8ecabfaabb59734e713eed2f260ac5b7f","dweb:/ipfs/QmZEEXv7x1rZnQTohSoGcJycNdh4u2tYuL7wU8tftsK8Me"],"license":"MIT"},"node_modules/@dk1a/solidity-stringutils/src/SliceIter.sol":{"keccak256":"0x567f7ae2e0ee107ef510cf7b2f648cb0c2e980e86463b68c29ea7b08a03cf68b","urls":["bzz-raw://201250475f59edd22aa4aba7c97e3ce934298b7a6db7a517162c86445932005d","dweb:/ipfs/QmYVGUCzMnG7wvTGFxgz8Bx5948auFxWpdyMvytkFjpWyE"],"license":"MIT"},"node_modules/@dk1a/solidity-stringutils/src/StrChar.sol":{"keccak256":"0x3dec9f06981ecc0c83fed6f6a421e52ca123805bb243f0159f00eba8dbcc278b","urls":["bzz-raw://c0f7000aec2944ceafc0b7952cbe91169a265ea4935defd3d4df69147fa64a1f","dweb:/ipfs/QmU2MhsyVnTS4dbaSPAi5oanaJpDUnEzGz843pUvWvb8MD"],"license":"MIT"},"node_modules/@dk1a/solidity-stringutils/src/StrCharsIter.sol":{"keccak256":"0xf2619ef9aac129010c45f53e199a5af41269b749bbd874dc20bff9ef99541964","urls":["bzz-raw://d6090cf77adbbd60d95d6a1999ca71469122340f318f35f674128e0c0138a31a","dweb:/ipfs/QmQLP1tNVqmkTrcwHDUuQzdHNuPfXeJ3Ev8g4TSRqgN2Af"],"license":"MIT"},"node_modules/@dk1a/solidity-stringutils/src/StrSlice.sol":{"keccak256":"0xcb4cbbcb40ee8c033cadf8405c1a7f5bc27ed8818d008231719ba66dd83f3d15","urls":["bzz-raw://2e534bc81a7ca7e3199ac334210d2ad644b5ae7e57fb3792fd8fdf187ac98709","dweb:/ipfs/QmfAGZdeLpxrtgDkLBg4a6DCuSzHfR83b3NB5mid3p9iA7"],"license":"MIT"},"node_modules/@dk1a/solidity-stringutils/src/utils/PackPtrLen.sol":{"keccak256":"0x12db07da53ebb78b4aa163d3b8ea9e6e43049b4a036a734a456fc715f262d226","urls":["bzz-raw://cbc45982956c2f3a9553748393293fe7491b87361b35174a47b566df40c9a9f1","dweb:/ipfs/QmYnpwTqppyDHMcoCZDEdZu3mKixRkgs9FfVVMgARXWTHa"],"license":"MIT"},"node_modules/@dk1a/solidity-stringutils/src/utils/mem.sol":{"keccak256":"0xae6d56e348968bd35d1135fd5aa77a498e78065e8b8da2084c7b6c63580e3e1c","urls":["bzz-raw://9f25b07594f24baa7ddc713849fec72e5520d37e98de48ada81e11606dde873a","dweb:/ipfs/QmbWnDh1r3Bjo4VPqAUrRbbynfPmgVP9yKowiRhyiwQVie"],"license":"MIT"},"node_modules/@dk1a/solidity-stringutils/src/utils/memascii.sol":{"keccak256":"0x1d364e73238cbe120e7e72f2b6850862dedacd54f18fc65692f2655514005a72","urls":["bzz-raw://aa1c6a471335d6e2e978898de0f6d2e3486a70f16fdd93bf529c05c151d13b5d","dweb:/ipfs/Qmf89J2kwx3HE85arZNySkDGfHzAkKuuLMyXL6CfhFWLoi"],"license":"MIT"},"node_modules/@dk1a/solidity-stringutils/src/utils/memchr.sol":{"keccak256":"0xfcd59abbf0e6fce243a5987aa71be39b2cd001b813dca59df3bab2b1e7a3104b","urls":["bzz-raw://60ffc7a8195c6ebbe5eb27c49a548487273e96ea9c4e2bfa9e07f50474fa583d","dweb:/ipfs/QmdBFuXRsCV3nYJb31rXwYEQVcrJjjVFReenWxYZYLHX5Z"],"license":"MIT"},"node_modules/@dk1a/solidity-stringutils/src/utils/unicode.sol":{"keccak256":"0xf8b40a36b96393038457a13cdbb10cf8cd80e321b5ee7aa9d05ec09c95507046","urls":["bzz-raw://87e905cdbe7d95374275a808b38a9a0328401282dc724678b8bff4bcd7498ea4","dweb:/ipfs/QmQYjwUtBJW62cosyPPussPj4Y1MiXJB23Y4YUcpUTbC3b"],"license":"MIT"},"node_modules/@dk1a/solidity-stringutils/src/utils/utf8.sol":{"keccak256":"0x927f19b1af096baa5e88a19e3a652c3ecda68fdc95d032422df6bb2d86a8ffba","urls":["bzz-raw://1e82bcfc00fe71a07e1834c17bf93dd91a39e5891ca1d3e356a3a98ed6d5eda5","dweb:/ipfs/QmWxNrQxQ55bMAQV6HAsWGJUWMRy1oUHTomNcNHJwD3ED8"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"node_modules/@dk1a/solidity-stringutils/src/StrCharsIter.sol","id":2980,"exportedSymbols":{"Slice":[74],"SliceIter":[1745],"SliceIter__":[1768],"SliceIter__StopIteration":[1747],"Slice__":[146],"StrChar":[1942],"StrChar__":[2017],"StrChar__InvalidUTF8":[1944],"StrCharsIter":[2405],"StrCharsIter__":[2426],"StrSlice":[2999],"_nextRaw":[2967],"_sliceIter":[2979],"asSlice":[2891],"asStr":[2460],"count":[2738],"isEmpty":[2501],"isValidUtf8":[5949],"leftMask":[4592],"len":[2486],"next":[2542],"nextBack":[2639],"ptr":[2473],"unsafeCount":[2866],"unsafeNext":[2691],"utf8CharWidth":[5713],"validateUtf8":[2781]},"nodeType":"SourceUnit","src":"33:12088:4","nodes":[{"id":2381,"nodeType":"PragmaDirective","src":"33:24:4","nodes":[],"literals":["solidity","^","0.8",".17"]},{"id":2384,"nodeType":"ImportDirective","src":"59:45:4","nodes":[],"absolutePath":"node_modules/@dk1a/solidity-stringutils/src/Slice.sol","file":"./Slice.sol","nameLocation":"-1:-1:-1","scope":2980,"sourceUnit":1733,"symbolAliases":[{"foreign":{"id":2382,"name":"Slice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74,"src":"68:5:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2383,"name":"Slice__","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"75:7:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2386,"nodeType":"ImportDirective","src":"105:42:4","nodes":[],"absolutePath":"node_modules/@dk1a/solidity-stringutils/src/StrSlice.sol","file":"./StrSlice.sol","nameLocation":"-1:-1:-1","scope":2980,"sourceUnit":4280,"symbolAliases":[{"foreign":{"id":2385,"name":"StrSlice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2999,"src":"114:8:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2390,"nodeType":"ImportDirective","src":"148:83:4","nodes":[],"absolutePath":"node_modules/@dk1a/solidity-stringutils/src/SliceIter.sol","file":"./SliceIter.sol","nameLocation":"-1:-1:-1","scope":2980,"sourceUnit":1931,"symbolAliases":[{"foreign":{"id":2387,"name":"SliceIter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1745,"src":"157:9:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2388,"name":"SliceIter__","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1768,"src":"168:11:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2389,"name":"SliceIter__StopIteration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"181:24:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2394,"nodeType":"ImportDirective","src":"232:73:4","nodes":[],"absolutePath":"node_modules/@dk1a/solidity-stringutils/src/StrChar.sol","file":"./StrChar.sol","nameLocation":"-1:-1:-1","scope":2980,"sourceUnit":2380,"symbolAliases":[{"foreign":{"id":2391,"name":"StrChar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1942,"src":"241:7:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2392,"name":"StrChar__","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2017,"src":"250:9:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2393,"name":"StrChar__InvalidUTF8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1944,"src":"261:20:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2397,"nodeType":"ImportDirective","src":"306:62:4","nodes":[],"absolutePath":"node_modules/@dk1a/solidity-stringutils/src/utils/utf8.sol","file":"./utils/utf8.sol","nameLocation":"-1:-1:-1","scope":2980,"sourceUnit":5965,"symbolAliases":[{"foreign":{"id":2395,"name":"isValidUtf8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5949,"src":"315:11:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2396,"name":"utf8CharWidth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5713,"src":"328:13:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2399,"nodeType":"ImportDirective","src":"369:43:4","nodes":[],"absolutePath":"node_modules/@dk1a/solidity-stringutils/src/utils/mem.sol","file":"./utils/mem.sol","nameLocation":"-1:-1:-1","scope":2980,"sourceUnit":4593,"symbolAliases":[{"foreign":{"id":2398,"name":"leftMask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4592,"src":"378:8:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2405,"nodeType":"StructDefinition","src":"916:59:4","nodes":[],"canonicalName":"StrCharsIter","documentation":{"id":2400,"nodeType":"StructuredDocumentation","src":"414:501:4","text":" @title String chars iterator.\n @dev This struct is created by the iter method on `StrSlice`.\n Iterates 1 UTF-8 encoded character at a time (which may have 1-4 bytes).\n Note StrCharsIter iterates over UTF-8 encoded codepoints, not unicode scalar values.\n This is mostly done for simplicity, since solidity doesn't care about unicode anyways.\n TODO think about actually adding char and unicode awareness?\n https://github.com/devstein/unicode-eth attempts something like that"},"members":[{"constant":false,"id":2402,"mutability":"mutable","name":"_ptr","nameLocation":"950:4:4","nodeType":"VariableDeclaration","scope":2405,"src":"942:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2401,"name":"uint256","nodeType":"ElementaryTypeName","src":"942:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2404,"mutability":"mutable","name":"_len","nameLocation":"968:4:4","nodeType":"VariableDeclaration","scope":2405,"src":"960:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"960:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"StrCharsIter","nameLocation":"923:12:4","scope":2980,"visibility":"public"},{"id":2426,"nodeType":"ContractDefinition","src":"1181:414:4","nodes":[{"id":2425,"nodeType":"FunctionDefinition","src":"1341:252:4","nodes":[],"body":{"id":2424,"nodeType":"Block","src":"1415:178:4","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2416,"name":"slice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2409,"src":"1445:5:4","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_StrSlice_$2999","typeString":"StrSlice"}},"id":2417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1451:3:4","memberName":"ptr","nodeType":"MemberAccess","referencedDeclaration":3156,"src":"1445:9:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_StrSlice_$2999_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_StrSlice_$2999_$","typeString":"function (StrSlice) pure returns (uint256)"}},"id":2418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1445:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2419,"name":"slice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2409,"src":"1458:5:4","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_StrSlice_$2999","typeString":"StrSlice"}},"id":2420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1464:3:4","memberName":"len","nodeType":"MemberAccess","referencedDeclaration":3174,"src":"1458:9:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_StrSlice_$2999_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_StrSlice_$2999_$","typeString":"function (StrSlice) pure returns (uint256)"}},"id":2421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1458:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2415,"name":"StrCharsIter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2405,"src":"1432:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_StrCharsIter_$2405_storage_ptr_$","typeString":"type(struct StrCharsIter storage pointer)"}},"id":2422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1432:38:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"functionReturnParameters":2414,"id":2423,"nodeType":"Return","src":"1425:45:4"}]},"documentation":{"id":2406,"nodeType":"StructuredDocumentation","src":"1210:126:4","text":" @dev Creates a new `StrCharsIter` from `StrSlice`.\n Note the `StrSlice` is assumed to be memory-safe."},"implemented":true,"kind":"function","modifiers":[],"name":"from","nameLocation":"1350:4:4","parameters":{"id":2410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2409,"mutability":"mutable","name":"slice","nameLocation":"1364:5:4","nodeType":"VariableDeclaration","scope":2425,"src":"1355:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_StrSlice_$2999","typeString":"StrSlice"},"typeName":{"id":2408,"nodeType":"UserDefinedTypeName","pathNode":{"id":2407,"name":"StrSlice","nameLocations":["1355:8:4"],"nodeType":"IdentifierPath","referencedDeclaration":2999,"src":"1355:8:4"},"referencedDeclaration":2999,"src":"1355:8:4","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_StrSlice_$2999","typeString":"StrSlice"}},"visibility":"internal"}],"src":"1354:16:4"},"returnParameters":{"id":2414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2413,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2425,"src":"1394:19:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter"},"typeName":{"id":2412,"nodeType":"UserDefinedTypeName","pathNode":{"id":2411,"name":"StrCharsIter","nameLocations":["1394:12:4"],"nodeType":"IdentifierPath","referencedDeclaration":2405,"src":"1394:12:4"},"referencedDeclaration":2405,"src":"1394:12:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_storage_ptr","typeString":"struct StrCharsIter"}},"visibility":"internal"}],"src":"1393:21:4"},"scope":2426,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"StrCharsIter__","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"linearizedBaseContracts":[2426],"name":"StrCharsIter__","nameLocation":"1189:14:4","scope":2980,"usedErrors":[],"usedEvents":[]},{"id":2439,"nodeType":"UsingForDirective","src":"1801:137:4","nodes":[],"functionList":[{"function":{"id":2427,"name":"asStr","nameLocations":["1813:5:4"],"nodeType":"IdentifierPath","referencedDeclaration":2460,"src":"1813:5:4"}},{"function":{"id":2428,"name":"ptr","nameLocations":["1824:3:4"],"nodeType":"IdentifierPath","referencedDeclaration":2473,"src":"1824:3:4"}},{"function":{"id":2429,"name":"len","nameLocations":["1829:3:4"],"nodeType":"IdentifierPath","referencedDeclaration":2486,"src":"1829:3:4"}},{"function":{"id":2430,"name":"isEmpty","nameLocations":["1834:7:4"],"nodeType":"IdentifierPath","referencedDeclaration":2501,"src":"1834:7:4"}},{"function":{"id":2431,"name":"next","nameLocations":["1847:4:4"],"nodeType":"IdentifierPath","referencedDeclaration":2542,"src":"1847:4:4"}},{"function":{"id":2432,"name":"nextBack","nameLocations":["1853:8:4"],"nodeType":"IdentifierPath","referencedDeclaration":2639,"src":"1853:8:4"}},{"function":{"id":2433,"name":"unsafeNext","nameLocations":["1863:10:4"],"nodeType":"IdentifierPath","referencedDeclaration":2691,"src":"1863:10:4"}},{"function":{"id":2434,"name":"count","nameLocations":["1879:5:4"],"nodeType":"IdentifierPath","referencedDeclaration":2738,"src":"1879:5:4"}},{"function":{"id":2435,"name":"validateUtf8","nameLocations":["1886:12:4"],"nodeType":"IdentifierPath","referencedDeclaration":2781,"src":"1886:12:4"}},{"function":{"id":2436,"name":"unsafeCount","nameLocations":["1900:11:4"],"nodeType":"IdentifierPath","referencedDeclaration":2866,"src":"1900:11:4"}}],"global":true,"typeName":{"id":2438,"nodeType":"UserDefinedTypeName","pathNode":{"id":2437,"name":"StrCharsIter","nameLocations":["1918:12:4"],"nodeType":"IdentifierPath","referencedDeclaration":2405,"src":"1918:12:4"},"referencedDeclaration":2405,"src":"1918:12:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_storage_ptr","typeString":"struct StrCharsIter"}}},{"id":2460,"nodeType":"FunctionDefinition","src":"2018:144:4","nodes":[],"body":{"id":2459,"nodeType":"Block","src":"2089:73:4","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2453,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2443,"src":"2138:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2454,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2143:7:4","memberName":"asSlice","nodeType":"MemberAccess","referencedDeclaration":2891,"src":"2138:12:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_StrCharsIter_$2405_memory_ptr_$returns$_t_userDefinedValueType$_Slice_$74_$attached_to$_t_struct$_StrCharsIter_$2405_memory_ptr_$","typeString":"function (struct StrCharsIter memory) pure returns (Slice)"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2138:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$74","typeString":"Slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Slice_$74","typeString":"Slice"}],"expression":{"id":2451,"name":"Slice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74,"src":"2116:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Slice_$74_$","typeString":"type(Slice)"}},"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2122:6:4","memberName":"unwrap","nodeType":"MemberAccess","src":"2116:12:4","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_Slice_$74_$returns$_t_uint256_$","typeString":"function (Slice) pure returns (uint256)"}},"id":2456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2116:42:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2449,"name":"StrSlice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2999,"src":"2102:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_StrSlice_$2999_$","typeString":"type(StrSlice)"}},"id":2450,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2111:4:4","memberName":"wrap","nodeType":"MemberAccess","src":"2102:13:4","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_StrSlice_$2999_$","typeString":"function (uint256) pure returns (StrSlice)"}},"id":2457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2102:57:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_StrSlice_$2999","typeString":"StrSlice"}},"functionReturnParameters":2448,"id":2458,"nodeType":"Return","src":"2095:64:4"}]},"documentation":{"id":2440,"nodeType":"StructuredDocumentation","src":"1940:77:4","text":" @dev Views the underlying data as a subslice of the original data."},"implemented":true,"kind":"freeFunction","modifiers":[],"name":"asStr","nameLocation":"2027:5:4","parameters":{"id":2444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2443,"mutability":"mutable","name":"self","nameLocation":"2053:4:4","nodeType":"VariableDeclaration","scope":2460,"src":"2033:24:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter"},"typeName":{"id":2442,"nodeType":"UserDefinedTypeName","pathNode":{"id":2441,"name":"StrCharsIter","nameLocations":["2033:12:4"],"nodeType":"IdentifierPath","referencedDeclaration":2405,"src":"2033:12:4"},"referencedDeclaration":2405,"src":"2033:12:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_storage_ptr","typeString":"struct StrCharsIter"}},"visibility":"internal"}],"src":"2032:26:4"},"returnParameters":{"id":2448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2447,"mutability":"mutable","name":"slice","nameLocation":"2082:5:4","nodeType":"VariableDeclaration","scope":2460,"src":"2073:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_StrSlice_$2999","typeString":"StrSlice"},"typeName":{"id":2446,"nodeType":"UserDefinedTypeName","pathNode":{"id":2445,"name":"StrSlice","nameLocations":["2073:8:4"],"nodeType":"IdentifierPath","referencedDeclaration":2999,"src":"2073:8:4"},"referencedDeclaration":2999,"src":"2073:8:4","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_StrSlice_$2999","typeString":"StrSlice"}},"visibility":"internal"}],"src":"2072:16:4"},"scope":2980,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2473,"nodeType":"FunctionDefinition","src":"2289:87:4","nodes":[],"body":{"id":2472,"nodeType":"Block","src":"2351:25:4","nodes":[],"statements":[{"expression":{"expression":{"id":2469,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2464,"src":"2364:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2470,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2369:4:4","memberName":"_ptr","nodeType":"MemberAccess","referencedDeclaration":2402,"src":"2364:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2468,"id":2471,"nodeType":"Return","src":"2357:16:4"}]},"documentation":{"id":2461,"nodeType":"StructuredDocumentation","src":"2164:124:4","text":" @dev Returns the pointer to the start of an in-memory string slice.\n This method is primarily for internal use."},"implemented":true,"kind":"freeFunction","modifiers":[],"name":"ptr","nameLocation":"2298:3:4","parameters":{"id":2465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2464,"mutability":"mutable","name":"self","nameLocation":"2322:4:4","nodeType":"VariableDeclaration","scope":2473,"src":"2302:24:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter"},"typeName":{"id":2463,"nodeType":"UserDefinedTypeName","pathNode":{"id":2462,"name":"StrCharsIter","nameLocations":["2302:12:4"],"nodeType":"IdentifierPath","referencedDeclaration":2405,"src":"2302:12:4"},"referencedDeclaration":2405,"src":"2302:12:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_storage_ptr","typeString":"struct StrCharsIter"}},"visibility":"internal"}],"src":"2301:26:4"},"returnParameters":{"id":2468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2467,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2473,"src":"2342:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2466,"name":"uint256","nodeType":"ElementaryTypeName","src":"2342:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2341:9:4"},"scope":2980,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2486,"nodeType":"FunctionDefinition","src":"2439:87:4","nodes":[],"body":{"id":2485,"nodeType":"Block","src":"2501:25:4","nodes":[],"statements":[{"expression":{"expression":{"id":2482,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2477,"src":"2514:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2483,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2519:4:4","memberName":"_len","nodeType":"MemberAccess","referencedDeclaration":2404,"src":"2514:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2481,"id":2484,"nodeType":"Return","src":"2507:16:4"}]},"documentation":{"id":2474,"nodeType":"StructuredDocumentation","src":"2378:60:4","text":" @dev Returns the length in bytes, not codepoints."},"implemented":true,"kind":"freeFunction","modifiers":[],"name":"len","nameLocation":"2448:3:4","parameters":{"id":2478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2477,"mutability":"mutable","name":"self","nameLocation":"2472:4:4","nodeType":"VariableDeclaration","scope":2486,"src":"2452:24:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter"},"typeName":{"id":2476,"nodeType":"UserDefinedTypeName","pathNode":{"id":2475,"name":"StrCharsIter","nameLocations":["2452:12:4"],"nodeType":"IdentifierPath","referencedDeclaration":2405,"src":"2452:12:4"},"referencedDeclaration":2405,"src":"2452:12:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_storage_ptr","typeString":"struct StrCharsIter"}},"visibility":"internal"}],"src":"2451:26:4"},"returnParameters":{"id":2481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2480,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2486,"src":"2492:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2479,"name":"uint256","nodeType":"ElementaryTypeName","src":"2492:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2491:9:4"},"scope":2980,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2501,"nodeType":"FunctionDefinition","src":"2583:93:4","nodes":[],"body":{"id":2500,"nodeType":"Block","src":"2646:30:4","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2495,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2490,"src":"2659:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2496,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2664:4:4","memberName":"_len","nodeType":"MemberAccess","referencedDeclaration":2404,"src":"2659:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2672:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2659:14:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2494,"id":2499,"nodeType":"Return","src":"2652:21:4"}]},"documentation":{"id":2487,"nodeType":"StructuredDocumentation","src":"2528:54:4","text":" @dev Returns true if the iterator is empty."},"implemented":true,"kind":"freeFunction","modifiers":[],"name":"isEmpty","nameLocation":"2592:7:4","parameters":{"id":2491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2490,"mutability":"mutable","name":"self","nameLocation":"2620:4:4","nodeType":"VariableDeclaration","scope":2501,"src":"2600:24:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter"},"typeName":{"id":2489,"nodeType":"UserDefinedTypeName","pathNode":{"id":2488,"name":"StrCharsIter","nameLocations":["2600:12:4"],"nodeType":"IdentifierPath","referencedDeclaration":2405,"src":"2600:12:4"},"referencedDeclaration":2405,"src":"2600:12:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_storage_ptr","typeString":"struct StrCharsIter"}},"visibility":"internal"}],"src":"2599:26:4"},"returnParameters":{"id":2494,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2493,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2501,"src":"2640:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2492,"name":"bool","nodeType":"ElementaryTypeName","src":"2640:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2639:6:4"},"scope":2980,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2542,"nodeType":"FunctionDefinition","src":"2801:476:4","nodes":[],"body":{"id":2541,"nodeType":"Block","src":"2864:413:4","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2511,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"2874:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2512,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2879:4:4","memberName":"_len","nodeType":"MemberAccess","referencedDeclaration":2404,"src":"2874:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2887:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2874:14:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2518,"nodeType":"IfStatement","src":"2870:53:4","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2515,"name":"SliceIter__StopIteration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"2897:24:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":2516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2897:26:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2517,"nodeType":"RevertStatement","src":"2890:33:4"}},{"assignments":[2520,2522],"declarations":[{"constant":false,"id":2520,"mutability":"mutable","name":"b","nameLocation":"2938:1:4","nodeType":"VariableDeclaration","scope":2541,"src":"2930:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2519,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2930:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2522,"mutability":"mutable","name":"charLen","nameLocation":"2949:7:4","nodeType":"VariableDeclaration","scope":2541,"src":"2941:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2521,"name":"uint256","nodeType":"ElementaryTypeName","src":"2941:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2527,"initialValue":{"arguments":[{"hexValue":"74727565","id":2525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2974:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2523,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"2960:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2524,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2965:8:4","memberName":"_nextRaw","nodeType":"MemberAccess","referencedDeclaration":2967,"src":"2960:13:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_StrCharsIter_$2405_memory_ptr_$_t_bool_$returns$_t_bytes32_$_t_uint256_$attached_to$_t_struct$_StrCharsIter_$2405_memory_ptr_$","typeString":"function (struct StrCharsIter memory,bool) pure returns (bytes32,uint256)"}},"id":2526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2960:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$","typeString":"tuple(bytes32,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"2929:50:4"},{"id":2534,"nodeType":"UncheckedBlock","src":"3069:104:4","statements":[{"expression":{"id":2532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2528,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"3146:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2530,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3151:4:4","memberName":"_len","nodeType":"MemberAccess","referencedDeclaration":2404,"src":"3146:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":2531,"name":"charLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2522,"src":"3159:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3146:20:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2533,"nodeType":"ExpressionStatement","src":"3146:20:4"}]},{"expression":{"arguments":[{"id":2537,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2520,"src":"3263:1:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2538,"name":"charLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2522,"src":"3266:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2535,"name":"StrChar__","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2017,"src":"3239:9:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StrChar___$2017_$","typeString":"type(library StrChar__)"}},"id":2536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3249:13:4","memberName":"fromUnchecked","nodeType":"MemberAccess","referencedDeclaration":2016,"src":"3239:23:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_userDefinedValueType$_StrChar_$1942_$","typeString":"function (bytes32,uint256) pure returns (StrChar)"}},"id":2539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3239:35:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_StrChar_$1942","typeString":"StrChar"}},"functionReturnParameters":2510,"id":2540,"nodeType":"Return","src":"3232:42:4"}]},"documentation":{"id":2502,"nodeType":"StructuredDocumentation","src":"2678:122:4","text":" @dev Advances the iterator and returns the next character.\n Reverts if len == 0.\n Reverts on invalid UTF-8."},"implemented":true,"kind":"freeFunction","modifiers":[],"name":"next","nameLocation":"2810:4:4","parameters":{"id":2506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2505,"mutability":"mutable","name":"self","nameLocation":"2835:4:4","nodeType":"VariableDeclaration","scope":2542,"src":"2815:24:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter"},"typeName":{"id":2504,"nodeType":"UserDefinedTypeName","pathNode":{"id":2503,"name":"StrCharsIter","nameLocations":["2815:12:4"],"nodeType":"IdentifierPath","referencedDeclaration":2405,"src":"2815:12:4"},"referencedDeclaration":2405,"src":"2815:12:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_storage_ptr","typeString":"struct StrCharsIter"}},"visibility":"internal"}],"src":"2814:26:4"},"returnParameters":{"id":2510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2509,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2542,"src":"2855:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_StrChar_$1942","typeString":"StrChar"},"typeName":{"id":2508,"nodeType":"UserDefinedTypeName","pathNode":{"id":2507,"name":"StrChar","nameLocations":["2855:7:4"],"nodeType":"IdentifierPath","referencedDeclaration":1942,"src":"2855:7:4"},"referencedDeclaration":1942,"src":"2855:7:4","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_StrChar_$1942","typeString":"StrChar"}},"visibility":"internal"}],"src":"2854:9:4"},"scope":2980,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2639,"nodeType":"FunctionDefinition","src":"3416:1434:4","nodes":[],"body":{"id":2638,"nodeType":"Block","src":"3488:1362:4","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2552,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2546,"src":"3498:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2553,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3503:4:4","memberName":"_len","nodeType":"MemberAccess","referencedDeclaration":2404,"src":"3498:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3511:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3498:14:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2559,"nodeType":"IfStatement","src":"3494:53:4","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2556,"name":"SliceIter__StopIteration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"3521:24:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":2557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3521:26:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2558,"nodeType":"RevertStatement","src":"3514:33:4"}},{"assignments":[2562],"declarations":[{"constant":false,"id":2562,"mutability":"mutable","name":"_self","nameLocation":"3609:5:4","nodeType":"VariableDeclaration","scope":2638,"src":"3592:22:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SliceIter_$1745_memory_ptr","typeString":"struct SliceIter"},"typeName":{"id":2561,"nodeType":"UserDefinedTypeName","pathNode":{"id":2560,"name":"SliceIter","nameLocations":["3592:9:4"],"nodeType":"IdentifierPath","referencedDeclaration":1745,"src":"3592:9:4"},"referencedDeclaration":1745,"src":"3592:9:4","typeDescriptions":{"typeIdentifier":"t_struct$_SliceIter_$1745_storage_ptr","typeString":"struct SliceIter"}},"visibility":"internal"}],"id":2566,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2563,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2546,"src":"3617:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2564,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3622:10:4","memberName":"_sliceIter","nodeType":"MemberAccess","referencedDeclaration":2979,"src":"3617:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_StrCharsIter_$2405_memory_ptr_$returns$_t_struct$_SliceIter_$1745_memory_ptr_$attached_to$_t_struct$_StrCharsIter_$2405_memory_ptr_$","typeString":"function (struct StrCharsIter memory) pure returns (struct SliceIter memory)"}},"id":2565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3617:17:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SliceIter_$1745_memory_ptr","typeString":"struct SliceIter memory"}},"nodeType":"VariableDeclarationStatement","src":"3592:42:4"},{"assignments":[2568],"declarations":[{"constant":false,"id":2568,"mutability":"mutable","name":"isValid","nameLocation":"3646:7:4","nodeType":"VariableDeclaration","scope":2638,"src":"3641:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2567,"name":"bool","nodeType":"ElementaryTypeName","src":"3641:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":2569,"nodeType":"VariableDeclarationStatement","src":"3641:12:4"},{"assignments":[2571],"declarations":[{"constant":false,"id":2571,"mutability":"mutable","name":"b","nameLocation":"3667:1:4","nodeType":"VariableDeclaration","scope":2638,"src":"3659:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2570,"name":"uint256","nodeType":"ElementaryTypeName","src":"3659:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2572,"nodeType":"VariableDeclarationStatement","src":"3659:9:4"},{"body":{"id":2618,"nodeType":"Block","src":"3702:826:4","statements":[{"id":2602,"nodeType":"UncheckedBlock","src":"4140:243:4","statements":[{"expression":{"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2582,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2571,"src":"4201:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2583,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2571,"src":"4206:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":2584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4211:1:4","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"4206:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2586,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4205:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2589,"name":"_self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2562,"src":"4279:5:4","typeDescriptions":{"typeIdentifier":"t_struct$_SliceIter_$1745_memory_ptr","typeString":"struct SliceIter memory"}},"id":2590,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4285:8:4","memberName":"nextBack","nodeType":"MemberAccess","referencedDeclaration":1930,"src":"4279:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_SliceIter_$1745_memory_ptr_$returns$_t_uint8_$attached_to$_t_struct$_SliceIter_$1745_memory_ptr_$","typeString":"function (struct SliceIter memory) pure returns (uint8)"}},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4279:16:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":2588,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4271:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2587,"name":"uint256","nodeType":"ElementaryTypeName","src":"4271:7:4","typeDescriptions":{}}},"id":2592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4271:25:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"id":2595,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3331","id":2593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4351:2:4","typeDescriptions":{"typeIdentifier":"t_rational_31_by_1","typeString":"int_const 31"},"value":"31"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"38","id":2594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4356:1:4","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"4351:6:4","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"}}],"id":2596,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4350:8:4","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"}},"src":"4271:87:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2598,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4216:156:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4205:167:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4201:171:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2601,"nodeType":"ExpressionStatement","src":"4201:171:4"}]},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":2606,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2571,"src":"4454:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2605,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4446:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2604,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4446:7:4","typeDescriptions":{}}},"id":2607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4446:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2603,"name":"isValidUtf8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5949,"src":"4434:11:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":2608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4434:23:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4461:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4434:28:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2617,"nodeType":"IfStatement","src":"4430:92:4","trueBody":{"id":2616,"nodeType":"Block","src":"4464:58:4","statements":[{"expression":{"id":2613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2611,"name":"isValid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2568,"src":"4478:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4488:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4478:14:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2614,"nodeType":"ExpressionStatement","src":"4478:14:4"},{"id":2615,"nodeType":"Break","src":"4506:5:4"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2576,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2574,"src":"3690:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"34","id":2577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3694:1:4","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"3690:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2619,"initializationExpression":{"assignments":[2574],"declarations":[{"constant":false,"id":2574,"mutability":"mutable","name":"i","nameLocation":"3687:1:4","nodeType":"VariableDeclaration","scope":2619,"src":"3679:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2573,"name":"uint256","nodeType":"ElementaryTypeName","src":"3679:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2575,"nodeType":"VariableDeclarationStatement","src":"3679:9:4"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3697:3:4","subExpression":{"id":2579,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2574,"src":"3697:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2581,"nodeType":"ExpressionStatement","src":"3697:3:4"},"nodeType":"ForStatement","src":"3674:854:4"},{"condition":{"id":2621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4537:8:4","subExpression":{"id":2620,"name":"isValid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2568,"src":"4538:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2625,"nodeType":"IfStatement","src":"4533:43:4","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2622,"name":"StrChar__InvalidUTF8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1944,"src":"4554:20:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":2623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4554:22:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2624,"nodeType":"RevertStatement","src":"4547:29:4"}},{"expression":{"id":2634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2626,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2550,"src":"4736:4:4","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_StrChar_$1942","typeString":"StrChar"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":2631,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2571,"src":"4764:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2630,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4756:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2629,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4756:7:4","typeDescriptions":{}}},"id":2632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4756:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2627,"name":"StrChar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1942,"src":"4743:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_StrChar_$1942_$","typeString":"type(StrChar)"}},"id":2628,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4751:4:4","memberName":"wrap","nodeType":"MemberAccess","src":"4743:12:4","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_StrChar_$1942_$","typeString":"function (bytes32) pure returns (StrChar)"}},"id":2633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4743:24:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_StrChar_$1942","typeString":"StrChar"}},"src":"4736:31:4","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_StrChar_$1942","typeString":"StrChar"}},"id":2635,"nodeType":"ExpressionStatement","src":"4736:31:4"},{"expression":{"id":2636,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2550,"src":"4843:4:4","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_StrChar_$1942","typeString":"StrChar"}},"functionReturnParameters":2551,"id":2637,"nodeType":"Return","src":"4836:11:4"}]},"documentation":{"id":2543,"nodeType":"StructuredDocumentation","src":"3279:136:4","text":" @dev Advances the iterator from the back and returns the next character.\n Reverts if len == 0.\n Reverts on invalid UTF-8."},"implemented":true,"kind":"freeFunction","modifiers":[],"name":"nextBack","nameLocation":"3425:8:4","parameters":{"id":2547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2546,"mutability":"mutable","name":"self","nameLocation":"3454:4:4","nodeType":"VariableDeclaration","scope":2639,"src":"3434:24:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter"},"typeName":{"id":2545,"nodeType":"UserDefinedTypeName","pathNode":{"id":2544,"name":"StrCharsIter","nameLocations":["3434:12:4"],"nodeType":"IdentifierPath","referencedDeclaration":2405,"src":"3434:12:4"},"referencedDeclaration":2405,"src":"3434:12:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_storage_ptr","typeString":"struct StrCharsIter"}},"visibility":"internal"}],"src":"3433:26:4"},"returnParameters":{"id":2551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2550,"mutability":"mutable","name":"char","nameLocation":"3482:4:4","nodeType":"VariableDeclaration","scope":2639,"src":"3474:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_StrChar_$1942","typeString":"StrChar"},"typeName":{"id":2549,"nodeType":"UserDefinedTypeName","pathNode":{"id":2548,"name":"StrChar","nameLocations":["3474:7:4"],"nodeType":"IdentifierPath","referencedDeclaration":1942,"src":"3474:7:4"},"referencedDeclaration":1942,"src":"3474:7:4","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_StrChar_$1942","typeString":"StrChar"}},"visibility":"internal"}],"src":"3473:14:4"},"scope":2980,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2691,"nodeType":"FunctionDefinition","src":"5113:704:4","nodes":[],"body":{"id":2690,"nodeType":"Block","src":"5187:630:4","nodes":[],"statements":[{"assignments":[2650,2652],"declarations":[{"constant":false,"id":2650,"mutability":"mutable","name":"b","nameLocation":"5264:1:4","nodeType":"VariableDeclaration","scope":2690,"src":"5256:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2649,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5256:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2652,"mutability":"mutable","name":"charLen","nameLocation":"5275:7:4","nodeType":"VariableDeclaration","scope":2690,"src":"5267:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2651,"name":"uint256","nodeType":"ElementaryTypeName","src":"5267:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2657,"initialValue":{"arguments":[{"hexValue":"66616c7365","id":2655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5300:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2653,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2643,"src":"5286:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2654,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5291:8:4","memberName":"_nextRaw","nodeType":"MemberAccess","referencedDeclaration":2967,"src":"5286:13:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_StrCharsIter_$2405_memory_ptr_$_t_bool_$returns$_t_bytes32_$_t_uint256_$attached_to$_t_struct$_StrCharsIter_$2405_memory_ptr_$","typeString":"function (struct StrCharsIter memory,bool) pure returns (bytes32,uint256)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5286:20:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$","typeString":"tuple(bytes32,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5255:51:4"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2658,"name":"charLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2652,"src":"5316:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5326:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5316:11:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2688,"nodeType":"Block","src":"5561:254:4","statements":[{"id":2681,"nodeType":"UncheckedBlock","src":"5629:49:4","statements":[{"expression":{"id":2679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2675,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2643,"src":"5653:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2677,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5658:4:4","memberName":"_len","nodeType":"MemberAccess","referencedDeclaration":2404,"src":"5653:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5666:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5653:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2680,"nodeType":"ExpressionStatement","src":"5653:14:4"}]},{"expression":{"arguments":[{"id":2684,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2650,"src":"5803:1:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"31","id":2685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5806:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"expression":{"id":2682,"name":"StrChar__","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2017,"src":"5779:9:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StrChar___$2017_$","typeString":"type(library StrChar__)"}},"id":2683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5789:13:4","memberName":"fromUnchecked","nodeType":"MemberAccess","referencedDeclaration":2016,"src":"5779:23:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_userDefinedValueType$_StrChar_$1942_$","typeString":"function (bytes32,uint256) pure returns (StrChar)"}},"id":2686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5779:29:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_StrChar_$1942","typeString":"StrChar"}},"functionReturnParameters":2648,"id":2687,"nodeType":"Return","src":"5772:36:4"}]},"id":2689,"nodeType":"IfStatement","src":"5312:503:4","trueBody":{"id":2674,"nodeType":"Block","src":"5329:226:4","statements":[{"id":2667,"nodeType":"UncheckedBlock","src":"5397:55:4","statements":[{"expression":{"id":2665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2661,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2643,"src":"5421:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2663,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5426:4:4","memberName":"_len","nodeType":"MemberAccess","referencedDeclaration":2404,"src":"5421:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":2664,"name":"charLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2652,"src":"5434:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5421:20:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2666,"nodeType":"ExpressionStatement","src":"5421:20:4"}]},{"expression":{"arguments":[{"id":2670,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2650,"src":"5537:1:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2671,"name":"charLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2652,"src":"5540:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2668,"name":"StrChar__","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2017,"src":"5513:9:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StrChar___$2017_$","typeString":"type(library StrChar__)"}},"id":2669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5523:13:4","memberName":"fromUnchecked","nodeType":"MemberAccess","referencedDeclaration":2016,"src":"5513:23:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_userDefinedValueType$_StrChar_$1942_$","typeString":"function (bytes32,uint256) pure returns (StrChar)"}},"id":2672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5513:35:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_StrChar_$1942","typeString":"StrChar"}},"functionReturnParameters":2648,"id":2673,"nodeType":"Return","src":"5506:42:4"}]}}]},"documentation":{"id":2640,"nodeType":"StructuredDocumentation","src":"4852:260:4","text":" @dev Advances the iterator and returns the next character.\n Does NOT validate iterator length. It could underflow!\n Does NOT revert on invalid UTF-8.\n WARNING: for invalid UTF-8 bytes, advances by 1 and returns an invalid `StrChar` with len 0!"},"implemented":true,"kind":"freeFunction","modifiers":[],"name":"unsafeNext","nameLocation":"5122:10:4","parameters":{"id":2644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2643,"mutability":"mutable","name":"self","nameLocation":"5153:4:4","nodeType":"VariableDeclaration","scope":2691,"src":"5133:24:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter"},"typeName":{"id":2642,"nodeType":"UserDefinedTypeName","pathNode":{"id":2641,"name":"StrCharsIter","nameLocations":["5133:12:4"],"nodeType":"IdentifierPath","referencedDeclaration":2405,"src":"5133:12:4"},"referencedDeclaration":2405,"src":"5133:12:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_storage_ptr","typeString":"struct StrCharsIter"}},"visibility":"internal"}],"src":"5132:26:4"},"returnParameters":{"id":2648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2647,"mutability":"mutable","name":"char","nameLocation":"5181:4:4","nodeType":"VariableDeclaration","scope":2691,"src":"5173:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_StrChar_$1942","typeString":"StrChar"},"typeName":{"id":2646,"nodeType":"UserDefinedTypeName","pathNode":{"id":2645,"name":"StrChar","nameLocations":["5173:7:4"],"nodeType":"IdentifierPath","referencedDeclaration":1942,"src":"5173:7:4"},"referencedDeclaration":1942,"src":"5173:7:4","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_StrChar_$1942","typeString":"StrChar"}},"visibility":"internal"}],"src":"5172:14:4"},"scope":2980,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2738,"nodeType":"FunctionDefinition","src":"5947:503:4","nodes":[],"body":{"id":2737,"nodeType":"Block","src":"6018:432:4","nodes":[],"statements":[{"assignments":[2701],"declarations":[{"constant":false,"id":2701,"mutability":"mutable","name":"endPtr","nameLocation":"6032:6:4","nodeType":"VariableDeclaration","scope":2737,"src":"6024:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2700,"name":"uint256","nodeType":"ElementaryTypeName","src":"6024:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2702,"nodeType":"VariableDeclarationStatement","src":"6024:14:4"},{"id":2711,"nodeType":"UncheckedBlock","src":"6080:57:4","statements":[{"expression":{"id":2709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2703,"name":"endPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2701,"src":"6100:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2704,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"6109:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2705,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6114:4:4","memberName":"_ptr","nodeType":"MemberAccess","referencedDeclaration":2402,"src":"6109:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":2706,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"6121:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2707,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6126:4:4","memberName":"_len","nodeType":"MemberAccess","referencedDeclaration":2404,"src":"6121:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6109:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6100:30:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2710,"nodeType":"ExpressionStatement","src":"6100:30:4"}]},{"body":{"id":2727,"nodeType":"Block","src":"6169:150:4","statements":[{"expression":{"arguments":[{"hexValue":"74727565","id":2719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6193:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2716,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"6179:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2718,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6184:8:4","memberName":"_nextRaw","nodeType":"MemberAccess","referencedDeclaration":2967,"src":"6179:13:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_StrCharsIter_$2405_memory_ptr_$_t_bool_$returns$_t_bytes32_$_t_uint256_$attached_to$_t_struct$_StrCharsIter_$2405_memory_ptr_$","typeString":"function (struct StrCharsIter memory,bool) pure returns (bytes32,uint256)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6179:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$","typeString":"tuple(bytes32,uint256)"}},"id":2721,"nodeType":"ExpressionStatement","src":"6179:19:4"},{"id":2726,"nodeType":"UncheckedBlock","src":"6267:46:4","statements":[{"expression":{"id":2724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2722,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2698,"src":"6291:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6301:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6291:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2725,"nodeType":"ExpressionStatement","src":"6291:11:4"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2712,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"6149:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2713,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6154:4:4","memberName":"_ptr","nodeType":"MemberAccess","referencedDeclaration":2402,"src":"6149:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2714,"name":"endPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2701,"src":"6161:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6149:18:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2728,"nodeType":"WhileStatement","src":"6142:177:4"},{"expression":{"id":2733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2729,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"6415:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2731,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6420:4:4","memberName":"_len","nodeType":"MemberAccess","referencedDeclaration":2404,"src":"6415:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":2732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6427:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6415:13:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2734,"nodeType":"ExpressionStatement","src":"6415:13:4"},{"expression":{"id":2735,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2698,"src":"6441:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2699,"id":2736,"nodeType":"Return","src":"6434:13:4"}]},"documentation":{"id":2692,"nodeType":"StructuredDocumentation","src":"5819:127:4","text":" @dev Consumes the iterator, counting the number of UTF-8 characters.\n Note O(n) time!\n Reverts on invalid UTF-8."},"implemented":true,"kind":"freeFunction","modifiers":[],"name":"count","nameLocation":"5956:5:4","parameters":{"id":2696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2695,"mutability":"mutable","name":"self","nameLocation":"5982:4:4","nodeType":"VariableDeclaration","scope":2738,"src":"5962:24:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter"},"typeName":{"id":2694,"nodeType":"UserDefinedTypeName","pathNode":{"id":2693,"name":"StrCharsIter","nameLocations":["5962:12:4"],"nodeType":"IdentifierPath","referencedDeclaration":2405,"src":"5962:12:4"},"referencedDeclaration":2405,"src":"5962:12:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_storage_ptr","typeString":"struct StrCharsIter"}},"visibility":"internal"}],"src":"5961:26:4"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2698,"mutability":"mutable","name":"result","nameLocation":"6010:6:4","nodeType":"VariableDeclaration","scope":2738,"src":"6002:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2697,"name":"uint256","nodeType":"ElementaryTypeName","src":"6002:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6001:16:4"},"scope":2980,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2781,"nodeType":"FunctionDefinition","src":"6627:337:4","nodes":[],"body":{"id":2780,"nodeType":"Block","src":"6695:269:4","nodes":[],"statements":[{"assignments":[2748],"declarations":[{"constant":false,"id":2748,"mutability":"mutable","name":"endPtr","nameLocation":"6709:6:4","nodeType":"VariableDeclaration","scope":2780,"src":"6701:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2747,"name":"uint256","nodeType":"ElementaryTypeName","src":"6701:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2749,"nodeType":"VariableDeclarationStatement","src":"6701:14:4"},{"id":2758,"nodeType":"UncheckedBlock","src":"6757:57:4","statements":[{"expression":{"id":2756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2750,"name":"endPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2748,"src":"6777:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2751,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2742,"src":"6786:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2752,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6791:4:4","memberName":"_ptr","nodeType":"MemberAccess","referencedDeclaration":2402,"src":"6786:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":2753,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2742,"src":"6798:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2754,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6803:4:4","memberName":"_len","nodeType":"MemberAccess","referencedDeclaration":2404,"src":"6798:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6786:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6777:30:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2757,"nodeType":"ExpressionStatement","src":"6777:30:4"}]},{"body":{"id":2776,"nodeType":"Block","src":"6846:99:4","statements":[{"assignments":[null,2764],"declarations":[null,{"constant":false,"id":2764,"mutability":"mutable","name":"charLen","nameLocation":"6867:7:4","nodeType":"VariableDeclaration","scope":2776,"src":"6859:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2763,"name":"uint256","nodeType":"ElementaryTypeName","src":"6859:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2769,"initialValue":{"arguments":[{"hexValue":"66616c7365","id":2767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6892:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2765,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2742,"src":"6878:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2766,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6883:8:4","memberName":"_nextRaw","nodeType":"MemberAccess","referencedDeclaration":2967,"src":"6878:13:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_StrCharsIter_$2405_memory_ptr_$_t_bool_$returns$_t_bytes32_$_t_uint256_$attached_to$_t_struct$_StrCharsIter_$2405_memory_ptr_$","typeString":"function (struct StrCharsIter memory,bool) pure returns (bytes32,uint256)"}},"id":2768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6878:20:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$","typeString":"tuple(bytes32,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"6856:42:4"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2770,"name":"charLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2764,"src":"6912:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6923:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6912:12:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2775,"nodeType":"IfStatement","src":"6908:30:4","trueBody":{"expression":{"hexValue":"66616c7365","id":2773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6933:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":2746,"id":2774,"nodeType":"Return","src":"6926:12:4"}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2759,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2742,"src":"6826:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2760,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6831:4:4","memberName":"_ptr","nodeType":"MemberAccess","referencedDeclaration":2402,"src":"6826:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2761,"name":"endPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2748,"src":"6838:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6826:18:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2777,"nodeType":"WhileStatement","src":"6819:126:4"},{"expression":{"hexValue":"74727565","id":2778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6957:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2746,"id":2779,"nodeType":"Return","src":"6950:11:4"}]},"documentation":{"id":2739,"nodeType":"StructuredDocumentation","src":"6452:174:4","text":" @dev Consumes the iterator, validating UTF-8 characters.\n Note O(n) time!\n Returns true if all are valid; otherwise false on the first invalid UTF-8 character."},"implemented":true,"kind":"freeFunction","modifiers":[],"name":"validateUtf8","nameLocation":"6636:12:4","parameters":{"id":2743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2742,"mutability":"mutable","name":"self","nameLocation":"6669:4:4","nodeType":"VariableDeclaration","scope":2781,"src":"6649:24:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter"},"typeName":{"id":2741,"nodeType":"UserDefinedTypeName","pathNode":{"id":2740,"name":"StrCharsIter","nameLocations":["6649:12:4"],"nodeType":"IdentifierPath","referencedDeclaration":2405,"src":"6649:12:4"},"referencedDeclaration":2405,"src":"6649:12:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_storage_ptr","typeString":"struct StrCharsIter"}},"visibility":"internal"}],"src":"6648:26:4"},"returnParameters":{"id":2746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2745,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2781,"src":"6689:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2744,"name":"bool","nodeType":"ElementaryTypeName","src":"6689:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6688:6:4"},"scope":2980,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2866,"nodeType":"FunctionDefinition","src":"7819:1328:4","nodes":[],"body":{"id":2865,"nodeType":"Block","src":"7896:1251:4","nodes":[],"statements":[{"assignments":[2791],"declarations":[{"constant":false,"id":2791,"mutability":"mutable","name":"endPtr","nameLocation":"7910:6:4","nodeType":"VariableDeclaration","scope":2865,"src":"7902:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2790,"name":"uint256","nodeType":"ElementaryTypeName","src":"7902:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2792,"nodeType":"VariableDeclarationStatement","src":"7902:14:4"},{"id":2801,"nodeType":"UncheckedBlock","src":"7958:57:4","statements":[{"expression":{"id":2799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2793,"name":"endPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2791,"src":"7978:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2794,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2785,"src":"7987:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2795,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7992:4:4","memberName":"_ptr","nodeType":"MemberAccess","referencedDeclaration":2402,"src":"7987:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":2796,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2785,"src":"7999:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2797,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8004:4:4","memberName":"_len","nodeType":"MemberAccess","referencedDeclaration":2404,"src":"7999:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7987:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7978:30:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2800,"nodeType":"ExpressionStatement","src":"7978:30:4"}]},{"body":{"id":2855,"nodeType":"Block","src":"8047:1059:4","statements":[{"assignments":[2807],"declarations":[{"constant":false,"id":2807,"mutability":"mutable","name":"leadingByte","nameLocation":"8065:11:4","nodeType":"VariableDeclaration","scope":2855,"src":"8057:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2806,"name":"uint256","nodeType":"ElementaryTypeName","src":"8057:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2808,"nodeType":"VariableDeclarationStatement","src":"8057:19:4"},{"AST":{"nativeSrc":"8261:192:4","nodeType":"YulBlock","src":"8261:192:4","statements":[{"nativeSrc":"8275:168:4","nodeType":"YulAssignment","src":"8275:168:4","value":{"arguments":[{"kind":"number","nativeSrc":"8295:1:4","nodeType":"YulLiteral","src":"8295:1:4","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"self","nativeSrc":"8423:4:4","nodeType":"YulIdentifier","src":"8423:4:4"}],"functionName":{"name":"mload","nativeSrc":"8417:5:4","nodeType":"YulIdentifier","src":"8417:5:4"},"nativeSrc":"8417:11:4","nodeType":"YulFunctionCall","src":"8417:11:4"}],"functionName":{"name":"mload","nativeSrc":"8298:5:4","nodeType":"YulIdentifier","src":"8298:5:4"},"nativeSrc":"8298:144:4","nodeType":"YulFunctionCall","src":"8298:144:4"}],"functionName":{"name":"byte","nativeSrc":"8290:4:4","nodeType":"YulIdentifier","src":"8290:4:4"},"nativeSrc":"8290:153:4","nodeType":"YulFunctionCall","src":"8290:153:4"},"variableNames":[{"name":"leadingByte","nativeSrc":"8275:11:4","nodeType":"YulIdentifier","src":"8275:11:4"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2807,"isOffset":false,"isSlot":false,"src":"8275:11:4","valueSize":1},{"declaration":2785,"isOffset":false,"isSlot":false,"src":"8423:4:4","valueSize":1}],"id":2809,"nodeType":"InlineAssembly","src":"8252:201:4"},{"id":2854,"nodeType":"UncheckedBlock","src":"8462:638:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2810,"name":"leadingByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"8728:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30783830","id":2811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8742:4:4","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"src":"8728:18:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2820,"name":"leadingByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"8805:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30784530","id":2821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8819:4:4","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"0xE0"},"src":"8805:18:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2830,"name":"leadingByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"8882:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30784630","id":2831,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8896:4:4","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"0xF0"},"src":"8882:18:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2846,"nodeType":"Block","src":"8955:47:4","statements":[{"expression":{"id":2844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2840,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2785,"src":"8973:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2842,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8978:4:4","memberName":"_ptr","nodeType":"MemberAccess","referencedDeclaration":2402,"src":"8973:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8986:1:4","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"8973:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2845,"nodeType":"ExpressionStatement","src":"8973:14:4"}]},"id":2847,"nodeType":"IfStatement","src":"8878:124:4","trueBody":{"id":2839,"nodeType":"Block","src":"8902:47:4","statements":[{"expression":{"id":2837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2833,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2785,"src":"8920:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2835,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8925:4:4","memberName":"_ptr","nodeType":"MemberAccess","referencedDeclaration":2402,"src":"8920:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"33","id":2836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8933:1:4","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"8920:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2838,"nodeType":"ExpressionStatement","src":"8920:14:4"}]}},"id":2848,"nodeType":"IfStatement","src":"8801:201:4","trueBody":{"id":2829,"nodeType":"Block","src":"8825:47:4","statements":[{"expression":{"id":2827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2823,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2785,"src":"8843:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2825,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8848:4:4","memberName":"_ptr","nodeType":"MemberAccess","referencedDeclaration":2402,"src":"8843:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8856:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"8843:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2828,"nodeType":"ExpressionStatement","src":"8843:14:4"}]}},"id":2849,"nodeType":"IfStatement","src":"8724:278:4","trueBody":{"id":2819,"nodeType":"Block","src":"8748:47:4","statements":[{"expression":{"id":2817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2813,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2785,"src":"8766:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2815,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8771:4:4","memberName":"_ptr","nodeType":"MemberAccess","referencedDeclaration":2402,"src":"8766:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8779:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8766:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2818,"nodeType":"ExpressionStatement","src":"8766:14:4"}]}},{"expression":{"id":2852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2850,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"9078:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9088:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9078:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2853,"nodeType":"ExpressionStatement","src":"9078:11:4"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2802,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2785,"src":"8027:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2803,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8032:4:4","memberName":"_ptr","nodeType":"MemberAccess","referencedDeclaration":2402,"src":"8027:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2804,"name":"endPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2791,"src":"8039:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8027:18:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2856,"nodeType":"WhileStatement","src":"8020:1086:4"},{"expression":{"id":2861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2857,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2785,"src":"9111:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2859,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9116:4:4","memberName":"_len","nodeType":"MemberAccess","referencedDeclaration":2404,"src":"9111:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":2860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9123:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9111:13:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2862,"nodeType":"ExpressionStatement","src":"9111:13:4"},{"expression":{"id":2863,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"9138:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2789,"id":2864,"nodeType":"Return","src":"9131:13:4"}]},"documentation":{"id":2782,"nodeType":"StructuredDocumentation","src":"6966:852:4","text":" @dev VERY UNSAFE - a single invalid UTF-8 character can severely alter the result!\n Consumes the iterator, counting the number of UTF-8 characters.\n Significantly faster than safe `count`, especially for long mutlibyte strings.\n Note `count` is actually a bit more efficient than `validateUtf8`.\n `count` is much more efficient than calling `validateUtf8` and `unsafeCount` together.\n Use `unsafeCount` only when you are already certain that UTF-8 is valid.\n If you want speed and no validation, just use byte length, it's faster and more predictably wrong.\n Some gas usage metrics:\n 1 ascii char:\n   count:       571 gas\n   unsafeCount: 423 gas\n 100 ascii chars:\n   count:       27406 gas\n   unsafeCount: 12900 gas\n 1000 chinese chars (3000 bytes):\n   count:       799305 gas\n   unsafeCount: 178301 gas"},"implemented":true,"kind":"freeFunction","modifiers":[],"name":"unsafeCount","nameLocation":"7828:11:4","parameters":{"id":2786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2785,"mutability":"mutable","name":"self","nameLocation":"7860:4:4","nodeType":"VariableDeclaration","scope":2866,"src":"7840:24:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter"},"typeName":{"id":2784,"nodeType":"UserDefinedTypeName","pathNode":{"id":2783,"name":"StrCharsIter","nameLocations":["7840:12:4"],"nodeType":"IdentifierPath","referencedDeclaration":2405,"src":"7840:12:4"},"referencedDeclaration":2405,"src":"7840:12:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_storage_ptr","typeString":"struct StrCharsIter"}},"visibility":"internal"}],"src":"7839:26:4"},"returnParameters":{"id":2789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2788,"mutability":"mutable","name":"result","nameLocation":"7888:6:4","nodeType":"VariableDeclaration","scope":2866,"src":"7880:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2787,"name":"uint256","nodeType":"ElementaryTypeName","src":"7880:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7879:16:4"},"scope":2980,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2872,"nodeType":"UsingForDirective","src":"9353:57:4","nodes":[],"functionList":[{"function":{"id":2867,"name":"asSlice","nameLocations":["9361:7:4"],"nodeType":"IdentifierPath","referencedDeclaration":2891,"src":"9361:7:4"}},{"function":{"id":2868,"name":"_nextRaw","nameLocations":["9370:8:4"],"nodeType":"IdentifierPath","referencedDeclaration":2967,"src":"9370:8:4"}},{"function":{"id":2869,"name":"_sliceIter","nameLocations":["9380:10:4"],"nodeType":"IdentifierPath","referencedDeclaration":2979,"src":"9380:10:4"}}],"global":false,"typeName":{"id":2871,"nodeType":"UserDefinedTypeName","pathNode":{"id":2870,"name":"StrCharsIter","nameLocations":["9397:12:4"],"nodeType":"IdentifierPath","referencedDeclaration":2405,"src":"9397:12:4"},"referencedDeclaration":2405,"src":"9397:12:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_storage_ptr","typeString":"struct StrCharsIter"}}},{"id":2891,"nodeType":"FunctionDefinition","src":"9498:129:4","nodes":[],"body":{"id":2890,"nodeType":"Block","src":"9568:59:4","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":2884,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2876,"src":"9603:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2885,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9608:4:4","memberName":"_ptr","nodeType":"MemberAccess","referencedDeclaration":2402,"src":"9603:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2886,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2876,"src":"9614:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2887,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9619:4:4","memberName":"_len","nodeType":"MemberAccess","referencedDeclaration":2404,"src":"9614:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2882,"name":"Slice__","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"9581:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Slice___$146_$","typeString":"type(library Slice__)"}},"id":2883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9589:13:4","memberName":"fromUnchecked","nodeType":"MemberAccess","referencedDeclaration":145,"src":"9581:21:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_userDefinedValueType$_Slice_$74_$","typeString":"function (uint256,uint256) pure returns (Slice)"}},"id":2888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9581:43:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$74","typeString":"Slice"}},"functionReturnParameters":2881,"id":2889,"nodeType":"Return","src":"9574:50:4"}]},"documentation":{"id":2873,"nodeType":"StructuredDocumentation","src":"9412:85:4","text":" @dev Views the underlying data as a `bytes` subslice of the original data."},"implemented":true,"kind":"freeFunction","modifiers":[],"name":"asSlice","nameLocation":"9507:7:4","parameters":{"id":2877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2876,"mutability":"mutable","name":"self","nameLocation":"9535:4:4","nodeType":"VariableDeclaration","scope":2891,"src":"9515:24:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter"},"typeName":{"id":2875,"nodeType":"UserDefinedTypeName","pathNode":{"id":2874,"name":"StrCharsIter","nameLocations":["9515:12:4"],"nodeType":"IdentifierPath","referencedDeclaration":2405,"src":"9515:12:4"},"referencedDeclaration":2405,"src":"9515:12:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_storage_ptr","typeString":"struct StrCharsIter"}},"visibility":"internal"}],"src":"9514:26:4"},"returnParameters":{"id":2881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2880,"mutability":"mutable","name":"slice","nameLocation":"9561:5:4","nodeType":"VariableDeclaration","scope":2891,"src":"9555:11:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$74","typeString":"Slice"},"typeName":{"id":2879,"nodeType":"UserDefinedTypeName","pathNode":{"id":2878,"name":"Slice","nameLocations":["9555:5:4"],"nodeType":"IdentifierPath","referencedDeclaration":74,"src":"9555:5:4"},"referencedDeclaration":74,"src":"9555:5:4","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Slice_$74","typeString":"Slice"}},"visibility":"internal"}],"src":"9554:13:4"},"scope":2980,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2967,"nodeType":"FunctionDefinition","src":"10492:1331:4","nodes":[],"body":{"id":2966,"nodeType":"Block","src":"10608:1215:4","nodes":[],"statements":[{"AST":{"nativeSrc":"10783:153:4","nodeType":"YulBlock","src":"10783:153:4","statements":[{"nativeSrc":"10793:137:4","nodeType":"YulAssignment","src":"10793:137:4","value":{"arguments":[{"arguments":[{"name":"self","nativeSrc":"10915:4:4","nodeType":"YulIdentifier","src":"10915:4:4"}],"functionName":{"name":"mload","nativeSrc":"10909:5:4","nodeType":"YulIdentifier","src":"10909:5:4"},"nativeSrc":"10909:11:4","nodeType":"YulFunctionCall","src":"10909:11:4"}],"functionName":{"name":"mload","nativeSrc":"10798:5:4","nodeType":"YulIdentifier","src":"10798:5:4"},"nativeSrc":"10798:132:4","nodeType":"YulFunctionCall","src":"10798:132:4"},"variableNames":[{"name":"b","nativeSrc":"10793:1:4","nodeType":"YulIdentifier","src":"10793:1:4"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2900,"isOffset":false,"isSlot":false,"src":"10793:1:4","valueSize":1},{"declaration":2895,"isOffset":false,"isSlot":false,"src":"10915:4:4","valueSize":1}],"id":2904,"nodeType":"InlineAssembly","src":"10774:162:4"},{"expression":{"id":2909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2905,"name":"charLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2902,"src":"10996:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2907,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2900,"src":"11018:1:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2906,"name":"isValidUtf8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5949,"src":"11006:11:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":2908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11006:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10996:24:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2910,"nodeType":"ExpressionStatement","src":"10996:24:4"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2911,"name":"charLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2902,"src":"11031:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":2912,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2895,"src":"11041:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2913,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11046:4:4","memberName":"_len","nodeType":"MemberAccess","referencedDeclaration":2404,"src":"11041:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11031:19:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2932,"name":"charLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2902,"src":"11398:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11409:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11398:12:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2963,"nodeType":"Block","src":"11637:184:4","statements":[{"id":2958,"nodeType":"UncheckedBlock","src":"11714:55:4","statements":[{"expression":{"id":2956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2952,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2895,"src":"11738:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2954,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11743:4:4","memberName":"_ptr","nodeType":"MemberAccess","referencedDeclaration":2402,"src":"11738:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2955,"name":"charLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2902,"src":"11751:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11738:20:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2957,"nodeType":"ExpressionStatement","src":"11738:20:4"}]},{"expression":{"components":[{"id":2959,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2900,"src":"11803:1:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2960,"name":"charLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2902,"src":"11806:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2961,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11802:12:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$","typeString":"tuple(bytes32,uint256)"}},"functionReturnParameters":2903,"id":2962,"nodeType":"Return","src":"11795:19:4"}]},"id":2964,"nodeType":"IfStatement","src":"11394:427:4","trueBody":{"id":2951,"nodeType":"Block","src":"11412:219:4","statements":[{"condition":{"id":2935,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2897,"src":"11426:15:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2939,"nodeType":"IfStatement","src":"11422:50:4","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2936,"name":"StrChar__InvalidUTF8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1944,"src":"11450:20:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":2937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11450:22:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2938,"nodeType":"RevertStatement","src":"11443:29:4"}},{"id":2946,"nodeType":"UncheckedBlock","src":"11534:49:4","statements":[{"expression":{"id":2944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2940,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2895,"src":"11558:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2942,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11563:4:4","memberName":"_ptr","nodeType":"MemberAccess","referencedDeclaration":2402,"src":"11558:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11571:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11558:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2945,"nodeType":"ExpressionStatement","src":"11558:14:4"}]},{"expression":{"components":[{"id":2947,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2900,"src":"11619:1:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"30","id":2948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11622:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2949,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11618:6:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_rational_0_by_1_$","typeString":"tuple(bytes32,int_const 0)"}},"functionReturnParameters":2903,"id":2950,"nodeType":"Return","src":"11611:13:4"}]}},"id":2965,"nodeType":"IfStatement","src":"11027:794:4","trueBody":{"id":2931,"nodeType":"Block","src":"11052:336:4","statements":[{"condition":{"id":2915,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2897,"src":"11183:15:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2919,"nodeType":"IfStatement","src":"11179:50:4","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2916,"name":"StrChar__InvalidUTF8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1944,"src":"11207:20:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":2917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11207:22:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2918,"nodeType":"RevertStatement","src":"11200:29:4"}},{"id":2926,"nodeType":"UncheckedBlock","src":"11291:49:4","statements":[{"expression":{"id":2924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2920,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2895,"src":"11315:4:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter memory"}},"id":2922,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11320:4:4","memberName":"_ptr","nodeType":"MemberAccess","referencedDeclaration":2402,"src":"11315:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11328:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11315:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2925,"nodeType":"ExpressionStatement","src":"11315:14:4"}]},{"expression":{"components":[{"id":2927,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2900,"src":"11376:1:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"30","id":2928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11379:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2929,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11375:6:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_rational_0_by_1_$","typeString":"tuple(bytes32,int_const 0)"}},"functionReturnParameters":2903,"id":2930,"nodeType":"Return","src":"11368:13:4"}]}}]},"documentation":{"id":2892,"nodeType":"StructuredDocumentation","src":"9629:862:4","text":" @dev Used internally to efficiently reuse iteration logic. Has a lot of caveats.\n NEITHER checks NOR modifies iterator length.\n (Caller MUST guarantee that len != 0. Caller MUST modify len correctly themselves.)\n Does NOT form the character properly, and returns raw unmasked bytes and length.\n Does advance the iterator pointer.\n Validates UTF-8.\n For valid chars advances the pointer by charLen.\n For invalid chars behaviour depends on `revertOnInvalid`:\n revertOnInvalid == true: revert.\n revertOnInvalid == false: advance the pointer by 1, but return charLen 0.\n @return b raw unmasked bytes; if not discarded, then charLen SHOULD be used to mask it.\n @return charLen length of a valid UTF-8 char; 0 for invalid chars.\n Guarantees that charLen <= self._len (as long as self._len != 0, which is the caller's guarantee)"},"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_nextRaw","nameLocation":"10501:8:4","parameters":{"id":2898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2895,"mutability":"mutable","name":"self","nameLocation":"10530:4:4","nodeType":"VariableDeclaration","scope":2967,"src":"10510:24:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter"},"typeName":{"id":2894,"nodeType":"UserDefinedTypeName","pathNode":{"id":2893,"name":"StrCharsIter","nameLocations":["10510:12:4"],"nodeType":"IdentifierPath","referencedDeclaration":2405,"src":"10510:12:4"},"referencedDeclaration":2405,"src":"10510:12:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_storage_ptr","typeString":"struct StrCharsIter"}},"visibility":"internal"},{"constant":false,"id":2897,"mutability":"mutable","name":"revertOnInvalid","nameLocation":"10541:15:4","nodeType":"VariableDeclaration","scope":2967,"src":"10536:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2896,"name":"bool","nodeType":"ElementaryTypeName","src":"10536:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10509:48:4"},"returnParameters":{"id":2903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2900,"mutability":"mutable","name":"b","nameLocation":"10588:1:4","nodeType":"VariableDeclaration","scope":2967,"src":"10580:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2899,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10580:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2902,"mutability":"mutable","name":"charLen","nameLocation":"10599:7:4","nodeType":"VariableDeclaration","scope":2967,"src":"10591:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2901,"name":"uint256","nodeType":"ElementaryTypeName","src":"10591:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10579:28:4"},"scope":2980,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2979,"nodeType":"FunctionDefinition","src":"11989:132:4","nodes":[],"body":{"id":2978,"nodeType":"Block","src":"12074:47:4","nodes":[],"statements":[{"AST":{"nativeSrc":"12089:30:4","nodeType":"YulBlock","src":"12089:30:4","statements":[{"nativeSrc":"12099:14:4","nodeType":"YulAssignment","src":"12099:14:4","value":{"name":"self","nativeSrc":"12109:4:4","nodeType":"YulIdentifier","src":"12109:4:4"},"variableNames":[{"name":"result","nativeSrc":"12099:6:4","nodeType":"YulIdentifier","src":"12099:6:4"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2975,"isOffset":false,"isSlot":false,"src":"12099:6:4","valueSize":1},{"declaration":2971,"isOffset":false,"isSlot":false,"src":"12109:4:4","valueSize":1}],"id":2977,"nodeType":"InlineAssembly","src":"12080:39:4"}]},"documentation":{"id":2968,"nodeType":"StructuredDocumentation","src":"11825:163:4","text":" @dev Returns the underlying `SliceIter`.\n AVOID USING THIS EXTERNALLY!\n Advancing the underlying slice could lead to invalid UTF-8 for StrCharsIter."},"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_sliceIter","nameLocation":"11998:10:4","parameters":{"id":2972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2971,"mutability":"mutable","name":"self","nameLocation":"12029:4:4","nodeType":"VariableDeclaration","scope":2979,"src":"12009:24:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_memory_ptr","typeString":"struct StrCharsIter"},"typeName":{"id":2970,"nodeType":"UserDefinedTypeName","pathNode":{"id":2969,"name":"StrCharsIter","nameLocations":["12009:12:4"],"nodeType":"IdentifierPath","referencedDeclaration":2405,"src":"12009:12:4"},"referencedDeclaration":2405,"src":"12009:12:4","typeDescriptions":{"typeIdentifier":"t_struct$_StrCharsIter_$2405_storage_ptr","typeString":"struct StrCharsIter"}},"visibility":"internal"}],"src":"12008:26:4"},"returnParameters":{"id":2976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2975,"mutability":"mutable","name":"result","nameLocation":"12066:6:4","nodeType":"VariableDeclaration","scope":2979,"src":"12049:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SliceIter_$1745_memory_ptr","typeString":"struct SliceIter"},"typeName":{"id":2974,"nodeType":"UserDefinedTypeName","pathNode":{"id":2973,"name":"SliceIter","nameLocations":["12049:9:4"],"nodeType":"IdentifierPath","referencedDeclaration":1745,"src":"12049:9:4"},"referencedDeclaration":1745,"src":"12049:9:4","typeDescriptions":{"typeIdentifier":"t_struct$_SliceIter_$1745_storage_ptr","typeString":"struct SliceIter"}},"visibility":"internal"}],"src":"12048:25:4"},"scope":2980,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"license":"MIT"},"id":4}