diff --git a/.changeset/six-stars-hide.md b/.changeset/six-stars-hide.md new file mode 100644 index 00000000000..4eabe95e05e --- /dev/null +++ b/.changeset/six-stars-hide.md @@ -0,0 +1,5 @@ +--- +'openzeppelin-solidity': patch +--- + +Optimized Pausable.sol by using uint256 instead of bool for lower gas usage. diff --git a/.changeset/tidy-animals-guess.md b/.changeset/tidy-animals-guess.md new file mode 100644 index 00000000000..dfbfeec71ce --- /dev/null +++ b/.changeset/tidy-animals-guess.md @@ -0,0 +1,5 @@ +--- +'openzeppelin-solidity': patch +--- + +edited "peused" function diff --git a/.deps/npm/to b/.deps/npm/to new file mode 100644 index 00000000000..b90f119b279 --- /dev/null +++ b/.deps/npm/to @@ -0,0 +1,4 @@ +/** + * to.js - main file + */ +module.exports = require('./lib/to'); diff --git a/.deps/npm/tok b/.deps/npm/tok new file mode 100644 index 00000000000..82df4e442c2 --- /dev/null +++ b/.deps/npm/tok @@ -0,0 +1,8 @@ +/** + * Minified by jsDelivr using Terser v5.39.0. + * Original file: /npm/tok@0.1.0/index.js + * + * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files + */ +var _=require("underscore"),crypto=require("crypto"),moment=require("moment");module.exports=function(e){if(_.defaults(e,{expiration:36e5,hashAlgorithm:"sha1",method:"hash"}),!e.secretKey)throw"must provide a secretKey";if("hash"!==e.method){if(!e.load)throw"must provide a load() function";if(!e.save)throw"must provide a save() function"}var t=function(t,a,n){a=a||[],_.isArray(t)||(t=_.isObject(t)?_.values(t):[t]),_.isArray(a)||(a=_.isObject(a)?_.values(a):[a]);var r=_.chain(t).concat(a).push(n).join("").value();return crypto.createHmac(e.hashAlgorithm,e.secretKey).update(r).digest("hex")};return{check:function(a,n,r){var o=function(t){return!!e.expiration&&moment().diff(parseInt(t.date,10))>e.expiration};if("hash"===e.method)return o(n)?r("token expired"):r(n.hash===t(a,n.value,n.date)?null:"token invalid");arguments.length<3&&(r=n,n=null),e.load(a,(function(e,i){return e?r(e):i?o(i)?r("token expired"):n.hash?r(i.hash===n.hash?null:"token invalid"):r(i.hash===t(a,n.value,n.date)?null:"token invalid"):r("token not found")}))},create:function(a,n,r){var o=+new Date,i=t(a,n,o),h={date:o,hash:i},u={date:o,hash:i};if(n&&(h.value=n),"hash"===e.method)return r(null,h);e.save(a,u,(function(e){n&&delete h.hash,r(e,h)}))}}}; +//# sourceMappingURL=/sm/9b61580e56715ffcd364f1a70a4f7eb5885b8874b3f0b881759d385f3df968fe.map \ No newline at end of file diff --git a/.deps/npm/toke b/.deps/npm/toke new file mode 100644 index 00000000000..cfe2353bd52 --- /dev/null +++ b/.deps/npm/toke @@ -0,0 +1,8 @@ +/** + * Minified by jsDelivr using Terser v5.39.0. + * Original file: /npm/toke@0.0.3/build/src/toke.js + * + * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files + */ +"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function e(e,r){for(var t=0;t + + + + + + token CDN by jsDelivr - A free, fast, and reliable Open Source CDN + + + + +
+
+

token CDN files

+ + + jsDelivr monthly hits badge + +
+ + +
+
    +
  1. + token@0.1.0 + +
  2. +
+ + +
+ +
+ + + + + + + + + + + + + + + + + + + + +
+ + test +
+ + index.js + 1.63 KB
+ + package.json + 495 B
+ + readme.md + 3.26 KB
+
+ +
+

Free Open Source CDN for token

+ +

+ Looking for a nice landing page for your package? + https://www.jsdelivr.com/package/npm/token +

+
+
+ + + + + + \ No newline at end of file diff --git a/contracts/artifacts/MyERC.json b/contracts/artifacts/MyERC.json new file mode 100644 index 00000000000..e6a3d7821e9 --- /dev/null +++ b/contracts/artifacts/MyERC.json @@ -0,0 +1,9055 @@ +{ + "deploy": { + "VM:-": { + "linkReferences": {}, + "autoDeployLib": true + }, + "main:1": { + "linkReferences": {}, + "autoDeployLib": true + }, + "ropsten:3": { + "linkReferences": {}, + "autoDeployLib": true + }, + "rinkeby:4": { + "linkReferences": {}, + "autoDeployLib": true + }, + "kovan:42": { + "linkReferences": {}, + "autoDeployLib": true + }, + "goerli:5": { + "linkReferences": {}, + "autoDeployLib": true + }, + "Custom": { + "linkReferences": {}, + "autoDeployLib": true + } + }, + "data": { + "bytecode": { + "functionDebugData": { + "@_12": { + "entryPoint": null, + "id": 12, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_216": { + "entryPoint": null, + "id": 216, + "parameterSlots": 2, + "returnSlots": 0 + }, + "array_dataslot_t_string_storage": { + "entryPoint": 311, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_length_t_string_memory_ptr": { + "entryPoint": 163, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "clean_up_bytearray_end_slots_t_string_storage": { + "entryPoint": 599, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "cleanup_t_uint256": { + "entryPoint": 437, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "clear_storage_range_t_bytes1": { + "entryPoint": 565, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "convert_t_uint256_to_t_uint256": { + "entryPoint": 455, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": { + "entryPoint": 736, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "divide_by_32_ceil": { + "entryPoint": 329, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "extract_byte_array_length": { + "entryPoint": 263, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "extract_used_part_and_set_length_of_short_byte_array": { + "entryPoint": 709, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "identity": { + "entryPoint": 446, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "mask_bytes_dynamic": { + "entryPoint": 681, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "panic_error_0x22": { + "entryPoint": 218, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 173, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "prepare_store_t_uint256": { + "entryPoint": 488, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "shift_left_dynamic": { + "entryPoint": 344, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "shift_right_unsigned_dynamic": { + "entryPoint": 669, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "storage_set_to_zero_t_uint256": { + "entryPoint": 541, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "update_byte_slice_dynamic32": { + "entryPoint": 356, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "update_storage_value_t_uint256_to_t_uint256": { + "entryPoint": 497, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "zero_value_for_split_t_uint256": { + "entryPoint": 534, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:5231:8", + "nodeType": "YulBlock", + "src": "0:5231:8", + "statements": [ + { + "body": { + "nativeSrc": "66:40:8", + "nodeType": "YulBlock", + "src": "66:40:8", + "statements": [ + { + "nativeSrc": "77:22:8", + "nodeType": "YulAssignment", + "src": "77:22:8", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "93:5:8", + "nodeType": "YulIdentifier", + "src": "93:5:8" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "87:5:8", + "nodeType": "YulIdentifier", + "src": "87:5:8" + }, + "nativeSrc": "87:12:8", + "nodeType": "YulFunctionCall", + "src": "87:12:8" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "77:6:8", + "nodeType": "YulIdentifier", + "src": "77:6:8" + } + ] + } + ] + }, + "name": "array_length_t_string_memory_ptr", + "nativeSrc": "7:99:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "49:5:8", + "nodeType": "YulTypedName", + "src": "49:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nativeSrc": "59:6:8", + "nodeType": "YulTypedName", + "src": "59:6:8", + "type": "" + } + ], + "src": "7:99:8" + }, + { + "body": { + "nativeSrc": "140:152:8", + "nodeType": "YulBlock", + "src": "140:152:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "157:1:8", + "nodeType": "YulLiteral", + "src": "157:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "160:77:8", + "nodeType": "YulLiteral", + "src": "160:77:8", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "150:6:8", + "nodeType": "YulIdentifier", + "src": "150:6:8" + }, + "nativeSrc": "150:88:8", + "nodeType": "YulFunctionCall", + "src": "150:88:8" + }, + "nativeSrc": "150:88:8", + "nodeType": "YulExpressionStatement", + "src": "150:88:8" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "254:1:8", + "nodeType": "YulLiteral", + "src": "254:1:8", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "257:4:8", + "nodeType": "YulLiteral", + "src": "257:4:8", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "247:6:8", + "nodeType": "YulIdentifier", + "src": "247:6:8" + }, + "nativeSrc": "247:15:8", + "nodeType": "YulFunctionCall", + "src": "247:15:8" + }, + "nativeSrc": "247:15:8", + "nodeType": "YulExpressionStatement", + "src": "247:15:8" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "278:1:8", + "nodeType": "YulLiteral", + "src": "278:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "281:4:8", + "nodeType": "YulLiteral", + "src": "281:4:8", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "271:6:8", + "nodeType": "YulIdentifier", + "src": "271:6:8" + }, + "nativeSrc": "271:15:8", + "nodeType": "YulFunctionCall", + "src": "271:15:8" + }, + "nativeSrc": "271:15:8", + "nodeType": "YulExpressionStatement", + "src": "271:15:8" + } + ] + }, + "name": "panic_error_0x41", + "nativeSrc": "112:180:8", + "nodeType": "YulFunctionDefinition", + "src": "112:180:8" + }, + { + "body": { + "nativeSrc": "326:152:8", + "nodeType": "YulBlock", + "src": "326:152:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "343:1:8", + "nodeType": "YulLiteral", + "src": "343:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "346:77:8", + "nodeType": "YulLiteral", + "src": "346:77:8", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "336:6:8", + "nodeType": "YulIdentifier", + "src": "336:6:8" + }, + "nativeSrc": "336:88:8", + "nodeType": "YulFunctionCall", + "src": "336:88:8" + }, + "nativeSrc": "336:88:8", + "nodeType": "YulExpressionStatement", + "src": "336:88:8" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "440:1:8", + "nodeType": "YulLiteral", + "src": "440:1:8", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "443:4:8", + "nodeType": "YulLiteral", + "src": "443:4:8", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "433:6:8", + "nodeType": "YulIdentifier", + "src": "433:6:8" + }, + "nativeSrc": "433:15:8", + "nodeType": "YulFunctionCall", + "src": "433:15:8" + }, + "nativeSrc": "433:15:8", + "nodeType": "YulExpressionStatement", + "src": "433:15:8" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "464:1:8", + "nodeType": "YulLiteral", + "src": "464:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "467:4:8", + "nodeType": "YulLiteral", + "src": "467:4:8", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "457:6:8", + "nodeType": "YulIdentifier", + "src": "457:6:8" + }, + "nativeSrc": "457:15:8", + "nodeType": "YulFunctionCall", + "src": "457:15:8" + }, + "nativeSrc": "457:15:8", + "nodeType": "YulExpressionStatement", + "src": "457:15:8" + } + ] + }, + "name": "panic_error_0x22", + "nativeSrc": "298:180:8", + "nodeType": "YulFunctionDefinition", + "src": "298:180:8" + }, + { + "body": { + "nativeSrc": "535:269:8", + "nodeType": "YulBlock", + "src": "535:269:8", + "statements": [ + { + "nativeSrc": "545:22:8", + "nodeType": "YulAssignment", + "src": "545:22:8", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "559:4:8", + "nodeType": "YulIdentifier", + "src": "559:4:8" + }, + { + "kind": "number", + "nativeSrc": "565:1:8", + "nodeType": "YulLiteral", + "src": "565:1:8", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "555:3:8", + "nodeType": "YulIdentifier", + "src": "555:3:8" + }, + "nativeSrc": "555:12:8", + "nodeType": "YulFunctionCall", + "src": "555:12:8" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "545:6:8", + "nodeType": "YulIdentifier", + "src": "545:6:8" + } + ] + }, + { + "nativeSrc": "576:38:8", + "nodeType": "YulVariableDeclaration", + "src": "576:38:8", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "606:4:8", + "nodeType": "YulIdentifier", + "src": "606:4:8" + }, + { + "kind": "number", + "nativeSrc": "612:1:8", + "nodeType": "YulLiteral", + "src": "612:1:8", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "602:3:8", + "nodeType": "YulIdentifier", + "src": "602:3:8" + }, + "nativeSrc": "602:12:8", + "nodeType": "YulFunctionCall", + "src": "602:12:8" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "580:18:8", + "nodeType": "YulTypedName", + "src": "580:18:8", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "653:51:8", + "nodeType": "YulBlock", + "src": "653:51:8", + "statements": [ + { + "nativeSrc": "667:27:8", + "nodeType": "YulAssignment", + "src": "667:27:8", + "value": { + "arguments": [ + { + "name": "length", + "nativeSrc": "681:6:8", + "nodeType": "YulIdentifier", + "src": "681:6:8" + }, + { + "kind": "number", + "nativeSrc": "689:4:8", + "nodeType": "YulLiteral", + "src": "689:4:8", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "677:3:8", + "nodeType": "YulIdentifier", + "src": "677:3:8" + }, + "nativeSrc": "677:17:8", + "nodeType": "YulFunctionCall", + "src": "677:17:8" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "667:6:8", + "nodeType": "YulIdentifier", + "src": "667:6:8" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "633:18:8", + "nodeType": "YulIdentifier", + "src": "633:18:8" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "626:6:8", + "nodeType": "YulIdentifier", + "src": "626:6:8" + }, + "nativeSrc": "626:26:8", + "nodeType": "YulFunctionCall", + "src": "626:26:8" + }, + "nativeSrc": "623:81:8", + "nodeType": "YulIf", + "src": "623:81:8" + }, + { + "body": { + "nativeSrc": "756:42:8", + "nodeType": "YulBlock", + "src": "756:42:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x22", + "nativeSrc": "770:16:8", + "nodeType": "YulIdentifier", + "src": "770:16:8" + }, + "nativeSrc": "770:18:8", + "nodeType": "YulFunctionCall", + "src": "770:18:8" + }, + "nativeSrc": "770:18:8", + "nodeType": "YulExpressionStatement", + "src": "770:18:8" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "720:18:8", + "nodeType": "YulIdentifier", + "src": "720:18:8" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "743:6:8", + "nodeType": "YulIdentifier", + "src": "743:6:8" + }, + { + "kind": "number", + "nativeSrc": "751:2:8", + "nodeType": "YulLiteral", + "src": "751:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "740:2:8", + "nodeType": "YulIdentifier", + "src": "740:2:8" + }, + "nativeSrc": "740:14:8", + "nodeType": "YulFunctionCall", + "src": "740:14:8" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "717:2:8", + "nodeType": "YulIdentifier", + "src": "717:2:8" + }, + "nativeSrc": "717:38:8", + "nodeType": "YulFunctionCall", + "src": "717:38:8" + }, + "nativeSrc": "714:84:8", + "nodeType": "YulIf", + "src": "714:84:8" + } + ] + }, + "name": "extract_byte_array_length", + "nativeSrc": "484:320:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "519:4:8", + "nodeType": "YulTypedName", + "src": "519:4:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nativeSrc": "528:6:8", + "nodeType": "YulTypedName", + "src": "528:6:8", + "type": "" + } + ], + "src": "484:320:8" + }, + { + "body": { + "nativeSrc": "864:87:8", + "nodeType": "YulBlock", + "src": "864:87:8", + "statements": [ + { + "nativeSrc": "874:11:8", + "nodeType": "YulAssignment", + "src": "874:11:8", + "value": { + "name": "ptr", + "nativeSrc": "882:3:8", + "nodeType": "YulIdentifier", + "src": "882:3:8" + }, + "variableNames": [ + { + "name": "data", + "nativeSrc": "874:4:8", + "nodeType": "YulIdentifier", + "src": "874:4:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "902:1:8", + "nodeType": "YulLiteral", + "src": "902:1:8", + "type": "", + "value": "0" + }, + { + "name": "ptr", + "nativeSrc": "905:3:8", + "nodeType": "YulIdentifier", + "src": "905:3:8" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "895:6:8", + "nodeType": "YulIdentifier", + "src": "895:6:8" + }, + "nativeSrc": "895:14:8", + "nodeType": "YulFunctionCall", + "src": "895:14:8" + }, + "nativeSrc": "895:14:8", + "nodeType": "YulExpressionStatement", + "src": "895:14:8" + }, + { + "nativeSrc": "918:26:8", + "nodeType": "YulAssignment", + "src": "918:26:8", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "936:1:8", + "nodeType": "YulLiteral", + "src": "936:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "939:4:8", + "nodeType": "YulLiteral", + "src": "939:4:8", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "926:9:8", + "nodeType": "YulIdentifier", + "src": "926:9:8" + }, + "nativeSrc": "926:18:8", + "nodeType": "YulFunctionCall", + "src": "926:18:8" + }, + "variableNames": [ + { + "name": "data", + "nativeSrc": "918:4:8", + "nodeType": "YulIdentifier", + "src": "918:4:8" + } + ] + } + ] + }, + "name": "array_dataslot_t_string_storage", + "nativeSrc": "810:141:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nativeSrc": "851:3:8", + "nodeType": "YulTypedName", + "src": "851:3:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nativeSrc": "859:4:8", + "nodeType": "YulTypedName", + "src": "859:4:8", + "type": "" + } + ], + "src": "810:141:8" + }, + { + "body": { + "nativeSrc": "1001:49:8", + "nodeType": "YulBlock", + "src": "1001:49:8", + "statements": [ + { + "nativeSrc": "1011:33:8", + "nodeType": "YulAssignment", + "src": "1011:33:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "1029:5:8", + "nodeType": "YulIdentifier", + "src": "1029:5:8" + }, + { + "kind": "number", + "nativeSrc": "1036:2:8", + "nodeType": "YulLiteral", + "src": "1036:2:8", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1025:3:8", + "nodeType": "YulIdentifier", + "src": "1025:3:8" + }, + "nativeSrc": "1025:14:8", + "nodeType": "YulFunctionCall", + "src": "1025:14:8" + }, + { + "kind": "number", + "nativeSrc": "1041:2:8", + "nodeType": "YulLiteral", + "src": "1041:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "1021:3:8", + "nodeType": "YulIdentifier", + "src": "1021:3:8" + }, + "nativeSrc": "1021:23:8", + "nodeType": "YulFunctionCall", + "src": "1021:23:8" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "1011:6:8", + "nodeType": "YulIdentifier", + "src": "1011:6:8" + } + ] + } + ] + }, + "name": "divide_by_32_ceil", + "nativeSrc": "957:93:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "984:5:8", + "nodeType": "YulTypedName", + "src": "984:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nativeSrc": "994:6:8", + "nodeType": "YulTypedName", + "src": "994:6:8", + "type": "" + } + ], + "src": "957:93:8" + }, + { + "body": { + "nativeSrc": "1109:54:8", + "nodeType": "YulBlock", + "src": "1109:54:8", + "statements": [ + { + "nativeSrc": "1119:37:8", + "nodeType": "YulAssignment", + "src": "1119:37:8", + "value": { + "arguments": [ + { + "name": "bits", + "nativeSrc": "1144:4:8", + "nodeType": "YulIdentifier", + "src": "1144:4:8" + }, + { + "name": "value", + "nativeSrc": "1150:5:8", + "nodeType": "YulIdentifier", + "src": "1150:5:8" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1140:3:8", + "nodeType": "YulIdentifier", + "src": "1140:3:8" + }, + "nativeSrc": "1140:16:8", + "nodeType": "YulFunctionCall", + "src": "1140:16:8" + }, + "variableNames": [ + { + "name": "newValue", + "nativeSrc": "1119:8:8", + "nodeType": "YulIdentifier", + "src": "1119:8:8" + } + ] + } + ] + }, + "name": "shift_left_dynamic", + "nativeSrc": "1056:107:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "bits", + "nativeSrc": "1084:4:8", + "nodeType": "YulTypedName", + "src": "1084:4:8", + "type": "" + }, + { + "name": "value", + "nativeSrc": "1090:5:8", + "nodeType": "YulTypedName", + "src": "1090:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "newValue", + "nativeSrc": "1100:8:8", + "nodeType": "YulTypedName", + "src": "1100:8:8", + "type": "" + } + ], + "src": "1056:107:8" + }, + { + "body": { + "nativeSrc": "1245:317:8", + "nodeType": "YulBlock", + "src": "1245:317:8", + "statements": [ + { + "nativeSrc": "1255:35:8", + "nodeType": "YulVariableDeclaration", + "src": "1255:35:8", + "value": { + "arguments": [ + { + "name": "shiftBytes", + "nativeSrc": "1276:10:8", + "nodeType": "YulIdentifier", + "src": "1276:10:8" + }, + { + "kind": "number", + "nativeSrc": "1288:1:8", + "nodeType": "YulLiteral", + "src": "1288:1:8", + "type": "", + "value": "8" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "1272:3:8", + "nodeType": "YulIdentifier", + "src": "1272:3:8" + }, + "nativeSrc": "1272:18:8", + "nodeType": "YulFunctionCall", + "src": "1272:18:8" + }, + "variables": [ + { + "name": "shiftBits", + "nativeSrc": "1259:9:8", + "nodeType": "YulTypedName", + "src": "1259:9:8", + "type": "" + } + ] + }, + { + "nativeSrc": "1299:109:8", + "nodeType": "YulVariableDeclaration", + "src": "1299:109:8", + "value": { + "arguments": [ + { + "name": "shiftBits", + "nativeSrc": "1330:9:8", + "nodeType": "YulIdentifier", + "src": "1330:9:8" + }, + { + "kind": "number", + "nativeSrc": "1341:66:8", + "nodeType": "YulLiteral", + "src": "1341:66:8", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "shift_left_dynamic", + "nativeSrc": "1311:18:8", + "nodeType": "YulIdentifier", + "src": "1311:18:8" + }, + "nativeSrc": "1311:97:8", + "nodeType": "YulFunctionCall", + "src": "1311:97:8" + }, + "variables": [ + { + "name": "mask", + "nativeSrc": "1303:4:8", + "nodeType": "YulTypedName", + "src": "1303:4:8", + "type": "" + } + ] + }, + { + "nativeSrc": "1417:51:8", + "nodeType": "YulAssignment", + "src": "1417:51:8", + "value": { + "arguments": [ + { + "name": "shiftBits", + "nativeSrc": "1448:9:8", + "nodeType": "YulIdentifier", + "src": "1448:9:8" + }, + { + "name": "toInsert", + "nativeSrc": "1459:8:8", + "nodeType": "YulIdentifier", + "src": "1459:8:8" + } + ], + "functionName": { + "name": "shift_left_dynamic", + "nativeSrc": "1429:18:8", + "nodeType": "YulIdentifier", + "src": "1429:18:8" + }, + "nativeSrc": "1429:39:8", + "nodeType": "YulFunctionCall", + "src": "1429:39:8" + }, + "variableNames": [ + { + "name": "toInsert", + "nativeSrc": "1417:8:8", + "nodeType": "YulIdentifier", + "src": "1417:8:8" + } + ] + }, + { + "nativeSrc": "1477:30:8", + "nodeType": "YulAssignment", + "src": "1477:30:8", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "1490:5:8", + "nodeType": "YulIdentifier", + "src": "1490:5:8" + }, + { + "arguments": [ + { + "name": "mask", + "nativeSrc": "1501:4:8", + "nodeType": "YulIdentifier", + "src": "1501:4:8" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "1497:3:8", + "nodeType": "YulIdentifier", + "src": "1497:3:8" + }, + "nativeSrc": "1497:9:8", + "nodeType": "YulFunctionCall", + "src": "1497:9:8" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1486:3:8", + "nodeType": "YulIdentifier", + "src": "1486:3:8" + }, + "nativeSrc": "1486:21:8", + "nodeType": "YulFunctionCall", + "src": "1486:21:8" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "1477:5:8", + "nodeType": "YulIdentifier", + "src": "1477:5:8" + } + ] + }, + { + "nativeSrc": "1516:40:8", + "nodeType": "YulAssignment", + "src": "1516:40:8", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "1529:5:8", + "nodeType": "YulIdentifier", + "src": "1529:5:8" + }, + { + "arguments": [ + { + "name": "toInsert", + "nativeSrc": "1540:8:8", + "nodeType": "YulIdentifier", + "src": "1540:8:8" + }, + { + "name": "mask", + "nativeSrc": "1550:4:8", + "nodeType": "YulIdentifier", + "src": "1550:4:8" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1536:3:8", + "nodeType": "YulIdentifier", + "src": "1536:3:8" + }, + "nativeSrc": "1536:19:8", + "nodeType": "YulFunctionCall", + "src": "1536:19:8" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "1526:2:8", + "nodeType": "YulIdentifier", + "src": "1526:2:8" + }, + "nativeSrc": "1526:30:8", + "nodeType": "YulFunctionCall", + "src": "1526:30:8" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "1516:6:8", + "nodeType": "YulIdentifier", + "src": "1516:6:8" + } + ] + } + ] + }, + "name": "update_byte_slice_dynamic32", + "nativeSrc": "1169:393:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "1206:5:8", + "nodeType": "YulTypedName", + "src": "1206:5:8", + "type": "" + }, + { + "name": "shiftBytes", + "nativeSrc": "1213:10:8", + "nodeType": "YulTypedName", + "src": "1213:10:8", + "type": "" + }, + { + "name": "toInsert", + "nativeSrc": "1225:8:8", + "nodeType": "YulTypedName", + "src": "1225:8:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nativeSrc": "1238:6:8", + "nodeType": "YulTypedName", + "src": "1238:6:8", + "type": "" + } + ], + "src": "1169:393:8" + }, + { + "body": { + "nativeSrc": "1613:32:8", + "nodeType": "YulBlock", + "src": "1613:32:8", + "statements": [ + { + "nativeSrc": "1623:16:8", + "nodeType": "YulAssignment", + "src": "1623:16:8", + "value": { + "name": "value", + "nativeSrc": "1634:5:8", + "nodeType": "YulIdentifier", + "src": "1634:5:8" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "1623:7:8", + "nodeType": "YulIdentifier", + "src": "1623:7:8" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nativeSrc": "1568:77:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "1595:5:8", + "nodeType": "YulTypedName", + "src": "1595:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "1605:7:8", + "nodeType": "YulTypedName", + "src": "1605:7:8", + "type": "" + } + ], + "src": "1568:77:8" + }, + { + "body": { + "nativeSrc": "1683:28:8", + "nodeType": "YulBlock", + "src": "1683:28:8", + "statements": [ + { + "nativeSrc": "1693:12:8", + "nodeType": "YulAssignment", + "src": "1693:12:8", + "value": { + "name": "value", + "nativeSrc": "1700:5:8", + "nodeType": "YulIdentifier", + "src": "1700:5:8" + }, + "variableNames": [ + { + "name": "ret", + "nativeSrc": "1693:3:8", + "nodeType": "YulIdentifier", + "src": "1693:3:8" + } + ] + } + ] + }, + "name": "identity", + "nativeSrc": "1651:60:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "1669:5:8", + "nodeType": "YulTypedName", + "src": "1669:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nativeSrc": "1679:3:8", + "nodeType": "YulTypedName", + "src": "1679:3:8", + "type": "" + } + ], + "src": "1651:60:8" + }, + { + "body": { + "nativeSrc": "1777:82:8", + "nodeType": "YulBlock", + "src": "1777:82:8", + "statements": [ + { + "nativeSrc": "1787:66:8", + "nodeType": "YulAssignment", + "src": "1787:66:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "1845:5:8", + "nodeType": "YulIdentifier", + "src": "1845:5:8" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nativeSrc": "1827:17:8", + "nodeType": "YulIdentifier", + "src": "1827:17:8" + }, + "nativeSrc": "1827:24:8", + "nodeType": "YulFunctionCall", + "src": "1827:24:8" + } + ], + "functionName": { + "name": "identity", + "nativeSrc": "1818:8:8", + "nodeType": "YulIdentifier", + "src": "1818:8:8" + }, + "nativeSrc": "1818:34:8", + "nodeType": "YulFunctionCall", + "src": "1818:34:8" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nativeSrc": "1800:17:8", + "nodeType": "YulIdentifier", + "src": "1800:17:8" + }, + "nativeSrc": "1800:53:8", + "nodeType": "YulFunctionCall", + "src": "1800:53:8" + }, + "variableNames": [ + { + "name": "converted", + "nativeSrc": "1787:9:8", + "nodeType": "YulIdentifier", + "src": "1787:9:8" + } + ] + } + ] + }, + "name": "convert_t_uint256_to_t_uint256", + "nativeSrc": "1717:142:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "1757:5:8", + "nodeType": "YulTypedName", + "src": "1757:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nativeSrc": "1767:9:8", + "nodeType": "YulTypedName", + "src": "1767:9:8", + "type": "" + } + ], + "src": "1717:142:8" + }, + { + "body": { + "nativeSrc": "1912:28:8", + "nodeType": "YulBlock", + "src": "1912:28:8", + "statements": [ + { + "nativeSrc": "1922:12:8", + "nodeType": "YulAssignment", + "src": "1922:12:8", + "value": { + "name": "value", + "nativeSrc": "1929:5:8", + "nodeType": "YulIdentifier", + "src": "1929:5:8" + }, + "variableNames": [ + { + "name": "ret", + "nativeSrc": "1922:3:8", + "nodeType": "YulIdentifier", + "src": "1922:3:8" + } + ] + } + ] + }, + "name": "prepare_store_t_uint256", + "nativeSrc": "1865:75:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "1898:5:8", + "nodeType": "YulTypedName", + "src": "1898:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nativeSrc": "1908:3:8", + "nodeType": "YulTypedName", + "src": "1908:3:8", + "type": "" + } + ], + "src": "1865:75:8" + }, + { + "body": { + "nativeSrc": "2022:193:8", + "nodeType": "YulBlock", + "src": "2022:193:8", + "statements": [ + { + "nativeSrc": "2032:63:8", + "nodeType": "YulVariableDeclaration", + "src": "2032:63:8", + "value": { + "arguments": [ + { + "name": "value_0", + "nativeSrc": "2087:7:8", + "nodeType": "YulIdentifier", + "src": "2087:7:8" + } + ], + "functionName": { + "name": "convert_t_uint256_to_t_uint256", + "nativeSrc": "2056:30:8", + "nodeType": "YulIdentifier", + "src": "2056:30:8" + }, + "nativeSrc": "2056:39:8", + "nodeType": "YulFunctionCall", + "src": "2056:39:8" + }, + "variables": [ + { + "name": "convertedValue_0", + "nativeSrc": "2036:16:8", + "nodeType": "YulTypedName", + "src": "2036:16:8", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "2111:4:8", + "nodeType": "YulIdentifier", + "src": "2111:4:8" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nativeSrc": "2151:4:8", + "nodeType": "YulIdentifier", + "src": "2151:4:8" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "2145:5:8", + "nodeType": "YulIdentifier", + "src": "2145:5:8" + }, + "nativeSrc": "2145:11:8", + "nodeType": "YulFunctionCall", + "src": "2145:11:8" + }, + { + "name": "offset", + "nativeSrc": "2158:6:8", + "nodeType": "YulIdentifier", + "src": "2158:6:8" + }, + { + "arguments": [ + { + "name": "convertedValue_0", + "nativeSrc": "2190:16:8", + "nodeType": "YulIdentifier", + "src": "2190:16:8" + } + ], + "functionName": { + "name": "prepare_store_t_uint256", + "nativeSrc": "2166:23:8", + "nodeType": "YulIdentifier", + "src": "2166:23:8" + }, + "nativeSrc": "2166:41:8", + "nodeType": "YulFunctionCall", + "src": "2166:41:8" + } + ], + "functionName": { + "name": "update_byte_slice_dynamic32", + "nativeSrc": "2117:27:8", + "nodeType": "YulIdentifier", + "src": "2117:27:8" + }, + "nativeSrc": "2117:91:8", + "nodeType": "YulFunctionCall", + "src": "2117:91:8" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "2104:6:8", + "nodeType": "YulIdentifier", + "src": "2104:6:8" + }, + "nativeSrc": "2104:105:8", + "nodeType": "YulFunctionCall", + "src": "2104:105:8" + }, + "nativeSrc": "2104:105:8", + "nodeType": "YulExpressionStatement", + "src": "2104:105:8" + } + ] + }, + "name": "update_storage_value_t_uint256_to_t_uint256", + "nativeSrc": "1946:269:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nativeSrc": "1999:4:8", + "nodeType": "YulTypedName", + "src": "1999:4:8", + "type": "" + }, + { + "name": "offset", + "nativeSrc": "2005:6:8", + "nodeType": "YulTypedName", + "src": "2005:6:8", + "type": "" + }, + { + "name": "value_0", + "nativeSrc": "2013:7:8", + "nodeType": "YulTypedName", + "src": "2013:7:8", + "type": "" + } + ], + "src": "1946:269:8" + }, + { + "body": { + "nativeSrc": "2270:24:8", + "nodeType": "YulBlock", + "src": "2270:24:8", + "statements": [ + { + "nativeSrc": "2280:8:8", + "nodeType": "YulAssignment", + "src": "2280:8:8", + "value": { + "kind": "number", + "nativeSrc": "2287:1:8", + "nodeType": "YulLiteral", + "src": "2287:1:8", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "ret", + "nativeSrc": "2280:3:8", + "nodeType": "YulIdentifier", + "src": "2280:3:8" + } + ] + } + ] + }, + "name": "zero_value_for_split_t_uint256", + "nativeSrc": "2221:73:8", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "ret", + "nativeSrc": "2266:3:8", + "nodeType": "YulTypedName", + "src": "2266:3:8", + "type": "" + } + ], + "src": "2221:73:8" + }, + { + "body": { + "nativeSrc": "2353:136:8", + "nodeType": "YulBlock", + "src": "2353:136:8", + "statements": [ + { + "nativeSrc": "2363:46:8", + "nodeType": "YulVariableDeclaration", + "src": "2363:46:8", + "value": { + "arguments": [], + "functionName": { + "name": "zero_value_for_split_t_uint256", + "nativeSrc": "2377:30:8", + "nodeType": "YulIdentifier", + "src": "2377:30:8" + }, + "nativeSrc": "2377:32:8", + "nodeType": "YulFunctionCall", + "src": "2377:32:8" + }, + "variables": [ + { + "name": "zero_0", + "nativeSrc": "2367:6:8", + "nodeType": "YulTypedName", + "src": "2367:6:8", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "2462:4:8", + "nodeType": "YulIdentifier", + "src": "2462:4:8" + }, + { + "name": "offset", + "nativeSrc": "2468:6:8", + "nodeType": "YulIdentifier", + "src": "2468:6:8" + }, + { + "name": "zero_0", + "nativeSrc": "2476:6:8", + "nodeType": "YulIdentifier", + "src": "2476:6:8" + } + ], + "functionName": { + "name": "update_storage_value_t_uint256_to_t_uint256", + "nativeSrc": "2418:43:8", + "nodeType": "YulIdentifier", + "src": "2418:43:8" + }, + "nativeSrc": "2418:65:8", + "nodeType": "YulFunctionCall", + "src": "2418:65:8" + }, + "nativeSrc": "2418:65:8", + "nodeType": "YulExpressionStatement", + "src": "2418:65:8" + } + ] + }, + "name": "storage_set_to_zero_t_uint256", + "nativeSrc": "2300:189:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nativeSrc": "2339:4:8", + "nodeType": "YulTypedName", + "src": "2339:4:8", + "type": "" + }, + { + "name": "offset", + "nativeSrc": "2345:6:8", + "nodeType": "YulTypedName", + "src": "2345:6:8", + "type": "" + } + ], + "src": "2300:189:8" + }, + { + "body": { + "nativeSrc": "2545:136:8", + "nodeType": "YulBlock", + "src": "2545:136:8", + "statements": [ + { + "body": { + "nativeSrc": "2612:63:8", + "nodeType": "YulBlock", + "src": "2612:63:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "start", + "nativeSrc": "2656:5:8", + "nodeType": "YulIdentifier", + "src": "2656:5:8" + }, + { + "kind": "number", + "nativeSrc": "2663:1:8", + "nodeType": "YulLiteral", + "src": "2663:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "storage_set_to_zero_t_uint256", + "nativeSrc": "2626:29:8", + "nodeType": "YulIdentifier", + "src": "2626:29:8" + }, + "nativeSrc": "2626:39:8", + "nodeType": "YulFunctionCall", + "src": "2626:39:8" + }, + "nativeSrc": "2626:39:8", + "nodeType": "YulExpressionStatement", + "src": "2626:39:8" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "start", + "nativeSrc": "2565:5:8", + "nodeType": "YulIdentifier", + "src": "2565:5:8" + }, + { + "name": "end", + "nativeSrc": "2572:3:8", + "nodeType": "YulIdentifier", + "src": "2572:3:8" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "2562:2:8", + "nodeType": "YulIdentifier", + "src": "2562:2:8" + }, + "nativeSrc": "2562:14:8", + "nodeType": "YulFunctionCall", + "src": "2562:14:8" + }, + "nativeSrc": "2555:120:8", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "2577:26:8", + "nodeType": "YulBlock", + "src": "2577:26:8", + "statements": [ + { + "nativeSrc": "2579:22:8", + "nodeType": "YulAssignment", + "src": "2579:22:8", + "value": { + "arguments": [ + { + "name": "start", + "nativeSrc": "2592:5:8", + "nodeType": "YulIdentifier", + "src": "2592:5:8" + }, + { + "kind": "number", + "nativeSrc": "2599:1:8", + "nodeType": "YulLiteral", + "src": "2599:1:8", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2588:3:8", + "nodeType": "YulIdentifier", + "src": "2588:3:8" + }, + "nativeSrc": "2588:13:8", + "nodeType": "YulFunctionCall", + "src": "2588:13:8" + }, + "variableNames": [ + { + "name": "start", + "nativeSrc": "2579:5:8", + "nodeType": "YulIdentifier", + "src": "2579:5:8" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "2559:2:8", + "nodeType": "YulBlock", + "src": "2559:2:8", + "statements": [] + }, + "src": "2555:120:8" + } + ] + }, + "name": "clear_storage_range_t_bytes1", + "nativeSrc": "2495:186:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "start", + "nativeSrc": "2533:5:8", + "nodeType": "YulTypedName", + "src": "2533:5:8", + "type": "" + }, + { + "name": "end", + "nativeSrc": "2540:3:8", + "nodeType": "YulTypedName", + "src": "2540:3:8", + "type": "" + } + ], + "src": "2495:186:8" + }, + { + "body": { + "nativeSrc": "2766:464:8", + "nodeType": "YulBlock", + "src": "2766:464:8", + "statements": [ + { + "body": { + "nativeSrc": "2792:431:8", + "nodeType": "YulBlock", + "src": "2792:431:8", + "statements": [ + { + "nativeSrc": "2806:54:8", + "nodeType": "YulVariableDeclaration", + "src": "2806:54:8", + "value": { + "arguments": [ + { + "name": "array", + "nativeSrc": "2854:5:8", + "nodeType": "YulIdentifier", + "src": "2854:5:8" + } + ], + "functionName": { + "name": "array_dataslot_t_string_storage", + "nativeSrc": "2822:31:8", + "nodeType": "YulIdentifier", + "src": "2822:31:8" + }, + "nativeSrc": "2822:38:8", + "nodeType": "YulFunctionCall", + "src": "2822:38:8" + }, + "variables": [ + { + "name": "dataArea", + "nativeSrc": "2810:8:8", + "nodeType": "YulTypedName", + "src": "2810:8:8", + "type": "" + } + ] + }, + { + "nativeSrc": "2873:63:8", + "nodeType": "YulVariableDeclaration", + "src": "2873:63:8", + "value": { + "arguments": [ + { + "name": "dataArea", + "nativeSrc": "2896:8:8", + "nodeType": "YulIdentifier", + "src": "2896:8:8" + }, + { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "2924:10:8", + "nodeType": "YulIdentifier", + "src": "2924:10:8" + } + ], + "functionName": { + "name": "divide_by_32_ceil", + "nativeSrc": "2906:17:8", + "nodeType": "YulIdentifier", + "src": "2906:17:8" + }, + "nativeSrc": "2906:29:8", + "nodeType": "YulFunctionCall", + "src": "2906:29:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2892:3:8", + "nodeType": "YulIdentifier", + "src": "2892:3:8" + }, + "nativeSrc": "2892:44:8", + "nodeType": "YulFunctionCall", + "src": "2892:44:8" + }, + "variables": [ + { + "name": "deleteStart", + "nativeSrc": "2877:11:8", + "nodeType": "YulTypedName", + "src": "2877:11:8", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "3093:27:8", + "nodeType": "YulBlock", + "src": "3093:27:8", + "statements": [ + { + "nativeSrc": "3095:23:8", + "nodeType": "YulAssignment", + "src": "3095:23:8", + "value": { + "name": "dataArea", + "nativeSrc": "3110:8:8", + "nodeType": "YulIdentifier", + "src": "3110:8:8" + }, + "variableNames": [ + { + "name": "deleteStart", + "nativeSrc": "3095:11:8", + "nodeType": "YulIdentifier", + "src": "3095:11:8" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "3077:10:8", + "nodeType": "YulIdentifier", + "src": "3077:10:8" + }, + { + "kind": "number", + "nativeSrc": "3089:2:8", + "nodeType": "YulLiteral", + "src": "3089:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "3074:2:8", + "nodeType": "YulIdentifier", + "src": "3074:2:8" + }, + "nativeSrc": "3074:18:8", + "nodeType": "YulFunctionCall", + "src": "3074:18:8" + }, + "nativeSrc": "3071:49:8", + "nodeType": "YulIf", + "src": "3071:49:8" + }, + { + "expression": { + "arguments": [ + { + "name": "deleteStart", + "nativeSrc": "3162:11:8", + "nodeType": "YulIdentifier", + "src": "3162:11:8" + }, + { + "arguments": [ + { + "name": "dataArea", + "nativeSrc": "3179:8:8", + "nodeType": "YulIdentifier", + "src": "3179:8:8" + }, + { + "arguments": [ + { + "name": "len", + "nativeSrc": "3207:3:8", + "nodeType": "YulIdentifier", + "src": "3207:3:8" + } + ], + "functionName": { + "name": "divide_by_32_ceil", + "nativeSrc": "3189:17:8", + "nodeType": "YulIdentifier", + "src": "3189:17:8" + }, + "nativeSrc": "3189:22:8", + "nodeType": "YulFunctionCall", + "src": "3189:22:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3175:3:8", + "nodeType": "YulIdentifier", + "src": "3175:3:8" + }, + "nativeSrc": "3175:37:8", + "nodeType": "YulFunctionCall", + "src": "3175:37:8" + } + ], + "functionName": { + "name": "clear_storage_range_t_bytes1", + "nativeSrc": "3133:28:8", + "nodeType": "YulIdentifier", + "src": "3133:28:8" + }, + "nativeSrc": "3133:80:8", + "nodeType": "YulFunctionCall", + "src": "3133:80:8" + }, + "nativeSrc": "3133:80:8", + "nodeType": "YulExpressionStatement", + "src": "3133:80:8" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "len", + "nativeSrc": "2783:3:8", + "nodeType": "YulIdentifier", + "src": "2783:3:8" + }, + { + "kind": "number", + "nativeSrc": "2788:2:8", + "nodeType": "YulLiteral", + "src": "2788:2:8", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "2780:2:8", + "nodeType": "YulIdentifier", + "src": "2780:2:8" + }, + "nativeSrc": "2780:11:8", + "nodeType": "YulFunctionCall", + "src": "2780:11:8" + }, + "nativeSrc": "2777:446:8", + "nodeType": "YulIf", + "src": "2777:446:8" + } + ] + }, + "name": "clean_up_bytearray_end_slots_t_string_storage", + "nativeSrc": "2687:543:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "array", + "nativeSrc": "2742:5:8", + "nodeType": "YulTypedName", + "src": "2742:5:8", + "type": "" + }, + { + "name": "len", + "nativeSrc": "2749:3:8", + "nodeType": "YulTypedName", + "src": "2749:3:8", + "type": "" + }, + { + "name": "startIndex", + "nativeSrc": "2754:10:8", + "nodeType": "YulTypedName", + "src": "2754:10:8", + "type": "" + } + ], + "src": "2687:543:8" + }, + { + "body": { + "nativeSrc": "3299:54:8", + "nodeType": "YulBlock", + "src": "3299:54:8", + "statements": [ + { + "nativeSrc": "3309:37:8", + "nodeType": "YulAssignment", + "src": "3309:37:8", + "value": { + "arguments": [ + { + "name": "bits", + "nativeSrc": "3334:4:8", + "nodeType": "YulIdentifier", + "src": "3334:4:8" + }, + { + "name": "value", + "nativeSrc": "3340:5:8", + "nodeType": "YulIdentifier", + "src": "3340:5:8" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "3330:3:8", + "nodeType": "YulIdentifier", + "src": "3330:3:8" + }, + "nativeSrc": "3330:16:8", + "nodeType": "YulFunctionCall", + "src": "3330:16:8" + }, + "variableNames": [ + { + "name": "newValue", + "nativeSrc": "3309:8:8", + "nodeType": "YulIdentifier", + "src": "3309:8:8" + } + ] + } + ] + }, + "name": "shift_right_unsigned_dynamic", + "nativeSrc": "3236:117:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "bits", + "nativeSrc": "3274:4:8", + "nodeType": "YulTypedName", + "src": "3274:4:8", + "type": "" + }, + { + "name": "value", + "nativeSrc": "3280:5:8", + "nodeType": "YulTypedName", + "src": "3280:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "newValue", + "nativeSrc": "3290:8:8", + "nodeType": "YulTypedName", + "src": "3290:8:8", + "type": "" + } + ], + "src": "3236:117:8" + }, + { + "body": { + "nativeSrc": "3410:118:8", + "nodeType": "YulBlock", + "src": "3410:118:8", + "statements": [ + { + "nativeSrc": "3420:68:8", + "nodeType": "YulVariableDeclaration", + "src": "3420:68:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3469:1:8", + "nodeType": "YulLiteral", + "src": "3469:1:8", + "type": "", + "value": "8" + }, + { + "name": "bytes", + "nativeSrc": "3472:5:8", + "nodeType": "YulIdentifier", + "src": "3472:5:8" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "3465:3:8", + "nodeType": "YulIdentifier", + "src": "3465:3:8" + }, + "nativeSrc": "3465:13:8", + "nodeType": "YulFunctionCall", + "src": "3465:13:8" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3484:1:8", + "nodeType": "YulLiteral", + "src": "3484:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "3480:3:8", + "nodeType": "YulIdentifier", + "src": "3480:3:8" + }, + "nativeSrc": "3480:6:8", + "nodeType": "YulFunctionCall", + "src": "3480:6:8" + } + ], + "functionName": { + "name": "shift_right_unsigned_dynamic", + "nativeSrc": "3436:28:8", + "nodeType": "YulIdentifier", + "src": "3436:28:8" + }, + "nativeSrc": "3436:51:8", + "nodeType": "YulFunctionCall", + "src": "3436:51:8" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "3432:3:8", + "nodeType": "YulIdentifier", + "src": "3432:3:8" + }, + "nativeSrc": "3432:56:8", + "nodeType": "YulFunctionCall", + "src": "3432:56:8" + }, + "variables": [ + { + "name": "mask", + "nativeSrc": "3424:4:8", + "nodeType": "YulTypedName", + "src": "3424:4:8", + "type": "" + } + ] + }, + { + "nativeSrc": "3497:25:8", + "nodeType": "YulAssignment", + "src": "3497:25:8", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "3511:4:8", + "nodeType": "YulIdentifier", + "src": "3511:4:8" + }, + { + "name": "mask", + "nativeSrc": "3517:4:8", + "nodeType": "YulIdentifier", + "src": "3517:4:8" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3507:3:8", + "nodeType": "YulIdentifier", + "src": "3507:3:8" + }, + "nativeSrc": "3507:15:8", + "nodeType": "YulFunctionCall", + "src": "3507:15:8" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "3497:6:8", + "nodeType": "YulIdentifier", + "src": "3497:6:8" + } + ] + } + ] + }, + "name": "mask_bytes_dynamic", + "nativeSrc": "3359:169:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "3387:4:8", + "nodeType": "YulTypedName", + "src": "3387:4:8", + "type": "" + }, + { + "name": "bytes", + "nativeSrc": "3393:5:8", + "nodeType": "YulTypedName", + "src": "3393:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nativeSrc": "3403:6:8", + "nodeType": "YulTypedName", + "src": "3403:6:8", + "type": "" + } + ], + "src": "3359:169:8" + }, + { + "body": { + "nativeSrc": "3614:214:8", + "nodeType": "YulBlock", + "src": "3614:214:8", + "statements": [ + { + "nativeSrc": "3747:37:8", + "nodeType": "YulAssignment", + "src": "3747:37:8", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "3774:4:8", + "nodeType": "YulIdentifier", + "src": "3774:4:8" + }, + { + "name": "len", + "nativeSrc": "3780:3:8", + "nodeType": "YulIdentifier", + "src": "3780:3:8" + } + ], + "functionName": { + "name": "mask_bytes_dynamic", + "nativeSrc": "3755:18:8", + "nodeType": "YulIdentifier", + "src": "3755:18:8" + }, + "nativeSrc": "3755:29:8", + "nodeType": "YulFunctionCall", + "src": "3755:29:8" + }, + "variableNames": [ + { + "name": "data", + "nativeSrc": "3747:4:8", + "nodeType": "YulIdentifier", + "src": "3747:4:8" + } + ] + }, + { + "nativeSrc": "3793:29:8", + "nodeType": "YulAssignment", + "src": "3793:29:8", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "3804:4:8", + "nodeType": "YulIdentifier", + "src": "3804:4:8" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3814:1:8", + "nodeType": "YulLiteral", + "src": "3814:1:8", + "type": "", + "value": "2" + }, + { + "name": "len", + "nativeSrc": "3817:3:8", + "nodeType": "YulIdentifier", + "src": "3817:3:8" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "3810:3:8", + "nodeType": "YulIdentifier", + "src": "3810:3:8" + }, + "nativeSrc": "3810:11:8", + "nodeType": "YulFunctionCall", + "src": "3810:11:8" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "3801:2:8", + "nodeType": "YulIdentifier", + "src": "3801:2:8" + }, + "nativeSrc": "3801:21:8", + "nodeType": "YulFunctionCall", + "src": "3801:21:8" + }, + "variableNames": [ + { + "name": "used", + "nativeSrc": "3793:4:8", + "nodeType": "YulIdentifier", + "src": "3793:4:8" + } + ] + } + ] + }, + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "3533:295:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "3595:4:8", + "nodeType": "YulTypedName", + "src": "3595:4:8", + "type": "" + }, + { + "name": "len", + "nativeSrc": "3601:3:8", + "nodeType": "YulTypedName", + "src": "3601:3:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "used", + "nativeSrc": "3609:4:8", + "nodeType": "YulTypedName", + "src": "3609:4:8", + "type": "" + } + ], + "src": "3533:295:8" + }, + { + "body": { + "nativeSrc": "3925:1303:8", + "nodeType": "YulBlock", + "src": "3925:1303:8", + "statements": [ + { + "nativeSrc": "3936:51:8", + "nodeType": "YulVariableDeclaration", + "src": "3936:51:8", + "value": { + "arguments": [ + { + "name": "src", + "nativeSrc": "3983:3:8", + "nodeType": "YulIdentifier", + "src": "3983:3:8" + } + ], + "functionName": { + "name": "array_length_t_string_memory_ptr", + "nativeSrc": "3950:32:8", + "nodeType": "YulIdentifier", + "src": "3950:32:8" + }, + "nativeSrc": "3950:37:8", + "nodeType": "YulFunctionCall", + "src": "3950:37:8" + }, + "variables": [ + { + "name": "newLen", + "nativeSrc": "3940:6:8", + "nodeType": "YulTypedName", + "src": "3940:6:8", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4072:22:8", + "nodeType": "YulBlock", + "src": "4072:22:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "4074:16:8", + "nodeType": "YulIdentifier", + "src": "4074:16:8" + }, + "nativeSrc": "4074:18:8", + "nodeType": "YulFunctionCall", + "src": "4074:18:8" + }, + "nativeSrc": "4074:18:8", + "nodeType": "YulExpressionStatement", + "src": "4074:18:8" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "4044:6:8", + "nodeType": "YulIdentifier", + "src": "4044:6:8" + }, + { + "kind": "number", + "nativeSrc": "4052:18:8", + "nodeType": "YulLiteral", + "src": "4052:18:8", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "4041:2:8", + "nodeType": "YulIdentifier", + "src": "4041:2:8" + }, + "nativeSrc": "4041:30:8", + "nodeType": "YulFunctionCall", + "src": "4041:30:8" + }, + "nativeSrc": "4038:56:8", + "nodeType": "YulIf", + "src": "4038:56:8" + }, + { + "nativeSrc": "4104:52:8", + "nodeType": "YulVariableDeclaration", + "src": "4104:52:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nativeSrc": "4150:4:8", + "nodeType": "YulIdentifier", + "src": "4150:4:8" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "4144:5:8", + "nodeType": "YulIdentifier", + "src": "4144:5:8" + }, + "nativeSrc": "4144:11:8", + "nodeType": "YulFunctionCall", + "src": "4144:11:8" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nativeSrc": "4118:25:8", + "nodeType": "YulIdentifier", + "src": "4118:25:8" + }, + "nativeSrc": "4118:38:8", + "nodeType": "YulFunctionCall", + "src": "4118:38:8" + }, + "variables": [ + { + "name": "oldLen", + "nativeSrc": "4108:6:8", + "nodeType": "YulTypedName", + "src": "4108:6:8", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "4249:4:8", + "nodeType": "YulIdentifier", + "src": "4249:4:8" + }, + { + "name": "oldLen", + "nativeSrc": "4255:6:8", + "nodeType": "YulIdentifier", + "src": "4255:6:8" + }, + { + "name": "newLen", + "nativeSrc": "4263:6:8", + "nodeType": "YulIdentifier", + "src": "4263:6:8" + } + ], + "functionName": { + "name": "clean_up_bytearray_end_slots_t_string_storage", + "nativeSrc": "4203:45:8", + "nodeType": "YulIdentifier", + "src": "4203:45:8" + }, + "nativeSrc": "4203:67:8", + "nodeType": "YulFunctionCall", + "src": "4203:67:8" + }, + "nativeSrc": "4203:67:8", + "nodeType": "YulExpressionStatement", + "src": "4203:67:8" + }, + { + "nativeSrc": "4280:18:8", + "nodeType": "YulVariableDeclaration", + "src": "4280:18:8", + "value": { + "kind": "number", + "nativeSrc": "4297:1:8", + "nodeType": "YulLiteral", + "src": "4297:1:8", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "srcOffset", + "nativeSrc": "4284:9:8", + "nodeType": "YulTypedName", + "src": "4284:9:8", + "type": "" + } + ] + }, + { + "nativeSrc": "4308:17:8", + "nodeType": "YulAssignment", + "src": "4308:17:8", + "value": { + "kind": "number", + "nativeSrc": "4321:4:8", + "nodeType": "YulLiteral", + "src": "4321:4:8", + "type": "", + "value": "0x20" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "4308:9:8", + "nodeType": "YulIdentifier", + "src": "4308:9:8" + } + ] + }, + { + "cases": [ + { + "body": { + "nativeSrc": "4372:611:8", + "nodeType": "YulBlock", + "src": "4372:611:8", + "statements": [ + { + "nativeSrc": "4386:37:8", + "nodeType": "YulVariableDeclaration", + "src": "4386:37:8", + "value": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "4405:6:8", + "nodeType": "YulIdentifier", + "src": "4405:6:8" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4417:4:8", + "nodeType": "YulLiteral", + "src": "4417:4:8", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "4413:3:8", + "nodeType": "YulIdentifier", + "src": "4413:3:8" + }, + "nativeSrc": "4413:9:8", + "nodeType": "YulFunctionCall", + "src": "4413:9:8" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4401:3:8", + "nodeType": "YulIdentifier", + "src": "4401:3:8" + }, + "nativeSrc": "4401:22:8", + "nodeType": "YulFunctionCall", + "src": "4401:22:8" + }, + "variables": [ + { + "name": "loopEnd", + "nativeSrc": "4390:7:8", + "nodeType": "YulTypedName", + "src": "4390:7:8", + "type": "" + } + ] + }, + { + "nativeSrc": "4437:51:8", + "nodeType": "YulVariableDeclaration", + "src": "4437:51:8", + "value": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "4483:4:8", + "nodeType": "YulIdentifier", + "src": "4483:4:8" + } + ], + "functionName": { + "name": "array_dataslot_t_string_storage", + "nativeSrc": "4451:31:8", + "nodeType": "YulIdentifier", + "src": "4451:31:8" + }, + "nativeSrc": "4451:37:8", + "nodeType": "YulFunctionCall", + "src": "4451:37:8" + }, + "variables": [ + { + "name": "dstPtr", + "nativeSrc": "4441:6:8", + "nodeType": "YulTypedName", + "src": "4441:6:8", + "type": "" + } + ] + }, + { + "nativeSrc": "4501:10:8", + "nodeType": "YulVariableDeclaration", + "src": "4501:10:8", + "value": { + "kind": "number", + "nativeSrc": "4510:1:8", + "nodeType": "YulLiteral", + "src": "4510:1:8", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "4505:1:8", + "nodeType": "YulTypedName", + "src": "4505:1:8", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4569:163:8", + "nodeType": "YulBlock", + "src": "4569:163:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "4594:6:8", + "nodeType": "YulIdentifier", + "src": "4594:6:8" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "4612:3:8", + "nodeType": "YulIdentifier", + "src": "4612:3:8" + }, + { + "name": "srcOffset", + "nativeSrc": "4617:9:8", + "nodeType": "YulIdentifier", + "src": "4617:9:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4608:3:8", + "nodeType": "YulIdentifier", + "src": "4608:3:8" + }, + "nativeSrc": "4608:19:8", + "nodeType": "YulFunctionCall", + "src": "4608:19:8" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4602:5:8", + "nodeType": "YulIdentifier", + "src": "4602:5:8" + }, + "nativeSrc": "4602:26:8", + "nodeType": "YulFunctionCall", + "src": "4602:26:8" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "4587:6:8", + "nodeType": "YulIdentifier", + "src": "4587:6:8" + }, + "nativeSrc": "4587:42:8", + "nodeType": "YulFunctionCall", + "src": "4587:42:8" + }, + "nativeSrc": "4587:42:8", + "nodeType": "YulExpressionStatement", + "src": "4587:42:8" + }, + { + "nativeSrc": "4646:24:8", + "nodeType": "YulAssignment", + "src": "4646:24:8", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "4660:6:8", + "nodeType": "YulIdentifier", + "src": "4660:6:8" + }, + { + "kind": "number", + "nativeSrc": "4668:1:8", + "nodeType": "YulLiteral", + "src": "4668:1:8", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4656:3:8", + "nodeType": "YulIdentifier", + "src": "4656:3:8" + }, + "nativeSrc": "4656:14:8", + "nodeType": "YulFunctionCall", + "src": "4656:14:8" + }, + "variableNames": [ + { + "name": "dstPtr", + "nativeSrc": "4646:6:8", + "nodeType": "YulIdentifier", + "src": "4646:6:8" + } + ] + }, + { + "nativeSrc": "4687:31:8", + "nodeType": "YulAssignment", + "src": "4687:31:8", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nativeSrc": "4704:9:8", + "nodeType": "YulIdentifier", + "src": "4704:9:8" + }, + { + "kind": "number", + "nativeSrc": "4715:2:8", + "nodeType": "YulLiteral", + "src": "4715:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4700:3:8", + "nodeType": "YulIdentifier", + "src": "4700:3:8" + }, + "nativeSrc": "4700:18:8", + "nodeType": "YulFunctionCall", + "src": "4700:18:8" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "4687:9:8", + "nodeType": "YulIdentifier", + "src": "4687:9:8" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "4535:1:8", + "nodeType": "YulIdentifier", + "src": "4535:1:8" + }, + { + "name": "loopEnd", + "nativeSrc": "4538:7:8", + "nodeType": "YulIdentifier", + "src": "4538:7:8" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "4532:2:8", + "nodeType": "YulIdentifier", + "src": "4532:2:8" + }, + "nativeSrc": "4532:14:8", + "nodeType": "YulFunctionCall", + "src": "4532:14:8" + }, + "nativeSrc": "4524:208:8", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "4547:21:8", + "nodeType": "YulBlock", + "src": "4547:21:8", + "statements": [ + { + "nativeSrc": "4549:17:8", + "nodeType": "YulAssignment", + "src": "4549:17:8", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "4558:1:8", + "nodeType": "YulIdentifier", + "src": "4558:1:8" + }, + { + "kind": "number", + "nativeSrc": "4561:4:8", + "nodeType": "YulLiteral", + "src": "4561:4:8", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4554:3:8", + "nodeType": "YulIdentifier", + "src": "4554:3:8" + }, + "nativeSrc": "4554:12:8", + "nodeType": "YulFunctionCall", + "src": "4554:12:8" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "4549:1:8", + "nodeType": "YulIdentifier", + "src": "4549:1:8" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "4528:3:8", + "nodeType": "YulBlock", + "src": "4528:3:8", + "statements": [] + }, + "src": "4524:208:8" + }, + { + "body": { + "nativeSrc": "4768:156:8", + "nodeType": "YulBlock", + "src": "4768:156:8", + "statements": [ + { + "nativeSrc": "4786:43:8", + "nodeType": "YulVariableDeclaration", + "src": "4786:43:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "4813:3:8", + "nodeType": "YulIdentifier", + "src": "4813:3:8" + }, + { + "name": "srcOffset", + "nativeSrc": "4818:9:8", + "nodeType": "YulIdentifier", + "src": "4818:9:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4809:3:8", + "nodeType": "YulIdentifier", + "src": "4809:3:8" + }, + "nativeSrc": "4809:19:8", + "nodeType": "YulFunctionCall", + "src": "4809:19:8" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4803:5:8", + "nodeType": "YulIdentifier", + "src": "4803:5:8" + }, + "nativeSrc": "4803:26:8", + "nodeType": "YulFunctionCall", + "src": "4803:26:8" + }, + "variables": [ + { + "name": "lastValue", + "nativeSrc": "4790:9:8", + "nodeType": "YulTypedName", + "src": "4790:9:8", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "4853:6:8", + "nodeType": "YulIdentifier", + "src": "4853:6:8" + }, + { + "arguments": [ + { + "name": "lastValue", + "nativeSrc": "4880:9:8", + "nodeType": "YulIdentifier", + "src": "4880:9:8" + }, + { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "4895:6:8", + "nodeType": "YulIdentifier", + "src": "4895:6:8" + }, + { + "kind": "number", + "nativeSrc": "4903:4:8", + "nodeType": "YulLiteral", + "src": "4903:4:8", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4891:3:8", + "nodeType": "YulIdentifier", + "src": "4891:3:8" + }, + "nativeSrc": "4891:17:8", + "nodeType": "YulFunctionCall", + "src": "4891:17:8" + } + ], + "functionName": { + "name": "mask_bytes_dynamic", + "nativeSrc": "4861:18:8", + "nodeType": "YulIdentifier", + "src": "4861:18:8" + }, + "nativeSrc": "4861:48:8", + "nodeType": "YulFunctionCall", + "src": "4861:48:8" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "4846:6:8", + "nodeType": "YulIdentifier", + "src": "4846:6:8" + }, + "nativeSrc": "4846:64:8", + "nodeType": "YulFunctionCall", + "src": "4846:64:8" + }, + "nativeSrc": "4846:64:8", + "nodeType": "YulExpressionStatement", + "src": "4846:64:8" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nativeSrc": "4751:7:8", + "nodeType": "YulIdentifier", + "src": "4751:7:8" + }, + { + "name": "newLen", + "nativeSrc": "4760:6:8", + "nodeType": "YulIdentifier", + "src": "4760:6:8" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "4748:2:8", + "nodeType": "YulIdentifier", + "src": "4748:2:8" + }, + "nativeSrc": "4748:19:8", + "nodeType": "YulFunctionCall", + "src": "4748:19:8" + }, + "nativeSrc": "4745:179:8", + "nodeType": "YulIf", + "src": "4745:179:8" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "4944:4:8", + "nodeType": "YulIdentifier", + "src": "4944:4:8" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "4958:6:8", + "nodeType": "YulIdentifier", + "src": "4958:6:8" + }, + { + "kind": "number", + "nativeSrc": "4966:1:8", + "nodeType": "YulLiteral", + "src": "4966:1:8", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "4954:3:8", + "nodeType": "YulIdentifier", + "src": "4954:3:8" + }, + "nativeSrc": "4954:14:8", + "nodeType": "YulFunctionCall", + "src": "4954:14:8" + }, + { + "kind": "number", + "nativeSrc": "4970:1:8", + "nodeType": "YulLiteral", + "src": "4970:1:8", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4950:3:8", + "nodeType": "YulIdentifier", + "src": "4950:3:8" + }, + "nativeSrc": "4950:22:8", + "nodeType": "YulFunctionCall", + "src": "4950:22:8" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "4937:6:8", + "nodeType": "YulIdentifier", + "src": "4937:6:8" + }, + "nativeSrc": "4937:36:8", + "nodeType": "YulFunctionCall", + "src": "4937:36:8" + }, + "nativeSrc": "4937:36:8", + "nodeType": "YulExpressionStatement", + "src": "4937:36:8" + } + ] + }, + "nativeSrc": "4365:618:8", + "nodeType": "YulCase", + "src": "4365:618:8", + "value": { + "kind": "number", + "nativeSrc": "4370:1:8", + "nodeType": "YulLiteral", + "src": "4370:1:8", + "type": "", + "value": "1" + } + }, + { + "body": { + "nativeSrc": "5000:222:8", + "nodeType": "YulBlock", + "src": "5000:222:8", + "statements": [ + { + "nativeSrc": "5014:14:8", + "nodeType": "YulVariableDeclaration", + "src": "5014:14:8", + "value": { + "kind": "number", + "nativeSrc": "5027:1:8", + "nodeType": "YulLiteral", + "src": "5027:1:8", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "5018:5:8", + "nodeType": "YulTypedName", + "src": "5018:5:8", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "5051:67:8", + "nodeType": "YulBlock", + "src": "5051:67:8", + "statements": [ + { + "nativeSrc": "5069:35:8", + "nodeType": "YulAssignment", + "src": "5069:35:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "5088:3:8", + "nodeType": "YulIdentifier", + "src": "5088:3:8" + }, + { + "name": "srcOffset", + "nativeSrc": "5093:9:8", + "nodeType": "YulIdentifier", + "src": "5093:9:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5084:3:8", + "nodeType": "YulIdentifier", + "src": "5084:3:8" + }, + "nativeSrc": "5084:19:8", + "nodeType": "YulFunctionCall", + "src": "5084:19:8" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "5078:5:8", + "nodeType": "YulIdentifier", + "src": "5078:5:8" + }, + "nativeSrc": "5078:26:8", + "nodeType": "YulFunctionCall", + "src": "5078:26:8" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "5069:5:8", + "nodeType": "YulIdentifier", + "src": "5069:5:8" + } + ] + } + ] + }, + "condition": { + "name": "newLen", + "nativeSrc": "5044:6:8", + "nodeType": "YulIdentifier", + "src": "5044:6:8" + }, + "nativeSrc": "5041:77:8", + "nodeType": "YulIf", + "src": "5041:77:8" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "5138:4:8", + "nodeType": "YulIdentifier", + "src": "5138:4:8" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "5197:5:8", + "nodeType": "YulIdentifier", + "src": "5197:5:8" + }, + { + "name": "newLen", + "nativeSrc": "5204:6:8", + "nodeType": "YulIdentifier", + "src": "5204:6:8" + } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "5144:52:8", + "nodeType": "YulIdentifier", + "src": "5144:52:8" + }, + "nativeSrc": "5144:67:8", + "nodeType": "YulFunctionCall", + "src": "5144:67:8" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "5131:6:8", + "nodeType": "YulIdentifier", + "src": "5131:6:8" + }, + "nativeSrc": "5131:81:8", + "nodeType": "YulFunctionCall", + "src": "5131:81:8" + }, + "nativeSrc": "5131:81:8", + "nodeType": "YulExpressionStatement", + "src": "5131:81:8" + } + ] + }, + "nativeSrc": "4992:230:8", + "nodeType": "YulCase", + "src": "4992:230:8", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "4345:6:8", + "nodeType": "YulIdentifier", + "src": "4345:6:8" + }, + { + "kind": "number", + "nativeSrc": "4353:2:8", + "nodeType": "YulLiteral", + "src": "4353:2:8", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "4342:2:8", + "nodeType": "YulIdentifier", + "src": "4342:2:8" + }, + "nativeSrc": "4342:14:8", + "nodeType": "YulFunctionCall", + "src": "4342:14:8" + }, + "nativeSrc": "4335:887:8", + "nodeType": "YulSwitch", + "src": "4335:887:8" + } + ] + }, + "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage", + "nativeSrc": "3833:1395:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nativeSrc": "3914:4:8", + "nodeType": "YulTypedName", + "src": "3914:4:8", + "type": "" + }, + { + "name": "src", + "nativeSrc": "3920:3:8", + "nodeType": "YulTypedName", + "src": "3920:3:8", + "type": "" + } + ], + "src": "3833:1395:8" + } + ] + }, + "contents": "{\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function array_dataslot_t_string_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_string_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_string_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src) {\n\n let newLen := array_length_t_string_memory_ptr(src)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_string_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n srcOffset := 0x20\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n}\n", + "id": 8, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "608060405234801561000f575f5ffd5b506040518060400160405280600381526020017f4c4f4c00000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4c4f4c0000000000000000000000000000000000000000000000000000000000815250816003908161008b91906102e0565b50806004908161009b91906102e0565b5050506103af565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061011e57607f821691505b602082108103610131576101306100da565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026101937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610158565b61019d8683610158565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6101e16101dc6101d7846101b5565b6101be565b6101b5565b9050919050565b5f819050919050565b6101fa836101c7565b61020e610206826101e8565b848454610164565b825550505050565b5f5f905090565b610225610216565b6102308184846101f1565b505050565b5b81811015610253576102485f8261021d565b600181019050610236565b5050565b601f8211156102985761026981610137565b61027284610149565b81016020851015610281578190505b61029561028d85610149565b830182610235565b50505b505050565b5f82821c905092915050565b5f6102b85f198460080261029d565b1980831691505092915050565b5f6102d083836102a9565b9150826002028217905092915050565b6102e9826100a3565b67ffffffffffffffff811115610302576103016100ad565b5b61030c8254610107565b610317828285610257565b5f60209050601f831160018114610348575f8415610336578287015190505b61034085826102c5565b8655506103a7565b601f19841661035686610137565b5f5b8281101561037d57848901518255600182019150602085019450602081019050610358565b8683101561039a5784890151610396601f8916826102a9565b8355505b6001600288020188555050505b505050505050565b610f9b806103bc5f395ff3fe608060405234801561000f575f5ffd5b50600436106100b2575f3560e01c80635c975abb1161006f5780635c975abb1461017a57806370a08231146101985780638456cb59146101c857806395d89b41146101d2578063a9059cbb146101f0578063dd62ed3e14610220576100b2565b806306fdde03146100b6578063095ea7b3146100d457806318160ddd1461010457806323b872dd14610122578063313ce567146101525780633f4ba83a14610170575b5f5ffd5b6100be610250565b6040516100cb9190610c14565b60405180910390f35b6100ee60048036038101906100e99190610cc5565b6102e0565b6040516100fb9190610d1d565b60405180910390f35b61010c610302565b6040516101199190610d45565b60405180910390f35b61013c60048036038101906101379190610d5e565b61030b565b6040516101499190610d1d565b60405180910390f35b61015a610339565b6040516101679190610dc9565b60405180910390f35b610178610341565b005b61018261034b565b60405161018f9190610d1d565b60405180910390f35b6101b260048036038101906101ad9190610de2565b610364565b6040516101bf9190610d45565b60405180910390f35b6101d06103a9565b005b6101da6103b3565b6040516101e79190610c14565b60405180910390f35b61020a60048036038101906102059190610cc5565b610443565b6040516102179190610d1d565b60405180910390f35b61023a60048036038101906102359190610e0d565b610465565b6040516102479190610d45565b60405180910390f35b60606003805461025f90610e78565b80601f016020809104026020016040519081016040528092919081815260200182805461028b90610e78565b80156102d65780601f106102ad576101008083540402835291602001916102d6565b820191905f5260205f20905b8154815290600101906020018083116102b957829003601f168201915b5050505050905090565b5f5f6102ea6104e7565b90506102f78185856104ee565b600191505092915050565b5f600254905090565b5f5f6103156104e7565b9050610322858285610500565b61032d858585610593565b60019150509392505050565b5f6012905090565b610349610683565b565b5f60026005541461035c575f61035f565b60015b905090565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6103b16106d3565b565b6060600480546103c290610e78565b80601f01602080910402602001604051908101604052809291908181526020018280546103ee90610e78565b80156104395780601f1061041057610100808354040283529160200191610439565b820191905f5260205f20905b81548152906001019060200180831161041c57829003601f168201915b5050505050905090565b5f5f61044d6104e7565b905061045a818585610593565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b6104fb8383836001610723565b505050565b5f61050b8484610465565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81101561058d578181101561057e578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161057593929190610eb7565b60405180910390fd5b61058c84848484035f610723565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610603575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016105fa9190610eec565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610673575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161066a9190610eec565b60405180910390fd5b61067e8383836108f2565b505050565b61068b61090a565b60016005819055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6106bc6104e7565b6040516106c99190610eec565b60405180910390a1565b6106db61094a565b60026005819055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861070c6104e7565b6040516107199190610eec565b60405180910390a1565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610793575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161078a9190610eec565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610803575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016107fa9190610eec565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156108ec578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108e39190610d45565b60405180910390a35b50505050565b6108fa61094a565b61090583838361098b565b505050565b61091261034b565b610948576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61095261034b565b15610989576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109db578060025f8282546109cf9190610f32565b92505081905550610aa9565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610a64578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610a5b93929190610eb7565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610af0578060025f8282540392505081905550610b3a565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b979190610d45565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610be682610ba4565b610bf08185610bae565b9350610c00818560208601610bbe565b610c0981610bcc565b840191505092915050565b5f6020820190508181035f830152610c2c8184610bdc565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610c6182610c38565b9050919050565b610c7181610c57565b8114610c7b575f5ffd5b50565b5f81359050610c8c81610c68565b92915050565b5f819050919050565b610ca481610c92565b8114610cae575f5ffd5b50565b5f81359050610cbf81610c9b565b92915050565b5f5f60408385031215610cdb57610cda610c34565b5b5f610ce885828601610c7e565b9250506020610cf985828601610cb1565b9150509250929050565b5f8115159050919050565b610d1781610d03565b82525050565b5f602082019050610d305f830184610d0e565b92915050565b610d3f81610c92565b82525050565b5f602082019050610d585f830184610d36565b92915050565b5f5f5f60608486031215610d7557610d74610c34565b5b5f610d8286828701610c7e565b9350506020610d9386828701610c7e565b9250506040610da486828701610cb1565b9150509250925092565b5f60ff82169050919050565b610dc381610dae565b82525050565b5f602082019050610ddc5f830184610dba565b92915050565b5f60208284031215610df757610df6610c34565b5b5f610e0484828501610c7e565b91505092915050565b5f5f60408385031215610e2357610e22610c34565b5b5f610e3085828601610c7e565b9250506020610e4185828601610c7e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610e8f57607f821691505b602082108103610ea257610ea1610e4b565b5b50919050565b610eb181610c57565b82525050565b5f606082019050610eca5f830186610ea8565b610ed76020830185610d36565b610ee46040830184610d36565b949350505050565b5f602082019050610eff5f830184610ea8565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610f3c82610c92565b9150610f4783610c92565b9250828201905080821115610f5f57610f5e610f05565b5b9291505056fea264697066735822122079df6ef2f44460794c07db31a82c5404990135ae596d303e977888265cf5450064736f6c634300081e0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4C4F4C0000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4C4F4C0000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0x3 SWAP1 DUP2 PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x2E0 JUMP JUMPDEST POP DUP1 PUSH1 0x4 SWAP1 DUP2 PUSH2 0x9B SWAP2 SWAP1 PUSH2 0x2E0 JUMP JUMPDEST POP POP POP PUSH2 0x3AF JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x11E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x131 JUMPI PUSH2 0x130 PUSH2 0xDA JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP DUP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x8 DUP4 MUL PUSH2 0x193 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0x158 JUMP JUMPDEST PUSH2 0x19D DUP7 DUP4 PUSH2 0x158 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x1E1 PUSH2 0x1DC PUSH2 0x1D7 DUP5 PUSH2 0x1B5 JUMP JUMPDEST PUSH2 0x1BE JUMP JUMPDEST PUSH2 0x1B5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1FA DUP4 PUSH2 0x1C7 JUMP JUMPDEST PUSH2 0x20E PUSH2 0x206 DUP3 PUSH2 0x1E8 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0x164 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x225 PUSH2 0x216 JUMP JUMPDEST PUSH2 0x230 DUP2 DUP5 DUP5 PUSH2 0x1F1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x253 JUMPI PUSH2 0x248 PUSH0 DUP3 PUSH2 0x21D JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x236 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x298 JUMPI PUSH2 0x269 DUP2 PUSH2 0x137 JUMP JUMPDEST PUSH2 0x272 DUP5 PUSH2 0x149 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x281 JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x295 PUSH2 0x28D DUP6 PUSH2 0x149 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x235 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2B8 PUSH0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x29D JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2D0 DUP4 DUP4 PUSH2 0x2A9 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2E9 DUP3 PUSH2 0xA3 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x302 JUMPI PUSH2 0x301 PUSH2 0xAD JUMP JUMPDEST JUMPDEST PUSH2 0x30C DUP3 SLOAD PUSH2 0x107 JUMP JUMPDEST PUSH2 0x317 DUP3 DUP3 DUP6 PUSH2 0x257 JUMP JUMPDEST PUSH0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x348 JUMPI PUSH0 DUP5 ISZERO PUSH2 0x336 JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH2 0x340 DUP6 DUP3 PUSH2 0x2C5 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x3A7 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x356 DUP7 PUSH2 0x137 JUMP JUMPDEST PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x37D JUMPI DUP5 DUP10 ADD MLOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x358 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x39A JUMPI DUP5 DUP10 ADD MLOAD PUSH2 0x396 PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x2A9 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xF9B DUP1 PUSH2 0x3BC PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB2 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5C975ABB GT PUSH2 0x6F JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1F0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x220 JUMPI PUSH2 0xB2 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x170 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xBE PUSH2 0x250 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCB SWAP2 SWAP1 PUSH2 0xC14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0xCC5 JUMP JUMPDEST PUSH2 0x2E0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFB SWAP2 SWAP1 PUSH2 0xD1D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10C PUSH2 0x302 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0xD45 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x137 SWAP2 SWAP1 PUSH2 0xD5E JUMP JUMPDEST PUSH2 0x30B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x149 SWAP2 SWAP1 PUSH2 0xD1D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15A PUSH2 0x339 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x167 SWAP2 SWAP1 PUSH2 0xDC9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 PUSH2 0x341 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x182 PUSH2 0x34B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18F SWAP2 SWAP1 PUSH2 0xD1D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B2 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1AD SWAP2 SWAP1 PUSH2 0xDE2 JUMP JUMPDEST PUSH2 0x364 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1BF SWAP2 SWAP1 PUSH2 0xD45 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1D0 PUSH2 0x3A9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1DA PUSH2 0x3B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E7 SWAP2 SWAP1 PUSH2 0xC14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x205 SWAP2 SWAP1 PUSH2 0xCC5 JUMP JUMPDEST PUSH2 0x443 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x217 SWAP2 SWAP1 PUSH2 0xD1D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x235 SWAP2 SWAP1 PUSH2 0xE0D JUMP JUMPDEST PUSH2 0x465 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x247 SWAP2 SWAP1 PUSH2 0xD45 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x25F SWAP1 PUSH2 0xE78 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x28B SWAP1 PUSH2 0xE78 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2D6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2AD JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2D6 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2B9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x2EA PUSH2 0x4E7 JUMP JUMPDEST SWAP1 POP PUSH2 0x2F7 DUP2 DUP6 DUP6 PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x315 PUSH2 0x4E7 JUMP JUMPDEST SWAP1 POP PUSH2 0x322 DUP6 DUP3 DUP6 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x32D DUP6 DUP6 DUP6 PUSH2 0x593 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x12 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x349 PUSH2 0x683 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x2 PUSH1 0x5 SLOAD EQ PUSH2 0x35C JUMPI PUSH0 PUSH2 0x35F JUMP JUMPDEST PUSH1 0x1 JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3B1 PUSH2 0x6D3 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x3C2 SWAP1 PUSH2 0xE78 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3EE SWAP1 PUSH2 0xE78 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x439 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x410 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x439 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x41C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x44D PUSH2 0x4E7 JUMP JUMPDEST SWAP1 POP PUSH2 0x45A DUP2 DUP6 DUP6 PUSH2 0x593 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x4FB DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x723 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x50B DUP5 DUP5 PUSH2 0x465 JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 LT ISZERO PUSH2 0x58D JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x57E JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x575 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xEB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x58C DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x723 JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x603 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5FA SWAP2 SWAP1 PUSH2 0xEEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x673 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x66A SWAP2 SWAP1 PUSH2 0xEEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x67E DUP4 DUP4 DUP4 PUSH2 0x8F2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x68B PUSH2 0x90A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x5 DUP2 SWAP1 SSTORE POP PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA PUSH2 0x6BC PUSH2 0x4E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6C9 SWAP2 SWAP1 PUSH2 0xEEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x6DB PUSH2 0x94A JUMP JUMPDEST PUSH1 0x2 PUSH1 0x5 DUP2 SWAP1 SSTORE POP PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x70C PUSH2 0x4E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x719 SWAP2 SWAP1 PUSH2 0xEEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x793 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x78A SWAP2 SWAP1 PUSH2 0xEEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x803 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7FA SWAP2 SWAP1 PUSH2 0xEEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x8EC JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x8E3 SWAP2 SWAP1 PUSH2 0xD45 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x8FA PUSH2 0x94A JUMP JUMPDEST PUSH2 0x905 DUP4 DUP4 DUP4 PUSH2 0x98B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x912 PUSH2 0x34B JUMP JUMPDEST PUSH2 0x948 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8DFC202B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH2 0x952 PUSH2 0x34B JUMP JUMPDEST ISZERO PUSH2 0x989 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD93C066500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x9DB JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x9CF SWAP2 SWAP1 PUSH2 0xF32 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0xAA9 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xA64 JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA5B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xEB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH0 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xAF0 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0xB3A JUMP JUMPDEST DUP1 PUSH0 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xB97 SWAP2 SWAP1 PUSH2 0xD45 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY PUSH0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0xBE6 DUP3 PUSH2 0xBA4 JUMP JUMPDEST PUSH2 0xBF0 DUP2 DUP6 PUSH2 0xBAE JUMP JUMPDEST SWAP4 POP PUSH2 0xC00 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xBBE JUMP JUMPDEST PUSH2 0xC09 DUP2 PUSH2 0xBCC JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0xC2C DUP2 DUP5 PUSH2 0xBDC JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0xC61 DUP3 PUSH2 0xC38 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xC71 DUP2 PUSH2 0xC57 JUMP JUMPDEST DUP2 EQ PUSH2 0xC7B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xC8C DUP2 PUSH2 0xC68 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xCA4 DUP2 PUSH2 0xC92 JUMP JUMPDEST DUP2 EQ PUSH2 0xCAE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xCBF DUP2 PUSH2 0xC9B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCDB JUMPI PUSH2 0xCDA PUSH2 0xC34 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xCE8 DUP6 DUP3 DUP7 ADD PUSH2 0xC7E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xCF9 DUP6 DUP3 DUP7 ADD PUSH2 0xCB1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD17 DUP2 PUSH2 0xD03 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xD30 PUSH0 DUP4 ADD DUP5 PUSH2 0xD0E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xD3F DUP2 PUSH2 0xC92 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xD58 PUSH0 DUP4 ADD DUP5 PUSH2 0xD36 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xD75 JUMPI PUSH2 0xD74 PUSH2 0xC34 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xD82 DUP7 DUP3 DUP8 ADD PUSH2 0xC7E JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xD93 DUP7 DUP3 DUP8 ADD PUSH2 0xC7E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0xDA4 DUP7 DUP3 DUP8 ADD PUSH2 0xCB1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xDC3 DUP2 PUSH2 0xDAE JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xDDC PUSH0 DUP4 ADD DUP5 PUSH2 0xDBA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDF7 JUMPI PUSH2 0xDF6 PUSH2 0xC34 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xE04 DUP5 DUP3 DUP6 ADD PUSH2 0xC7E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE23 JUMPI PUSH2 0xE22 PUSH2 0xC34 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xE30 DUP6 DUP3 DUP7 ADD PUSH2 0xC7E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xE41 DUP6 DUP3 DUP7 ADD PUSH2 0xC7E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0xE8F JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xEA2 JUMPI PUSH2 0xEA1 PUSH2 0xE4B JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xEB1 DUP2 PUSH2 0xC57 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xECA PUSH0 DUP4 ADD DUP7 PUSH2 0xEA8 JUMP JUMPDEST PUSH2 0xED7 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xD36 JUMP JUMPDEST PUSH2 0xEE4 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xD36 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xEFF PUSH0 DUP4 ADD DUP5 PUSH2 0xEA8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0xF3C DUP3 PUSH2 0xC92 JUMP JUMPDEST SWAP2 POP PUSH2 0xF47 DUP4 PUSH2 0xC92 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0xF5F JUMPI PUSH2 0xF5E PUSH2 0xF05 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH26 0xDF6EF2F44460794C07DB31A82C5404990135AE596D303E977888 0x26 TLOAD CREATE2 GASLIMIT STOP PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ", + "sourceMap": "113:190:0:-:0;;;151:36;;;;;;;;;;1582:113:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1656:5;1648;:13;;;;;;:::i;:::-;;1681:7;1671;:17;;;;;;:::i;:::-;;1582:113;;113:190:0;;7:99:8;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:180::-;160:77;157:1;150:88;257:4;254:1;247:15;281:4;278:1;271:15;298:180;346:77;343:1;336:88;443:4;440:1;433:15;467:4;464:1;457:15;484:320;528:6;565:1;559:4;555:12;545:22;;612:1;606:4;602:12;633:18;623:81;;689:4;681:6;677:17;667:27;;623:81;751:2;743:6;740:14;720:18;717:38;714:84;;770:18;;:::i;:::-;714:84;535:269;484:320;;;:::o;810:141::-;859:4;882:3;874:11;;905:3;902:1;895:14;939:4;936:1;926:18;918:26;;810:141;;;:::o;957:93::-;994:6;1041:2;1036;1029:5;1025:14;1021:23;1011:33;;957:93;;;:::o;1056:107::-;1100:8;1150:5;1144:4;1140:16;1119:37;;1056:107;;;;:::o;1169:393::-;1238:6;1288:1;1276:10;1272:18;1311:97;1341:66;1330:9;1311:97;:::i;:::-;1429:39;1459:8;1448:9;1429:39;:::i;:::-;1417:51;;1501:4;1497:9;1490:5;1486:21;1477:30;;1550:4;1540:8;1536:19;1529:5;1526:30;1516:40;;1245:317;;1169:393;;;;;:::o;1568:77::-;1605:7;1634:5;1623:16;;1568:77;;;:::o;1651:60::-;1679:3;1700:5;1693:12;;1651:60;;;:::o;1717:142::-;1767:9;1800:53;1818:34;1827:24;1845:5;1827:24;:::i;:::-;1818:34;:::i;:::-;1800:53;:::i;:::-;1787:66;;1717:142;;;:::o;1865:75::-;1908:3;1929:5;1922:12;;1865:75;;;:::o;1946:269::-;2056:39;2087:7;2056:39;:::i;:::-;2117:91;2166:41;2190:16;2166:41;:::i;:::-;2158:6;2151:4;2145:11;2117:91;:::i;:::-;2111:4;2104:105;2022:193;1946:269;;;:::o;2221:73::-;2266:3;2287:1;2280:8;;2221:73;:::o;2300:189::-;2377:32;;:::i;:::-;2418:65;2476:6;2468;2462:4;2418:65;:::i;:::-;2353:136;2300:189;;:::o;2495:186::-;2555:120;2572:3;2565:5;2562:14;2555:120;;;2626:39;2663:1;2656:5;2626:39;:::i;:::-;2599:1;2592:5;2588:13;2579:22;;2555:120;;;2495:186;;:::o;2687:543::-;2788:2;2783:3;2780:11;2777:446;;;2822:38;2854:5;2822:38;:::i;:::-;2906:29;2924:10;2906:29;:::i;:::-;2896:8;2892:44;3089:2;3077:10;3074:18;3071:49;;;3110:8;3095:23;;3071:49;3133:80;3189:22;3207:3;3189:22;:::i;:::-;3179:8;3175:37;3162:11;3133:80;:::i;:::-;2792:431;;2777:446;2687:543;;;:::o;3236:117::-;3290:8;3340:5;3334:4;3330:16;3309:37;;3236:117;;;;:::o;3359:169::-;3403:6;3436:51;3484:1;3480:6;3472:5;3469:1;3465:13;3436:51;:::i;:::-;3432:56;3517:4;3511;3507:15;3497:25;;3410:118;3359:169;;;;:::o;3533:295::-;3609:4;3755:29;3780:3;3774:4;3755:29;:::i;:::-;3747:37;;3817:3;3814:1;3810:11;3804:4;3801:21;3793:29;;3533:295;;;;:::o;3833:1395::-;3950:37;3983:3;3950:37;:::i;:::-;4052:18;4044:6;4041:30;4038:56;;;4074:18;;:::i;:::-;4038:56;4118:38;4150:4;4144:11;4118:38;:::i;:::-;4203:67;4263:6;4255;4249:4;4203:67;:::i;:::-;4297:1;4321:4;4308:17;;4353:2;4345:6;4342:14;4370:1;4365:618;;;;5027:1;5044:6;5041:77;;;5093:9;5088:3;5084:19;5078:26;5069:35;;5041:77;5144:67;5204:6;5197:5;5144:67;:::i;:::-;5138:4;5131:81;5000:222;4335:887;;4365:618;4417:4;4413:9;4405:6;4401:22;4451:37;4483:4;4451:37;:::i;:::-;4510:1;4524:208;4538:7;4535:1;4532:14;4524:208;;;4617:9;4612:3;4608:19;4602:26;4594:6;4587:42;4668:1;4660:6;4656:14;4646:24;;4715:2;4704:9;4700:18;4687:31;;4561:4;4558:1;4554:12;4549:17;;4524:208;;;4760:6;4751:7;4748:19;4745:179;;;4818:9;4813:3;4809:19;4803:26;4861:48;4903:4;4895:6;4891:17;4880:9;4861:48;:::i;:::-;4853:6;4846:64;4768:156;4745:179;4970:1;4966;4958:6;4954:14;4950:22;4944:4;4937:36;4372:611;;;4335:887;;3925:1303;;;3833:1395;;:::o;113:190:0:-;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@_approve_570": { + "entryPoint": 1262, + "id": 570, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_approve_630": { + "entryPoint": 1827, + "id": 630, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@_msgSender_829": { + "entryPoint": 1255, + "id": 829, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_pause_943": { + "entryPoint": 1747, + "id": 943, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_requireNotPaused_914": { + "entryPoint": 2378, + "id": 914, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_requirePaused_927": { + "entryPoint": 2314, + "id": 927, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_spendAllowance_678": { + "entryPoint": 1280, + "id": 678, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_transfer_409": { + "entryPoint": 1427, + "id": 409, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_unpause_959": { + "entryPoint": 1667, + "id": 959, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_update_486": { + "entryPoint": 2443, + "id": 486, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_update_790": { + "entryPoint": 2290, + "id": 790, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@allowance_306": { + "entryPoint": 1125, + "id": 306, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@approve_330": { + "entryPoint": 736, + "id": 330, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@balanceOf_265": { + "entryPoint": 868, + "id": 265, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@decimals_243": { + "entryPoint": 825, + "id": 243, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@name_225": { + "entryPoint": 592, + "id": 225, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@pause_19": { + "entryPoint": 937, + "id": 19, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@paused_902": { + "entryPoint": 843, + "id": 902, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@symbol_234": { + "entryPoint": 947, + "id": 234, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@totalSupply_252": { + "entryPoint": 770, + "id": 252, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@transferFrom_362": { + "entryPoint": 779, + "id": 362, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@transfer_289": { + "entryPoint": 1091, + "id": 289, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@unpause_26": { + "entryPoint": 833, + "id": 26, + "parameterSlots": 0, + "returnSlots": 0 + }, + "abi_decode_t_address": { + "entryPoint": 3198, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint256": { + "entryPoint": 3249, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 3554, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_address": { + "entryPoint": 3597, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_addresst_uint256": { + "entryPoint": 3422, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_addresst_uint256": { + "entryPoint": 3269, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_encode_t_address_to_t_address_fromStack": { + "entryPoint": 3752, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_bool_to_t_bool_fromStack": { + "entryPoint": 3342, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack": { + "entryPoint": 3036, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_t_uint256_to_t_uint256_fromStack": { + "entryPoint": 3382, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_uint8_to_t_uint8_fromStack": { + "entryPoint": 3514, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 3820, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 3767, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": 3357, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 3092, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": 3397, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": { + "entryPoint": 3529, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "allocate_unbounded": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "array_length_t_string_memory_ptr": { + "entryPoint": 2980, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_t_string_memory_ptr_fromStack": { + "entryPoint": 2990, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 3890, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "cleanup_t_address": { + "entryPoint": 3159, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_bool": { + "entryPoint": 3331, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint160": { + "entryPoint": 3128, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint256": { + "entryPoint": 3218, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint8": { + "entryPoint": 3502, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "copy_memory_to_memory_with_cleanup": { + "entryPoint": 3006, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "extract_byte_array_length": { + "entryPoint": 3704, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 3845, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x22": { + "entryPoint": 3659, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { + "entryPoint": 3124, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "round_up_to_mul_of_32": { + "entryPoint": 3020, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "validator_revert_t_address": { + "entryPoint": 3176, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_uint256": { + "entryPoint": 3227, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:7253:8", + "nodeType": "YulBlock", + "src": "0:7253:8", + "statements": [ + { + "body": { + "nativeSrc": "66:40:8", + "nodeType": "YulBlock", + "src": "66:40:8", + "statements": [ + { + "nativeSrc": "77:22:8", + "nodeType": "YulAssignment", + "src": "77:22:8", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "93:5:8", + "nodeType": "YulIdentifier", + "src": "93:5:8" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "87:5:8", + "nodeType": "YulIdentifier", + "src": "87:5:8" + }, + "nativeSrc": "87:12:8", + "nodeType": "YulFunctionCall", + "src": "87:12:8" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "77:6:8", + "nodeType": "YulIdentifier", + "src": "77:6:8" + } + ] + } + ] + }, + "name": "array_length_t_string_memory_ptr", + "nativeSrc": "7:99:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "49:5:8", + "nodeType": "YulTypedName", + "src": "49:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nativeSrc": "59:6:8", + "nodeType": "YulTypedName", + "src": "59:6:8", + "type": "" + } + ], + "src": "7:99:8" + }, + { + "body": { + "nativeSrc": "208:73:8", + "nodeType": "YulBlock", + "src": "208:73:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "225:3:8", + "nodeType": "YulIdentifier", + "src": "225:3:8" + }, + { + "name": "length", + "nativeSrc": "230:6:8", + "nodeType": "YulIdentifier", + "src": "230:6:8" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "218:6:8", + "nodeType": "YulIdentifier", + "src": "218:6:8" + }, + "nativeSrc": "218:19:8", + "nodeType": "YulFunctionCall", + "src": "218:19:8" + }, + "nativeSrc": "218:19:8", + "nodeType": "YulExpressionStatement", + "src": "218:19:8" + }, + { + "nativeSrc": "246:29:8", + "nodeType": "YulAssignment", + "src": "246:29:8", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "265:3:8", + "nodeType": "YulIdentifier", + "src": "265:3:8" + }, + { + "kind": "number", + "nativeSrc": "270:4:8", + "nodeType": "YulLiteral", + "src": "270:4:8", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "261:3:8", + "nodeType": "YulIdentifier", + "src": "261:3:8" + }, + "nativeSrc": "261:14:8", + "nodeType": "YulFunctionCall", + "src": "261:14:8" + }, + "variableNames": [ + { + "name": "updated_pos", + "nativeSrc": "246:11:8", + "nodeType": "YulIdentifier", + "src": "246:11:8" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nativeSrc": "112:169:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "180:3:8", + "nodeType": "YulTypedName", + "src": "180:3:8", + "type": "" + }, + { + "name": "length", + "nativeSrc": "185:6:8", + "nodeType": "YulTypedName", + "src": "185:6:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nativeSrc": "196:11:8", + "nodeType": "YulTypedName", + "src": "196:11:8", + "type": "" + } + ], + "src": "112:169:8" + }, + { + "body": { + "nativeSrc": "349:77:8", + "nodeType": "YulBlock", + "src": "349:77:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dst", + "nativeSrc": "366:3:8", + "nodeType": "YulIdentifier", + "src": "366:3:8" + }, + { + "name": "src", + "nativeSrc": "371:3:8", + "nodeType": "YulIdentifier", + "src": "371:3:8" + }, + { + "name": "length", + "nativeSrc": "376:6:8", + "nodeType": "YulIdentifier", + "src": "376:6:8" + } + ], + "functionName": { + "name": "mcopy", + "nativeSrc": "360:5:8", + "nodeType": "YulIdentifier", + "src": "360:5:8" + }, + "nativeSrc": "360:23:8", + "nodeType": "YulFunctionCall", + "src": "360:23:8" + }, + "nativeSrc": "360:23:8", + "nodeType": "YulExpressionStatement", + "src": "360:23:8" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "403:3:8", + "nodeType": "YulIdentifier", + "src": "403:3:8" + }, + { + "name": "length", + "nativeSrc": "408:6:8", + "nodeType": "YulIdentifier", + "src": "408:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "399:3:8", + "nodeType": "YulIdentifier", + "src": "399:3:8" + }, + "nativeSrc": "399:16:8", + "nodeType": "YulFunctionCall", + "src": "399:16:8" + }, + { + "kind": "number", + "nativeSrc": "417:1:8", + "nodeType": "YulLiteral", + "src": "417:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "392:6:8", + "nodeType": "YulIdentifier", + "src": "392:6:8" + }, + "nativeSrc": "392:27:8", + "nodeType": "YulFunctionCall", + "src": "392:27:8" + }, + "nativeSrc": "392:27:8", + "nodeType": "YulExpressionStatement", + "src": "392:27:8" + } + ] + }, + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "287:139:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nativeSrc": "331:3:8", + "nodeType": "YulTypedName", + "src": "331:3:8", + "type": "" + }, + { + "name": "dst", + "nativeSrc": "336:3:8", + "nodeType": "YulTypedName", + "src": "336:3:8", + "type": "" + }, + { + "name": "length", + "nativeSrc": "341:6:8", + "nodeType": "YulTypedName", + "src": "341:6:8", + "type": "" + } + ], + "src": "287:139:8" + }, + { + "body": { + "nativeSrc": "480:54:8", + "nodeType": "YulBlock", + "src": "480:54:8", + "statements": [ + { + "nativeSrc": "490:38:8", + "nodeType": "YulAssignment", + "src": "490:38:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "508:5:8", + "nodeType": "YulIdentifier", + "src": "508:5:8" + }, + { + "kind": "number", + "nativeSrc": "515:2:8", + "nodeType": "YulLiteral", + "src": "515:2:8", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "504:3:8", + "nodeType": "YulIdentifier", + "src": "504:3:8" + }, + "nativeSrc": "504:14:8", + "nodeType": "YulFunctionCall", + "src": "504:14:8" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "524:2:8", + "nodeType": "YulLiteral", + "src": "524:2:8", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "520:3:8", + "nodeType": "YulIdentifier", + "src": "520:3:8" + }, + "nativeSrc": "520:7:8", + "nodeType": "YulFunctionCall", + "src": "520:7:8" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "500:3:8", + "nodeType": "YulIdentifier", + "src": "500:3:8" + }, + "nativeSrc": "500:28:8", + "nodeType": "YulFunctionCall", + "src": "500:28:8" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "490:6:8", + "nodeType": "YulIdentifier", + "src": "490:6:8" + } + ] + } + ] + }, + "name": "round_up_to_mul_of_32", + "nativeSrc": "432:102:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "463:5:8", + "nodeType": "YulTypedName", + "src": "463:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nativeSrc": "473:6:8", + "nodeType": "YulTypedName", + "src": "473:6:8", + "type": "" + } + ], + "src": "432:102:8" + }, + { + "body": { + "nativeSrc": "632:285:8", + "nodeType": "YulBlock", + "src": "632:285:8", + "statements": [ + { + "nativeSrc": "642:53:8", + "nodeType": "YulVariableDeclaration", + "src": "642:53:8", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "689:5:8", + "nodeType": "YulIdentifier", + "src": "689:5:8" + } + ], + "functionName": { + "name": "array_length_t_string_memory_ptr", + "nativeSrc": "656:32:8", + "nodeType": "YulIdentifier", + "src": "656:32:8" + }, + "nativeSrc": "656:39:8", + "nodeType": "YulFunctionCall", + "src": "656:39:8" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "646:6:8", + "nodeType": "YulTypedName", + "src": "646:6:8", + "type": "" + } + ] + }, + { + "nativeSrc": "704:78:8", + "nodeType": "YulAssignment", + "src": "704:78:8", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "770:3:8", + "nodeType": "YulIdentifier", + "src": "770:3:8" + }, + { + "name": "length", + "nativeSrc": "775:6:8", + "nodeType": "YulIdentifier", + "src": "775:6:8" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nativeSrc": "711:58:8", + "nodeType": "YulIdentifier", + "src": "711:58:8" + }, + "nativeSrc": "711:71:8", + "nodeType": "YulFunctionCall", + "src": "711:71:8" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "704:3:8", + "nodeType": "YulIdentifier", + "src": "704:3:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "830:5:8", + "nodeType": "YulIdentifier", + "src": "830:5:8" + }, + { + "kind": "number", + "nativeSrc": "837:4:8", + "nodeType": "YulLiteral", + "src": "837:4:8", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "826:3:8", + "nodeType": "YulIdentifier", + "src": "826:3:8" + }, + "nativeSrc": "826:16:8", + "nodeType": "YulFunctionCall", + "src": "826:16:8" + }, + { + "name": "pos", + "nativeSrc": "844:3:8", + "nodeType": "YulIdentifier", + "src": "844:3:8" + }, + { + "name": "length", + "nativeSrc": "849:6:8", + "nodeType": "YulIdentifier", + "src": "849:6:8" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "791:34:8", + "nodeType": "YulIdentifier", + "src": "791:34:8" + }, + "nativeSrc": "791:65:8", + "nodeType": "YulFunctionCall", + "src": "791:65:8" + }, + "nativeSrc": "791:65:8", + "nodeType": "YulExpressionStatement", + "src": "791:65:8" + }, + { + "nativeSrc": "865:46:8", + "nodeType": "YulAssignment", + "src": "865:46:8", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "876:3:8", + "nodeType": "YulIdentifier", + "src": "876:3:8" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "903:6:8", + "nodeType": "YulIdentifier", + "src": "903:6:8" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nativeSrc": "881:21:8", + "nodeType": "YulIdentifier", + "src": "881:21:8" + }, + "nativeSrc": "881:29:8", + "nodeType": "YulFunctionCall", + "src": "881:29:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "872:3:8", + "nodeType": "YulIdentifier", + "src": "872:3:8" + }, + "nativeSrc": "872:39:8", + "nodeType": "YulFunctionCall", + "src": "872:39:8" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "865:3:8", + "nodeType": "YulIdentifier", + "src": "865:3:8" + } + ] + } + ] + }, + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nativeSrc": "540:377:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "613:5:8", + "nodeType": "YulTypedName", + "src": "613:5:8", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "620:3:8", + "nodeType": "YulTypedName", + "src": "620:3:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "628:3:8", + "nodeType": "YulTypedName", + "src": "628:3:8", + "type": "" + } + ], + "src": "540:377:8" + }, + { + "body": { + "nativeSrc": "1041:195:8", + "nodeType": "YulBlock", + "src": "1041:195:8", + "statements": [ + { + "nativeSrc": "1051:26:8", + "nodeType": "YulAssignment", + "src": "1051:26:8", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1063:9:8", + "nodeType": "YulIdentifier", + "src": "1063:9:8" + }, + { + "kind": "number", + "nativeSrc": "1074:2:8", + "nodeType": "YulLiteral", + "src": "1074:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1059:3:8", + "nodeType": "YulIdentifier", + "src": "1059:3:8" + }, + "nativeSrc": "1059:18:8", + "nodeType": "YulFunctionCall", + "src": "1059:18:8" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "1051:4:8", + "nodeType": "YulIdentifier", + "src": "1051:4:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1098:9:8", + "nodeType": "YulIdentifier", + "src": "1098:9:8" + }, + { + "kind": "number", + "nativeSrc": "1109:1:8", + "nodeType": "YulLiteral", + "src": "1109:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1094:3:8", + "nodeType": "YulIdentifier", + "src": "1094:3:8" + }, + "nativeSrc": "1094:17:8", + "nodeType": "YulFunctionCall", + "src": "1094:17:8" + }, + { + "arguments": [ + { + "name": "tail", + "nativeSrc": "1117:4:8", + "nodeType": "YulIdentifier", + "src": "1117:4:8" + }, + { + "name": "headStart", + "nativeSrc": "1123:9:8", + "nodeType": "YulIdentifier", + "src": "1123:9:8" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1113:3:8", + "nodeType": "YulIdentifier", + "src": "1113:3:8" + }, + "nativeSrc": "1113:20:8", + "nodeType": "YulFunctionCall", + "src": "1113:20:8" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1087:6:8", + "nodeType": "YulIdentifier", + "src": "1087:6:8" + }, + "nativeSrc": "1087:47:8", + "nodeType": "YulFunctionCall", + "src": "1087:47:8" + }, + "nativeSrc": "1087:47:8", + "nodeType": "YulExpressionStatement", + "src": "1087:47:8" + }, + { + "nativeSrc": "1143:86:8", + "nodeType": "YulAssignment", + "src": "1143:86:8", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "1215:6:8", + "nodeType": "YulIdentifier", + "src": "1215:6:8" + }, + { + "name": "tail", + "nativeSrc": "1224:4:8", + "nodeType": "YulIdentifier", + "src": "1224:4:8" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nativeSrc": "1151:63:8", + "nodeType": "YulIdentifier", + "src": "1151:63:8" + }, + "nativeSrc": "1151:78:8", + "nodeType": "YulFunctionCall", + "src": "1151:78:8" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "1143:4:8", + "nodeType": "YulIdentifier", + "src": "1143:4:8" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nativeSrc": "923:313:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1013:9:8", + "nodeType": "YulTypedName", + "src": "1013:9:8", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "1025:6:8", + "nodeType": "YulTypedName", + "src": "1025:6:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "1036:4:8", + "nodeType": "YulTypedName", + "src": "1036:4:8", + "type": "" + } + ], + "src": "923:313:8" + }, + { + "body": { + "nativeSrc": "1282:35:8", + "nodeType": "YulBlock", + "src": "1282:35:8", + "statements": [ + { + "nativeSrc": "1292:19:8", + "nodeType": "YulAssignment", + "src": "1292:19:8", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1308:2:8", + "nodeType": "YulLiteral", + "src": "1308:2:8", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1302:5:8", + "nodeType": "YulIdentifier", + "src": "1302:5:8" + }, + "nativeSrc": "1302:9:8", + "nodeType": "YulFunctionCall", + "src": "1302:9:8" + }, + "variableNames": [ + { + "name": "memPtr", + "nativeSrc": "1292:6:8", + "nodeType": "YulIdentifier", + "src": "1292:6:8" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nativeSrc": "1242:75:8", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nativeSrc": "1275:6:8", + "nodeType": "YulTypedName", + "src": "1275:6:8", + "type": "" + } + ], + "src": "1242:75:8" + }, + { + "body": { + "nativeSrc": "1412:28:8", + "nodeType": "YulBlock", + "src": "1412:28:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1429:1:8", + "nodeType": "YulLiteral", + "src": "1429:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1432:1:8", + "nodeType": "YulLiteral", + "src": "1432:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1422:6:8", + "nodeType": "YulIdentifier", + "src": "1422:6:8" + }, + "nativeSrc": "1422:12:8", + "nodeType": "YulFunctionCall", + "src": "1422:12:8" + }, + "nativeSrc": "1422:12:8", + "nodeType": "YulExpressionStatement", + "src": "1422:12:8" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "1323:117:8", + "nodeType": "YulFunctionDefinition", + "src": "1323:117:8" + }, + { + "body": { + "nativeSrc": "1535:28:8", + "nodeType": "YulBlock", + "src": "1535:28:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1552:1:8", + "nodeType": "YulLiteral", + "src": "1552:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1555:1:8", + "nodeType": "YulLiteral", + "src": "1555:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1545:6:8", + "nodeType": "YulIdentifier", + "src": "1545:6:8" + }, + "nativeSrc": "1545:12:8", + "nodeType": "YulFunctionCall", + "src": "1545:12:8" + }, + "nativeSrc": "1545:12:8", + "nodeType": "YulExpressionStatement", + "src": "1545:12:8" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nativeSrc": "1446:117:8", + "nodeType": "YulFunctionDefinition", + "src": "1446:117:8" + }, + { + "body": { + "nativeSrc": "1614:81:8", + "nodeType": "YulBlock", + "src": "1614:81:8", + "statements": [ + { + "nativeSrc": "1624:65:8", + "nodeType": "YulAssignment", + "src": "1624:65:8", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "1639:5:8", + "nodeType": "YulIdentifier", + "src": "1639:5:8" + }, + { + "kind": "number", + "nativeSrc": "1646:42:8", + "nodeType": "YulLiteral", + "src": "1646:42:8", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1635:3:8", + "nodeType": "YulIdentifier", + "src": "1635:3:8" + }, + "nativeSrc": "1635:54:8", + "nodeType": "YulFunctionCall", + "src": "1635:54:8" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "1624:7:8", + "nodeType": "YulIdentifier", + "src": "1624:7:8" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nativeSrc": "1569:126:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "1596:5:8", + "nodeType": "YulTypedName", + "src": "1596:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "1606:7:8", + "nodeType": "YulTypedName", + "src": "1606:7:8", + "type": "" + } + ], + "src": "1569:126:8" + }, + { + "body": { + "nativeSrc": "1746:51:8", + "nodeType": "YulBlock", + "src": "1746:51:8", + "statements": [ + { + "nativeSrc": "1756:35:8", + "nodeType": "YulAssignment", + "src": "1756:35:8", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "1785:5:8", + "nodeType": "YulIdentifier", + "src": "1785:5:8" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nativeSrc": "1767:17:8", + "nodeType": "YulIdentifier", + "src": "1767:17:8" + }, + "nativeSrc": "1767:24:8", + "nodeType": "YulFunctionCall", + "src": "1767:24:8" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "1756:7:8", + "nodeType": "YulIdentifier", + "src": "1756:7:8" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nativeSrc": "1701:96:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "1728:5:8", + "nodeType": "YulTypedName", + "src": "1728:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "1738:7:8", + "nodeType": "YulTypedName", + "src": "1738:7:8", + "type": "" + } + ], + "src": "1701:96:8" + }, + { + "body": { + "nativeSrc": "1846:79:8", + "nodeType": "YulBlock", + "src": "1846:79:8", + "statements": [ + { + "body": { + "nativeSrc": "1903:16:8", + "nodeType": "YulBlock", + "src": "1903:16:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1912:1:8", + "nodeType": "YulLiteral", + "src": "1912:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1915:1:8", + "nodeType": "YulLiteral", + "src": "1915:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1905:6:8", + "nodeType": "YulIdentifier", + "src": "1905:6:8" + }, + "nativeSrc": "1905:12:8", + "nodeType": "YulFunctionCall", + "src": "1905:12:8" + }, + "nativeSrc": "1905:12:8", + "nodeType": "YulExpressionStatement", + "src": "1905:12:8" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "1869:5:8", + "nodeType": "YulIdentifier", + "src": "1869:5:8" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "1894:5:8", + "nodeType": "YulIdentifier", + "src": "1894:5:8" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nativeSrc": "1876:17:8", + "nodeType": "YulIdentifier", + "src": "1876:17:8" + }, + "nativeSrc": "1876:24:8", + "nodeType": "YulFunctionCall", + "src": "1876:24:8" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "1866:2:8", + "nodeType": "YulIdentifier", + "src": "1866:2:8" + }, + "nativeSrc": "1866:35:8", + "nodeType": "YulFunctionCall", + "src": "1866:35:8" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "1859:6:8", + "nodeType": "YulIdentifier", + "src": "1859:6:8" + }, + "nativeSrc": "1859:43:8", + "nodeType": "YulFunctionCall", + "src": "1859:43:8" + }, + "nativeSrc": "1856:63:8", + "nodeType": "YulIf", + "src": "1856:63:8" + } + ] + }, + "name": "validator_revert_t_address", + "nativeSrc": "1803:122:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "1839:5:8", + "nodeType": "YulTypedName", + "src": "1839:5:8", + "type": "" + } + ], + "src": "1803:122:8" + }, + { + "body": { + "nativeSrc": "1983:87:8", + "nodeType": "YulBlock", + "src": "1983:87:8", + "statements": [ + { + "nativeSrc": "1993:29:8", + "nodeType": "YulAssignment", + "src": "1993:29:8", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "2015:6:8", + "nodeType": "YulIdentifier", + "src": "2015:6:8" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2002:12:8", + "nodeType": "YulIdentifier", + "src": "2002:12:8" + }, + "nativeSrc": "2002:20:8", + "nodeType": "YulFunctionCall", + "src": "2002:20:8" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "1993:5:8", + "nodeType": "YulIdentifier", + "src": "1993:5:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "2058:5:8", + "nodeType": "YulIdentifier", + "src": "2058:5:8" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nativeSrc": "2031:26:8", + "nodeType": "YulIdentifier", + "src": "2031:26:8" + }, + "nativeSrc": "2031:33:8", + "nodeType": "YulFunctionCall", + "src": "2031:33:8" + }, + "nativeSrc": "2031:33:8", + "nodeType": "YulExpressionStatement", + "src": "2031:33:8" + } + ] + }, + "name": "abi_decode_t_address", + "nativeSrc": "1931:139:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "1961:6:8", + "nodeType": "YulTypedName", + "src": "1961:6:8", + "type": "" + }, + { + "name": "end", + "nativeSrc": "1969:3:8", + "nodeType": "YulTypedName", + "src": "1969:3:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "1977:5:8", + "nodeType": "YulTypedName", + "src": "1977:5:8", + "type": "" + } + ], + "src": "1931:139:8" + }, + { + "body": { + "nativeSrc": "2121:32:8", + "nodeType": "YulBlock", + "src": "2121:32:8", + "statements": [ + { + "nativeSrc": "2131:16:8", + "nodeType": "YulAssignment", + "src": "2131:16:8", + "value": { + "name": "value", + "nativeSrc": "2142:5:8", + "nodeType": "YulIdentifier", + "src": "2142:5:8" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "2131:7:8", + "nodeType": "YulIdentifier", + "src": "2131:7:8" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nativeSrc": "2076:77:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "2103:5:8", + "nodeType": "YulTypedName", + "src": "2103:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "2113:7:8", + "nodeType": "YulTypedName", + "src": "2113:7:8", + "type": "" + } + ], + "src": "2076:77:8" + }, + { + "body": { + "nativeSrc": "2202:79:8", + "nodeType": "YulBlock", + "src": "2202:79:8", + "statements": [ + { + "body": { + "nativeSrc": "2259:16:8", + "nodeType": "YulBlock", + "src": "2259:16:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2268:1:8", + "nodeType": "YulLiteral", + "src": "2268:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2271:1:8", + "nodeType": "YulLiteral", + "src": "2271:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2261:6:8", + "nodeType": "YulIdentifier", + "src": "2261:6:8" + }, + "nativeSrc": "2261:12:8", + "nodeType": "YulFunctionCall", + "src": "2261:12:8" + }, + "nativeSrc": "2261:12:8", + "nodeType": "YulExpressionStatement", + "src": "2261:12:8" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "2225:5:8", + "nodeType": "YulIdentifier", + "src": "2225:5:8" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "2250:5:8", + "nodeType": "YulIdentifier", + "src": "2250:5:8" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nativeSrc": "2232:17:8", + "nodeType": "YulIdentifier", + "src": "2232:17:8" + }, + "nativeSrc": "2232:24:8", + "nodeType": "YulFunctionCall", + "src": "2232:24:8" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "2222:2:8", + "nodeType": "YulIdentifier", + "src": "2222:2:8" + }, + "nativeSrc": "2222:35:8", + "nodeType": "YulFunctionCall", + "src": "2222:35:8" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2215:6:8", + "nodeType": "YulIdentifier", + "src": "2215:6:8" + }, + "nativeSrc": "2215:43:8", + "nodeType": "YulFunctionCall", + "src": "2215:43:8" + }, + "nativeSrc": "2212:63:8", + "nodeType": "YulIf", + "src": "2212:63:8" + } + ] + }, + "name": "validator_revert_t_uint256", + "nativeSrc": "2159:122:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "2195:5:8", + "nodeType": "YulTypedName", + "src": "2195:5:8", + "type": "" + } + ], + "src": "2159:122:8" + }, + { + "body": { + "nativeSrc": "2339:87:8", + "nodeType": "YulBlock", + "src": "2339:87:8", + "statements": [ + { + "nativeSrc": "2349:29:8", + "nodeType": "YulAssignment", + "src": "2349:29:8", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "2371:6:8", + "nodeType": "YulIdentifier", + "src": "2371:6:8" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2358:12:8", + "nodeType": "YulIdentifier", + "src": "2358:12:8" + }, + "nativeSrc": "2358:20:8", + "nodeType": "YulFunctionCall", + "src": "2358:20:8" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "2349:5:8", + "nodeType": "YulIdentifier", + "src": "2349:5:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "2414:5:8", + "nodeType": "YulIdentifier", + "src": "2414:5:8" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nativeSrc": "2387:26:8", + "nodeType": "YulIdentifier", + "src": "2387:26:8" + }, + "nativeSrc": "2387:33:8", + "nodeType": "YulFunctionCall", + "src": "2387:33:8" + }, + "nativeSrc": "2387:33:8", + "nodeType": "YulExpressionStatement", + "src": "2387:33:8" + } + ] + }, + "name": "abi_decode_t_uint256", + "nativeSrc": "2287:139:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "2317:6:8", + "nodeType": "YulTypedName", + "src": "2317:6:8", + "type": "" + }, + { + "name": "end", + "nativeSrc": "2325:3:8", + "nodeType": "YulTypedName", + "src": "2325:3:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "2333:5:8", + "nodeType": "YulTypedName", + "src": "2333:5:8", + "type": "" + } + ], + "src": "2287:139:8" + }, + { + "body": { + "nativeSrc": "2515:391:8", + "nodeType": "YulBlock", + "src": "2515:391:8", + "statements": [ + { + "body": { + "nativeSrc": "2561:83:8", + "nodeType": "YulBlock", + "src": "2561:83:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "2563:77:8", + "nodeType": "YulIdentifier", + "src": "2563:77:8" + }, + "nativeSrc": "2563:79:8", + "nodeType": "YulFunctionCall", + "src": "2563:79:8" + }, + "nativeSrc": "2563:79:8", + "nodeType": "YulExpressionStatement", + "src": "2563:79:8" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "2536:7:8", + "nodeType": "YulIdentifier", + "src": "2536:7:8" + }, + { + "name": "headStart", + "nativeSrc": "2545:9:8", + "nodeType": "YulIdentifier", + "src": "2545:9:8" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2532:3:8", + "nodeType": "YulIdentifier", + "src": "2532:3:8" + }, + "nativeSrc": "2532:23:8", + "nodeType": "YulFunctionCall", + "src": "2532:23:8" + }, + { + "kind": "number", + "nativeSrc": "2557:2:8", + "nodeType": "YulLiteral", + "src": "2557:2:8", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2528:3:8", + "nodeType": "YulIdentifier", + "src": "2528:3:8" + }, + "nativeSrc": "2528:32:8", + "nodeType": "YulFunctionCall", + "src": "2528:32:8" + }, + "nativeSrc": "2525:119:8", + "nodeType": "YulIf", + "src": "2525:119:8" + }, + { + "nativeSrc": "2654:117:8", + "nodeType": "YulBlock", + "src": "2654:117:8", + "statements": [ + { + "nativeSrc": "2669:15:8", + "nodeType": "YulVariableDeclaration", + "src": "2669:15:8", + "value": { + "kind": "number", + "nativeSrc": "2683:1:8", + "nodeType": "YulLiteral", + "src": "2683:1:8", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "2673:6:8", + "nodeType": "YulTypedName", + "src": "2673:6:8", + "type": "" + } + ] + }, + { + "nativeSrc": "2698:63:8", + "nodeType": "YulAssignment", + "src": "2698:63:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2733:9:8", + "nodeType": "YulIdentifier", + "src": "2733:9:8" + }, + { + "name": "offset", + "nativeSrc": "2744:6:8", + "nodeType": "YulIdentifier", + "src": "2744:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2729:3:8", + "nodeType": "YulIdentifier", + "src": "2729:3:8" + }, + "nativeSrc": "2729:22:8", + "nodeType": "YulFunctionCall", + "src": "2729:22:8" + }, + { + "name": "dataEnd", + "nativeSrc": "2753:7:8", + "nodeType": "YulIdentifier", + "src": "2753:7:8" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nativeSrc": "2708:20:8", + "nodeType": "YulIdentifier", + "src": "2708:20:8" + }, + "nativeSrc": "2708:53:8", + "nodeType": "YulFunctionCall", + "src": "2708:53:8" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "2698:6:8", + "nodeType": "YulIdentifier", + "src": "2698:6:8" + } + ] + } + ] + }, + { + "nativeSrc": "2781:118:8", + "nodeType": "YulBlock", + "src": "2781:118:8", + "statements": [ + { + "nativeSrc": "2796:16:8", + "nodeType": "YulVariableDeclaration", + "src": "2796:16:8", + "value": { + "kind": "number", + "nativeSrc": "2810:2:8", + "nodeType": "YulLiteral", + "src": "2810:2:8", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "2800:6:8", + "nodeType": "YulTypedName", + "src": "2800:6:8", + "type": "" + } + ] + }, + { + "nativeSrc": "2826:63:8", + "nodeType": "YulAssignment", + "src": "2826:63:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2861:9:8", + "nodeType": "YulIdentifier", + "src": "2861:9:8" + }, + { + "name": "offset", + "nativeSrc": "2872:6:8", + "nodeType": "YulIdentifier", + "src": "2872:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2857:3:8", + "nodeType": "YulIdentifier", + "src": "2857:3:8" + }, + "nativeSrc": "2857:22:8", + "nodeType": "YulFunctionCall", + "src": "2857:22:8" + }, + { + "name": "dataEnd", + "nativeSrc": "2881:7:8", + "nodeType": "YulIdentifier", + "src": "2881:7:8" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nativeSrc": "2836:20:8", + "nodeType": "YulIdentifier", + "src": "2836:20:8" + }, + "nativeSrc": "2836:53:8", + "nodeType": "YulFunctionCall", + "src": "2836:53:8" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "2826:6:8", + "nodeType": "YulIdentifier", + "src": "2826:6:8" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nativeSrc": "2432:474:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2477:9:8", + "nodeType": "YulTypedName", + "src": "2477:9:8", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "2488:7:8", + "nodeType": "YulTypedName", + "src": "2488:7:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "2500:6:8", + "nodeType": "YulTypedName", + "src": "2500:6:8", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "2508:6:8", + "nodeType": "YulTypedName", + "src": "2508:6:8", + "type": "" + } + ], + "src": "2432:474:8" + }, + { + "body": { + "nativeSrc": "2954:48:8", + "nodeType": "YulBlock", + "src": "2954:48:8", + "statements": [ + { + "nativeSrc": "2964:32:8", + "nodeType": "YulAssignment", + "src": "2964:32:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "2989:5:8", + "nodeType": "YulIdentifier", + "src": "2989:5:8" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2982:6:8", + "nodeType": "YulIdentifier", + "src": "2982:6:8" + }, + "nativeSrc": "2982:13:8", + "nodeType": "YulFunctionCall", + "src": "2982:13:8" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2975:6:8", + "nodeType": "YulIdentifier", + "src": "2975:6:8" + }, + "nativeSrc": "2975:21:8", + "nodeType": "YulFunctionCall", + "src": "2975:21:8" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "2964:7:8", + "nodeType": "YulIdentifier", + "src": "2964:7:8" + } + ] + } + ] + }, + "name": "cleanup_t_bool", + "nativeSrc": "2912:90:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "2936:5:8", + "nodeType": "YulTypedName", + "src": "2936:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "2946:7:8", + "nodeType": "YulTypedName", + "src": "2946:7:8", + "type": "" + } + ], + "src": "2912:90:8" + }, + { + "body": { + "nativeSrc": "3067:50:8", + "nodeType": "YulBlock", + "src": "3067:50:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "3084:3:8", + "nodeType": "YulIdentifier", + "src": "3084:3:8" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "3104:5:8", + "nodeType": "YulIdentifier", + "src": "3104:5:8" + } + ], + "functionName": { + "name": "cleanup_t_bool", + "nativeSrc": "3089:14:8", + "nodeType": "YulIdentifier", + "src": "3089:14:8" + }, + "nativeSrc": "3089:21:8", + "nodeType": "YulFunctionCall", + "src": "3089:21:8" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3077:6:8", + "nodeType": "YulIdentifier", + "src": "3077:6:8" + }, + "nativeSrc": "3077:34:8", + "nodeType": "YulFunctionCall", + "src": "3077:34:8" + }, + "nativeSrc": "3077:34:8", + "nodeType": "YulExpressionStatement", + "src": "3077:34:8" + } + ] + }, + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nativeSrc": "3008:109:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "3055:5:8", + "nodeType": "YulTypedName", + "src": "3055:5:8", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "3062:3:8", + "nodeType": "YulTypedName", + "src": "3062:3:8", + "type": "" + } + ], + "src": "3008:109:8" + }, + { + "body": { + "nativeSrc": "3215:118:8", + "nodeType": "YulBlock", + "src": "3215:118:8", + "statements": [ + { + "nativeSrc": "3225:26:8", + "nodeType": "YulAssignment", + "src": "3225:26:8", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3237:9:8", + "nodeType": "YulIdentifier", + "src": "3237:9:8" + }, + { + "kind": "number", + "nativeSrc": "3248:2:8", + "nodeType": "YulLiteral", + "src": "3248:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3233:3:8", + "nodeType": "YulIdentifier", + "src": "3233:3:8" + }, + "nativeSrc": "3233:18:8", + "nodeType": "YulFunctionCall", + "src": "3233:18:8" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "3225:4:8", + "nodeType": "YulIdentifier", + "src": "3225:4:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "3299:6:8", + "nodeType": "YulIdentifier", + "src": "3299:6:8" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3312:9:8", + "nodeType": "YulIdentifier", + "src": "3312:9:8" + }, + { + "kind": "number", + "nativeSrc": "3323:1:8", + "nodeType": "YulLiteral", + "src": "3323:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3308:3:8", + "nodeType": "YulIdentifier", + "src": "3308:3:8" + }, + "nativeSrc": "3308:17:8", + "nodeType": "YulFunctionCall", + "src": "3308:17:8" + } + ], + "functionName": { + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nativeSrc": "3261:37:8", + "nodeType": "YulIdentifier", + "src": "3261:37:8" + }, + "nativeSrc": "3261:65:8", + "nodeType": "YulFunctionCall", + "src": "3261:65:8" + }, + "nativeSrc": "3261:65:8", + "nodeType": "YulExpressionStatement", + "src": "3261:65:8" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nativeSrc": "3123:210:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3187:9:8", + "nodeType": "YulTypedName", + "src": "3187:9:8", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "3199:6:8", + "nodeType": "YulTypedName", + "src": "3199:6:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "3210:4:8", + "nodeType": "YulTypedName", + "src": "3210:4:8", + "type": "" + } + ], + "src": "3123:210:8" + }, + { + "body": { + "nativeSrc": "3404:53:8", + "nodeType": "YulBlock", + "src": "3404:53:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "3421:3:8", + "nodeType": "YulIdentifier", + "src": "3421:3:8" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "3444:5:8", + "nodeType": "YulIdentifier", + "src": "3444:5:8" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nativeSrc": "3426:17:8", + "nodeType": "YulIdentifier", + "src": "3426:17:8" + }, + "nativeSrc": "3426:24:8", + "nodeType": "YulFunctionCall", + "src": "3426:24:8" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3414:6:8", + "nodeType": "YulIdentifier", + "src": "3414:6:8" + }, + "nativeSrc": "3414:37:8", + "nodeType": "YulFunctionCall", + "src": "3414:37:8" + }, + "nativeSrc": "3414:37:8", + "nodeType": "YulExpressionStatement", + "src": "3414:37:8" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nativeSrc": "3339:118:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "3392:5:8", + "nodeType": "YulTypedName", + "src": "3392:5:8", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "3399:3:8", + "nodeType": "YulTypedName", + "src": "3399:3:8", + "type": "" + } + ], + "src": "3339:118:8" + }, + { + "body": { + "nativeSrc": "3561:124:8", + "nodeType": "YulBlock", + "src": "3561:124:8", + "statements": [ + { + "nativeSrc": "3571:26:8", + "nodeType": "YulAssignment", + "src": "3571:26:8", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3583:9:8", + "nodeType": "YulIdentifier", + "src": "3583:9:8" + }, + { + "kind": "number", + "nativeSrc": "3594:2:8", + "nodeType": "YulLiteral", + "src": "3594:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3579:3:8", + "nodeType": "YulIdentifier", + "src": "3579:3:8" + }, + "nativeSrc": "3579:18:8", + "nodeType": "YulFunctionCall", + "src": "3579:18:8" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "3571:4:8", + "nodeType": "YulIdentifier", + "src": "3571:4:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "3651:6:8", + "nodeType": "YulIdentifier", + "src": "3651:6:8" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3664:9:8", + "nodeType": "YulIdentifier", + "src": "3664:9:8" + }, + { + "kind": "number", + "nativeSrc": "3675:1:8", + "nodeType": "YulLiteral", + "src": "3675:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3660:3:8", + "nodeType": "YulIdentifier", + "src": "3660:3:8" + }, + "nativeSrc": "3660:17:8", + "nodeType": "YulFunctionCall", + "src": "3660:17:8" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nativeSrc": "3607:43:8", + "nodeType": "YulIdentifier", + "src": "3607:43:8" + }, + "nativeSrc": "3607:71:8", + "nodeType": "YulFunctionCall", + "src": "3607:71:8" + }, + "nativeSrc": "3607:71:8", + "nodeType": "YulExpressionStatement", + "src": "3607:71:8" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nativeSrc": "3463:222:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3533:9:8", + "nodeType": "YulTypedName", + "src": "3533:9:8", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "3545:6:8", + "nodeType": "YulTypedName", + "src": "3545:6:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "3556:4:8", + "nodeType": "YulTypedName", + "src": "3556:4:8", + "type": "" + } + ], + "src": "3463:222:8" + }, + { + "body": { + "nativeSrc": "3791:519:8", + "nodeType": "YulBlock", + "src": "3791:519:8", + "statements": [ + { + "body": { + "nativeSrc": "3837:83:8", + "nodeType": "YulBlock", + "src": "3837:83:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "3839:77:8", + "nodeType": "YulIdentifier", + "src": "3839:77:8" + }, + "nativeSrc": "3839:79:8", + "nodeType": "YulFunctionCall", + "src": "3839:79:8" + }, + "nativeSrc": "3839:79:8", + "nodeType": "YulExpressionStatement", + "src": "3839:79:8" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "3812:7:8", + "nodeType": "YulIdentifier", + "src": "3812:7:8" + }, + { + "name": "headStart", + "nativeSrc": "3821:9:8", + "nodeType": "YulIdentifier", + "src": "3821:9:8" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3808:3:8", + "nodeType": "YulIdentifier", + "src": "3808:3:8" + }, + "nativeSrc": "3808:23:8", + "nodeType": "YulFunctionCall", + "src": "3808:23:8" + }, + { + "kind": "number", + "nativeSrc": "3833:2:8", + "nodeType": "YulLiteral", + "src": "3833:2:8", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "3804:3:8", + "nodeType": "YulIdentifier", + "src": "3804:3:8" + }, + "nativeSrc": "3804:32:8", + "nodeType": "YulFunctionCall", + "src": "3804:32:8" + }, + "nativeSrc": "3801:119:8", + "nodeType": "YulIf", + "src": "3801:119:8" + }, + { + "nativeSrc": "3930:117:8", + "nodeType": "YulBlock", + "src": "3930:117:8", + "statements": [ + { + "nativeSrc": "3945:15:8", + "nodeType": "YulVariableDeclaration", + "src": "3945:15:8", + "value": { + "kind": "number", + "nativeSrc": "3959:1:8", + "nodeType": "YulLiteral", + "src": "3959:1:8", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "3949:6:8", + "nodeType": "YulTypedName", + "src": "3949:6:8", + "type": "" + } + ] + }, + { + "nativeSrc": "3974:63:8", + "nodeType": "YulAssignment", + "src": "3974:63:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4009:9:8", + "nodeType": "YulIdentifier", + "src": "4009:9:8" + }, + { + "name": "offset", + "nativeSrc": "4020:6:8", + "nodeType": "YulIdentifier", + "src": "4020:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4005:3:8", + "nodeType": "YulIdentifier", + "src": "4005:3:8" + }, + "nativeSrc": "4005:22:8", + "nodeType": "YulFunctionCall", + "src": "4005:22:8" + }, + { + "name": "dataEnd", + "nativeSrc": "4029:7:8", + "nodeType": "YulIdentifier", + "src": "4029:7:8" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nativeSrc": "3984:20:8", + "nodeType": "YulIdentifier", + "src": "3984:20:8" + }, + "nativeSrc": "3984:53:8", + "nodeType": "YulFunctionCall", + "src": "3984:53:8" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "3974:6:8", + "nodeType": "YulIdentifier", + "src": "3974:6:8" + } + ] + } + ] + }, + { + "nativeSrc": "4057:118:8", + "nodeType": "YulBlock", + "src": "4057:118:8", + "statements": [ + { + "nativeSrc": "4072:16:8", + "nodeType": "YulVariableDeclaration", + "src": "4072:16:8", + "value": { + "kind": "number", + "nativeSrc": "4086:2:8", + "nodeType": "YulLiteral", + "src": "4086:2:8", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "4076:6:8", + "nodeType": "YulTypedName", + "src": "4076:6:8", + "type": "" + } + ] + }, + { + "nativeSrc": "4102:63:8", + "nodeType": "YulAssignment", + "src": "4102:63:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4137:9:8", + "nodeType": "YulIdentifier", + "src": "4137:9:8" + }, + { + "name": "offset", + "nativeSrc": "4148:6:8", + "nodeType": "YulIdentifier", + "src": "4148:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4133:3:8", + "nodeType": "YulIdentifier", + "src": "4133:3:8" + }, + "nativeSrc": "4133:22:8", + "nodeType": "YulFunctionCall", + "src": "4133:22:8" + }, + { + "name": "dataEnd", + "nativeSrc": "4157:7:8", + "nodeType": "YulIdentifier", + "src": "4157:7:8" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nativeSrc": "4112:20:8", + "nodeType": "YulIdentifier", + "src": "4112:20:8" + }, + "nativeSrc": "4112:53:8", + "nodeType": "YulFunctionCall", + "src": "4112:53:8" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "4102:6:8", + "nodeType": "YulIdentifier", + "src": "4102:6:8" + } + ] + } + ] + }, + { + "nativeSrc": "4185:118:8", + "nodeType": "YulBlock", + "src": "4185:118:8", + "statements": [ + { + "nativeSrc": "4200:16:8", + "nodeType": "YulVariableDeclaration", + "src": "4200:16:8", + "value": { + "kind": "number", + "nativeSrc": "4214:2:8", + "nodeType": "YulLiteral", + "src": "4214:2:8", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "4204:6:8", + "nodeType": "YulTypedName", + "src": "4204:6:8", + "type": "" + } + ] + }, + { + "nativeSrc": "4230:63:8", + "nodeType": "YulAssignment", + "src": "4230:63:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4265:9:8", + "nodeType": "YulIdentifier", + "src": "4265:9:8" + }, + { + "name": "offset", + "nativeSrc": "4276:6:8", + "nodeType": "YulIdentifier", + "src": "4276:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4261:3:8", + "nodeType": "YulIdentifier", + "src": "4261:3:8" + }, + "nativeSrc": "4261:22:8", + "nodeType": "YulFunctionCall", + "src": "4261:22:8" + }, + { + "name": "dataEnd", + "nativeSrc": "4285:7:8", + "nodeType": "YulIdentifier", + "src": "4285:7:8" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nativeSrc": "4240:20:8", + "nodeType": "YulIdentifier", + "src": "4240:20:8" + }, + "nativeSrc": "4240:53:8", + "nodeType": "YulFunctionCall", + "src": "4240:53:8" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "4230:6:8", + "nodeType": "YulIdentifier", + "src": "4230:6:8" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256", + "nativeSrc": "3691:619:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3745:9:8", + "nodeType": "YulTypedName", + "src": "3745:9:8", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "3756:7:8", + "nodeType": "YulTypedName", + "src": "3756:7:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "3768:6:8", + "nodeType": "YulTypedName", + "src": "3768:6:8", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "3776:6:8", + "nodeType": "YulTypedName", + "src": "3776:6:8", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "3784:6:8", + "nodeType": "YulTypedName", + "src": "3784:6:8", + "type": "" + } + ], + "src": "3691:619:8" + }, + { + "body": { + "nativeSrc": "4359:43:8", + "nodeType": "YulBlock", + "src": "4359:43:8", + "statements": [ + { + "nativeSrc": "4369:27:8", + "nodeType": "YulAssignment", + "src": "4369:27:8", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "4384:5:8", + "nodeType": "YulIdentifier", + "src": "4384:5:8" + }, + { + "kind": "number", + "nativeSrc": "4391:4:8", + "nodeType": "YulLiteral", + "src": "4391:4:8", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4380:3:8", + "nodeType": "YulIdentifier", + "src": "4380:3:8" + }, + "nativeSrc": "4380:16:8", + "nodeType": "YulFunctionCall", + "src": "4380:16:8" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "4369:7:8", + "nodeType": "YulIdentifier", + "src": "4369:7:8" + } + ] + } + ] + }, + "name": "cleanup_t_uint8", + "nativeSrc": "4316:86:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "4341:5:8", + "nodeType": "YulTypedName", + "src": "4341:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "4351:7:8", + "nodeType": "YulTypedName", + "src": "4351:7:8", + "type": "" + } + ], + "src": "4316:86:8" + }, + { + "body": { + "nativeSrc": "4469:51:8", + "nodeType": "YulBlock", + "src": "4469:51:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "4486:3:8", + "nodeType": "YulIdentifier", + "src": "4486:3:8" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "4507:5:8", + "nodeType": "YulIdentifier", + "src": "4507:5:8" + } + ], + "functionName": { + "name": "cleanup_t_uint8", + "nativeSrc": "4491:15:8", + "nodeType": "YulIdentifier", + "src": "4491:15:8" + }, + "nativeSrc": "4491:22:8", + "nodeType": "YulFunctionCall", + "src": "4491:22:8" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4479:6:8", + "nodeType": "YulIdentifier", + "src": "4479:6:8" + }, + "nativeSrc": "4479:35:8", + "nodeType": "YulFunctionCall", + "src": "4479:35:8" + }, + "nativeSrc": "4479:35:8", + "nodeType": "YulExpressionStatement", + "src": "4479:35:8" + } + ] + }, + "name": "abi_encode_t_uint8_to_t_uint8_fromStack", + "nativeSrc": "4408:112:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "4457:5:8", + "nodeType": "YulTypedName", + "src": "4457:5:8", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "4464:3:8", + "nodeType": "YulTypedName", + "src": "4464:3:8", + "type": "" + } + ], + "src": "4408:112:8" + }, + { + "body": { + "nativeSrc": "4620:120:8", + "nodeType": "YulBlock", + "src": "4620:120:8", + "statements": [ + { + "nativeSrc": "4630:26:8", + "nodeType": "YulAssignment", + "src": "4630:26:8", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4642:9:8", + "nodeType": "YulIdentifier", + "src": "4642:9:8" + }, + { + "kind": "number", + "nativeSrc": "4653:2:8", + "nodeType": "YulLiteral", + "src": "4653:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4638:3:8", + "nodeType": "YulIdentifier", + "src": "4638:3:8" + }, + "nativeSrc": "4638:18:8", + "nodeType": "YulFunctionCall", + "src": "4638:18:8" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "4630:4:8", + "nodeType": "YulIdentifier", + "src": "4630:4:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "4706:6:8", + "nodeType": "YulIdentifier", + "src": "4706:6:8" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4719:9:8", + "nodeType": "YulIdentifier", + "src": "4719:9:8" + }, + { + "kind": "number", + "nativeSrc": "4730:1:8", + "nodeType": "YulLiteral", + "src": "4730:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4715:3:8", + "nodeType": "YulIdentifier", + "src": "4715:3:8" + }, + "nativeSrc": "4715:17:8", + "nodeType": "YulFunctionCall", + "src": "4715:17:8" + } + ], + "functionName": { + "name": "abi_encode_t_uint8_to_t_uint8_fromStack", + "nativeSrc": "4666:39:8", + "nodeType": "YulIdentifier", + "src": "4666:39:8" + }, + "nativeSrc": "4666:67:8", + "nodeType": "YulFunctionCall", + "src": "4666:67:8" + }, + "nativeSrc": "4666:67:8", + "nodeType": "YulExpressionStatement", + "src": "4666:67:8" + } + ] + }, + "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed", + "nativeSrc": "4526:214:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4592:9:8", + "nodeType": "YulTypedName", + "src": "4592:9:8", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "4604:6:8", + "nodeType": "YulTypedName", + "src": "4604:6:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "4615:4:8", + "nodeType": "YulTypedName", + "src": "4615:4:8", + "type": "" + } + ], + "src": "4526:214:8" + }, + { + "body": { + "nativeSrc": "4812:263:8", + "nodeType": "YulBlock", + "src": "4812:263:8", + "statements": [ + { + "body": { + "nativeSrc": "4858:83:8", + "nodeType": "YulBlock", + "src": "4858:83:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "4860:77:8", + "nodeType": "YulIdentifier", + "src": "4860:77:8" + }, + "nativeSrc": "4860:79:8", + "nodeType": "YulFunctionCall", + "src": "4860:79:8" + }, + "nativeSrc": "4860:79:8", + "nodeType": "YulExpressionStatement", + "src": "4860:79:8" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "4833:7:8", + "nodeType": "YulIdentifier", + "src": "4833:7:8" + }, + { + "name": "headStart", + "nativeSrc": "4842:9:8", + "nodeType": "YulIdentifier", + "src": "4842:9:8" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4829:3:8", + "nodeType": "YulIdentifier", + "src": "4829:3:8" + }, + "nativeSrc": "4829:23:8", + "nodeType": "YulFunctionCall", + "src": "4829:23:8" + }, + { + "kind": "number", + "nativeSrc": "4854:2:8", + "nodeType": "YulLiteral", + "src": "4854:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "4825:3:8", + "nodeType": "YulIdentifier", + "src": "4825:3:8" + }, + "nativeSrc": "4825:32:8", + "nodeType": "YulFunctionCall", + "src": "4825:32:8" + }, + "nativeSrc": "4822:119:8", + "nodeType": "YulIf", + "src": "4822:119:8" + }, + { + "nativeSrc": "4951:117:8", + "nodeType": "YulBlock", + "src": "4951:117:8", + "statements": [ + { + "nativeSrc": "4966:15:8", + "nodeType": "YulVariableDeclaration", + "src": "4966:15:8", + "value": { + "kind": "number", + "nativeSrc": "4980:1:8", + "nodeType": "YulLiteral", + "src": "4980:1:8", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "4970:6:8", + "nodeType": "YulTypedName", + "src": "4970:6:8", + "type": "" + } + ] + }, + { + "nativeSrc": "4995:63:8", + "nodeType": "YulAssignment", + "src": "4995:63:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5030:9:8", + "nodeType": "YulIdentifier", + "src": "5030:9:8" + }, + { + "name": "offset", + "nativeSrc": "5041:6:8", + "nodeType": "YulIdentifier", + "src": "5041:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5026:3:8", + "nodeType": "YulIdentifier", + "src": "5026:3:8" + }, + "nativeSrc": "5026:22:8", + "nodeType": "YulFunctionCall", + "src": "5026:22:8" + }, + { + "name": "dataEnd", + "nativeSrc": "5050:7:8", + "nodeType": "YulIdentifier", + "src": "5050:7:8" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nativeSrc": "5005:20:8", + "nodeType": "YulIdentifier", + "src": "5005:20:8" + }, + "nativeSrc": "5005:53:8", + "nodeType": "YulFunctionCall", + "src": "5005:53:8" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "4995:6:8", + "nodeType": "YulIdentifier", + "src": "4995:6:8" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nativeSrc": "4746:329:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4782:9:8", + "nodeType": "YulTypedName", + "src": "4782:9:8", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "4793:7:8", + "nodeType": "YulTypedName", + "src": "4793:7:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "4805:6:8", + "nodeType": "YulTypedName", + "src": "4805:6:8", + "type": "" + } + ], + "src": "4746:329:8" + }, + { + "body": { + "nativeSrc": "5164:391:8", + "nodeType": "YulBlock", + "src": "5164:391:8", + "statements": [ + { + "body": { + "nativeSrc": "5210:83:8", + "nodeType": "YulBlock", + "src": "5210:83:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "5212:77:8", + "nodeType": "YulIdentifier", + "src": "5212:77:8" + }, + "nativeSrc": "5212:79:8", + "nodeType": "YulFunctionCall", + "src": "5212:79:8" + }, + "nativeSrc": "5212:79:8", + "nodeType": "YulExpressionStatement", + "src": "5212:79:8" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "5185:7:8", + "nodeType": "YulIdentifier", + "src": "5185:7:8" + }, + { + "name": "headStart", + "nativeSrc": "5194:9:8", + "nodeType": "YulIdentifier", + "src": "5194:9:8" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5181:3:8", + "nodeType": "YulIdentifier", + "src": "5181:3:8" + }, + "nativeSrc": "5181:23:8", + "nodeType": "YulFunctionCall", + "src": "5181:23:8" + }, + { + "kind": "number", + "nativeSrc": "5206:2:8", + "nodeType": "YulLiteral", + "src": "5206:2:8", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "5177:3:8", + "nodeType": "YulIdentifier", + "src": "5177:3:8" + }, + "nativeSrc": "5177:32:8", + "nodeType": "YulFunctionCall", + "src": "5177:32:8" + }, + "nativeSrc": "5174:119:8", + "nodeType": "YulIf", + "src": "5174:119:8" + }, + { + "nativeSrc": "5303:117:8", + "nodeType": "YulBlock", + "src": "5303:117:8", + "statements": [ + { + "nativeSrc": "5318:15:8", + "nodeType": "YulVariableDeclaration", + "src": "5318:15:8", + "value": { + "kind": "number", + "nativeSrc": "5332:1:8", + "nodeType": "YulLiteral", + "src": "5332:1:8", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "5322:6:8", + "nodeType": "YulTypedName", + "src": "5322:6:8", + "type": "" + } + ] + }, + { + "nativeSrc": "5347:63:8", + "nodeType": "YulAssignment", + "src": "5347:63:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5382:9:8", + "nodeType": "YulIdentifier", + "src": "5382:9:8" + }, + { + "name": "offset", + "nativeSrc": "5393:6:8", + "nodeType": "YulIdentifier", + "src": "5393:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5378:3:8", + "nodeType": "YulIdentifier", + "src": "5378:3:8" + }, + "nativeSrc": "5378:22:8", + "nodeType": "YulFunctionCall", + "src": "5378:22:8" + }, + { + "name": "dataEnd", + "nativeSrc": "5402:7:8", + "nodeType": "YulIdentifier", + "src": "5402:7:8" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nativeSrc": "5357:20:8", + "nodeType": "YulIdentifier", + "src": "5357:20:8" + }, + "nativeSrc": "5357:53:8", + "nodeType": "YulFunctionCall", + "src": "5357:53:8" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "5347:6:8", + "nodeType": "YulIdentifier", + "src": "5347:6:8" + } + ] + } + ] + }, + { + "nativeSrc": "5430:118:8", + "nodeType": "YulBlock", + "src": "5430:118:8", + "statements": [ + { + "nativeSrc": "5445:16:8", + "nodeType": "YulVariableDeclaration", + "src": "5445:16:8", + "value": { + "kind": "number", + "nativeSrc": "5459:2:8", + "nodeType": "YulLiteral", + "src": "5459:2:8", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "5449:6:8", + "nodeType": "YulTypedName", + "src": "5449:6:8", + "type": "" + } + ] + }, + { + "nativeSrc": "5475:63:8", + "nodeType": "YulAssignment", + "src": "5475:63:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5510:9:8", + "nodeType": "YulIdentifier", + "src": "5510:9:8" + }, + { + "name": "offset", + "nativeSrc": "5521:6:8", + "nodeType": "YulIdentifier", + "src": "5521:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5506:3:8", + "nodeType": "YulIdentifier", + "src": "5506:3:8" + }, + "nativeSrc": "5506:22:8", + "nodeType": "YulFunctionCall", + "src": "5506:22:8" + }, + { + "name": "dataEnd", + "nativeSrc": "5530:7:8", + "nodeType": "YulIdentifier", + "src": "5530:7:8" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nativeSrc": "5485:20:8", + "nodeType": "YulIdentifier", + "src": "5485:20:8" + }, + "nativeSrc": "5485:53:8", + "nodeType": "YulFunctionCall", + "src": "5485:53:8" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "5475:6:8", + "nodeType": "YulIdentifier", + "src": "5475:6:8" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nativeSrc": "5081:474:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5126:9:8", + "nodeType": "YulTypedName", + "src": "5126:9:8", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "5137:7:8", + "nodeType": "YulTypedName", + "src": "5137:7:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "5149:6:8", + "nodeType": "YulTypedName", + "src": "5149:6:8", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "5157:6:8", + "nodeType": "YulTypedName", + "src": "5157:6:8", + "type": "" + } + ], + "src": "5081:474:8" + }, + { + "body": { + "nativeSrc": "5589:152:8", + "nodeType": "YulBlock", + "src": "5589:152:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5606:1:8", + "nodeType": "YulLiteral", + "src": "5606:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5609:77:8", + "nodeType": "YulLiteral", + "src": "5609:77:8", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5599:6:8", + "nodeType": "YulIdentifier", + "src": "5599:6:8" + }, + "nativeSrc": "5599:88:8", + "nodeType": "YulFunctionCall", + "src": "5599:88:8" + }, + "nativeSrc": "5599:88:8", + "nodeType": "YulExpressionStatement", + "src": "5599:88:8" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5703:1:8", + "nodeType": "YulLiteral", + "src": "5703:1:8", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "5706:4:8", + "nodeType": "YulLiteral", + "src": "5706:4:8", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5696:6:8", + "nodeType": "YulIdentifier", + "src": "5696:6:8" + }, + "nativeSrc": "5696:15:8", + "nodeType": "YulFunctionCall", + "src": "5696:15:8" + }, + "nativeSrc": "5696:15:8", + "nodeType": "YulExpressionStatement", + "src": "5696:15:8" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5727:1:8", + "nodeType": "YulLiteral", + "src": "5727:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5730:4:8", + "nodeType": "YulLiteral", + "src": "5730:4:8", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5720:6:8", + "nodeType": "YulIdentifier", + "src": "5720:6:8" + }, + "nativeSrc": "5720:15:8", + "nodeType": "YulFunctionCall", + "src": "5720:15:8" + }, + "nativeSrc": "5720:15:8", + "nodeType": "YulExpressionStatement", + "src": "5720:15:8" + } + ] + }, + "name": "panic_error_0x22", + "nativeSrc": "5561:180:8", + "nodeType": "YulFunctionDefinition", + "src": "5561:180:8" + }, + { + "body": { + "nativeSrc": "5798:269:8", + "nodeType": "YulBlock", + "src": "5798:269:8", + "statements": [ + { + "nativeSrc": "5808:22:8", + "nodeType": "YulAssignment", + "src": "5808:22:8", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "5822:4:8", + "nodeType": "YulIdentifier", + "src": "5822:4:8" + }, + { + "kind": "number", + "nativeSrc": "5828:1:8", + "nodeType": "YulLiteral", + "src": "5828:1:8", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "5818:3:8", + "nodeType": "YulIdentifier", + "src": "5818:3:8" + }, + "nativeSrc": "5818:12:8", + "nodeType": "YulFunctionCall", + "src": "5818:12:8" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "5808:6:8", + "nodeType": "YulIdentifier", + "src": "5808:6:8" + } + ] + }, + { + "nativeSrc": "5839:38:8", + "nodeType": "YulVariableDeclaration", + "src": "5839:38:8", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "5869:4:8", + "nodeType": "YulIdentifier", + "src": "5869:4:8" + }, + { + "kind": "number", + "nativeSrc": "5875:1:8", + "nodeType": "YulLiteral", + "src": "5875:1:8", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "5865:3:8", + "nodeType": "YulIdentifier", + "src": "5865:3:8" + }, + "nativeSrc": "5865:12:8", + "nodeType": "YulFunctionCall", + "src": "5865:12:8" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "5843:18:8", + "nodeType": "YulTypedName", + "src": "5843:18:8", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "5916:51:8", + "nodeType": "YulBlock", + "src": "5916:51:8", + "statements": [ + { + "nativeSrc": "5930:27:8", + "nodeType": "YulAssignment", + "src": "5930:27:8", + "value": { + "arguments": [ + { + "name": "length", + "nativeSrc": "5944:6:8", + "nodeType": "YulIdentifier", + "src": "5944:6:8" + }, + { + "kind": "number", + "nativeSrc": "5952:4:8", + "nodeType": "YulLiteral", + "src": "5952:4:8", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "5940:3:8", + "nodeType": "YulIdentifier", + "src": "5940:3:8" + }, + "nativeSrc": "5940:17:8", + "nodeType": "YulFunctionCall", + "src": "5940:17:8" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "5930:6:8", + "nodeType": "YulIdentifier", + "src": "5930:6:8" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "5896:18:8", + "nodeType": "YulIdentifier", + "src": "5896:18:8" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "5889:6:8", + "nodeType": "YulIdentifier", + "src": "5889:6:8" + }, + "nativeSrc": "5889:26:8", + "nodeType": "YulFunctionCall", + "src": "5889:26:8" + }, + "nativeSrc": "5886:81:8", + "nodeType": "YulIf", + "src": "5886:81:8" + }, + { + "body": { + "nativeSrc": "6019:42:8", + "nodeType": "YulBlock", + "src": "6019:42:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x22", + "nativeSrc": "6033:16:8", + "nodeType": "YulIdentifier", + "src": "6033:16:8" + }, + "nativeSrc": "6033:18:8", + "nodeType": "YulFunctionCall", + "src": "6033:18:8" + }, + "nativeSrc": "6033:18:8", + "nodeType": "YulExpressionStatement", + "src": "6033:18:8" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "5983:18:8", + "nodeType": "YulIdentifier", + "src": "5983:18:8" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "6006:6:8", + "nodeType": "YulIdentifier", + "src": "6006:6:8" + }, + { + "kind": "number", + "nativeSrc": "6014:2:8", + "nodeType": "YulLiteral", + "src": "6014:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "6003:2:8", + "nodeType": "YulIdentifier", + "src": "6003:2:8" + }, + "nativeSrc": "6003:14:8", + "nodeType": "YulFunctionCall", + "src": "6003:14:8" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "5980:2:8", + "nodeType": "YulIdentifier", + "src": "5980:2:8" + }, + "nativeSrc": "5980:38:8", + "nodeType": "YulFunctionCall", + "src": "5980:38:8" + }, + "nativeSrc": "5977:84:8", + "nodeType": "YulIf", + "src": "5977:84:8" + } + ] + }, + "name": "extract_byte_array_length", + "nativeSrc": "5747:320:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "5782:4:8", + "nodeType": "YulTypedName", + "src": "5782:4:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nativeSrc": "5791:6:8", + "nodeType": "YulTypedName", + "src": "5791:6:8", + "type": "" + } + ], + "src": "5747:320:8" + }, + { + "body": { + "nativeSrc": "6138:53:8", + "nodeType": "YulBlock", + "src": "6138:53:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "6155:3:8", + "nodeType": "YulIdentifier", + "src": "6155:3:8" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "6178:5:8", + "nodeType": "YulIdentifier", + "src": "6178:5:8" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nativeSrc": "6160:17:8", + "nodeType": "YulIdentifier", + "src": "6160:17:8" + }, + "nativeSrc": "6160:24:8", + "nodeType": "YulFunctionCall", + "src": "6160:24:8" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6148:6:8", + "nodeType": "YulIdentifier", + "src": "6148:6:8" + }, + "nativeSrc": "6148:37:8", + "nodeType": "YulFunctionCall", + "src": "6148:37:8" + }, + "nativeSrc": "6148:37:8", + "nodeType": "YulExpressionStatement", + "src": "6148:37:8" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_fromStack", + "nativeSrc": "6073:118:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "6126:5:8", + "nodeType": "YulTypedName", + "src": "6126:5:8", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "6133:3:8", + "nodeType": "YulTypedName", + "src": "6133:3:8", + "type": "" + } + ], + "src": "6073:118:8" + }, + { + "body": { + "nativeSrc": "6351:288:8", + "nodeType": "YulBlock", + "src": "6351:288:8", + "statements": [ + { + "nativeSrc": "6361:26:8", + "nodeType": "YulAssignment", + "src": "6361:26:8", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6373:9:8", + "nodeType": "YulIdentifier", + "src": "6373:9:8" + }, + { + "kind": "number", + "nativeSrc": "6384:2:8", + "nodeType": "YulLiteral", + "src": "6384:2:8", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6369:3:8", + "nodeType": "YulIdentifier", + "src": "6369:3:8" + }, + "nativeSrc": "6369:18:8", + "nodeType": "YulFunctionCall", + "src": "6369:18:8" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "6361:4:8", + "nodeType": "YulIdentifier", + "src": "6361:4:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "6441:6:8", + "nodeType": "YulIdentifier", + "src": "6441:6:8" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6454:9:8", + "nodeType": "YulIdentifier", + "src": "6454:9:8" + }, + { + "kind": "number", + "nativeSrc": "6465:1:8", + "nodeType": "YulLiteral", + "src": "6465:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6450:3:8", + "nodeType": "YulIdentifier", + "src": "6450:3:8" + }, + "nativeSrc": "6450:17:8", + "nodeType": "YulFunctionCall", + "src": "6450:17:8" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nativeSrc": "6397:43:8", + "nodeType": "YulIdentifier", + "src": "6397:43:8" + }, + "nativeSrc": "6397:71:8", + "nodeType": "YulFunctionCall", + "src": "6397:71:8" + }, + "nativeSrc": "6397:71:8", + "nodeType": "YulExpressionStatement", + "src": "6397:71:8" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nativeSrc": "6522:6:8", + "nodeType": "YulIdentifier", + "src": "6522:6:8" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6535:9:8", + "nodeType": "YulIdentifier", + "src": "6535:9:8" + }, + { + "kind": "number", + "nativeSrc": "6546:2:8", + "nodeType": "YulLiteral", + "src": "6546:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6531:3:8", + "nodeType": "YulIdentifier", + "src": "6531:3:8" + }, + "nativeSrc": "6531:18:8", + "nodeType": "YulFunctionCall", + "src": "6531:18:8" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nativeSrc": "6478:43:8", + "nodeType": "YulIdentifier", + "src": "6478:43:8" + }, + "nativeSrc": "6478:72:8", + "nodeType": "YulFunctionCall", + "src": "6478:72:8" + }, + "nativeSrc": "6478:72:8", + "nodeType": "YulExpressionStatement", + "src": "6478:72:8" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nativeSrc": "6604:6:8", + "nodeType": "YulIdentifier", + "src": "6604:6:8" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6617:9:8", + "nodeType": "YulIdentifier", + "src": "6617:9:8" + }, + { + "kind": "number", + "nativeSrc": "6628:2:8", + "nodeType": "YulLiteral", + "src": "6628:2:8", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6613:3:8", + "nodeType": "YulIdentifier", + "src": "6613:3:8" + }, + "nativeSrc": "6613:18:8", + "nodeType": "YulFunctionCall", + "src": "6613:18:8" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nativeSrc": "6560:43:8", + "nodeType": "YulIdentifier", + "src": "6560:43:8" + }, + "nativeSrc": "6560:72:8", + "nodeType": "YulFunctionCall", + "src": "6560:72:8" + }, + "nativeSrc": "6560:72:8", + "nodeType": "YulExpressionStatement", + "src": "6560:72:8" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "6197:442:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "6307:9:8", + "nodeType": "YulTypedName", + "src": "6307:9:8", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "6319:6:8", + "nodeType": "YulTypedName", + "src": "6319:6:8", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "6327:6:8", + "nodeType": "YulTypedName", + "src": "6327:6:8", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "6335:6:8", + "nodeType": "YulTypedName", + "src": "6335:6:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "6346:4:8", + "nodeType": "YulTypedName", + "src": "6346:4:8", + "type": "" + } + ], + "src": "6197:442:8" + }, + { + "body": { + "nativeSrc": "6743:124:8", + "nodeType": "YulBlock", + "src": "6743:124:8", + "statements": [ + { + "nativeSrc": "6753:26:8", + "nodeType": "YulAssignment", + "src": "6753:26:8", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6765:9:8", + "nodeType": "YulIdentifier", + "src": "6765:9:8" + }, + { + "kind": "number", + "nativeSrc": "6776:2:8", + "nodeType": "YulLiteral", + "src": "6776:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6761:3:8", + "nodeType": "YulIdentifier", + "src": "6761:3:8" + }, + "nativeSrc": "6761:18:8", + "nodeType": "YulFunctionCall", + "src": "6761:18:8" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "6753:4:8", + "nodeType": "YulIdentifier", + "src": "6753:4:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "6833:6:8", + "nodeType": "YulIdentifier", + "src": "6833:6:8" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6846:9:8", + "nodeType": "YulIdentifier", + "src": "6846:9:8" + }, + { + "kind": "number", + "nativeSrc": "6857:1:8", + "nodeType": "YulLiteral", + "src": "6857:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6842:3:8", + "nodeType": "YulIdentifier", + "src": "6842:3:8" + }, + "nativeSrc": "6842:17:8", + "nodeType": "YulFunctionCall", + "src": "6842:17:8" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nativeSrc": "6789:43:8", + "nodeType": "YulIdentifier", + "src": "6789:43:8" + }, + "nativeSrc": "6789:71:8", + "nodeType": "YulFunctionCall", + "src": "6789:71:8" + }, + "nativeSrc": "6789:71:8", + "nodeType": "YulExpressionStatement", + "src": "6789:71:8" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nativeSrc": "6645:222:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "6715:9:8", + "nodeType": "YulTypedName", + "src": "6715:9:8", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "6727:6:8", + "nodeType": "YulTypedName", + "src": "6727:6:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "6738:4:8", + "nodeType": "YulTypedName", + "src": "6738:4:8", + "type": "" + } + ], + "src": "6645:222:8" + }, + { + "body": { + "nativeSrc": "6901:152:8", + "nodeType": "YulBlock", + "src": "6901:152:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6918:1:8", + "nodeType": "YulLiteral", + "src": "6918:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "6921:77:8", + "nodeType": "YulLiteral", + "src": "6921:77:8", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6911:6:8", + "nodeType": "YulIdentifier", + "src": "6911:6:8" + }, + "nativeSrc": "6911:88:8", + "nodeType": "YulFunctionCall", + "src": "6911:88:8" + }, + "nativeSrc": "6911:88:8", + "nodeType": "YulExpressionStatement", + "src": "6911:88:8" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7015:1:8", + "nodeType": "YulLiteral", + "src": "7015:1:8", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "7018:4:8", + "nodeType": "YulLiteral", + "src": "7018:4:8", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7008:6:8", + "nodeType": "YulIdentifier", + "src": "7008:6:8" + }, + "nativeSrc": "7008:15:8", + "nodeType": "YulFunctionCall", + "src": "7008:15:8" + }, + "nativeSrc": "7008:15:8", + "nodeType": "YulExpressionStatement", + "src": "7008:15:8" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7039:1:8", + "nodeType": "YulLiteral", + "src": "7039:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "7042:4:8", + "nodeType": "YulLiteral", + "src": "7042:4:8", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "7032:6:8", + "nodeType": "YulIdentifier", + "src": "7032:6:8" + }, + "nativeSrc": "7032:15:8", + "nodeType": "YulFunctionCall", + "src": "7032:15:8" + }, + "nativeSrc": "7032:15:8", + "nodeType": "YulExpressionStatement", + "src": "7032:15:8" + } + ] + }, + "name": "panic_error_0x11", + "nativeSrc": "6873:180:8", + "nodeType": "YulFunctionDefinition", + "src": "6873:180:8" + }, + { + "body": { + "nativeSrc": "7103:147:8", + "nodeType": "YulBlock", + "src": "7103:147:8", + "statements": [ + { + "nativeSrc": "7113:25:8", + "nodeType": "YulAssignment", + "src": "7113:25:8", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "7136:1:8", + "nodeType": "YulIdentifier", + "src": "7136:1:8" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nativeSrc": "7118:17:8", + "nodeType": "YulIdentifier", + "src": "7118:17:8" + }, + "nativeSrc": "7118:20:8", + "nodeType": "YulFunctionCall", + "src": "7118:20:8" + }, + "variableNames": [ + { + "name": "x", + "nativeSrc": "7113:1:8", + "nodeType": "YulIdentifier", + "src": "7113:1:8" + } + ] + }, + { + "nativeSrc": "7147:25:8", + "nodeType": "YulAssignment", + "src": "7147:25:8", + "value": { + "arguments": [ + { + "name": "y", + "nativeSrc": "7170:1:8", + "nodeType": "YulIdentifier", + "src": "7170:1:8" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nativeSrc": "7152:17:8", + "nodeType": "YulIdentifier", + "src": "7152:17:8" + }, + "nativeSrc": "7152:20:8", + "nodeType": "YulFunctionCall", + "src": "7152:20:8" + }, + "variableNames": [ + { + "name": "y", + "nativeSrc": "7147:1:8", + "nodeType": "YulIdentifier", + "src": "7147:1:8" + } + ] + }, + { + "nativeSrc": "7181:16:8", + "nodeType": "YulAssignment", + "src": "7181:16:8", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "7192:1:8", + "nodeType": "YulIdentifier", + "src": "7192:1:8" + }, + { + "name": "y", + "nativeSrc": "7195:1:8", + "nodeType": "YulIdentifier", + "src": "7195:1:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7188:3:8", + "nodeType": "YulIdentifier", + "src": "7188:3:8" + }, + "nativeSrc": "7188:9:8", + "nodeType": "YulFunctionCall", + "src": "7188:9:8" + }, + "variableNames": [ + { + "name": "sum", + "nativeSrc": "7181:3:8", + "nodeType": "YulIdentifier", + "src": "7181:3:8" + } + ] + }, + { + "body": { + "nativeSrc": "7221:22:8", + "nodeType": "YulBlock", + "src": "7221:22:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "7223:16:8", + "nodeType": "YulIdentifier", + "src": "7223:16:8" + }, + "nativeSrc": "7223:18:8", + "nodeType": "YulFunctionCall", + "src": "7223:18:8" + }, + "nativeSrc": "7223:18:8", + "nodeType": "YulExpressionStatement", + "src": "7223:18:8" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nativeSrc": "7213:1:8", + "nodeType": "YulIdentifier", + "src": "7213:1:8" + }, + { + "name": "sum", + "nativeSrc": "7216:3:8", + "nodeType": "YulIdentifier", + "src": "7216:3:8" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "7210:2:8", + "nodeType": "YulIdentifier", + "src": "7210:2:8" + }, + "nativeSrc": "7210:10:8", + "nodeType": "YulFunctionCall", + "src": "7210:10:8" + }, + "nativeSrc": "7207:36:8", + "nodeType": "YulIf", + "src": "7207:36:8" + } + ] + }, + "name": "checked_add_t_uint256", + "nativeSrc": "7059:191:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "7090:1:8", + "nodeType": "YulTypedName", + "src": "7090:1:8", + "type": "" + }, + { + "name": "y", + "nativeSrc": "7093:1:8", + "nodeType": "YulTypedName", + "src": "7093:1:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nativeSrc": "7099:3:8", + "nodeType": "YulTypedName", + "src": "7099:3:8", + "type": "" + } + ], + "src": "7059:191:8" + } + ] + }, + "contents": "{\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n\n mcopy(dst, src, length)\n mstore(add(dst, length), 0)\n\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function abi_encode_t_uint8_to_t_uint8_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint8(value))\n }\n\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint8_to_t_uint8_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n}\n", + "id": 8, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561000f575f5ffd5b50600436106100b2575f3560e01c80635c975abb1161006f5780635c975abb1461017a57806370a08231146101985780638456cb59146101c857806395d89b41146101d2578063a9059cbb146101f0578063dd62ed3e14610220576100b2565b806306fdde03146100b6578063095ea7b3146100d457806318160ddd1461010457806323b872dd14610122578063313ce567146101525780633f4ba83a14610170575b5f5ffd5b6100be610250565b6040516100cb9190610c14565b60405180910390f35b6100ee60048036038101906100e99190610cc5565b6102e0565b6040516100fb9190610d1d565b60405180910390f35b61010c610302565b6040516101199190610d45565b60405180910390f35b61013c60048036038101906101379190610d5e565b61030b565b6040516101499190610d1d565b60405180910390f35b61015a610339565b6040516101679190610dc9565b60405180910390f35b610178610341565b005b61018261034b565b60405161018f9190610d1d565b60405180910390f35b6101b260048036038101906101ad9190610de2565b610364565b6040516101bf9190610d45565b60405180910390f35b6101d06103a9565b005b6101da6103b3565b6040516101e79190610c14565b60405180910390f35b61020a60048036038101906102059190610cc5565b610443565b6040516102179190610d1d565b60405180910390f35b61023a60048036038101906102359190610e0d565b610465565b6040516102479190610d45565b60405180910390f35b60606003805461025f90610e78565b80601f016020809104026020016040519081016040528092919081815260200182805461028b90610e78565b80156102d65780601f106102ad576101008083540402835291602001916102d6565b820191905f5260205f20905b8154815290600101906020018083116102b957829003601f168201915b5050505050905090565b5f5f6102ea6104e7565b90506102f78185856104ee565b600191505092915050565b5f600254905090565b5f5f6103156104e7565b9050610322858285610500565b61032d858585610593565b60019150509392505050565b5f6012905090565b610349610683565b565b5f60026005541461035c575f61035f565b60015b905090565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6103b16106d3565b565b6060600480546103c290610e78565b80601f01602080910402602001604051908101604052809291908181526020018280546103ee90610e78565b80156104395780601f1061041057610100808354040283529160200191610439565b820191905f5260205f20905b81548152906001019060200180831161041c57829003601f168201915b5050505050905090565b5f5f61044d6104e7565b905061045a818585610593565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b6104fb8383836001610723565b505050565b5f61050b8484610465565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81101561058d578181101561057e578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161057593929190610eb7565b60405180910390fd5b61058c84848484035f610723565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610603575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016105fa9190610eec565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610673575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161066a9190610eec565b60405180910390fd5b61067e8383836108f2565b505050565b61068b61090a565b60016005819055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6106bc6104e7565b6040516106c99190610eec565b60405180910390a1565b6106db61094a565b60026005819055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861070c6104e7565b6040516107199190610eec565b60405180910390a1565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610793575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161078a9190610eec565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610803575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016107fa9190610eec565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156108ec578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108e39190610d45565b60405180910390a35b50505050565b6108fa61094a565b61090583838361098b565b505050565b61091261034b565b610948576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61095261034b565b15610989576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109db578060025f8282546109cf9190610f32565b92505081905550610aa9565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610a64578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610a5b93929190610eb7565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610af0578060025f8282540392505081905550610b3a565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b979190610d45565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610be682610ba4565b610bf08185610bae565b9350610c00818560208601610bbe565b610c0981610bcc565b840191505092915050565b5f6020820190508181035f830152610c2c8184610bdc565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610c6182610c38565b9050919050565b610c7181610c57565b8114610c7b575f5ffd5b50565b5f81359050610c8c81610c68565b92915050565b5f819050919050565b610ca481610c92565b8114610cae575f5ffd5b50565b5f81359050610cbf81610c9b565b92915050565b5f5f60408385031215610cdb57610cda610c34565b5b5f610ce885828601610c7e565b9250506020610cf985828601610cb1565b9150509250929050565b5f8115159050919050565b610d1781610d03565b82525050565b5f602082019050610d305f830184610d0e565b92915050565b610d3f81610c92565b82525050565b5f602082019050610d585f830184610d36565b92915050565b5f5f5f60608486031215610d7557610d74610c34565b5b5f610d8286828701610c7e565b9350506020610d9386828701610c7e565b9250506040610da486828701610cb1565b9150509250925092565b5f60ff82169050919050565b610dc381610dae565b82525050565b5f602082019050610ddc5f830184610dba565b92915050565b5f60208284031215610df757610df6610c34565b5b5f610e0484828501610c7e565b91505092915050565b5f5f60408385031215610e2357610e22610c34565b5b5f610e3085828601610c7e565b9250506020610e4185828601610c7e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610e8f57607f821691505b602082108103610ea257610ea1610e4b565b5b50919050565b610eb181610c57565b82525050565b5f606082019050610eca5f830186610ea8565b610ed76020830185610d36565b610ee46040830184610d36565b949350505050565b5f602082019050610eff5f830184610ea8565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610f3c82610c92565b9150610f4783610c92565b9250828201905080821115610f5f57610f5e610f05565b5b9291505056fea264697066735822122079df6ef2f44460794c07db31a82c5404990135ae596d303e977888265cf5450064736f6c634300081e0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB2 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5C975ABB GT PUSH2 0x6F JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1F0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x220 JUMPI PUSH2 0xB2 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x170 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xBE PUSH2 0x250 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCB SWAP2 SWAP1 PUSH2 0xC14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0xCC5 JUMP JUMPDEST PUSH2 0x2E0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFB SWAP2 SWAP1 PUSH2 0xD1D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10C PUSH2 0x302 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0xD45 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x137 SWAP2 SWAP1 PUSH2 0xD5E JUMP JUMPDEST PUSH2 0x30B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x149 SWAP2 SWAP1 PUSH2 0xD1D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15A PUSH2 0x339 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x167 SWAP2 SWAP1 PUSH2 0xDC9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 PUSH2 0x341 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x182 PUSH2 0x34B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18F SWAP2 SWAP1 PUSH2 0xD1D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B2 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1AD SWAP2 SWAP1 PUSH2 0xDE2 JUMP JUMPDEST PUSH2 0x364 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1BF SWAP2 SWAP1 PUSH2 0xD45 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1D0 PUSH2 0x3A9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1DA PUSH2 0x3B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E7 SWAP2 SWAP1 PUSH2 0xC14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x205 SWAP2 SWAP1 PUSH2 0xCC5 JUMP JUMPDEST PUSH2 0x443 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x217 SWAP2 SWAP1 PUSH2 0xD1D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x235 SWAP2 SWAP1 PUSH2 0xE0D JUMP JUMPDEST PUSH2 0x465 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x247 SWAP2 SWAP1 PUSH2 0xD45 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x25F SWAP1 PUSH2 0xE78 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x28B SWAP1 PUSH2 0xE78 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2D6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2AD JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2D6 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2B9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x2EA PUSH2 0x4E7 JUMP JUMPDEST SWAP1 POP PUSH2 0x2F7 DUP2 DUP6 DUP6 PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x315 PUSH2 0x4E7 JUMP JUMPDEST SWAP1 POP PUSH2 0x322 DUP6 DUP3 DUP6 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x32D DUP6 DUP6 DUP6 PUSH2 0x593 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x12 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x349 PUSH2 0x683 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x2 PUSH1 0x5 SLOAD EQ PUSH2 0x35C JUMPI PUSH0 PUSH2 0x35F JUMP JUMPDEST PUSH1 0x1 JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3B1 PUSH2 0x6D3 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x3C2 SWAP1 PUSH2 0xE78 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3EE SWAP1 PUSH2 0xE78 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x439 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x410 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x439 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x41C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x44D PUSH2 0x4E7 JUMP JUMPDEST SWAP1 POP PUSH2 0x45A DUP2 DUP6 DUP6 PUSH2 0x593 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x4FB DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x723 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x50B DUP5 DUP5 PUSH2 0x465 JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 LT ISZERO PUSH2 0x58D JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x57E JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x575 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xEB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x58C DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x723 JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x603 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5FA SWAP2 SWAP1 PUSH2 0xEEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x673 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x66A SWAP2 SWAP1 PUSH2 0xEEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x67E DUP4 DUP4 DUP4 PUSH2 0x8F2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x68B PUSH2 0x90A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x5 DUP2 SWAP1 SSTORE POP PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA PUSH2 0x6BC PUSH2 0x4E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6C9 SWAP2 SWAP1 PUSH2 0xEEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x6DB PUSH2 0x94A JUMP JUMPDEST PUSH1 0x2 PUSH1 0x5 DUP2 SWAP1 SSTORE POP PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x70C PUSH2 0x4E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x719 SWAP2 SWAP1 PUSH2 0xEEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x793 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x78A SWAP2 SWAP1 PUSH2 0xEEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x803 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7FA SWAP2 SWAP1 PUSH2 0xEEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x8EC JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x8E3 SWAP2 SWAP1 PUSH2 0xD45 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x8FA PUSH2 0x94A JUMP JUMPDEST PUSH2 0x905 DUP4 DUP4 DUP4 PUSH2 0x98B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x912 PUSH2 0x34B JUMP JUMPDEST PUSH2 0x948 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8DFC202B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH2 0x952 PUSH2 0x34B JUMP JUMPDEST ISZERO PUSH2 0x989 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD93C066500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x9DB JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x9CF SWAP2 SWAP1 PUSH2 0xF32 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0xAA9 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xA64 JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA5B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xEB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH0 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xAF0 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0xB3A JUMP JUMPDEST DUP1 PUSH0 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xB97 SWAP2 SWAP1 PUSH2 0xD45 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY PUSH0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0xBE6 DUP3 PUSH2 0xBA4 JUMP JUMPDEST PUSH2 0xBF0 DUP2 DUP6 PUSH2 0xBAE JUMP JUMPDEST SWAP4 POP PUSH2 0xC00 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xBBE JUMP JUMPDEST PUSH2 0xC09 DUP2 PUSH2 0xBCC JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0xC2C DUP2 DUP5 PUSH2 0xBDC JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0xC61 DUP3 PUSH2 0xC38 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xC71 DUP2 PUSH2 0xC57 JUMP JUMPDEST DUP2 EQ PUSH2 0xC7B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xC8C DUP2 PUSH2 0xC68 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xCA4 DUP2 PUSH2 0xC92 JUMP JUMPDEST DUP2 EQ PUSH2 0xCAE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xCBF DUP2 PUSH2 0xC9B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCDB JUMPI PUSH2 0xCDA PUSH2 0xC34 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xCE8 DUP6 DUP3 DUP7 ADD PUSH2 0xC7E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xCF9 DUP6 DUP3 DUP7 ADD PUSH2 0xCB1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD17 DUP2 PUSH2 0xD03 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xD30 PUSH0 DUP4 ADD DUP5 PUSH2 0xD0E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xD3F DUP2 PUSH2 0xC92 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xD58 PUSH0 DUP4 ADD DUP5 PUSH2 0xD36 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xD75 JUMPI PUSH2 0xD74 PUSH2 0xC34 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xD82 DUP7 DUP3 DUP8 ADD PUSH2 0xC7E JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xD93 DUP7 DUP3 DUP8 ADD PUSH2 0xC7E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0xDA4 DUP7 DUP3 DUP8 ADD PUSH2 0xCB1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xDC3 DUP2 PUSH2 0xDAE JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xDDC PUSH0 DUP4 ADD DUP5 PUSH2 0xDBA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDF7 JUMPI PUSH2 0xDF6 PUSH2 0xC34 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xE04 DUP5 DUP3 DUP6 ADD PUSH2 0xC7E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE23 JUMPI PUSH2 0xE22 PUSH2 0xC34 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xE30 DUP6 DUP3 DUP7 ADD PUSH2 0xC7E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xE41 DUP6 DUP3 DUP7 ADD PUSH2 0xC7E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0xE8F JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xEA2 JUMPI PUSH2 0xEA1 PUSH2 0xE4B JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xEB1 DUP2 PUSH2 0xC57 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xECA PUSH0 DUP4 ADD DUP7 PUSH2 0xEA8 JUMP JUMPDEST PUSH2 0xED7 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xD36 JUMP JUMPDEST PUSH2 0xEE4 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xD36 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xEFF PUSH0 DUP4 ADD DUP5 PUSH2 0xEA8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0xF3C DUP3 PUSH2 0xC92 JUMP JUMPDEST SWAP2 POP PUSH2 0xF47 DUP4 PUSH2 0xC92 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0xF5F JUMPI PUSH2 0xF5E PUSH2 0xF05 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH26 0xDF6EF2F44460794C07DB31A82C5404990135AE596D303E977888 0x26 TLOAD CREATE2 GASLIMIT STOP PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ", + "sourceMap": "113:190:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3902:186;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2803:97;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4680:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2688:82;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;248:53:0;;;:::i;:::-;;1729:104:7;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2933:116:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;193:49:0;;;:::i;:::-;;1962:93:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3244:178;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3455:140;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1760:89;1805:13;1837:5;1830:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89;:::o;3902:186::-;3975:4;3991:13;4007:12;:10;:12::i;:::-;3991:28;;4029:31;4038:5;4045:7;4054:5;4029:8;:31::i;:::-;4077:4;4070:11;;;3902:186;;;;:::o;2803:97::-;2855:7;2881:12;;2874:19;;2803:97;:::o;4680:244::-;4767:4;4783:15;4801:12;:10;:12::i;:::-;4783:30;;4823:37;4839:4;4845:7;4854:5;4823:15;:37::i;:::-;4870:26;4880:4;4886:2;4890:5;4870:9;:26::i;:::-;4913:4;4906:11;;;4680:244;;;;;:::o;2688:82::-;2737:5;2761:2;2754:9;;2688:82;:::o;248:53:0:-;284:10;:8;:10::i;:::-;248:53::o;1729:104:7:-;1776:4;1810:1;1799:7;;:12;:27;;1821:5;1799:27;;;1814:4;1799:27;1792:34;;1729:104;:::o;2933:116:2:-;2998:7;3024:9;:18;3034:7;3024:18;;;;;;;;;;;;;;;;3017:25;;2933:116;;;:::o;193:49:0:-;227:8;:6;:8::i;:::-;193:49::o;1962:93:2:-;2009:13;2041:7;2034:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1962:93;:::o;3244:178::-;3313:4;3329:13;3345:12;:10;:12::i;:::-;3329:28;;3367:27;3377:5;3384:2;3388:5;3367:9;:27::i;:::-;3411:4;3404:11;;;3244:178;;;;:::o;3455:140::-;3535:7;3561:11;:18;3573:5;3561:18;;;;;;;;;;;;;;;:27;3580:7;3561:27;;;;;;;;;;;;;;;;3554:34;;3455:140;;;;:::o;656:96:6:-;709:7;735:10;728:17;;656:96;:::o;8630:128:2:-;8714:37;8723:5;8730:7;8739:5;8746:4;8714:8;:37::i;:::-;8630:128;;;:::o;10319:476::-;10418:24;10445:25;10455:5;10462:7;10445:9;:25::i;:::-;10418:52;;10503:17;10484:16;:36;10480:309;;;10559:5;10540:16;:24;10536:130;;;10618:7;10627:16;10645:5;10591:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;10536:130;10707:57;10716:5;10723:7;10751:5;10732:16;:24;10758:5;10707:8;:57::i;:::-;10480:309;10408:387;10319:476;;;:::o;5297:300::-;5396:1;5380:18;;:4;:18;;;5376:86;;5448:1;5421:30;;;;;;;;;;;:::i;:::-;;;;;;;;5376:86;5489:1;5475:16;;:2;:16;;;5471:86;;5543:1;5514:32;;;;;;;;;;;:::i;:::-;;;;;;;;5471:86;5566:24;5574:4;5580:2;5584:5;5566:7;:24::i;:::-;5297:300;;;:::o;2606:113:7:-;1600:16;:14;:16::i;:::-;2674:1:::1;2664:7;:11;;;;2690:22;2699:12;:10;:12::i;:::-;2690:22;;;;;;:::i;:::-;;;;;;;;2606:113::o:0;2362:112::-;1353:19;:17;:19::i;:::-;2431:1:::1;2421:7;:11;;;;2447:20;2454:12;:10;:12::i;:::-;2447:20;;;;;;:::i;:::-;;;;;;;;2362:112::o:0;9605:432:2:-;9734:1;9717:19;;:5;:19;;;9713:89;;9788:1;9759:32;;;;;;;;;;;:::i;:::-;;;;;;;;9713:89;9834:1;9815:21;;:7;:21;;;9811:90;;9887:1;9859:31;;;;;;;;;;;:::i;:::-;;;;;;;;9811:90;9940:5;9910:11;:18;9922:5;9910:18;;;;;;;;;;;;;;;:27;9929:7;9910:27;;;;;;;;;;;;;;;:35;;;;9959:9;9955:76;;;10005:7;9989:31;;9998:5;9989:31;;;10014:5;9989:31;;;;;;:::i;:::-;;;;;;;;9955:76;9605:432;;;;:::o;1113:145:4:-;1353:19:7;:17;:19::i;:::-;1221:30:4::1;1235:4;1241:2;1245:5;1221:13;:30::i;:::-;1113:145:::0;;;:::o;2101:126:7:-;2164:8;:6;:8::i;:::-;2159:62;;2195:15;;;;;;;;;;;;;;2159:62;2101:126::o;1901:128::-;1966:8;:6;:8::i;:::-;1962:61;;;1997:15;;;;;;;;;;;;;;1962:61;1901:128::o;5912:1107:2:-;6017:1;6001:18;;:4;:18;;;5997:540;;6153:5;6137:12;;:21;;;;;;;:::i;:::-;;;;;;;;5997:540;;;6189:19;6211:9;:15;6221:4;6211:15;;;;;;;;;;;;;;;;6189:37;;6258:5;6244:11;:19;6240:115;;;6315:4;6321:11;6334:5;6290:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;6240:115;6507:5;6493:11;:19;6475:9;:15;6485:4;6475:15;;;;;;;;;;;;;;;:37;;;;6175:362;5997:540;6565:1;6551:16;;:2;:16;;;6547:425;;6730:5;6714:12;;:21;;;;;;;;;;;6547:425;;;6942:5;6925:9;:13;6935:2;6925:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;6547:425;7002:2;6987:25;;6996:4;6987:25;;;7006:5;6987:25;;;;;;:::i;:::-;;;;;;;;5912:1107;;;:::o;7:99:8:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:329::-;4805:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;4746:329;;;;:::o;5081:474::-;5149:6;5157;5206:2;5194:9;5185:7;5181:23;5177:32;5174:119;;;5212:79;;:::i;:::-;5174:119;5332:1;5357:53;5402:7;5393:6;5382:9;5378:22;5357:53;:::i;:::-;5347:63;;5303:117;5459:2;5485:53;5530:7;5521:6;5510:9;5506:22;5485:53;:::i;:::-;5475:63;;5430:118;5081:474;;;;;:::o;5561:180::-;5609:77;5606:1;5599:88;5706:4;5703:1;5696:15;5730:4;5727:1;5720:15;5747:320;5791:6;5828:1;5822:4;5818:12;5808:22;;5875:1;5869:4;5865:12;5896:18;5886:81;;5952:4;5944:6;5940:17;5930:27;;5886:81;6014:2;6006:6;6003:14;5983:18;5980:38;5977:84;;6033:18;;:::i;:::-;5977:84;5798:269;5747:320;;;:::o;6073:118::-;6160:24;6178:5;6160:24;:::i;:::-;6155:3;6148:37;6073:118;;:::o;6197:442::-;6346:4;6384:2;6373:9;6369:18;6361:26;;6397:71;6465:1;6454:9;6450:17;6441:6;6397:71;:::i;:::-;6478:72;6546:2;6535:9;6531:18;6522:6;6478:72;:::i;:::-;6560;6628:2;6617:9;6613:18;6604:6;6560:72;:::i;:::-;6197:442;;;;;;:::o;6645:222::-;6738:4;6776:2;6765:9;6761:18;6753:26;;6789:71;6857:1;6846:9;6842:17;6833:6;6789:71;:::i;:::-;6645:222;;;;:::o;6873:180::-;6921:77;6918:1;6911:88;7018:4;7015:1;7008:15;7042:4;7039:1;7032:15;7059:191;7099:3;7118:20;7136:1;7118:20;:::i;:::-;7113:25;;7152:20;7170:1;7152:20;:::i;:::-;7147:25;;7195:1;7192;7188:9;7181:16;;7216:3;7213:1;7210:10;7207:36;;;7223:18;;:::i;:::-;7207:36;7059:191;;;;:::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "799000", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "allowance(address,address)": "infinite", + "approve(address,uint256)": "infinite", + "balanceOf(address)": "2850", + "decimals()": "427", + "name()": "infinite", + "pause()": "25805", + "paused()": "2471", + "symbol()": "infinite", + "totalSupply()": "2477", + "transfer(address,uint256)": "infinite", + "transferFrom(address,address,uint256)": "infinite", + "unpause()": "2503" + } + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "name()": "06fdde03", + "pause()": "8456cb59", + "paused()": "5c975abb", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd", + "unpause()": "3f4ba83a" + } + }, + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + }, + { + "inputs": [], + "name": "EnforcedPause", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedPause", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} \ No newline at end of file diff --git a/contracts/artifacts/MyERC_metadata.json b/contracts/artifacts/MyERC_metadata.json new file mode 100644 index 00000000000..97fa2188ed2 --- /dev/null +++ b/contracts/artifacts/MyERC_metadata.json @@ -0,0 +1,589 @@ +{ + "compiler": { + "version": "0.8.30+commit.73712a01" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + }, + { + "inputs": [], + "name": "EnforcedPause", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedPause", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "errors": { + "ERC20InsufficientAllowance(address,uint256,uint256)": [ + { + "details": "Indicates a failure with the `spender`’s `allowance`. Used in transfers.", + "params": { + "allowance": "Amount of tokens a `spender` is allowed to operate with.", + "needed": "Minimum amount required to perform a transfer.", + "spender": "Address that may be allowed to operate on tokens without being their owner." + } + } + ], + "ERC20InsufficientBalance(address,uint256,uint256)": [ + { + "details": "Indicates an error related to the current `balance` of a `sender`. Used in transfers.", + "params": { + "balance": "Current balance for the interacting account.", + "needed": "Minimum amount required to perform a transfer.", + "sender": "Address whose tokens are being transferred." + } + } + ], + "ERC20InvalidApprover(address)": [ + { + "details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.", + "params": { + "approver": "Address initiating an approval operation." + } + } + ], + "ERC20InvalidReceiver(address)": [ + { + "details": "Indicates a failure with the token `receiver`. Used in transfers.", + "params": { + "receiver": "Address to which tokens are being transferred." + } + } + ], + "ERC20InvalidSender(address)": [ + { + "details": "Indicates a failure with the token `sender`. Used in transfers.", + "params": { + "sender": "Address whose tokens are being transferred." + } + } + ], + "ERC20InvalidSpender(address)": [ + { + "details": "Indicates a failure with the `spender` to be approved. Used in approvals.", + "params": { + "spender": "Address that may be allowed to operate on tokens without being their owner." + } + } + ], + "EnforcedPause()": [ + { + "details": "The operation failed because the contract is paused." + } + ], + "ExpectedPause()": [ + { + "details": "The operation failed because the contract is not paused." + } + ] + }, + "events": { + "Approval(address,address,uint256)": { + "details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance." + }, + "Paused(address)": { + "details": "Emitted when the pause is triggered by `account`." + }, + "Transfer(address,address,uint256)": { + "details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero." + }, + "Unpaused(address)": { + "details": "Emitted when the pause is lifted by `account`." + } + }, + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called." + }, + "approve(address,uint256)": { + "details": "See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address." + }, + "balanceOf(address)": { + "details": "Returns the value of tokens owned by `account`." + }, + "decimals()": { + "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}." + }, + "name()": { + "details": "Returns the name of the token." + }, + "paused()": { + "details": "Returns true if the contract is paused, and false otherwise." + }, + "symbol()": { + "details": "Returns the symbol of the token, usually a shorter version of the name." + }, + "totalSupply()": { + "details": "Returns the value of tokens in existence." + }, + "transfer(address,uint256)": { + "details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`." + }, + "transferFrom(address,address,uint256)": { + "details": "See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`." + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "settings": { + "compilationTarget": { + "contracts/MyERC20.sol": "MyERC" + }, + "evmVersion": "prague", + "libraries": {}, + "metadata": { + "bytecodeHash": "ipfs" + }, + "optimizer": { + "enabled": false, + "runs": 200 + }, + "remappings": [ + ":@openzeppelin/contracts/=contracts/" + ] + }, + "sources": { + "contracts/MyERC20.sol": { + "keccak256": "0xa54d74d422ddd7cc144f9bea920e40dcf192e6744212ddcc9b516fcb0b5be92a", + "license": "MIT", + "urls": [ + "bzz-raw://e2f53fbc28c35883c9d7ac571652bd0446508dbd5bee1b35f8b0ca8a8d370fe5", + "dweb:/ipfs/QmPhWuJ68KkK9JyA1n5BTVtjDxRvwC23vNDkG9UePTE8n2" + ] + }, + "contracts/interfaces/draft-IERC6093.sol": { + "keccak256": "0xa667ad942f67a3a72830ba2db2556b22c94a0d0e7b934cb1af19dbb52c701011", + "license": "MIT", + "urls": [ + "bzz-raw://a04504e81403d9f3c45593e0e29f928ff93fbcd11ea961aa8cbd96b05f80aa6e", + "dweb:/ipfs/QmZtHcvctLMa4Ap1ayqq1kyKt8EN5Ni2851daEdjNNYacG" + ] + }, + "contracts/token/ERC20/ERC20.sol": { + "keccak256": "0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994", + "license": "MIT", + "urls": [ + "bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c", + "dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu" + ] + }, + "contracts/token/ERC20/IERC20.sol": { + "keccak256": "0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2", + "license": "MIT", + "urls": [ + "bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303", + "dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV" + ] + }, + "contracts/token/ERC20/extensions/ERC20Pausable.sol": { + "keccak256": "0x756aee61d83960d324973de3a64920a02b480efe662b611fb05ea506d844aa55", + "license": "MIT", + "urls": [ + "bzz-raw://4dfb71ab2f5fcc530226a25bba4d808f4d22a7f383cae4a3be3629ec057b276c", + "dweb:/ipfs/QmRzyetUjbr9Gx1pcXYSsE5rz4XypfEbZgmBvZKUNUJQLR" + ] + }, + "contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "keccak256": "0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f", + "license": "MIT", + "urls": [ + "bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e", + "dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR" + ] + }, + "contracts/utils/Context.sol": { + "keccak256": "0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2", + "license": "MIT", + "urls": [ + "bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12", + "dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF" + ] + }, + "contracts/utils/Pausable.sol": { + "keccak256": "0xdf8d9228aca6cb87ae8bec08c3ecd84de7897a3d7b3b15ddd157dc6689986ad1", + "license": "MIT", + "urls": [ + "bzz-raw://2b419e49007752dba7a1ad5e4f2a8b16d8477cc5ec3ad82c84cbe2231bdfb6ad", + "dweb:/ipfs/Qme2RFtT8s6Wwid5rQDEPWNCZSsXGXqzvMtz2LT9hMMf2e" + ] + } + }, + "version": 1 +} \ No newline at end of file diff --git a/contracts/artifacts/build-info/72cbe9c3b3d896d3731774fe81e7238c.json b/contracts/artifacts/build-info/72cbe9c3b3d896d3731774fe81e7238c.json new file mode 100644 index 00000000000..af4f9b09aa0 --- /dev/null +++ b/contracts/artifacts/build-info/72cbe9c3b3d896d3731774fe81e7238c.json @@ -0,0 +1,42164 @@ +{ + "id": "72cbe9c3b3d896d3731774fe81e7238c", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.30", + "solcLongVersion": "0.8.30+commit.73712a01", + "input": { + "language": "Solidity", + "sources": { + "contracts/MyERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.28;\n\nimport \"./token/ERC20/extensions/ERC20Pausable.sol\";\n\ncontract MyERC is ERC20Pausable {\n constructor() ERC20(\"LOL\", \"LOL\") {}\n\n function pause() public {\n _pause();\n }\n\n function unpause() public {\n _unpause();\n }\n}" + }, + "contracts/token/ERC20/extensions/ERC20Pausable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/ERC20Pausable.sol)\n\npragma solidity ^0.8.20;\n\nimport {ERC20} from \"../ERC20.sol\";\nimport {Pausable} from \"../../../utils/Pausable.sol\";\n\n/**\n * @dev ERC-20 token with pausable token transfers, minting and burning.\n *\n * Useful for scenarios such as preventing trades until the end of an evaluation\n * period, or having an emergency switch for freezing all token transfers in the\n * event of a large bug.\n *\n * IMPORTANT: This contract does not include public pause and unpause functions. In\n * addition to inheriting this contract, you must define both functions, invoking the\n * {Pausable-_pause} and {Pausable-_unpause} internal functions, with appropriate\n * access control, e.g. using {AccessControl} or {Ownable}. Not doing so will\n * make the contract pause mechanism of the contract unreachable, and thus unusable.\n */\nabstract contract ERC20Pausable is ERC20, Pausable {\n /**\n * @dev See {ERC20-_update}.\n *\n * Requirements:\n *\n * - the contract must not be paused.\n */\n function _update(address from, address to, uint256 value) internal virtual override whenNotPaused {\n super._update(from, to, value);\n }\n}\n" + }, + "contracts/utils/Pausable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/Pausable.sol)\n\npragma solidity ^0.8.20;\n\nimport {Context} from \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which allows children to implement an emergency stop\n * mechanism that can be triggered by an authorized account.\n *\n * This module is used through inheritance. It will make available the\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n * the functions of your contract. Note that they will not be pausable by\n * simply including this module, only once the modifiers are put in place.\n */\nabstract contract Pausable is Context {\n uint256 private _paused;\n\n /**\n * @dev Emitted when the pause is triggered by `account`.\n */\n event Paused(address account);\n\n /**\n * @dev Emitted when the pause is lifted by `account`.\n */\n event Unpaused(address account);\n\n /**\n * @dev The operation failed because the contract is paused.\n */\n error EnforcedPause();\n\n /**\n * @dev The operation failed because the contract is not paused.\n */\n error ExpectedPause();\n\n /**\n * @dev Modifier to make a function callable only when the contract is not paused.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n modifier whenNotPaused() {\n _requireNotPaused();\n _;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is paused.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n modifier whenPaused() {\n _requirePaused();\n _;\n }\n\n /**\n * @dev Returns true if the contract is paused, and false otherwise.\n */\n function paused() public view virtual returns (bool) {\n return _paused == 2 ? true : false;\n }\n\n /**\n * @dev Throws if the contract is paused.\n */\n function _requireNotPaused() internal view virtual {\n if (paused()) {\n revert EnforcedPause();\n }\n }\n\n /**\n * @dev Throws if the contract is not paused.\n */\n function _requirePaused() internal view virtual {\n if (!paused()) {\n revert ExpectedPause();\n }\n }\n\n /**\n * @dev Triggers stopped state.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n function _pause() internal virtual whenNotPaused {\n _paused = 2;\n emit Paused(_msgSender());\n }\n\n /**\n * @dev Returns to normal state.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n function _unpause() internal virtual whenPaused {\n _paused = 1;\n emit Unpaused(_msgSender());\n }\n}\n" + }, + "contracts/token/ERC20/ERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC20Metadata} from \"./extensions/IERC20Metadata.sol\";\nimport {Context} from \"../../utils/Context.sol\";\nimport {IERC20Errors} from \"../../interfaces/draft-IERC6093.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC-20\n * applications.\n */\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\n mapping(address account => uint256) private _balances;\n\n mapping(address account => mapping(address spender => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n\n /**\n * @dev Sets the values for {name} and {symbol}.\n *\n * Both values are immutable: they can only be set once during construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual returns (uint8) {\n return 18;\n }\n\n /// @inheritdoc IERC20\n function totalSupply() public view virtual returns (uint256) {\n return _totalSupply;\n }\n\n /// @inheritdoc IERC20\n function balanceOf(address account) public view virtual returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `value`.\n */\n function transfer(address to, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _transfer(owner, to, value);\n return true;\n }\n\n /// @inheritdoc IERC20\n function allowance(address owner, address spender) public view virtual returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, value);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Skips emitting an {Approval} event indicating an allowance update. This is not\n * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `value`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `value`.\n */\n function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\n address spender = _msgSender();\n _spendAllowance(from, spender, value);\n _transfer(from, to, value);\n return true;\n }\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _transfer(address from, address to, uint256 value) internal {\n if (from == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n if (to == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(from, to, value);\n }\n\n /**\n * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n * this function.\n *\n * Emits a {Transfer} event.\n */\n function _update(address from, address to, uint256 value) internal virtual {\n if (from == address(0)) {\n // Overflow check required: The rest of the code assumes that totalSupply never overflows\n _totalSupply += value;\n } else {\n uint256 fromBalance = _balances[from];\n if (fromBalance < value) {\n revert ERC20InsufficientBalance(from, fromBalance, value);\n }\n unchecked {\n // Overflow not possible: value <= fromBalance <= totalSupply.\n _balances[from] = fromBalance - value;\n }\n }\n\n if (to == address(0)) {\n unchecked {\n // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\n _totalSupply -= value;\n }\n } else {\n unchecked {\n // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\n _balances[to] += value;\n }\n }\n\n emit Transfer(from, to, value);\n }\n\n /**\n * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n * Relies on the `_update` mechanism\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _mint(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(address(0), account, value);\n }\n\n /**\n * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n * Relies on the `_update` mechanism.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead\n */\n function _burn(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n _update(account, address(0), value);\n }\n\n /**\n * @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n *\n * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n */\n function _approve(address owner, address spender, uint256 value) internal {\n _approve(owner, spender, value, true);\n }\n\n /**\n * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n *\n * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n * `Approval` event during `transferFrom` operations.\n *\n * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n * true using the following override:\n *\n * ```solidity\n * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n * super._approve(owner, spender, value, true);\n * }\n * ```\n *\n * Requirements are the same as {_approve}.\n */\n function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\n if (owner == address(0)) {\n revert ERC20InvalidApprover(address(0));\n }\n if (spender == address(0)) {\n revert ERC20InvalidSpender(address(0));\n }\n _allowances[owner][spender] = value;\n if (emitEvent) {\n emit Approval(owner, spender, value);\n }\n }\n\n /**\n * @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n *\n * Does not update the allowance value in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Does not emit an {Approval} event.\n */\n function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\n uint256 currentAllowance = allowance(owner, spender);\n if (currentAllowance < type(uint256).max) {\n if (currentAllowance < value) {\n revert ERC20InsufficientAllowance(spender, currentAllowance, value);\n }\n unchecked {\n _approve(owner, spender, currentAllowance - value, false);\n }\n }\n }\n}\n" + }, + "contracts/utils/Context.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n" + }, + "contracts/interfaces/draft-IERC6093.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/draft-IERC6093.sol)\n\npragma solidity >=0.8.4;\n\n/**\n * @dev Standard ERC-20 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\n */\ninterface IERC20Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC20InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC20InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n * @param allowance Amount of tokens a `spender` is allowed to operate with.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC20InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC20InvalidSpender(address spender);\n}\n\n/**\n * @dev Standard ERC-721 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\n */\ninterface IERC721Errors {\n /**\n * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n * Used in balance queries.\n * @param owner Address of the current owner of a token.\n */\n error ERC721InvalidOwner(address owner);\n\n /**\n * @dev Indicates a `tokenId` whose `owner` is the zero address.\n * @param tokenId Identifier number of a token.\n */\n error ERC721NonexistentToken(uint256 tokenId);\n\n /**\n * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param tokenId Identifier number of a token.\n * @param owner Address of the current owner of a token.\n */\n error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC721InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC721InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param tokenId Identifier number of a token.\n */\n error ERC721InsufficientApproval(address operator, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC721InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC721InvalidOperator(address operator);\n}\n\n/**\n * @dev Standard ERC-1155 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\n */\ninterface IERC1155Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n * @param tokenId Identifier number of a token.\n */\n error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC1155InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC1155InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param owner Address of the current owner of a token.\n */\n error ERC1155MissingApprovalForAll(address operator, address owner);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC1155InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC1155InvalidOperator(address operator);\n\n /**\n * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n * Used in batch transfers.\n * @param idsLength Length of the array of token identifiers\n * @param valuesLength Length of the array of token amounts\n */\n error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\n}\n" + }, + "contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity >=0.6.2;\n\nimport {IERC20} from \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n" + }, + "contracts/token/ERC20/IERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/IERC20.sol)\n\npragma solidity >=0.4.16;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the value of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the value of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the\n * allowance mechanism. `value` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.legacyAssembly", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "evm.gasEstimates", + "evm.assembly" + ] + } + }, + "remappings": [ + "@openzeppelin/contracts/=contracts/" + ] + } + }, + "output": { + "contracts": { + "contracts/MyERC20.sol": { + "MyERC": { + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + }, + { + "inputs": [], + "name": "EnforcedPause", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedPause", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "errors": { + "ERC20InsufficientAllowance(address,uint256,uint256)": [ + { + "details": "Indicates a failure with the `spender`’s `allowance`. Used in transfers.", + "params": { + "allowance": "Amount of tokens a `spender` is allowed to operate with.", + "needed": "Minimum amount required to perform a transfer.", + "spender": "Address that may be allowed to operate on tokens without being their owner." + } + } + ], + "ERC20InsufficientBalance(address,uint256,uint256)": [ + { + "details": "Indicates an error related to the current `balance` of a `sender`. Used in transfers.", + "params": { + "balance": "Current balance for the interacting account.", + "needed": "Minimum amount required to perform a transfer.", + "sender": "Address whose tokens are being transferred." + } + } + ], + "ERC20InvalidApprover(address)": [ + { + "details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.", + "params": { + "approver": "Address initiating an approval operation." + } + } + ], + "ERC20InvalidReceiver(address)": [ + { + "details": "Indicates a failure with the token `receiver`. Used in transfers.", + "params": { + "receiver": "Address to which tokens are being transferred." + } + } + ], + "ERC20InvalidSender(address)": [ + { + "details": "Indicates a failure with the token `sender`. Used in transfers.", + "params": { + "sender": "Address whose tokens are being transferred." + } + } + ], + "ERC20InvalidSpender(address)": [ + { + "details": "Indicates a failure with the `spender` to be approved. Used in approvals.", + "params": { + "spender": "Address that may be allowed to operate on tokens without being their owner." + } + } + ], + "EnforcedPause()": [ + { + "details": "The operation failed because the contract is paused." + } + ], + "ExpectedPause()": [ + { + "details": "The operation failed because the contract is not paused." + } + ] + }, + "events": { + "Approval(address,address,uint256)": { + "details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance." + }, + "Paused(address)": { + "details": "Emitted when the pause is triggered by `account`." + }, + "Transfer(address,address,uint256)": { + "details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero." + }, + "Unpaused(address)": { + "details": "Emitted when the pause is lifted by `account`." + } + }, + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called." + }, + "approve(address,uint256)": { + "details": "See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address." + }, + "balanceOf(address)": { + "details": "Returns the value of tokens owned by `account`." + }, + "decimals()": { + "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}." + }, + "name()": { + "details": "Returns the name of the token." + }, + "paused()": { + "details": "Returns true if the contract is paused, and false otherwise." + }, + "symbol()": { + "details": "Returns the symbol of the token, usually a shorter version of the name." + }, + "totalSupply()": { + "details": "Returns the value of tokens in existence." + }, + "transfer(address,uint256)": { + "details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`." + }, + "transferFrom(address,address,uint256)": { + "details": "See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`." + } + }, + "version": 1 + }, + "evm": { + "assembly": " /* \"contracts/MyERC20.sol\":113:303 contract MyERC is ERC20Pausable {... */\n mstore(0x40, 0x80)\n /* \"contracts/MyERC20.sol\":151:187 constructor() ERC20(\"LOL\", \"LOL\") {} */\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n revert(0x00, 0x00)\ntag_1:\n pop\n /* \"contracts/token/ERC20/ERC20.sol\":1582:1695 constructor(string memory name_, string memory symbol_) {... */\n mload(0x40)\n dup1\n 0x40\n add\n 0x40\n mstore\n dup1\n 0x03\n dup2\n mstore\n 0x20\n add\n 0x4c4f4c0000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n pop\n mload(0x40)\n dup1\n 0x40\n add\n 0x40\n mstore\n dup1\n 0x03\n dup2\n mstore\n 0x20\n add\n 0x4c4f4c0000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n pop\n /* \"contracts/token/ERC20/ERC20.sol\":1656:1661 name_ */\n dup2\n /* \"contracts/token/ERC20/ERC20.sol\":1648:1653 _name */\n 0x03\n /* \"contracts/token/ERC20/ERC20.sol\":1648:1661 _name = name_ */\n swap1\n dup2\n tag_5\n swap2\n swap1\n tag_6\n jump\t// in\ntag_5:\n pop\n /* \"contracts/token/ERC20/ERC20.sol\":1681:1688 symbol_ */\n dup1\n /* \"contracts/token/ERC20/ERC20.sol\":1671:1678 _symbol */\n 0x04\n /* \"contracts/token/ERC20/ERC20.sol\":1671:1688 _symbol = symbol_ */\n swap1\n dup2\n tag_7\n swap2\n swap1\n tag_6\n jump\t// in\ntag_7:\n pop\n /* \"contracts/token/ERC20/ERC20.sol\":1582:1695 constructor(string memory name_, string memory symbol_) {... */\n pop\n pop\n /* \"contracts/MyERC20.sol\":113:303 contract MyERC is ERC20Pausable {... */\n jump(tag_9)\n /* \"#utility.yul\":7:106 */\ntag_10:\n /* \"#utility.yul\":59:65 */\n 0x00\n /* \"#utility.yul\":93:98 */\n dup2\n /* \"#utility.yul\":87:99 */\n mload\n /* \"#utility.yul\":77:99 */\n swap1\n pop\n /* \"#utility.yul\":7:106 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":112:292 */\ntag_11:\n /* \"#utility.yul\":160:237 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":157:158 */\n 0x00\n /* \"#utility.yul\":150:238 */\n mstore\n /* \"#utility.yul\":257:261 */\n 0x41\n /* \"#utility.yul\":254:255 */\n 0x04\n /* \"#utility.yul\":247:262 */\n mstore\n /* \"#utility.yul\":281:285 */\n 0x24\n /* \"#utility.yul\":278:279 */\n 0x00\n /* \"#utility.yul\":271:286 */\n revert\n /* \"#utility.yul\":298:478 */\ntag_12:\n /* \"#utility.yul\":346:423 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":343:344 */\n 0x00\n /* \"#utility.yul\":336:424 */\n mstore\n /* \"#utility.yul\":443:447 */\n 0x22\n /* \"#utility.yul\":440:441 */\n 0x04\n /* \"#utility.yul\":433:448 */\n mstore\n /* \"#utility.yul\":467:471 */\n 0x24\n /* \"#utility.yul\":464:465 */\n 0x00\n /* \"#utility.yul\":457:472 */\n revert\n /* \"#utility.yul\":484:804 */\ntag_13:\n /* \"#utility.yul\":528:534 */\n 0x00\n /* \"#utility.yul\":565:566 */\n 0x02\n /* \"#utility.yul\":559:563 */\n dup3\n /* \"#utility.yul\":555:567 */\n div\n /* \"#utility.yul\":545:567 */\n swap1\n pop\n /* \"#utility.yul\":612:613 */\n 0x01\n /* \"#utility.yul\":606:610 */\n dup3\n /* \"#utility.yul\":602:614 */\n and\n /* \"#utility.yul\":633:651 */\n dup1\n /* \"#utility.yul\":623:704 */\n tag_35\n jumpi\n /* \"#utility.yul\":689:693 */\n 0x7f\n /* \"#utility.yul\":681:687 */\n dup3\n /* \"#utility.yul\":677:694 */\n and\n /* \"#utility.yul\":667:694 */\n swap2\n pop\n /* \"#utility.yul\":623:704 */\ntag_35:\n /* \"#utility.yul\":751:753 */\n 0x20\n /* \"#utility.yul\":743:749 */\n dup3\n /* \"#utility.yul\":740:754 */\n lt\n /* \"#utility.yul\":720:738 */\n dup2\n /* \"#utility.yul\":717:755 */\n sub\n /* \"#utility.yul\":714:798 */\n tag_36\n jumpi\n /* \"#utility.yul\":770:788 */\n tag_37\n tag_12\n jump\t// in\ntag_37:\n /* \"#utility.yul\":714:798 */\ntag_36:\n /* \"#utility.yul\":535:804 */\n pop\n /* \"#utility.yul\":484:804 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":810:951 */\ntag_14:\n /* \"#utility.yul\":859:863 */\n 0x00\n /* \"#utility.yul\":882:885 */\n dup2\n /* \"#utility.yul\":874:885 */\n swap1\n pop\n /* \"#utility.yul\":905:908 */\n dup2\n /* \"#utility.yul\":902:903 */\n 0x00\n /* \"#utility.yul\":895:909 */\n mstore\n /* \"#utility.yul\":939:943 */\n 0x20\n /* \"#utility.yul\":936:937 */\n 0x00\n /* \"#utility.yul\":926:944 */\n keccak256\n /* \"#utility.yul\":918:944 */\n swap1\n pop\n /* \"#utility.yul\":810:951 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":957:1050 */\ntag_15:\n /* \"#utility.yul\":994:1000 */\n 0x00\n /* \"#utility.yul\":1041:1043 */\n 0x20\n /* \"#utility.yul\":1036:1038 */\n 0x1f\n /* \"#utility.yul\":1029:1034 */\n dup4\n /* \"#utility.yul\":1025:1039 */\n add\n /* \"#utility.yul\":1021:1044 */\n div\n /* \"#utility.yul\":1011:1044 */\n swap1\n pop\n /* \"#utility.yul\":957:1050 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1056:1163 */\ntag_16:\n /* \"#utility.yul\":1100:1108 */\n 0x00\n /* \"#utility.yul\":1150:1155 */\n dup3\n /* \"#utility.yul\":1144:1148 */\n dup3\n /* \"#utility.yul\":1140:1156 */\n shl\n /* \"#utility.yul\":1119:1156 */\n swap1\n pop\n /* \"#utility.yul\":1056:1163 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1169:1562 */\ntag_17:\n /* \"#utility.yul\":1238:1244 */\n 0x00\n /* \"#utility.yul\":1288:1289 */\n 0x08\n /* \"#utility.yul\":1276:1286 */\n dup4\n /* \"#utility.yul\":1272:1290 */\n mul\n /* \"#utility.yul\":1311:1408 */\n tag_42\n /* \"#utility.yul\":1341:1407 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":1330:1339 */\n dup3\n /* \"#utility.yul\":1311:1408 */\n tag_16\n jump\t// in\ntag_42:\n /* \"#utility.yul\":1429:1468 */\n tag_43\n /* \"#utility.yul\":1459:1467 */\n dup7\n /* \"#utility.yul\":1448:1457 */\n dup4\n /* \"#utility.yul\":1429:1468 */\n tag_16\n jump\t// in\ntag_43:\n /* \"#utility.yul\":1417:1468 */\n swap6\n pop\n /* \"#utility.yul\":1501:1505 */\n dup1\n /* \"#utility.yul\":1497:1506 */\n not\n /* \"#utility.yul\":1490:1495 */\n dup5\n /* \"#utility.yul\":1486:1507 */\n and\n /* \"#utility.yul\":1477:1507 */\n swap4\n pop\n /* \"#utility.yul\":1550:1554 */\n dup1\n /* \"#utility.yul\":1540:1548 */\n dup7\n /* \"#utility.yul\":1536:1555 */\n and\n /* \"#utility.yul\":1529:1534 */\n dup5\n /* \"#utility.yul\":1526:1556 */\n or\n /* \"#utility.yul\":1516:1556 */\n swap3\n pop\n /* \"#utility.yul\":1245:1562 */\n pop\n pop\n /* \"#utility.yul\":1169:1562 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1568:1645 */\ntag_18:\n /* \"#utility.yul\":1605:1612 */\n 0x00\n /* \"#utility.yul\":1634:1639 */\n dup2\n /* \"#utility.yul\":1623:1639 */\n swap1\n pop\n /* \"#utility.yul\":1568:1645 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1651:1711 */\ntag_19:\n /* \"#utility.yul\":1679:1682 */\n 0x00\n /* \"#utility.yul\":1700:1705 */\n dup2\n /* \"#utility.yul\":1693:1705 */\n swap1\n pop\n /* \"#utility.yul\":1651:1711 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1717:1859 */\ntag_20:\n /* \"#utility.yul\":1767:1776 */\n 0x00\n /* \"#utility.yul\":1800:1853 */\n tag_47\n /* \"#utility.yul\":1818:1852 */\n tag_48\n /* \"#utility.yul\":1827:1851 */\n tag_49\n /* \"#utility.yul\":1845:1850 */\n dup5\n /* \"#utility.yul\":1827:1851 */\n tag_18\n jump\t// in\ntag_49:\n /* \"#utility.yul\":1818:1852 */\n tag_19\n jump\t// in\ntag_48:\n /* \"#utility.yul\":1800:1853 */\n tag_18\n jump\t// in\ntag_47:\n /* \"#utility.yul\":1787:1853 */\n swap1\n pop\n /* \"#utility.yul\":1717:1859 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1865:1940 */\ntag_21:\n /* \"#utility.yul\":1908:1911 */\n 0x00\n /* \"#utility.yul\":1929:1934 */\n dup2\n /* \"#utility.yul\":1922:1934 */\n swap1\n pop\n /* \"#utility.yul\":1865:1940 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1946:2215 */\ntag_22:\n /* \"#utility.yul\":2056:2095 */\n tag_52\n /* \"#utility.yul\":2087:2094 */\n dup4\n /* \"#utility.yul\":2056:2095 */\n tag_20\n jump\t// in\ntag_52:\n /* \"#utility.yul\":2117:2208 */\n tag_53\n /* \"#utility.yul\":2166:2207 */\n tag_54\n /* \"#utility.yul\":2190:2206 */\n dup3\n /* \"#utility.yul\":2166:2207 */\n tag_21\n jump\t// in\ntag_54:\n /* \"#utility.yul\":2158:2164 */\n dup5\n /* \"#utility.yul\":2151:2155 */\n dup5\n /* \"#utility.yul\":2145:2156 */\n sload\n /* \"#utility.yul\":2117:2208 */\n tag_17\n jump\t// in\ntag_53:\n /* \"#utility.yul\":2111:2115 */\n dup3\n /* \"#utility.yul\":2104:2209 */\n sstore\n /* \"#utility.yul\":2022:2215 */\n pop\n /* \"#utility.yul\":1946:2215 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2221:2294 */\ntag_23:\n /* \"#utility.yul\":2266:2269 */\n 0x00\n /* \"#utility.yul\":2287:2288 */\n 0x00\n /* \"#utility.yul\":2280:2288 */\n swap1\n pop\n /* \"#utility.yul\":2221:2294 */\n swap1\n jump\t// out\n /* \"#utility.yul\":2300:2489 */\ntag_24:\n /* \"#utility.yul\":2377:2409 */\n tag_57\n tag_23\n jump\t// in\ntag_57:\n /* \"#utility.yul\":2418:2483 */\n tag_58\n /* \"#utility.yul\":2476:2482 */\n dup2\n /* \"#utility.yul\":2468:2474 */\n dup5\n /* \"#utility.yul\":2462:2466 */\n dup5\n /* \"#utility.yul\":2418:2483 */\n tag_22\n jump\t// in\ntag_58:\n /* \"#utility.yul\":2353:2489 */\n pop\n /* \"#utility.yul\":2300:2489 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2495:2681 */\ntag_25:\n /* \"#utility.yul\":2555:2675 */\ntag_60:\n /* \"#utility.yul\":2572:2575 */\n dup2\n /* \"#utility.yul\":2565:2570 */\n dup2\n /* \"#utility.yul\":2562:2576 */\n lt\n /* \"#utility.yul\":2555:2675 */\n iszero\n tag_62\n jumpi\n /* \"#utility.yul\":2626:2665 */\n tag_63\n /* \"#utility.yul\":2663:2664 */\n 0x00\n /* \"#utility.yul\":2656:2661 */\n dup3\n /* \"#utility.yul\":2626:2665 */\n tag_24\n jump\t// in\ntag_63:\n /* \"#utility.yul\":2599:2600 */\n 0x01\n /* \"#utility.yul\":2592:2597 */\n dup2\n /* \"#utility.yul\":2588:2601 */\n add\n /* \"#utility.yul\":2579:2601 */\n swap1\n pop\n /* \"#utility.yul\":2555:2675 */\n jump(tag_60)\ntag_62:\n /* \"#utility.yul\":2495:2681 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2687:3230 */\ntag_26:\n /* \"#utility.yul\":2788:2790 */\n 0x1f\n /* \"#utility.yul\":2783:2786 */\n dup3\n /* \"#utility.yul\":2780:2791 */\n gt\n /* \"#utility.yul\":2777:3223 */\n iszero\n tag_65\n jumpi\n /* \"#utility.yul\":2822:2860 */\n tag_66\n /* \"#utility.yul\":2854:2859 */\n dup2\n /* \"#utility.yul\":2822:2860 */\n tag_14\n jump\t// in\ntag_66:\n /* \"#utility.yul\":2906:2935 */\n tag_67\n /* \"#utility.yul\":2924:2934 */\n dup5\n /* \"#utility.yul\":2906:2935 */\n tag_15\n jump\t// in\ntag_67:\n /* \"#utility.yul\":2896:2904 */\n dup2\n /* \"#utility.yul\":2892:2936 */\n add\n /* \"#utility.yul\":3089:3091 */\n 0x20\n /* \"#utility.yul\":3077:3087 */\n dup6\n /* \"#utility.yul\":3074:3092 */\n lt\n /* \"#utility.yul\":3071:3120 */\n iszero\n tag_68\n jumpi\n /* \"#utility.yul\":3110:3118 */\n dup2\n /* \"#utility.yul\":3095:3118 */\n swap1\n pop\n /* \"#utility.yul\":3071:3120 */\ntag_68:\n /* \"#utility.yul\":3133:3213 */\n tag_69\n /* \"#utility.yul\":3189:3211 */\n tag_70\n /* \"#utility.yul\":3207:3210 */\n dup6\n /* \"#utility.yul\":3189:3211 */\n tag_15\n jump\t// in\ntag_70:\n /* \"#utility.yul\":3179:3187 */\n dup4\n /* \"#utility.yul\":3175:3212 */\n add\n /* \"#utility.yul\":3162:3173 */\n dup3\n /* \"#utility.yul\":3133:3213 */\n tag_25\n jump\t// in\ntag_69:\n /* \"#utility.yul\":2792:3223 */\n pop\n pop\n /* \"#utility.yul\":2777:3223 */\ntag_65:\n /* \"#utility.yul\":2687:3230 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3236:3353 */\ntag_27:\n /* \"#utility.yul\":3290:3298 */\n 0x00\n /* \"#utility.yul\":3340:3345 */\n dup3\n /* \"#utility.yul\":3334:3338 */\n dup3\n /* \"#utility.yul\":3330:3346 */\n shr\n /* \"#utility.yul\":3309:3346 */\n swap1\n pop\n /* \"#utility.yul\":3236:3353 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3359:3528 */\ntag_28:\n /* \"#utility.yul\":3403:3409 */\n 0x00\n /* \"#utility.yul\":3436:3487 */\n tag_73\n /* \"#utility.yul\":3484:3485 */\n 0x00\n /* \"#utility.yul\":3480:3486 */\n not\n /* \"#utility.yul\":3472:3477 */\n dup5\n /* \"#utility.yul\":3469:3470 */\n 0x08\n /* \"#utility.yul\":3465:3478 */\n mul\n /* \"#utility.yul\":3436:3487 */\n tag_27\n jump\t// in\ntag_73:\n /* \"#utility.yul\":3432:3488 */\n not\n /* \"#utility.yul\":3517:3521 */\n dup1\n /* \"#utility.yul\":3511:3515 */\n dup4\n /* \"#utility.yul\":3507:3522 */\n and\n /* \"#utility.yul\":3497:3522 */\n swap2\n pop\n /* \"#utility.yul\":3410:3528 */\n pop\n /* \"#utility.yul\":3359:3528 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3533:3828 */\ntag_29:\n /* \"#utility.yul\":3609:3613 */\n 0x00\n /* \"#utility.yul\":3755:3784 */\n tag_75\n /* \"#utility.yul\":3780:3783 */\n dup4\n /* \"#utility.yul\":3774:3778 */\n dup4\n /* \"#utility.yul\":3755:3784 */\n tag_28\n jump\t// in\ntag_75:\n /* \"#utility.yul\":3747:3784 */\n swap2\n pop\n /* \"#utility.yul\":3817:3820 */\n dup3\n /* \"#utility.yul\":3814:3815 */\n 0x02\n /* \"#utility.yul\":3810:3821 */\n mul\n /* \"#utility.yul\":3804:3808 */\n dup3\n /* \"#utility.yul\":3801:3822 */\n or\n /* \"#utility.yul\":3793:3822 */\n swap1\n pop\n /* \"#utility.yul\":3533:3828 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3833:5228 */\ntag_6:\n /* \"#utility.yul\":3950:3987 */\n tag_77\n /* \"#utility.yul\":3983:3986 */\n dup3\n /* \"#utility.yul\":3950:3987 */\n tag_10\n jump\t// in\ntag_77:\n /* \"#utility.yul\":4052:4070 */\n 0xffffffffffffffff\n /* \"#utility.yul\":4044:4050 */\n dup2\n /* \"#utility.yul\":4041:4071 */\n gt\n /* \"#utility.yul\":4038:4094 */\n iszero\n tag_78\n jumpi\n /* \"#utility.yul\":4074:4092 */\n tag_79\n tag_11\n jump\t// in\ntag_79:\n /* \"#utility.yul\":4038:4094 */\ntag_78:\n /* \"#utility.yul\":4118:4156 */\n tag_80\n /* \"#utility.yul\":4150:4154 */\n dup3\n /* \"#utility.yul\":4144:4155 */\n sload\n /* \"#utility.yul\":4118:4156 */\n tag_13\n jump\t// in\ntag_80:\n /* \"#utility.yul\":4203:4270 */\n tag_81\n /* \"#utility.yul\":4263:4269 */\n dup3\n /* \"#utility.yul\":4255:4261 */\n dup3\n /* \"#utility.yul\":4249:4253 */\n dup6\n /* \"#utility.yul\":4203:4270 */\n tag_26\n jump\t// in\ntag_81:\n /* \"#utility.yul\":4297:4298 */\n 0x00\n /* \"#utility.yul\":4321:4325 */\n 0x20\n /* \"#utility.yul\":4308:4325 */\n swap1\n pop\n /* \"#utility.yul\":4353:4355 */\n 0x1f\n /* \"#utility.yul\":4345:4351 */\n dup4\n /* \"#utility.yul\":4342:4356 */\n gt\n /* \"#utility.yul\":4370:4371 */\n 0x01\n /* \"#utility.yul\":4365:4983 */\n dup2\n eq\n tag_83\n jumpi\n /* \"#utility.yul\":5027:5028 */\n 0x00\n /* \"#utility.yul\":5044:5050 */\n dup5\n /* \"#utility.yul\":5041:5118 */\n iszero\n tag_84\n jumpi\n /* \"#utility.yul\":5093:5102 */\n dup3\n /* \"#utility.yul\":5088:5091 */\n dup8\n /* \"#utility.yul\":5084:5103 */\n add\n /* \"#utility.yul\":5078:5104 */\n mload\n /* \"#utility.yul\":5069:5104 */\n swap1\n pop\n /* \"#utility.yul\":5041:5118 */\ntag_84:\n /* \"#utility.yul\":5144:5211 */\n tag_85\n /* \"#utility.yul\":5204:5210 */\n dup6\n /* \"#utility.yul\":5197:5202 */\n dup3\n /* \"#utility.yul\":5144:5211 */\n tag_29\n jump\t// in\ntag_85:\n /* \"#utility.yul\":5138:5142 */\n dup7\n /* \"#utility.yul\":5131:5212 */\n sstore\n /* \"#utility.yul\":5000:5222 */\n pop\n /* \"#utility.yul\":4335:5222 */\n jump(tag_82)\n /* \"#utility.yul\":4365:4983 */\ntag_83:\n /* \"#utility.yul\":4417:4421 */\n 0x1f\n /* \"#utility.yul\":4413:4422 */\n not\n /* \"#utility.yul\":4405:4411 */\n dup5\n /* \"#utility.yul\":4401:4423 */\n and\n /* \"#utility.yul\":4451:4488 */\n tag_86\n /* \"#utility.yul\":4483:4487 */\n dup7\n /* \"#utility.yul\":4451:4488 */\n tag_14\n jump\t// in\ntag_86:\n /* \"#utility.yul\":4510:4511 */\n 0x00\n /* \"#utility.yul\":4524:4732 */\ntag_87:\n /* \"#utility.yul\":4538:4545 */\n dup3\n /* \"#utility.yul\":4535:4536 */\n dup2\n /* \"#utility.yul\":4532:4546 */\n lt\n /* \"#utility.yul\":4524:4732 */\n iszero\n tag_89\n jumpi\n /* \"#utility.yul\":4617:4626 */\n dup5\n /* \"#utility.yul\":4612:4615 */\n dup10\n /* \"#utility.yul\":4608:4627 */\n add\n /* \"#utility.yul\":4602:4628 */\n mload\n /* \"#utility.yul\":4594:4600 */\n dup3\n /* \"#utility.yul\":4587:4629 */\n sstore\n /* \"#utility.yul\":4668:4669 */\n 0x01\n /* \"#utility.yul\":4660:4666 */\n dup3\n /* \"#utility.yul\":4656:4670 */\n add\n /* \"#utility.yul\":4646:4670 */\n swap2\n pop\n /* \"#utility.yul\":4715:4717 */\n 0x20\n /* \"#utility.yul\":4704:4713 */\n dup6\n /* \"#utility.yul\":4700:4718 */\n add\n /* \"#utility.yul\":4687:4718 */\n swap5\n pop\n /* \"#utility.yul\":4561:4565 */\n 0x20\n /* \"#utility.yul\":4558:4559 */\n dup2\n /* \"#utility.yul\":4554:4566 */\n add\n /* \"#utility.yul\":4549:4566 */\n swap1\n pop\n /* \"#utility.yul\":4524:4732 */\n jump(tag_87)\ntag_89:\n /* \"#utility.yul\":4760:4766 */\n dup7\n /* \"#utility.yul\":4751:4758 */\n dup4\n /* \"#utility.yul\":4748:4767 */\n lt\n /* \"#utility.yul\":4745:4924 */\n iszero\n tag_90\n jumpi\n /* \"#utility.yul\":4818:4827 */\n dup5\n /* \"#utility.yul\":4813:4816 */\n dup10\n /* \"#utility.yul\":4809:4828 */\n add\n /* \"#utility.yul\":4803:4829 */\n mload\n /* \"#utility.yul\":4861:4909 */\n tag_91\n /* \"#utility.yul\":4903:4907 */\n 0x1f\n /* \"#utility.yul\":4895:4901 */\n dup10\n /* \"#utility.yul\":4891:4908 */\n and\n /* \"#utility.yul\":4880:4889 */\n dup3\n /* \"#utility.yul\":4861:4909 */\n tag_28\n jump\t// in\ntag_91:\n /* \"#utility.yul\":4853:4859 */\n dup4\n /* \"#utility.yul\":4846:4910 */\n sstore\n /* \"#utility.yul\":4768:4924 */\n pop\n /* \"#utility.yul\":4745:4924 */\ntag_90:\n /* \"#utility.yul\":4970:4971 */\n 0x01\n /* \"#utility.yul\":4966:4967 */\n 0x02\n /* \"#utility.yul\":4958:4964 */\n dup9\n /* \"#utility.yul\":4954:4968 */\n mul\n /* \"#utility.yul\":4950:4972 */\n add\n /* \"#utility.yul\":4944:4948 */\n dup9\n /* \"#utility.yul\":4937:4973 */\n sstore\n /* \"#utility.yul\":4372:4983 */\n pop\n pop\n pop\n /* \"#utility.yul\":4335:5222 */\ntag_82:\n pop\n /* \"#utility.yul\":3925:5228 */\n pop\n pop\n pop\n /* \"#utility.yul\":3833:5228 */\n pop\n pop\n jump\t// out\n /* \"contracts/MyERC20.sol\":113:303 contract MyERC is ERC20Pausable {... */\ntag_9:\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/MyERC20.sol\":113:303 contract MyERC is ERC20Pausable {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n revert(0x00, 0x00)\n tag_1:\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x5c975abb\n gt\n tag_15\n jumpi\n dup1\n 0x5c975abb\n eq\n tag_9\n jumpi\n dup1\n 0x70a08231\n eq\n tag_10\n jumpi\n dup1\n 0x8456cb59\n eq\n tag_11\n jumpi\n dup1\n 0x95d89b41\n eq\n tag_12\n jumpi\n dup1\n 0xa9059cbb\n eq\n tag_13\n jumpi\n dup1\n 0xdd62ed3e\n eq\n tag_14\n jumpi\n jump(tag_2)\n tag_15:\n dup1\n 0x06fdde03\n eq\n tag_3\n jumpi\n dup1\n 0x095ea7b3\n eq\n tag_4\n jumpi\n dup1\n 0x18160ddd\n eq\n tag_5\n jumpi\n dup1\n 0x23b872dd\n eq\n tag_6\n jumpi\n dup1\n 0x313ce567\n eq\n tag_7\n jumpi\n dup1\n 0x3f4ba83a\n eq\n tag_8\n jumpi\n tag_2:\n revert(0x00, 0x00)\n /* \"contracts/token/ERC20/ERC20.sol\":1760:1849 function name() public view virtual returns (string memory) {... */\n tag_3:\n tag_16\n tag_17\n jump\t// in\n tag_16:\n mload(0x40)\n tag_18\n swap2\n swap1\n tag_19\n jump\t// in\n tag_18:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"contracts/token/ERC20/ERC20.sol\":3902:4088 function approve(address spender, uint256 value) public virtual returns (bool) {... */\n tag_4:\n tag_20\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_21\n swap2\n swap1\n tag_22\n jump\t// in\n tag_21:\n tag_23\n jump\t// in\n tag_20:\n mload(0x40)\n tag_24\n swap2\n swap1\n tag_25\n jump\t// in\n tag_24:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"contracts/token/ERC20/ERC20.sol\":2803:2900 function totalSupply() public view virtual returns (uint256) {... */\n tag_5:\n tag_26\n tag_27\n jump\t// in\n tag_26:\n mload(0x40)\n tag_28\n swap2\n swap1\n tag_29\n jump\t// in\n tag_28:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"contracts/token/ERC20/ERC20.sol\":4680:4924 function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {... */\n tag_6:\n tag_30\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_31\n swap2\n swap1\n tag_32\n jump\t// in\n tag_31:\n tag_33\n jump\t// in\n tag_30:\n mload(0x40)\n tag_34\n swap2\n swap1\n tag_25\n jump\t// in\n tag_34:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"contracts/token/ERC20/ERC20.sol\":2688:2770 function decimals() public view virtual returns (uint8) {... */\n tag_7:\n tag_35\n tag_36\n jump\t// in\n tag_35:\n mload(0x40)\n tag_37\n swap2\n swap1\n tag_38\n jump\t// in\n tag_37:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"contracts/MyERC20.sol\":248:301 function unpause() public {... */\n tag_8:\n tag_39\n tag_40\n jump\t// in\n tag_39:\n stop\n /* \"contracts/utils/Pausable.sol\":1729:1833 function paused() public view virtual returns (bool) {... */\n tag_9:\n tag_41\n tag_42\n jump\t// in\n tag_41:\n mload(0x40)\n tag_43\n swap2\n swap1\n tag_25\n jump\t// in\n tag_43:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"contracts/token/ERC20/ERC20.sol\":2933:3049 function balanceOf(address account) public view virtual returns (uint256) {... */\n tag_10:\n tag_44\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_45\n swap2\n swap1\n tag_46\n jump\t// in\n tag_45:\n tag_47\n jump\t// in\n tag_44:\n mload(0x40)\n tag_48\n swap2\n swap1\n tag_29\n jump\t// in\n tag_48:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"contracts/MyERC20.sol\":193:242 function pause() public {... */\n tag_11:\n tag_49\n tag_50\n jump\t// in\n tag_49:\n stop\n /* \"contracts/token/ERC20/ERC20.sol\":1962:2055 function symbol() public view virtual returns (string memory) {... */\n tag_12:\n tag_51\n tag_52\n jump\t// in\n tag_51:\n mload(0x40)\n tag_53\n swap2\n swap1\n tag_19\n jump\t// in\n tag_53:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"contracts/token/ERC20/ERC20.sol\":3244:3422 function transfer(address to, uint256 value) public virtual returns (bool) {... */\n tag_13:\n tag_54\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_55\n swap2\n swap1\n tag_22\n jump\t// in\n tag_55:\n tag_56\n jump\t// in\n tag_54:\n mload(0x40)\n tag_57\n swap2\n swap1\n tag_25\n jump\t// in\n tag_57:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"contracts/token/ERC20/ERC20.sol\":3455:3595 function allowance(address owner, address spender) public view virtual returns (uint256) {... */\n tag_14:\n tag_58\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_59\n swap2\n swap1\n tag_60\n jump\t// in\n tag_59:\n tag_61\n jump\t// in\n tag_58:\n mload(0x40)\n tag_62\n swap2\n swap1\n tag_29\n jump\t// in\n tag_62:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"contracts/token/ERC20/ERC20.sol\":1760:1849 function name() public view virtual returns (string memory) {... */\n tag_17:\n /* \"contracts/token/ERC20/ERC20.sol\":1805:1818 string memory */\n 0x60\n /* \"contracts/token/ERC20/ERC20.sol\":1837:1842 _name */\n 0x03\n /* \"contracts/token/ERC20/ERC20.sol\":1830:1842 return _name */\n dup1\n sload\n tag_64\n swap1\n tag_65\n jump\t// in\n tag_64:\n dup1\n 0x1f\n add\n 0x20\n dup1\n swap2\n div\n mul\n 0x20\n add\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n swap3\n swap2\n swap1\n dup2\n dup2\n mstore\n 0x20\n add\n dup3\n dup1\n sload\n tag_66\n swap1\n tag_65\n jump\t// in\n tag_66:\n dup1\n iszero\n tag_67\n jumpi\n dup1\n 0x1f\n lt\n tag_68\n jumpi\n 0x0100\n dup1\n dup4\n sload\n div\n mul\n dup4\n mstore\n swap2\n 0x20\n add\n swap2\n jump(tag_67)\n tag_68:\n dup3\n add\n swap2\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n swap1\n tag_69:\n dup2\n sload\n dup2\n mstore\n swap1\n 0x01\n add\n swap1\n 0x20\n add\n dup1\n dup4\n gt\n tag_69\n jumpi\n dup3\n swap1\n sub\n 0x1f\n and\n dup3\n add\n swap2\n tag_67:\n pop\n pop\n pop\n pop\n pop\n swap1\n pop\n /* \"contracts/token/ERC20/ERC20.sol\":1760:1849 function name() public view virtual returns (string memory) {... */\n swap1\n jump\t// out\n /* \"contracts/token/ERC20/ERC20.sol\":3902:4088 function approve(address spender, uint256 value) public virtual returns (bool) {... */\n tag_23:\n /* \"contracts/token/ERC20/ERC20.sol\":3975:3979 bool */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":3991:4004 address owner */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":4007:4019 _msgSender() */\n tag_71\n /* \"contracts/token/ERC20/ERC20.sol\":4007:4017 _msgSender */\n tag_72\n /* \"contracts/token/ERC20/ERC20.sol\":4007:4019 _msgSender() */\n jump\t// in\n tag_71:\n /* \"contracts/token/ERC20/ERC20.sol\":3991:4019 address owner = _msgSender() */\n swap1\n pop\n /* \"contracts/token/ERC20/ERC20.sol\":4029:4060 _approve(owner, spender, value) */\n tag_73\n /* \"contracts/token/ERC20/ERC20.sol\":4038:4043 owner */\n dup2\n /* \"contracts/token/ERC20/ERC20.sol\":4045:4052 spender */\n dup6\n /* \"contracts/token/ERC20/ERC20.sol\":4054:4059 value */\n dup6\n /* \"contracts/token/ERC20/ERC20.sol\":4029:4037 _approve */\n tag_74\n /* \"contracts/token/ERC20/ERC20.sol\":4029:4060 _approve(owner, spender, value) */\n jump\t// in\n tag_73:\n /* \"contracts/token/ERC20/ERC20.sol\":4077:4081 true */\n 0x01\n /* \"contracts/token/ERC20/ERC20.sol\":4070:4081 return true */\n swap2\n pop\n pop\n /* \"contracts/token/ERC20/ERC20.sol\":3902:4088 function approve(address spender, uint256 value) public virtual returns (bool) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"contracts/token/ERC20/ERC20.sol\":2803:2900 function totalSupply() public view virtual returns (uint256) {... */\n tag_27:\n /* \"contracts/token/ERC20/ERC20.sol\":2855:2862 uint256 */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":2881:2893 _totalSupply */\n sload(0x02)\n /* \"contracts/token/ERC20/ERC20.sol\":2874:2893 return _totalSupply */\n swap1\n pop\n /* \"contracts/token/ERC20/ERC20.sol\":2803:2900 function totalSupply() public view virtual returns (uint256) {... */\n swap1\n jump\t// out\n /* \"contracts/token/ERC20/ERC20.sol\":4680:4924 function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {... */\n tag_33:\n /* \"contracts/token/ERC20/ERC20.sol\":4767:4771 bool */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":4783:4798 address spender */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":4801:4813 _msgSender() */\n tag_77\n /* \"contracts/token/ERC20/ERC20.sol\":4801:4811 _msgSender */\n tag_72\n /* \"contracts/token/ERC20/ERC20.sol\":4801:4813 _msgSender() */\n jump\t// in\n tag_77:\n /* \"contracts/token/ERC20/ERC20.sol\":4783:4813 address spender = _msgSender() */\n swap1\n pop\n /* \"contracts/token/ERC20/ERC20.sol\":4823:4860 _spendAllowance(from, spender, value) */\n tag_78\n /* \"contracts/token/ERC20/ERC20.sol\":4839:4843 from */\n dup6\n /* \"contracts/token/ERC20/ERC20.sol\":4845:4852 spender */\n dup3\n /* \"contracts/token/ERC20/ERC20.sol\":4854:4859 value */\n dup6\n /* \"contracts/token/ERC20/ERC20.sol\":4823:4838 _spendAllowance */\n tag_79\n /* \"contracts/token/ERC20/ERC20.sol\":4823:4860 _spendAllowance(from, spender, value) */\n jump\t// in\n tag_78:\n /* \"contracts/token/ERC20/ERC20.sol\":4870:4896 _transfer(from, to, value) */\n tag_80\n /* \"contracts/token/ERC20/ERC20.sol\":4880:4884 from */\n dup6\n /* \"contracts/token/ERC20/ERC20.sol\":4886:4888 to */\n dup6\n /* \"contracts/token/ERC20/ERC20.sol\":4890:4895 value */\n dup6\n /* \"contracts/token/ERC20/ERC20.sol\":4870:4879 _transfer */\n tag_81\n /* \"contracts/token/ERC20/ERC20.sol\":4870:4896 _transfer(from, to, value) */\n jump\t// in\n tag_80:\n /* \"contracts/token/ERC20/ERC20.sol\":4913:4917 true */\n 0x01\n /* \"contracts/token/ERC20/ERC20.sol\":4906:4917 return true */\n swap2\n pop\n pop\n /* \"contracts/token/ERC20/ERC20.sol\":4680:4924 function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {... */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"contracts/token/ERC20/ERC20.sol\":2688:2770 function decimals() public view virtual returns (uint8) {... */\n tag_36:\n /* \"contracts/token/ERC20/ERC20.sol\":2737:2742 uint8 */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":2761:2763 18 */\n 0x12\n /* \"contracts/token/ERC20/ERC20.sol\":2754:2763 return 18 */\n swap1\n pop\n /* \"contracts/token/ERC20/ERC20.sol\":2688:2770 function decimals() public view virtual returns (uint8) {... */\n swap1\n jump\t// out\n /* \"contracts/MyERC20.sol\":248:301 function unpause() public {... */\n tag_40:\n /* \"contracts/MyERC20.sol\":284:294 _unpause() */\n tag_84\n /* \"contracts/MyERC20.sol\":284:292 _unpause */\n tag_85\n /* \"contracts/MyERC20.sol\":284:294 _unpause() */\n jump\t// in\n tag_84:\n /* \"contracts/MyERC20.sol\":248:301 function unpause() public {... */\n jump\t// out\n /* \"contracts/utils/Pausable.sol\":1729:1833 function paused() public view virtual returns (bool) {... */\n tag_42:\n /* \"contracts/utils/Pausable.sol\":1776:1780 bool */\n 0x00\n /* \"contracts/utils/Pausable.sol\":1810:1811 2 */\n 0x02\n /* \"contracts/utils/Pausable.sol\":1799:1806 _paused */\n sload(0x05)\n /* \"contracts/utils/Pausable.sol\":1799:1811 _paused == 2 */\n eq\n /* \"contracts/utils/Pausable.sol\":1799:1826 _paused == 2 ? true : false */\n tag_87\n jumpi\n /* \"contracts/utils/Pausable.sol\":1821:1826 false */\n 0x00\n /* \"contracts/utils/Pausable.sol\":1799:1826 _paused == 2 ? true : false */\n jump(tag_88)\n tag_87:\n /* \"contracts/utils/Pausable.sol\":1814:1818 true */\n 0x01\n /* \"contracts/utils/Pausable.sol\":1799:1826 _paused == 2 ? true : false */\n tag_88:\n /* \"contracts/utils/Pausable.sol\":1792:1826 return _paused == 2 ? true : false */\n swap1\n pop\n /* \"contracts/utils/Pausable.sol\":1729:1833 function paused() public view virtual returns (bool) {... */\n swap1\n jump\t// out\n /* \"contracts/token/ERC20/ERC20.sol\":2933:3049 function balanceOf(address account) public view virtual returns (uint256) {... */\n tag_47:\n /* \"contracts/token/ERC20/ERC20.sol\":2998:3005 uint256 */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":3024:3033 _balances */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":3024:3042 _balances[account] */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":3034:3041 account */\n dup4\n /* \"contracts/token/ERC20/ERC20.sol\":3024:3042 _balances[account] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n sload\n /* \"contracts/token/ERC20/ERC20.sol\":3017:3042 return _balances[account] */\n swap1\n pop\n /* \"contracts/token/ERC20/ERC20.sol\":2933:3049 function balanceOf(address account) public view virtual returns (uint256) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"contracts/MyERC20.sol\":193:242 function pause() public {... */\n tag_50:\n /* \"contracts/MyERC20.sol\":227:235 _pause() */\n tag_91\n /* \"contracts/MyERC20.sol\":227:233 _pause */\n tag_92\n /* \"contracts/MyERC20.sol\":227:235 _pause() */\n jump\t// in\n tag_91:\n /* \"contracts/MyERC20.sol\":193:242 function pause() public {... */\n jump\t// out\n /* \"contracts/token/ERC20/ERC20.sol\":1962:2055 function symbol() public view virtual returns (string memory) {... */\n tag_52:\n /* \"contracts/token/ERC20/ERC20.sol\":2009:2022 string memory */\n 0x60\n /* \"contracts/token/ERC20/ERC20.sol\":2041:2048 _symbol */\n 0x04\n /* \"contracts/token/ERC20/ERC20.sol\":2034:2048 return _symbol */\n dup1\n sload\n tag_94\n swap1\n tag_65\n jump\t// in\n tag_94:\n dup1\n 0x1f\n add\n 0x20\n dup1\n swap2\n div\n mul\n 0x20\n add\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n swap3\n swap2\n swap1\n dup2\n dup2\n mstore\n 0x20\n add\n dup3\n dup1\n sload\n tag_95\n swap1\n tag_65\n jump\t// in\n tag_95:\n dup1\n iszero\n tag_96\n jumpi\n dup1\n 0x1f\n lt\n tag_97\n jumpi\n 0x0100\n dup1\n dup4\n sload\n div\n mul\n dup4\n mstore\n swap2\n 0x20\n add\n swap2\n jump(tag_96)\n tag_97:\n dup3\n add\n swap2\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n swap1\n tag_98:\n dup2\n sload\n dup2\n mstore\n swap1\n 0x01\n add\n swap1\n 0x20\n add\n dup1\n dup4\n gt\n tag_98\n jumpi\n dup3\n swap1\n sub\n 0x1f\n and\n dup3\n add\n swap2\n tag_96:\n pop\n pop\n pop\n pop\n pop\n swap1\n pop\n /* \"contracts/token/ERC20/ERC20.sol\":1962:2055 function symbol() public view virtual returns (string memory) {... */\n swap1\n jump\t// out\n /* \"contracts/token/ERC20/ERC20.sol\":3244:3422 function transfer(address to, uint256 value) public virtual returns (bool) {... */\n tag_56:\n /* \"contracts/token/ERC20/ERC20.sol\":3313:3317 bool */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":3329:3342 address owner */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":3345:3357 _msgSender() */\n tag_100\n /* \"contracts/token/ERC20/ERC20.sol\":3345:3355 _msgSender */\n tag_72\n /* \"contracts/token/ERC20/ERC20.sol\":3345:3357 _msgSender() */\n jump\t// in\n tag_100:\n /* \"contracts/token/ERC20/ERC20.sol\":3329:3357 address owner = _msgSender() */\n swap1\n pop\n /* \"contracts/token/ERC20/ERC20.sol\":3367:3394 _transfer(owner, to, value) */\n tag_101\n /* \"contracts/token/ERC20/ERC20.sol\":3377:3382 owner */\n dup2\n /* \"contracts/token/ERC20/ERC20.sol\":3384:3386 to */\n dup6\n /* \"contracts/token/ERC20/ERC20.sol\":3388:3393 value */\n dup6\n /* \"contracts/token/ERC20/ERC20.sol\":3367:3376 _transfer */\n tag_81\n /* \"contracts/token/ERC20/ERC20.sol\":3367:3394 _transfer(owner, to, value) */\n jump\t// in\n tag_101:\n /* \"contracts/token/ERC20/ERC20.sol\":3411:3415 true */\n 0x01\n /* \"contracts/token/ERC20/ERC20.sol\":3404:3415 return true */\n swap2\n pop\n pop\n /* \"contracts/token/ERC20/ERC20.sol\":3244:3422 function transfer(address to, uint256 value) public virtual returns (bool) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"contracts/token/ERC20/ERC20.sol\":3455:3595 function allowance(address owner, address spender) public view virtual returns (uint256) {... */\n tag_61:\n /* \"contracts/token/ERC20/ERC20.sol\":3535:3542 uint256 */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":3561:3572 _allowances */\n 0x01\n /* \"contracts/token/ERC20/ERC20.sol\":3561:3579 _allowances[owner] */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":3573:3578 owner */\n dup5\n /* \"contracts/token/ERC20/ERC20.sol\":3561:3579 _allowances[owner] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"contracts/token/ERC20/ERC20.sol\":3561:3588 _allowances[owner][spender] */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":3580:3587 spender */\n dup4\n /* \"contracts/token/ERC20/ERC20.sol\":3561:3588 _allowances[owner][spender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n sload\n /* \"contracts/token/ERC20/ERC20.sol\":3554:3588 return _allowances[owner][spender] */\n swap1\n pop\n /* \"contracts/token/ERC20/ERC20.sol\":3455:3595 function allowance(address owner, address spender) public view virtual returns (uint256) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"contracts/utils/Context.sol\":656:752 function _msgSender() internal view virtual returns (address) {... */\n tag_72:\n /* \"contracts/utils/Context.sol\":709:716 address */\n 0x00\n /* \"contracts/utils/Context.sol\":735:745 msg.sender */\n caller\n /* \"contracts/utils/Context.sol\":728:745 return msg.sender */\n swap1\n pop\n /* \"contracts/utils/Context.sol\":656:752 function _msgSender() internal view virtual returns (address) {... */\n swap1\n jump\t// out\n /* \"contracts/token/ERC20/ERC20.sol\":8630:8758 function _approve(address owner, address spender, uint256 value) internal {... */\n tag_74:\n /* \"contracts/token/ERC20/ERC20.sol\":8714:8751 _approve(owner, spender, value, true) */\n tag_105\n /* \"contracts/token/ERC20/ERC20.sol\":8723:8728 owner */\n dup4\n /* \"contracts/token/ERC20/ERC20.sol\":8730:8737 spender */\n dup4\n /* \"contracts/token/ERC20/ERC20.sol\":8739:8744 value */\n dup4\n /* \"contracts/token/ERC20/ERC20.sol\":8746:8750 true */\n 0x01\n /* \"contracts/token/ERC20/ERC20.sol\":8714:8722 _approve */\n tag_106\n /* \"contracts/token/ERC20/ERC20.sol\":8714:8751 _approve(owner, spender, value, true) */\n jump\t// in\n tag_105:\n /* \"contracts/token/ERC20/ERC20.sol\":8630:8758 function _approve(address owner, address spender, uint256 value) internal {... */\n pop\n pop\n pop\n jump\t// out\n /* \"contracts/token/ERC20/ERC20.sol\":10319:10795 function _spendAllowance(address owner, address spender, uint256 value) internal virtual {... */\n tag_79:\n /* \"contracts/token/ERC20/ERC20.sol\":10418:10442 uint256 currentAllowance */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":10445:10470 allowance(owner, spender) */\n tag_108\n /* \"contracts/token/ERC20/ERC20.sol\":10455:10460 owner */\n dup5\n /* \"contracts/token/ERC20/ERC20.sol\":10462:10469 spender */\n dup5\n /* \"contracts/token/ERC20/ERC20.sol\":10445:10454 allowance */\n tag_61\n /* \"contracts/token/ERC20/ERC20.sol\":10445:10470 allowance(owner, spender) */\n jump\t// in\n tag_108:\n /* \"contracts/token/ERC20/ERC20.sol\":10418:10470 uint256 currentAllowance = allowance(owner, spender) */\n swap1\n pop\n /* \"contracts/token/ERC20/ERC20.sol\":10503:10520 type(uint256).max */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"contracts/token/ERC20/ERC20.sol\":10484:10500 currentAllowance */\n dup2\n /* \"contracts/token/ERC20/ERC20.sol\":10484:10520 currentAllowance < type(uint256).max */\n lt\n /* \"contracts/token/ERC20/ERC20.sol\":10480:10789 if (currentAllowance < type(uint256).max) {... */\n iszero\n tag_109\n jumpi\n /* \"contracts/token/ERC20/ERC20.sol\":10559:10564 value */\n dup2\n /* \"contracts/token/ERC20/ERC20.sol\":10540:10556 currentAllowance */\n dup2\n /* \"contracts/token/ERC20/ERC20.sol\":10540:10564 currentAllowance < value */\n lt\n /* \"contracts/token/ERC20/ERC20.sol\":10536:10666 if (currentAllowance < value) {... */\n iszero\n tag_110\n jumpi\n /* \"contracts/token/ERC20/ERC20.sol\":10618:10625 spender */\n dup3\n /* \"contracts/token/ERC20/ERC20.sol\":10627:10643 currentAllowance */\n dup2\n /* \"contracts/token/ERC20/ERC20.sol\":10645:10650 value */\n dup4\n /* \"contracts/token/ERC20/ERC20.sol\":10591:10651 ERC20InsufficientAllowance(spender, currentAllowance, value) */\n mload(0x40)\n 0xfb8f41b200000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_111\n swap4\n swap3\n swap2\n swap1\n tag_112\n jump\t// in\n tag_111:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"contracts/token/ERC20/ERC20.sol\":10536:10666 if (currentAllowance < value) {... */\n tag_110:\n /* \"contracts/token/ERC20/ERC20.sol\":10707:10764 _approve(owner, spender, currentAllowance - value, false) */\n tag_113\n /* \"contracts/token/ERC20/ERC20.sol\":10716:10721 owner */\n dup5\n /* \"contracts/token/ERC20/ERC20.sol\":10723:10730 spender */\n dup5\n /* \"contracts/token/ERC20/ERC20.sol\":10751:10756 value */\n dup5\n /* \"contracts/token/ERC20/ERC20.sol\":10732:10748 currentAllowance */\n dup5\n /* \"contracts/token/ERC20/ERC20.sol\":10732:10756 currentAllowance - value */\n sub\n /* \"contracts/token/ERC20/ERC20.sol\":10758:10763 false */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":10707:10715 _approve */\n tag_106\n /* \"contracts/token/ERC20/ERC20.sol\":10707:10764 _approve(owner, spender, currentAllowance - value, false) */\n jump\t// in\n tag_113:\n /* \"contracts/token/ERC20/ERC20.sol\":10480:10789 if (currentAllowance < type(uint256).max) {... */\n tag_109:\n /* \"contracts/token/ERC20/ERC20.sol\":10408:10795 {... */\n pop\n /* \"contracts/token/ERC20/ERC20.sol\":10319:10795 function _spendAllowance(address owner, address spender, uint256 value) internal virtual {... */\n pop\n pop\n pop\n jump\t// out\n /* \"contracts/token/ERC20/ERC20.sol\":5297:5597 function _transfer(address from, address to, uint256 value) internal {... */\n tag_81:\n /* \"contracts/token/ERC20/ERC20.sol\":5396:5397 0 */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":5380:5398 from == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"contracts/token/ERC20/ERC20.sol\":5380:5384 from */\n dup4\n /* \"contracts/token/ERC20/ERC20.sol\":5380:5398 from == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"contracts/token/ERC20/ERC20.sol\":5376:5462 if (from == address(0)) {... */\n tag_115\n jumpi\n /* \"contracts/token/ERC20/ERC20.sol\":5448:5449 0 */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":5421:5451 ERC20InvalidSender(address(0)) */\n mload(0x40)\n 0x96c6fd1e00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_116\n swap2\n swap1\n tag_117\n jump\t// in\n tag_116:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"contracts/token/ERC20/ERC20.sol\":5376:5462 if (from == address(0)) {... */\n tag_115:\n /* \"contracts/token/ERC20/ERC20.sol\":5489:5490 0 */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":5475:5491 to == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"contracts/token/ERC20/ERC20.sol\":5475:5477 to */\n dup3\n /* \"contracts/token/ERC20/ERC20.sol\":5475:5491 to == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"contracts/token/ERC20/ERC20.sol\":5471:5557 if (to == address(0)) {... */\n tag_118\n jumpi\n /* \"contracts/token/ERC20/ERC20.sol\":5543:5544 0 */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":5514:5546 ERC20InvalidReceiver(address(0)) */\n mload(0x40)\n 0xec442f0500000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_119\n swap2\n swap1\n tag_117\n jump\t// in\n tag_119:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"contracts/token/ERC20/ERC20.sol\":5471:5557 if (to == address(0)) {... */\n tag_118:\n /* \"contracts/token/ERC20/ERC20.sol\":5566:5590 _update(from, to, value) */\n tag_120\n /* \"contracts/token/ERC20/ERC20.sol\":5574:5578 from */\n dup4\n /* \"contracts/token/ERC20/ERC20.sol\":5580:5582 to */\n dup4\n /* \"contracts/token/ERC20/ERC20.sol\":5584:5589 value */\n dup4\n /* \"contracts/token/ERC20/ERC20.sol\":5566:5573 _update */\n tag_121\n /* \"contracts/token/ERC20/ERC20.sol\":5566:5590 _update(from, to, value) */\n jump\t// in\n tag_120:\n /* \"contracts/token/ERC20/ERC20.sol\":5297:5597 function _transfer(address from, address to, uint256 value) internal {... */\n pop\n pop\n pop\n jump\t// out\n /* \"contracts/utils/Pausable.sol\":2606:2719 function _unpause() internal virtual whenPaused {... */\n tag_85:\n /* \"contracts/utils/Pausable.sol\":1600:1616 _requirePaused() */\n tag_123\n /* \"contracts/utils/Pausable.sol\":1600:1614 _requirePaused */\n tag_124\n /* \"contracts/utils/Pausable.sol\":1600:1616 _requirePaused() */\n jump\t// in\n tag_123:\n /* \"contracts/utils/Pausable.sol\":2674:2675 1 */\n 0x01\n /* \"contracts/utils/Pausable.sol\":2664:2671 _paused */\n 0x05\n /* \"contracts/utils/Pausable.sol\":2664:2675 _paused = 1 */\n dup2\n swap1\n sstore\n pop\n /* \"contracts/utils/Pausable.sol\":2690:2712 Unpaused(_msgSender()) */\n 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa\n /* \"contracts/utils/Pausable.sol\":2699:2711 _msgSender() */\n tag_126\n /* \"contracts/utils/Pausable.sol\":2699:2709 _msgSender */\n tag_72\n /* \"contracts/utils/Pausable.sol\":2699:2711 _msgSender() */\n jump\t// in\n tag_126:\n /* \"contracts/utils/Pausable.sol\":2690:2712 Unpaused(_msgSender()) */\n mload(0x40)\n tag_127\n swap2\n swap1\n tag_117\n jump\t// in\n tag_127:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log1\n /* \"contracts/utils/Pausable.sol\":2606:2719 function _unpause() internal virtual whenPaused {... */\n jump\t// out\n /* \"contracts/utils/Pausable.sol\":2362:2474 function _pause() internal virtual whenNotPaused {... */\n tag_92:\n /* \"contracts/utils/Pausable.sol\":1353:1372 _requireNotPaused() */\n tag_129\n /* \"contracts/utils/Pausable.sol\":1353:1370 _requireNotPaused */\n tag_130\n /* \"contracts/utils/Pausable.sol\":1353:1372 _requireNotPaused() */\n jump\t// in\n tag_129:\n /* \"contracts/utils/Pausable.sol\":2431:2432 2 */\n 0x02\n /* \"contracts/utils/Pausable.sol\":2421:2428 _paused */\n 0x05\n /* \"contracts/utils/Pausable.sol\":2421:2432 _paused = 2 */\n dup2\n swap1\n sstore\n pop\n /* \"contracts/utils/Pausable.sol\":2447:2467 Paused(_msgSender()) */\n 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258\n /* \"contracts/utils/Pausable.sol\":2454:2466 _msgSender() */\n tag_132\n /* \"contracts/utils/Pausable.sol\":2454:2464 _msgSender */\n tag_72\n /* \"contracts/utils/Pausable.sol\":2454:2466 _msgSender() */\n jump\t// in\n tag_132:\n /* \"contracts/utils/Pausable.sol\":2447:2467 Paused(_msgSender()) */\n mload(0x40)\n tag_133\n swap2\n swap1\n tag_117\n jump\t// in\n tag_133:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log1\n /* \"contracts/utils/Pausable.sol\":2362:2474 function _pause() internal virtual whenNotPaused {... */\n jump\t// out\n /* \"contracts/token/ERC20/ERC20.sol\":9605:10037 function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {... */\n tag_106:\n /* \"contracts/token/ERC20/ERC20.sol\":9734:9735 0 */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":9717:9736 owner == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"contracts/token/ERC20/ERC20.sol\":9717:9722 owner */\n dup5\n /* \"contracts/token/ERC20/ERC20.sol\":9717:9736 owner == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"contracts/token/ERC20/ERC20.sol\":9713:9802 if (owner == address(0)) {... */\n tag_135\n jumpi\n /* \"contracts/token/ERC20/ERC20.sol\":9788:9789 0 */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":9759:9791 ERC20InvalidApprover(address(0)) */\n mload(0x40)\n 0xe602df0500000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_136\n swap2\n swap1\n tag_117\n jump\t// in\n tag_136:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"contracts/token/ERC20/ERC20.sol\":9713:9802 if (owner == address(0)) {... */\n tag_135:\n /* \"contracts/token/ERC20/ERC20.sol\":9834:9835 0 */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":9815:9836 spender == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"contracts/token/ERC20/ERC20.sol\":9815:9822 spender */\n dup4\n /* \"contracts/token/ERC20/ERC20.sol\":9815:9836 spender == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"contracts/token/ERC20/ERC20.sol\":9811:9901 if (spender == address(0)) {... */\n tag_137\n jumpi\n /* \"contracts/token/ERC20/ERC20.sol\":9887:9888 0 */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":9859:9890 ERC20InvalidSpender(address(0)) */\n mload(0x40)\n 0x94280d6200000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_138\n swap2\n swap1\n tag_117\n jump\t// in\n tag_138:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"contracts/token/ERC20/ERC20.sol\":9811:9901 if (spender == address(0)) {... */\n tag_137:\n /* \"contracts/token/ERC20/ERC20.sol\":9940:9945 value */\n dup2\n /* \"contracts/token/ERC20/ERC20.sol\":9910:9921 _allowances */\n 0x01\n /* \"contracts/token/ERC20/ERC20.sol\":9910:9928 _allowances[owner] */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":9922:9927 owner */\n dup7\n /* \"contracts/token/ERC20/ERC20.sol\":9910:9928 _allowances[owner] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"contracts/token/ERC20/ERC20.sol\":9910:9937 _allowances[owner][spender] */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":9929:9936 spender */\n dup6\n /* \"contracts/token/ERC20/ERC20.sol\":9910:9937 _allowances[owner][spender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"contracts/token/ERC20/ERC20.sol\":9910:9945 _allowances[owner][spender] = value */\n dup2\n swap1\n sstore\n pop\n /* \"contracts/token/ERC20/ERC20.sol\":9959:9968 emitEvent */\n dup1\n /* \"contracts/token/ERC20/ERC20.sol\":9955:10031 if (emitEvent) {... */\n iszero\n tag_139\n jumpi\n /* \"contracts/token/ERC20/ERC20.sol\":10005:10012 spender */\n dup3\n /* \"contracts/token/ERC20/ERC20.sol\":9989:10020 Approval(owner, spender, value) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"contracts/token/ERC20/ERC20.sol\":9998:10003 owner */\n dup5\n /* \"contracts/token/ERC20/ERC20.sol\":9989:10020 Approval(owner, spender, value) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925\n /* \"contracts/token/ERC20/ERC20.sol\":10014:10019 value */\n dup5\n /* \"contracts/token/ERC20/ERC20.sol\":9989:10020 Approval(owner, spender, value) */\n mload(0x40)\n tag_140\n swap2\n swap1\n tag_29\n jump\t// in\n tag_140:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log3\n /* \"contracts/token/ERC20/ERC20.sol\":9955:10031 if (emitEvent) {... */\n tag_139:\n /* \"contracts/token/ERC20/ERC20.sol\":9605:10037 function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {... */\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"contracts/token/ERC20/extensions/ERC20Pausable.sol\":1113:1258 function _update(address from, address to, uint256 value) internal virtual override whenNotPaused {... */\n tag_121:\n /* \"contracts/utils/Pausable.sol\":1353:1372 _requireNotPaused() */\n tag_142\n /* \"contracts/utils/Pausable.sol\":1353:1370 _requireNotPaused */\n tag_130\n /* \"contracts/utils/Pausable.sol\":1353:1372 _requireNotPaused() */\n jump\t// in\n tag_142:\n /* \"contracts/token/ERC20/extensions/ERC20Pausable.sol\":1221:1251 super._update(from, to, value) */\n tag_144\n /* \"contracts/token/ERC20/extensions/ERC20Pausable.sol\":1235:1239 from */\n dup4\n /* \"contracts/token/ERC20/extensions/ERC20Pausable.sol\":1241:1243 to */\n dup4\n /* \"contracts/token/ERC20/extensions/ERC20Pausable.sol\":1245:1250 value */\n dup4\n /* \"contracts/token/ERC20/extensions/ERC20Pausable.sol\":1221:1234 super._update */\n tag_145\n /* \"contracts/token/ERC20/extensions/ERC20Pausable.sol\":1221:1251 super._update(from, to, value) */\n jump\t// in\n tag_144:\n /* \"contracts/token/ERC20/extensions/ERC20Pausable.sol\":1113:1258 function _update(address from, address to, uint256 value) internal virtual override whenNotPaused {... */\n pop\n pop\n pop\n jump\t// out\n /* \"contracts/utils/Pausable.sol\":2101:2227 function _requirePaused() internal view virtual {... */\n tag_124:\n /* \"contracts/utils/Pausable.sol\":2164:2172 paused() */\n tag_147\n /* \"contracts/utils/Pausable.sol\":2164:2170 paused */\n tag_42\n /* \"contracts/utils/Pausable.sol\":2164:2172 paused() */\n jump\t// in\n tag_147:\n /* \"contracts/utils/Pausable.sol\":2159:2221 if (!paused()) {... */\n tag_148\n jumpi\n /* \"contracts/utils/Pausable.sol\":2195:2210 ExpectedPause() */\n mload(0x40)\n 0x8dfc202b00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"contracts/utils/Pausable.sol\":2159:2221 if (!paused()) {... */\n tag_148:\n /* \"contracts/utils/Pausable.sol\":2101:2227 function _requirePaused() internal view virtual {... */\n jump\t// out\n /* \"contracts/utils/Pausable.sol\":1901:2029 function _requireNotPaused() internal view virtual {... */\n tag_130:\n /* \"contracts/utils/Pausable.sol\":1966:1974 paused() */\n tag_150\n /* \"contracts/utils/Pausable.sol\":1966:1972 paused */\n tag_42\n /* \"contracts/utils/Pausable.sol\":1966:1974 paused() */\n jump\t// in\n tag_150:\n /* \"contracts/utils/Pausable.sol\":1962:2023 if (paused()) {... */\n iszero\n tag_151\n jumpi\n /* \"contracts/utils/Pausable.sol\":1997:2012 EnforcedPause() */\n mload(0x40)\n 0xd93c066500000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"contracts/utils/Pausable.sol\":1962:2023 if (paused()) {... */\n tag_151:\n /* \"contracts/utils/Pausable.sol\":1901:2029 function _requireNotPaused() internal view virtual {... */\n jump\t// out\n /* \"contracts/token/ERC20/ERC20.sol\":5912:7019 function _update(address from, address to, uint256 value) internal virtual {... */\n tag_145:\n /* \"contracts/token/ERC20/ERC20.sol\":6017:6018 0 */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":6001:6019 from == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"contracts/token/ERC20/ERC20.sol\":6001:6005 from */\n dup4\n /* \"contracts/token/ERC20/ERC20.sol\":6001:6019 from == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"contracts/token/ERC20/ERC20.sol\":5997:6537 if (from == address(0)) {... */\n tag_153\n jumpi\n /* \"contracts/token/ERC20/ERC20.sol\":6153:6158 value */\n dup1\n /* \"contracts/token/ERC20/ERC20.sol\":6137:6149 _totalSupply */\n 0x02\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":6137:6158 _totalSupply += value */\n dup3\n dup3\n sload\n tag_154\n swap2\n swap1\n tag_155\n jump\t// in\n tag_154:\n swap3\n pop\n pop\n dup2\n swap1\n sstore\n pop\n /* \"contracts/token/ERC20/ERC20.sol\":5997:6537 if (from == address(0)) {... */\n jump(tag_156)\n tag_153:\n /* \"contracts/token/ERC20/ERC20.sol\":6189:6208 uint256 fromBalance */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":6211:6220 _balances */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":6211:6226 _balances[from] */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":6221:6225 from */\n dup6\n /* \"contracts/token/ERC20/ERC20.sol\":6211:6226 _balances[from] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n sload\n /* \"contracts/token/ERC20/ERC20.sol\":6189:6226 uint256 fromBalance = _balances[from] */\n swap1\n pop\n /* \"contracts/token/ERC20/ERC20.sol\":6258:6263 value */\n dup2\n /* \"contracts/token/ERC20/ERC20.sol\":6244:6255 fromBalance */\n dup2\n /* \"contracts/token/ERC20/ERC20.sol\":6244:6263 fromBalance < value */\n lt\n /* \"contracts/token/ERC20/ERC20.sol\":6240:6355 if (fromBalance < value) {... */\n iszero\n tag_157\n jumpi\n /* \"contracts/token/ERC20/ERC20.sol\":6315:6319 from */\n dup4\n /* \"contracts/token/ERC20/ERC20.sol\":6321:6332 fromBalance */\n dup2\n /* \"contracts/token/ERC20/ERC20.sol\":6334:6339 value */\n dup4\n /* \"contracts/token/ERC20/ERC20.sol\":6290:6340 ERC20InsufficientBalance(from, fromBalance, value) */\n mload(0x40)\n 0xe450d38c00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_158\n swap4\n swap3\n swap2\n swap1\n tag_112\n jump\t// in\n tag_158:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"contracts/token/ERC20/ERC20.sol\":6240:6355 if (fromBalance < value) {... */\n tag_157:\n /* \"contracts/token/ERC20/ERC20.sol\":6507:6512 value */\n dup2\n /* \"contracts/token/ERC20/ERC20.sol\":6493:6504 fromBalance */\n dup2\n /* \"contracts/token/ERC20/ERC20.sol\":6493:6512 fromBalance - value */\n sub\n /* \"contracts/token/ERC20/ERC20.sol\":6475:6484 _balances */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":6475:6490 _balances[from] */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":6485:6489 from */\n dup7\n /* \"contracts/token/ERC20/ERC20.sol\":6475:6490 _balances[from] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"contracts/token/ERC20/ERC20.sol\":6475:6512 _balances[from] = fromBalance - value */\n dup2\n swap1\n sstore\n pop\n /* \"contracts/token/ERC20/ERC20.sol\":6175:6537 {... */\n pop\n /* \"contracts/token/ERC20/ERC20.sol\":5997:6537 if (from == address(0)) {... */\n tag_156:\n /* \"contracts/token/ERC20/ERC20.sol\":6565:6566 0 */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":6551:6567 to == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"contracts/token/ERC20/ERC20.sol\":6551:6553 to */\n dup3\n /* \"contracts/token/ERC20/ERC20.sol\":6551:6567 to == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"contracts/token/ERC20/ERC20.sol\":6547:6972 if (to == address(0)) {... */\n tag_159\n jumpi\n /* \"contracts/token/ERC20/ERC20.sol\":6730:6735 value */\n dup1\n /* \"contracts/token/ERC20/ERC20.sol\":6714:6726 _totalSupply */\n 0x02\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":6714:6735 _totalSupply -= value */\n dup3\n dup3\n sload\n sub\n swap3\n pop\n pop\n dup2\n swap1\n sstore\n pop\n /* \"contracts/token/ERC20/ERC20.sol\":6547:6972 if (to == address(0)) {... */\n jump(tag_160)\n tag_159:\n /* \"contracts/token/ERC20/ERC20.sol\":6942:6947 value */\n dup1\n /* \"contracts/token/ERC20/ERC20.sol\":6925:6934 _balances */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":6925:6938 _balances[to] */\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":6935:6937 to */\n dup5\n /* \"contracts/token/ERC20/ERC20.sol\":6925:6938 _balances[to] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n 0x00\n /* \"contracts/token/ERC20/ERC20.sol\":6925:6947 _balances[to] += value */\n dup3\n dup3\n sload\n add\n swap3\n pop\n pop\n dup2\n swap1\n sstore\n pop\n /* \"contracts/token/ERC20/ERC20.sol\":6547:6972 if (to == address(0)) {... */\n tag_160:\n /* \"contracts/token/ERC20/ERC20.sol\":7002:7004 to */\n dup2\n /* \"contracts/token/ERC20/ERC20.sol\":6987:7012 Transfer(from, to, value) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"contracts/token/ERC20/ERC20.sol\":6996:7000 from */\n dup4\n /* \"contracts/token/ERC20/ERC20.sol\":6987:7012 Transfer(from, to, value) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\n /* \"contracts/token/ERC20/ERC20.sol\":7006:7011 value */\n dup4\n /* \"contracts/token/ERC20/ERC20.sol\":6987:7012 Transfer(from, to, value) */\n mload(0x40)\n tag_161\n swap2\n swap1\n tag_29\n jump\t// in\n tag_161:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log3\n /* \"contracts/token/ERC20/ERC20.sol\":5912:7019 function _update(address from, address to, uint256 value) internal virtual {... */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":7:106 */\n tag_162:\n /* \"#utility.yul\":59:65 */\n 0x00\n /* \"#utility.yul\":93:98 */\n dup2\n /* \"#utility.yul\":87:99 */\n mload\n /* \"#utility.yul\":77:99 */\n swap1\n pop\n /* \"#utility.yul\":7:106 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":112:281 */\n tag_163:\n /* \"#utility.yul\":196:207 */\n 0x00\n /* \"#utility.yul\":230:236 */\n dup3\n /* \"#utility.yul\":225:228 */\n dup3\n /* \"#utility.yul\":218:237 */\n mstore\n /* \"#utility.yul\":270:274 */\n 0x20\n /* \"#utility.yul\":265:268 */\n dup3\n /* \"#utility.yul\":261:275 */\n add\n /* \"#utility.yul\":246:275 */\n swap1\n pop\n /* \"#utility.yul\":112:281 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":287:426 */\n tag_164:\n /* \"#utility.yul\":376:382 */\n dup3\n /* \"#utility.yul\":371:374 */\n dup2\n /* \"#utility.yul\":366:369 */\n dup4\n /* \"#utility.yul\":360:383 */\n mcopy\n /* \"#utility.yul\":417:418 */\n 0x00\n /* \"#utility.yul\":408:414 */\n dup4\n /* \"#utility.yul\":403:406 */\n dup4\n /* \"#utility.yul\":399:415 */\n add\n /* \"#utility.yul\":392:419 */\n mstore\n /* \"#utility.yul\":287:426 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":432:534 */\n tag_165:\n /* \"#utility.yul\":473:479 */\n 0x00\n /* \"#utility.yul\":524:526 */\n 0x1f\n /* \"#utility.yul\":520:527 */\n not\n /* \"#utility.yul\":515:517 */\n 0x1f\n /* \"#utility.yul\":508:513 */\n dup4\n /* \"#utility.yul\":504:518 */\n add\n /* \"#utility.yul\":500:528 */\n and\n /* \"#utility.yul\":490:528 */\n swap1\n pop\n /* \"#utility.yul\":432:534 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":540:917 */\n tag_166:\n /* \"#utility.yul\":628:631 */\n 0x00\n /* \"#utility.yul\":656:695 */\n tag_191\n /* \"#utility.yul\":689:694 */\n dup3\n /* \"#utility.yul\":656:695 */\n tag_162\n jump\t// in\n tag_191:\n /* \"#utility.yul\":711:782 */\n tag_192\n /* \"#utility.yul\":775:781 */\n dup2\n /* \"#utility.yul\":770:773 */\n dup6\n /* \"#utility.yul\":711:782 */\n tag_163\n jump\t// in\n tag_192:\n /* \"#utility.yul\":704:782 */\n swap4\n pop\n /* \"#utility.yul\":791:856 */\n tag_193\n /* \"#utility.yul\":849:855 */\n dup2\n /* \"#utility.yul\":844:847 */\n dup6\n /* \"#utility.yul\":837:841 */\n 0x20\n /* \"#utility.yul\":830:835 */\n dup7\n /* \"#utility.yul\":826:842 */\n add\n /* \"#utility.yul\":791:856 */\n tag_164\n jump\t// in\n tag_193:\n /* \"#utility.yul\":881:910 */\n tag_194\n /* \"#utility.yul\":903:909 */\n dup2\n /* \"#utility.yul\":881:910 */\n tag_165\n jump\t// in\n tag_194:\n /* \"#utility.yul\":876:879 */\n dup5\n /* \"#utility.yul\":872:911 */\n add\n /* \"#utility.yul\":865:911 */\n swap2\n pop\n /* \"#utility.yul\":632:917 */\n pop\n /* \"#utility.yul\":540:917 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":923:1236 */\n tag_19:\n /* \"#utility.yul\":1036:1040 */\n 0x00\n /* \"#utility.yul\":1074:1076 */\n 0x20\n /* \"#utility.yul\":1063:1072 */\n dup3\n /* \"#utility.yul\":1059:1077 */\n add\n /* \"#utility.yul\":1051:1077 */\n swap1\n pop\n /* \"#utility.yul\":1123:1132 */\n dup2\n /* \"#utility.yul\":1117:1121 */\n dup2\n /* \"#utility.yul\":1113:1133 */\n sub\n /* \"#utility.yul\":1109:1110 */\n 0x00\n /* \"#utility.yul\":1098:1107 */\n dup4\n /* \"#utility.yul\":1094:1111 */\n add\n /* \"#utility.yul\":1087:1134 */\n mstore\n /* \"#utility.yul\":1151:1229 */\n tag_196\n /* \"#utility.yul\":1224:1228 */\n dup2\n /* \"#utility.yul\":1215:1221 */\n dup5\n /* \"#utility.yul\":1151:1229 */\n tag_166\n jump\t// in\n tag_196:\n /* \"#utility.yul\":1143:1229 */\n swap1\n pop\n /* \"#utility.yul\":923:1236 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1323:1440 */\n tag_168:\n /* \"#utility.yul\":1432:1433 */\n 0x00\n /* \"#utility.yul\":1429:1430 */\n 0x00\n /* \"#utility.yul\":1422:1434 */\n revert\n /* \"#utility.yul\":1569:1695 */\n tag_170:\n /* \"#utility.yul\":1606:1613 */\n 0x00\n /* \"#utility.yul\":1646:1688 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":1639:1644 */\n dup3\n /* \"#utility.yul\":1635:1689 */\n and\n /* \"#utility.yul\":1624:1689 */\n swap1\n pop\n /* \"#utility.yul\":1569:1695 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1701:1797 */\n tag_171:\n /* \"#utility.yul\":1738:1745 */\n 0x00\n /* \"#utility.yul\":1767:1791 */\n tag_202\n /* \"#utility.yul\":1785:1790 */\n dup3\n /* \"#utility.yul\":1767:1791 */\n tag_170\n jump\t// in\n tag_202:\n /* \"#utility.yul\":1756:1791 */\n swap1\n pop\n /* \"#utility.yul\":1701:1797 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1803:1925 */\n tag_172:\n /* \"#utility.yul\":1876:1900 */\n tag_204\n /* \"#utility.yul\":1894:1899 */\n dup2\n /* \"#utility.yul\":1876:1900 */\n tag_171\n jump\t// in\n tag_204:\n /* \"#utility.yul\":1869:1874 */\n dup2\n /* \"#utility.yul\":1866:1901 */\n eq\n /* \"#utility.yul\":1856:1919 */\n tag_205\n jumpi\n /* \"#utility.yul\":1915:1916 */\n 0x00\n /* \"#utility.yul\":1912:1913 */\n 0x00\n /* \"#utility.yul\":1905:1917 */\n revert\n /* \"#utility.yul\":1856:1919 */\n tag_205:\n /* \"#utility.yul\":1803:1925 */\n pop\n jump\t// out\n /* \"#utility.yul\":1931:2070 */\n tag_173:\n /* \"#utility.yul\":1977:1982 */\n 0x00\n /* \"#utility.yul\":2015:2021 */\n dup2\n /* \"#utility.yul\":2002:2022 */\n calldataload\n /* \"#utility.yul\":1993:2022 */\n swap1\n pop\n /* \"#utility.yul\":2031:2064 */\n tag_207\n /* \"#utility.yul\":2058:2063 */\n dup2\n /* \"#utility.yul\":2031:2064 */\n tag_172\n jump\t// in\n tag_207:\n /* \"#utility.yul\":1931:2070 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2076:2153 */\n tag_174:\n /* \"#utility.yul\":2113:2120 */\n 0x00\n /* \"#utility.yul\":2142:2147 */\n dup2\n /* \"#utility.yul\":2131:2147 */\n swap1\n pop\n /* \"#utility.yul\":2076:2153 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2159:2281 */\n tag_175:\n /* \"#utility.yul\":2232:2256 */\n tag_210\n /* \"#utility.yul\":2250:2255 */\n dup2\n /* \"#utility.yul\":2232:2256 */\n tag_174\n jump\t// in\n tag_210:\n /* \"#utility.yul\":2225:2230 */\n dup2\n /* \"#utility.yul\":2222:2257 */\n eq\n /* \"#utility.yul\":2212:2275 */\n tag_211\n jumpi\n /* \"#utility.yul\":2271:2272 */\n 0x00\n /* \"#utility.yul\":2268:2269 */\n 0x00\n /* \"#utility.yul\":2261:2273 */\n revert\n /* \"#utility.yul\":2212:2275 */\n tag_211:\n /* \"#utility.yul\":2159:2281 */\n pop\n jump\t// out\n /* \"#utility.yul\":2287:2426 */\n tag_176:\n /* \"#utility.yul\":2333:2338 */\n 0x00\n /* \"#utility.yul\":2371:2377 */\n dup2\n /* \"#utility.yul\":2358:2378 */\n calldataload\n /* \"#utility.yul\":2349:2378 */\n swap1\n pop\n /* \"#utility.yul\":2387:2420 */\n tag_213\n /* \"#utility.yul\":2414:2419 */\n dup2\n /* \"#utility.yul\":2387:2420 */\n tag_175\n jump\t// in\n tag_213:\n /* \"#utility.yul\":2287:2426 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2432:2906 */\n tag_22:\n /* \"#utility.yul\":2500:2506 */\n 0x00\n /* \"#utility.yul\":2508:2514 */\n 0x00\n /* \"#utility.yul\":2557:2559 */\n 0x40\n /* \"#utility.yul\":2545:2554 */\n dup4\n /* \"#utility.yul\":2536:2543 */\n dup6\n /* \"#utility.yul\":2532:2555 */\n sub\n /* \"#utility.yul\":2528:2560 */\n slt\n /* \"#utility.yul\":2525:2644 */\n iszero\n tag_215\n jumpi\n /* \"#utility.yul\":2563:2642 */\n tag_216\n tag_168\n jump\t// in\n tag_216:\n /* \"#utility.yul\":2525:2644 */\n tag_215:\n /* \"#utility.yul\":2683:2684 */\n 0x00\n /* \"#utility.yul\":2708:2761 */\n tag_217\n /* \"#utility.yul\":2753:2760 */\n dup6\n /* \"#utility.yul\":2744:2750 */\n dup3\n /* \"#utility.yul\":2733:2742 */\n dup7\n /* \"#utility.yul\":2729:2751 */\n add\n /* \"#utility.yul\":2708:2761 */\n tag_173\n jump\t// in\n tag_217:\n /* \"#utility.yul\":2698:2761 */\n swap3\n pop\n /* \"#utility.yul\":2654:2771 */\n pop\n /* \"#utility.yul\":2810:2812 */\n 0x20\n /* \"#utility.yul\":2836:2889 */\n tag_218\n /* \"#utility.yul\":2881:2888 */\n dup6\n /* \"#utility.yul\":2872:2878 */\n dup3\n /* \"#utility.yul\":2861:2870 */\n dup7\n /* \"#utility.yul\":2857:2879 */\n add\n /* \"#utility.yul\":2836:2889 */\n tag_176\n jump\t// in\n tag_218:\n /* \"#utility.yul\":2826:2889 */\n swap2\n pop\n /* \"#utility.yul\":2781:2899 */\n pop\n /* \"#utility.yul\":2432:2906 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2912:3002 */\n tag_177:\n /* \"#utility.yul\":2946:2953 */\n 0x00\n /* \"#utility.yul\":2989:2994 */\n dup2\n /* \"#utility.yul\":2982:2995 */\n iszero\n /* \"#utility.yul\":2975:2996 */\n iszero\n /* \"#utility.yul\":2964:2996 */\n swap1\n pop\n /* \"#utility.yul\":2912:3002 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":3008:3117 */\n tag_178:\n /* \"#utility.yul\":3089:3110 */\n tag_221\n /* \"#utility.yul\":3104:3109 */\n dup2\n /* \"#utility.yul\":3089:3110 */\n tag_177\n jump\t// in\n tag_221:\n /* \"#utility.yul\":3084:3087 */\n dup3\n /* \"#utility.yul\":3077:3111 */\n mstore\n /* \"#utility.yul\":3008:3117 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3123:3333 */\n tag_25:\n /* \"#utility.yul\":3210:3214 */\n 0x00\n /* \"#utility.yul\":3248:3250 */\n 0x20\n /* \"#utility.yul\":3237:3246 */\n dup3\n /* \"#utility.yul\":3233:3251 */\n add\n /* \"#utility.yul\":3225:3251 */\n swap1\n pop\n /* \"#utility.yul\":3261:3326 */\n tag_223\n /* \"#utility.yul\":3323:3324 */\n 0x00\n /* \"#utility.yul\":3312:3321 */\n dup4\n /* \"#utility.yul\":3308:3325 */\n add\n /* \"#utility.yul\":3299:3305 */\n dup5\n /* \"#utility.yul\":3261:3326 */\n tag_178\n jump\t// in\n tag_223:\n /* \"#utility.yul\":3123:3333 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3339:3457 */\n tag_179:\n /* \"#utility.yul\":3426:3450 */\n tag_225\n /* \"#utility.yul\":3444:3449 */\n dup2\n /* \"#utility.yul\":3426:3450 */\n tag_174\n jump\t// in\n tag_225:\n /* \"#utility.yul\":3421:3424 */\n dup3\n /* \"#utility.yul\":3414:3451 */\n mstore\n /* \"#utility.yul\":3339:3457 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3463:3685 */\n tag_29:\n /* \"#utility.yul\":3556:3560 */\n 0x00\n /* \"#utility.yul\":3594:3596 */\n 0x20\n /* \"#utility.yul\":3583:3592 */\n dup3\n /* \"#utility.yul\":3579:3597 */\n add\n /* \"#utility.yul\":3571:3597 */\n swap1\n pop\n /* \"#utility.yul\":3607:3678 */\n tag_227\n /* \"#utility.yul\":3675:3676 */\n 0x00\n /* \"#utility.yul\":3664:3673 */\n dup4\n /* \"#utility.yul\":3660:3677 */\n add\n /* \"#utility.yul\":3651:3657 */\n dup5\n /* \"#utility.yul\":3607:3678 */\n tag_179\n jump\t// in\n tag_227:\n /* \"#utility.yul\":3463:3685 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3691:4310 */\n tag_32:\n /* \"#utility.yul\":3768:3774 */\n 0x00\n /* \"#utility.yul\":3776:3782 */\n 0x00\n /* \"#utility.yul\":3784:3790 */\n 0x00\n /* \"#utility.yul\":3833:3835 */\n 0x60\n /* \"#utility.yul\":3821:3830 */\n dup5\n /* \"#utility.yul\":3812:3819 */\n dup7\n /* \"#utility.yul\":3808:3831 */\n sub\n /* \"#utility.yul\":3804:3836 */\n slt\n /* \"#utility.yul\":3801:3920 */\n iszero\n tag_229\n jumpi\n /* \"#utility.yul\":3839:3918 */\n tag_230\n tag_168\n jump\t// in\n tag_230:\n /* \"#utility.yul\":3801:3920 */\n tag_229:\n /* \"#utility.yul\":3959:3960 */\n 0x00\n /* \"#utility.yul\":3984:4037 */\n tag_231\n /* \"#utility.yul\":4029:4036 */\n dup7\n /* \"#utility.yul\":4020:4026 */\n dup3\n /* \"#utility.yul\":4009:4018 */\n dup8\n /* \"#utility.yul\":4005:4027 */\n add\n /* \"#utility.yul\":3984:4037 */\n tag_173\n jump\t// in\n tag_231:\n /* \"#utility.yul\":3974:4037 */\n swap4\n pop\n /* \"#utility.yul\":3930:4047 */\n pop\n /* \"#utility.yul\":4086:4088 */\n 0x20\n /* \"#utility.yul\":4112:4165 */\n tag_232\n /* \"#utility.yul\":4157:4164 */\n dup7\n /* \"#utility.yul\":4148:4154 */\n dup3\n /* \"#utility.yul\":4137:4146 */\n dup8\n /* \"#utility.yul\":4133:4155 */\n add\n /* \"#utility.yul\":4112:4165 */\n tag_173\n jump\t// in\n tag_232:\n /* \"#utility.yul\":4102:4165 */\n swap3\n pop\n /* \"#utility.yul\":4057:4175 */\n pop\n /* \"#utility.yul\":4214:4216 */\n 0x40\n /* \"#utility.yul\":4240:4293 */\n tag_233\n /* \"#utility.yul\":4285:4292 */\n dup7\n /* \"#utility.yul\":4276:4282 */\n dup3\n /* \"#utility.yul\":4265:4274 */\n dup8\n /* \"#utility.yul\":4261:4283 */\n add\n /* \"#utility.yul\":4240:4293 */\n tag_176\n jump\t// in\n tag_233:\n /* \"#utility.yul\":4230:4293 */\n swap2\n pop\n /* \"#utility.yul\":4185:4303 */\n pop\n /* \"#utility.yul\":3691:4310 */\n swap3\n pop\n swap3\n pop\n swap3\n jump\t// out\n /* \"#utility.yul\":4316:4402 */\n tag_180:\n /* \"#utility.yul\":4351:4358 */\n 0x00\n /* \"#utility.yul\":4391:4395 */\n 0xff\n /* \"#utility.yul\":4384:4389 */\n dup3\n /* \"#utility.yul\":4380:4396 */\n and\n /* \"#utility.yul\":4369:4396 */\n swap1\n pop\n /* \"#utility.yul\":4316:4402 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":4408:4520 */\n tag_181:\n /* \"#utility.yul\":4491:4513 */\n tag_236\n /* \"#utility.yul\":4507:4512 */\n dup2\n /* \"#utility.yul\":4491:4513 */\n tag_180\n jump\t// in\n tag_236:\n /* \"#utility.yul\":4486:4489 */\n dup3\n /* \"#utility.yul\":4479:4514 */\n mstore\n /* \"#utility.yul\":4408:4520 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4526:4740 */\n tag_38:\n /* \"#utility.yul\":4615:4619 */\n 0x00\n /* \"#utility.yul\":4653:4655 */\n 0x20\n /* \"#utility.yul\":4642:4651 */\n dup3\n /* \"#utility.yul\":4638:4656 */\n add\n /* \"#utility.yul\":4630:4656 */\n swap1\n pop\n /* \"#utility.yul\":4666:4733 */\n tag_238\n /* \"#utility.yul\":4730:4731 */\n 0x00\n /* \"#utility.yul\":4719:4728 */\n dup4\n /* \"#utility.yul\":4715:4732 */\n add\n /* \"#utility.yul\":4706:4712 */\n dup5\n /* \"#utility.yul\":4666:4733 */\n tag_181\n jump\t// in\n tag_238:\n /* \"#utility.yul\":4526:4740 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4746:5075 */\n tag_46:\n /* \"#utility.yul\":4805:4811 */\n 0x00\n /* \"#utility.yul\":4854:4856 */\n 0x20\n /* \"#utility.yul\":4842:4851 */\n dup3\n /* \"#utility.yul\":4833:4840 */\n dup5\n /* \"#utility.yul\":4829:4852 */\n sub\n /* \"#utility.yul\":4825:4857 */\n slt\n /* \"#utility.yul\":4822:4941 */\n iszero\n tag_240\n jumpi\n /* \"#utility.yul\":4860:4939 */\n tag_241\n tag_168\n jump\t// in\n tag_241:\n /* \"#utility.yul\":4822:4941 */\n tag_240:\n /* \"#utility.yul\":4980:4981 */\n 0x00\n /* \"#utility.yul\":5005:5058 */\n tag_242\n /* \"#utility.yul\":5050:5057 */\n dup5\n /* \"#utility.yul\":5041:5047 */\n dup3\n /* \"#utility.yul\":5030:5039 */\n dup6\n /* \"#utility.yul\":5026:5048 */\n add\n /* \"#utility.yul\":5005:5058 */\n tag_173\n jump\t// in\n tag_242:\n /* \"#utility.yul\":4995:5058 */\n swap2\n pop\n /* \"#utility.yul\":4951:5068 */\n pop\n /* \"#utility.yul\":4746:5075 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":5081:5555 */\n tag_60:\n /* \"#utility.yul\":5149:5155 */\n 0x00\n /* \"#utility.yul\":5157:5163 */\n 0x00\n /* \"#utility.yul\":5206:5208 */\n 0x40\n /* \"#utility.yul\":5194:5203 */\n dup4\n /* \"#utility.yul\":5185:5192 */\n dup6\n /* \"#utility.yul\":5181:5204 */\n sub\n /* \"#utility.yul\":5177:5209 */\n slt\n /* \"#utility.yul\":5174:5293 */\n iszero\n tag_244\n jumpi\n /* \"#utility.yul\":5212:5291 */\n tag_245\n tag_168\n jump\t// in\n tag_245:\n /* \"#utility.yul\":5174:5293 */\n tag_244:\n /* \"#utility.yul\":5332:5333 */\n 0x00\n /* \"#utility.yul\":5357:5410 */\n tag_246\n /* \"#utility.yul\":5402:5409 */\n dup6\n /* \"#utility.yul\":5393:5399 */\n dup3\n /* \"#utility.yul\":5382:5391 */\n dup7\n /* \"#utility.yul\":5378:5400 */\n add\n /* \"#utility.yul\":5357:5410 */\n tag_173\n jump\t// in\n tag_246:\n /* \"#utility.yul\":5347:5410 */\n swap3\n pop\n /* \"#utility.yul\":5303:5420 */\n pop\n /* \"#utility.yul\":5459:5461 */\n 0x20\n /* \"#utility.yul\":5485:5538 */\n tag_247\n /* \"#utility.yul\":5530:5537 */\n dup6\n /* \"#utility.yul\":5521:5527 */\n dup3\n /* \"#utility.yul\":5510:5519 */\n dup7\n /* \"#utility.yul\":5506:5528 */\n add\n /* \"#utility.yul\":5485:5538 */\n tag_173\n jump\t// in\n tag_247:\n /* \"#utility.yul\":5475:5538 */\n swap2\n pop\n /* \"#utility.yul\":5430:5548 */\n pop\n /* \"#utility.yul\":5081:5555 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":5561:5741 */\n tag_182:\n /* \"#utility.yul\":5609:5686 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":5606:5607 */\n 0x00\n /* \"#utility.yul\":5599:5687 */\n mstore\n /* \"#utility.yul\":5706:5710 */\n 0x22\n /* \"#utility.yul\":5703:5704 */\n 0x04\n /* \"#utility.yul\":5696:5711 */\n mstore\n /* \"#utility.yul\":5730:5734 */\n 0x24\n /* \"#utility.yul\":5727:5728 */\n 0x00\n /* \"#utility.yul\":5720:5735 */\n revert\n /* \"#utility.yul\":5747:6067 */\n tag_65:\n /* \"#utility.yul\":5791:5797 */\n 0x00\n /* \"#utility.yul\":5828:5829 */\n 0x02\n /* \"#utility.yul\":5822:5826 */\n dup3\n /* \"#utility.yul\":5818:5830 */\n div\n /* \"#utility.yul\":5808:5830 */\n swap1\n pop\n /* \"#utility.yul\":5875:5876 */\n 0x01\n /* \"#utility.yul\":5869:5873 */\n dup3\n /* \"#utility.yul\":5865:5877 */\n and\n /* \"#utility.yul\":5896:5914 */\n dup1\n /* \"#utility.yul\":5886:5967 */\n tag_250\n jumpi\n /* \"#utility.yul\":5952:5956 */\n 0x7f\n /* \"#utility.yul\":5944:5950 */\n dup3\n /* \"#utility.yul\":5940:5957 */\n and\n /* \"#utility.yul\":5930:5957 */\n swap2\n pop\n /* \"#utility.yul\":5886:5967 */\n tag_250:\n /* \"#utility.yul\":6014:6016 */\n 0x20\n /* \"#utility.yul\":6006:6012 */\n dup3\n /* \"#utility.yul\":6003:6017 */\n lt\n /* \"#utility.yul\":5983:6001 */\n dup2\n /* \"#utility.yul\":5980:6018 */\n sub\n /* \"#utility.yul\":5977:6061 */\n tag_251\n jumpi\n /* \"#utility.yul\":6033:6051 */\n tag_252\n tag_182\n jump\t// in\n tag_252:\n /* \"#utility.yul\":5977:6061 */\n tag_251:\n /* \"#utility.yul\":5798:6067 */\n pop\n /* \"#utility.yul\":5747:6067 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":6073:6191 */\n tag_183:\n /* \"#utility.yul\":6160:6184 */\n tag_254\n /* \"#utility.yul\":6178:6183 */\n dup2\n /* \"#utility.yul\":6160:6184 */\n tag_171\n jump\t// in\n tag_254:\n /* \"#utility.yul\":6155:6158 */\n dup3\n /* \"#utility.yul\":6148:6185 */\n mstore\n /* \"#utility.yul\":6073:6191 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6197:6639 */\n tag_112:\n /* \"#utility.yul\":6346:6350 */\n 0x00\n /* \"#utility.yul\":6384:6386 */\n 0x60\n /* \"#utility.yul\":6373:6382 */\n dup3\n /* \"#utility.yul\":6369:6387 */\n add\n /* \"#utility.yul\":6361:6387 */\n swap1\n pop\n /* \"#utility.yul\":6397:6468 */\n tag_256\n /* \"#utility.yul\":6465:6466 */\n 0x00\n /* \"#utility.yul\":6454:6463 */\n dup4\n /* \"#utility.yul\":6450:6467 */\n add\n /* \"#utility.yul\":6441:6447 */\n dup7\n /* \"#utility.yul\":6397:6468 */\n tag_183\n jump\t// in\n tag_256:\n /* \"#utility.yul\":6478:6550 */\n tag_257\n /* \"#utility.yul\":6546:6548 */\n 0x20\n /* \"#utility.yul\":6535:6544 */\n dup4\n /* \"#utility.yul\":6531:6549 */\n add\n /* \"#utility.yul\":6522:6528 */\n dup6\n /* \"#utility.yul\":6478:6550 */\n tag_179\n jump\t// in\n tag_257:\n /* \"#utility.yul\":6560:6632 */\n tag_258\n /* \"#utility.yul\":6628:6630 */\n 0x40\n /* \"#utility.yul\":6617:6626 */\n dup4\n /* \"#utility.yul\":6613:6631 */\n add\n /* \"#utility.yul\":6604:6610 */\n dup5\n /* \"#utility.yul\":6560:6632 */\n tag_179\n jump\t// in\n tag_258:\n /* \"#utility.yul\":6197:6639 */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6645:6867 */\n tag_117:\n /* \"#utility.yul\":6738:6742 */\n 0x00\n /* \"#utility.yul\":6776:6778 */\n 0x20\n /* \"#utility.yul\":6765:6774 */\n dup3\n /* \"#utility.yul\":6761:6779 */\n add\n /* \"#utility.yul\":6753:6779 */\n swap1\n pop\n /* \"#utility.yul\":6789:6860 */\n tag_260\n /* \"#utility.yul\":6857:6858 */\n 0x00\n /* \"#utility.yul\":6846:6855 */\n dup4\n /* \"#utility.yul\":6842:6859 */\n add\n /* \"#utility.yul\":6833:6839 */\n dup5\n /* \"#utility.yul\":6789:6860 */\n tag_183\n jump\t// in\n tag_260:\n /* \"#utility.yul\":6645:6867 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6873:7053 */\n tag_184:\n /* \"#utility.yul\":6921:6998 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":6918:6919 */\n 0x00\n /* \"#utility.yul\":6911:6999 */\n mstore\n /* \"#utility.yul\":7018:7022 */\n 0x11\n /* \"#utility.yul\":7015:7016 */\n 0x04\n /* \"#utility.yul\":7008:7023 */\n mstore\n /* \"#utility.yul\":7042:7046 */\n 0x24\n /* \"#utility.yul\":7039:7040 */\n 0x00\n /* \"#utility.yul\":7032:7047 */\n revert\n /* \"#utility.yul\":7059:7250 */\n tag_155:\n /* \"#utility.yul\":7099:7102 */\n 0x00\n /* \"#utility.yul\":7118:7138 */\n tag_263\n /* \"#utility.yul\":7136:7137 */\n dup3\n /* \"#utility.yul\":7118:7138 */\n tag_174\n jump\t// in\n tag_263:\n /* \"#utility.yul\":7113:7138 */\n swap2\n pop\n /* \"#utility.yul\":7152:7172 */\n tag_264\n /* \"#utility.yul\":7170:7171 */\n dup4\n /* \"#utility.yul\":7152:7172 */\n tag_174\n jump\t// in\n tag_264:\n /* \"#utility.yul\":7147:7172 */\n swap3\n pop\n /* \"#utility.yul\":7195:7196 */\n dup3\n /* \"#utility.yul\":7192:7193 */\n dup3\n /* \"#utility.yul\":7188:7197 */\n add\n /* \"#utility.yul\":7181:7197 */\n swap1\n pop\n /* \"#utility.yul\":7216:7219 */\n dup1\n /* \"#utility.yul\":7213:7214 */\n dup3\n /* \"#utility.yul\":7210:7220 */\n gt\n /* \"#utility.yul\":7207:7243 */\n iszero\n tag_265\n jumpi\n /* \"#utility.yul\":7223:7241 */\n tag_266\n tag_184\n jump\t// in\n tag_266:\n /* \"#utility.yul\":7207:7243 */\n tag_265:\n /* \"#utility.yul\":7059:7250 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n\n auxdata: 0xa264697066735822122079df6ef2f44460794c07db31a82c5404990135ae596d303e977888265cf5450064736f6c634300081e0033\n}\n", + "bytecode": { + "functionDebugData": { + "@_12": { + "entryPoint": null, + "id": 12, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_216": { + "entryPoint": null, + "id": 216, + "parameterSlots": 2, + "returnSlots": 0 + }, + "array_dataslot_t_string_storage": { + "entryPoint": 311, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_length_t_string_memory_ptr": { + "entryPoint": 163, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "clean_up_bytearray_end_slots_t_string_storage": { + "entryPoint": 599, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "cleanup_t_uint256": { + "entryPoint": 437, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "clear_storage_range_t_bytes1": { + "entryPoint": 565, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "convert_t_uint256_to_t_uint256": { + "entryPoint": 455, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": { + "entryPoint": 736, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "divide_by_32_ceil": { + "entryPoint": 329, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "extract_byte_array_length": { + "entryPoint": 263, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "extract_used_part_and_set_length_of_short_byte_array": { + "entryPoint": 709, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "identity": { + "entryPoint": 446, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "mask_bytes_dynamic": { + "entryPoint": 681, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "panic_error_0x22": { + "entryPoint": 218, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 173, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "prepare_store_t_uint256": { + "entryPoint": 488, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "shift_left_dynamic": { + "entryPoint": 344, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "shift_right_unsigned_dynamic": { + "entryPoint": 669, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "storage_set_to_zero_t_uint256": { + "entryPoint": 541, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "update_byte_slice_dynamic32": { + "entryPoint": 356, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "update_storage_value_t_uint256_to_t_uint256": { + "entryPoint": 497, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "zero_value_for_split_t_uint256": { + "entryPoint": 534, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:5231:8", + "nodeType": "YulBlock", + "src": "0:5231:8", + "statements": [ + { + "body": { + "nativeSrc": "66:40:8", + "nodeType": "YulBlock", + "src": "66:40:8", + "statements": [ + { + "nativeSrc": "77:22:8", + "nodeType": "YulAssignment", + "src": "77:22:8", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "93:5:8", + "nodeType": "YulIdentifier", + "src": "93:5:8" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "87:5:8", + "nodeType": "YulIdentifier", + "src": "87:5:8" + }, + "nativeSrc": "87:12:8", + "nodeType": "YulFunctionCall", + "src": "87:12:8" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "77:6:8", + "nodeType": "YulIdentifier", + "src": "77:6:8" + } + ] + } + ] + }, + "name": "array_length_t_string_memory_ptr", + "nativeSrc": "7:99:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "49:5:8", + "nodeType": "YulTypedName", + "src": "49:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nativeSrc": "59:6:8", + "nodeType": "YulTypedName", + "src": "59:6:8", + "type": "" + } + ], + "src": "7:99:8" + }, + { + "body": { + "nativeSrc": "140:152:8", + "nodeType": "YulBlock", + "src": "140:152:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "157:1:8", + "nodeType": "YulLiteral", + "src": "157:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "160:77:8", + "nodeType": "YulLiteral", + "src": "160:77:8", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "150:6:8", + "nodeType": "YulIdentifier", + "src": "150:6:8" + }, + "nativeSrc": "150:88:8", + "nodeType": "YulFunctionCall", + "src": "150:88:8" + }, + "nativeSrc": "150:88:8", + "nodeType": "YulExpressionStatement", + "src": "150:88:8" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "254:1:8", + "nodeType": "YulLiteral", + "src": "254:1:8", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "257:4:8", + "nodeType": "YulLiteral", + "src": "257:4:8", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "247:6:8", + "nodeType": "YulIdentifier", + "src": "247:6:8" + }, + "nativeSrc": "247:15:8", + "nodeType": "YulFunctionCall", + "src": "247:15:8" + }, + "nativeSrc": "247:15:8", + "nodeType": "YulExpressionStatement", + "src": "247:15:8" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "278:1:8", + "nodeType": "YulLiteral", + "src": "278:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "281:4:8", + "nodeType": "YulLiteral", + "src": "281:4:8", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "271:6:8", + "nodeType": "YulIdentifier", + "src": "271:6:8" + }, + "nativeSrc": "271:15:8", + "nodeType": "YulFunctionCall", + "src": "271:15:8" + }, + "nativeSrc": "271:15:8", + "nodeType": "YulExpressionStatement", + "src": "271:15:8" + } + ] + }, + "name": "panic_error_0x41", + "nativeSrc": "112:180:8", + "nodeType": "YulFunctionDefinition", + "src": "112:180:8" + }, + { + "body": { + "nativeSrc": "326:152:8", + "nodeType": "YulBlock", + "src": "326:152:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "343:1:8", + "nodeType": "YulLiteral", + "src": "343:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "346:77:8", + "nodeType": "YulLiteral", + "src": "346:77:8", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "336:6:8", + "nodeType": "YulIdentifier", + "src": "336:6:8" + }, + "nativeSrc": "336:88:8", + "nodeType": "YulFunctionCall", + "src": "336:88:8" + }, + "nativeSrc": "336:88:8", + "nodeType": "YulExpressionStatement", + "src": "336:88:8" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "440:1:8", + "nodeType": "YulLiteral", + "src": "440:1:8", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "443:4:8", + "nodeType": "YulLiteral", + "src": "443:4:8", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "433:6:8", + "nodeType": "YulIdentifier", + "src": "433:6:8" + }, + "nativeSrc": "433:15:8", + "nodeType": "YulFunctionCall", + "src": "433:15:8" + }, + "nativeSrc": "433:15:8", + "nodeType": "YulExpressionStatement", + "src": "433:15:8" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "464:1:8", + "nodeType": "YulLiteral", + "src": "464:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "467:4:8", + "nodeType": "YulLiteral", + "src": "467:4:8", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "457:6:8", + "nodeType": "YulIdentifier", + "src": "457:6:8" + }, + "nativeSrc": "457:15:8", + "nodeType": "YulFunctionCall", + "src": "457:15:8" + }, + "nativeSrc": "457:15:8", + "nodeType": "YulExpressionStatement", + "src": "457:15:8" + } + ] + }, + "name": "panic_error_0x22", + "nativeSrc": "298:180:8", + "nodeType": "YulFunctionDefinition", + "src": "298:180:8" + }, + { + "body": { + "nativeSrc": "535:269:8", + "nodeType": "YulBlock", + "src": "535:269:8", + "statements": [ + { + "nativeSrc": "545:22:8", + "nodeType": "YulAssignment", + "src": "545:22:8", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "559:4:8", + "nodeType": "YulIdentifier", + "src": "559:4:8" + }, + { + "kind": "number", + "nativeSrc": "565:1:8", + "nodeType": "YulLiteral", + "src": "565:1:8", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "555:3:8", + "nodeType": "YulIdentifier", + "src": "555:3:8" + }, + "nativeSrc": "555:12:8", + "nodeType": "YulFunctionCall", + "src": "555:12:8" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "545:6:8", + "nodeType": "YulIdentifier", + "src": "545:6:8" + } + ] + }, + { + "nativeSrc": "576:38:8", + "nodeType": "YulVariableDeclaration", + "src": "576:38:8", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "606:4:8", + "nodeType": "YulIdentifier", + "src": "606:4:8" + }, + { + "kind": "number", + "nativeSrc": "612:1:8", + "nodeType": "YulLiteral", + "src": "612:1:8", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "602:3:8", + "nodeType": "YulIdentifier", + "src": "602:3:8" + }, + "nativeSrc": "602:12:8", + "nodeType": "YulFunctionCall", + "src": "602:12:8" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "580:18:8", + "nodeType": "YulTypedName", + "src": "580:18:8", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "653:51:8", + "nodeType": "YulBlock", + "src": "653:51:8", + "statements": [ + { + "nativeSrc": "667:27:8", + "nodeType": "YulAssignment", + "src": "667:27:8", + "value": { + "arguments": [ + { + "name": "length", + "nativeSrc": "681:6:8", + "nodeType": "YulIdentifier", + "src": "681:6:8" + }, + { + "kind": "number", + "nativeSrc": "689:4:8", + "nodeType": "YulLiteral", + "src": "689:4:8", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "677:3:8", + "nodeType": "YulIdentifier", + "src": "677:3:8" + }, + "nativeSrc": "677:17:8", + "nodeType": "YulFunctionCall", + "src": "677:17:8" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "667:6:8", + "nodeType": "YulIdentifier", + "src": "667:6:8" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "633:18:8", + "nodeType": "YulIdentifier", + "src": "633:18:8" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "626:6:8", + "nodeType": "YulIdentifier", + "src": "626:6:8" + }, + "nativeSrc": "626:26:8", + "nodeType": "YulFunctionCall", + "src": "626:26:8" + }, + "nativeSrc": "623:81:8", + "nodeType": "YulIf", + "src": "623:81:8" + }, + { + "body": { + "nativeSrc": "756:42:8", + "nodeType": "YulBlock", + "src": "756:42:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x22", + "nativeSrc": "770:16:8", + "nodeType": "YulIdentifier", + "src": "770:16:8" + }, + "nativeSrc": "770:18:8", + "nodeType": "YulFunctionCall", + "src": "770:18:8" + }, + "nativeSrc": "770:18:8", + "nodeType": "YulExpressionStatement", + "src": "770:18:8" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "720:18:8", + "nodeType": "YulIdentifier", + "src": "720:18:8" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "743:6:8", + "nodeType": "YulIdentifier", + "src": "743:6:8" + }, + { + "kind": "number", + "nativeSrc": "751:2:8", + "nodeType": "YulLiteral", + "src": "751:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "740:2:8", + "nodeType": "YulIdentifier", + "src": "740:2:8" + }, + "nativeSrc": "740:14:8", + "nodeType": "YulFunctionCall", + "src": "740:14:8" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "717:2:8", + "nodeType": "YulIdentifier", + "src": "717:2:8" + }, + "nativeSrc": "717:38:8", + "nodeType": "YulFunctionCall", + "src": "717:38:8" + }, + "nativeSrc": "714:84:8", + "nodeType": "YulIf", + "src": "714:84:8" + } + ] + }, + "name": "extract_byte_array_length", + "nativeSrc": "484:320:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "519:4:8", + "nodeType": "YulTypedName", + "src": "519:4:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nativeSrc": "528:6:8", + "nodeType": "YulTypedName", + "src": "528:6:8", + "type": "" + } + ], + "src": "484:320:8" + }, + { + "body": { + "nativeSrc": "864:87:8", + "nodeType": "YulBlock", + "src": "864:87:8", + "statements": [ + { + "nativeSrc": "874:11:8", + "nodeType": "YulAssignment", + "src": "874:11:8", + "value": { + "name": "ptr", + "nativeSrc": "882:3:8", + "nodeType": "YulIdentifier", + "src": "882:3:8" + }, + "variableNames": [ + { + "name": "data", + "nativeSrc": "874:4:8", + "nodeType": "YulIdentifier", + "src": "874:4:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "902:1:8", + "nodeType": "YulLiteral", + "src": "902:1:8", + "type": "", + "value": "0" + }, + { + "name": "ptr", + "nativeSrc": "905:3:8", + "nodeType": "YulIdentifier", + "src": "905:3:8" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "895:6:8", + "nodeType": "YulIdentifier", + "src": "895:6:8" + }, + "nativeSrc": "895:14:8", + "nodeType": "YulFunctionCall", + "src": "895:14:8" + }, + "nativeSrc": "895:14:8", + "nodeType": "YulExpressionStatement", + "src": "895:14:8" + }, + { + "nativeSrc": "918:26:8", + "nodeType": "YulAssignment", + "src": "918:26:8", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "936:1:8", + "nodeType": "YulLiteral", + "src": "936:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "939:4:8", + "nodeType": "YulLiteral", + "src": "939:4:8", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "926:9:8", + "nodeType": "YulIdentifier", + "src": "926:9:8" + }, + "nativeSrc": "926:18:8", + "nodeType": "YulFunctionCall", + "src": "926:18:8" + }, + "variableNames": [ + { + "name": "data", + "nativeSrc": "918:4:8", + "nodeType": "YulIdentifier", + "src": "918:4:8" + } + ] + } + ] + }, + "name": "array_dataslot_t_string_storage", + "nativeSrc": "810:141:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nativeSrc": "851:3:8", + "nodeType": "YulTypedName", + "src": "851:3:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nativeSrc": "859:4:8", + "nodeType": "YulTypedName", + "src": "859:4:8", + "type": "" + } + ], + "src": "810:141:8" + }, + { + "body": { + "nativeSrc": "1001:49:8", + "nodeType": "YulBlock", + "src": "1001:49:8", + "statements": [ + { + "nativeSrc": "1011:33:8", + "nodeType": "YulAssignment", + "src": "1011:33:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "1029:5:8", + "nodeType": "YulIdentifier", + "src": "1029:5:8" + }, + { + "kind": "number", + "nativeSrc": "1036:2:8", + "nodeType": "YulLiteral", + "src": "1036:2:8", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1025:3:8", + "nodeType": "YulIdentifier", + "src": "1025:3:8" + }, + "nativeSrc": "1025:14:8", + "nodeType": "YulFunctionCall", + "src": "1025:14:8" + }, + { + "kind": "number", + "nativeSrc": "1041:2:8", + "nodeType": "YulLiteral", + "src": "1041:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "1021:3:8", + "nodeType": "YulIdentifier", + "src": "1021:3:8" + }, + "nativeSrc": "1021:23:8", + "nodeType": "YulFunctionCall", + "src": "1021:23:8" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "1011:6:8", + "nodeType": "YulIdentifier", + "src": "1011:6:8" + } + ] + } + ] + }, + "name": "divide_by_32_ceil", + "nativeSrc": "957:93:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "984:5:8", + "nodeType": "YulTypedName", + "src": "984:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nativeSrc": "994:6:8", + "nodeType": "YulTypedName", + "src": "994:6:8", + "type": "" + } + ], + "src": "957:93:8" + }, + { + "body": { + "nativeSrc": "1109:54:8", + "nodeType": "YulBlock", + "src": "1109:54:8", + "statements": [ + { + "nativeSrc": "1119:37:8", + "nodeType": "YulAssignment", + "src": "1119:37:8", + "value": { + "arguments": [ + { + "name": "bits", + "nativeSrc": "1144:4:8", + "nodeType": "YulIdentifier", + "src": "1144:4:8" + }, + { + "name": "value", + "nativeSrc": "1150:5:8", + "nodeType": "YulIdentifier", + "src": "1150:5:8" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1140:3:8", + "nodeType": "YulIdentifier", + "src": "1140:3:8" + }, + "nativeSrc": "1140:16:8", + "nodeType": "YulFunctionCall", + "src": "1140:16:8" + }, + "variableNames": [ + { + "name": "newValue", + "nativeSrc": "1119:8:8", + "nodeType": "YulIdentifier", + "src": "1119:8:8" + } + ] + } + ] + }, + "name": "shift_left_dynamic", + "nativeSrc": "1056:107:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "bits", + "nativeSrc": "1084:4:8", + "nodeType": "YulTypedName", + "src": "1084:4:8", + "type": "" + }, + { + "name": "value", + "nativeSrc": "1090:5:8", + "nodeType": "YulTypedName", + "src": "1090:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "newValue", + "nativeSrc": "1100:8:8", + "nodeType": "YulTypedName", + "src": "1100:8:8", + "type": "" + } + ], + "src": "1056:107:8" + }, + { + "body": { + "nativeSrc": "1245:317:8", + "nodeType": "YulBlock", + "src": "1245:317:8", + "statements": [ + { + "nativeSrc": "1255:35:8", + "nodeType": "YulVariableDeclaration", + "src": "1255:35:8", + "value": { + "arguments": [ + { + "name": "shiftBytes", + "nativeSrc": "1276:10:8", + "nodeType": "YulIdentifier", + "src": "1276:10:8" + }, + { + "kind": "number", + "nativeSrc": "1288:1:8", + "nodeType": "YulLiteral", + "src": "1288:1:8", + "type": "", + "value": "8" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "1272:3:8", + "nodeType": "YulIdentifier", + "src": "1272:3:8" + }, + "nativeSrc": "1272:18:8", + "nodeType": "YulFunctionCall", + "src": "1272:18:8" + }, + "variables": [ + { + "name": "shiftBits", + "nativeSrc": "1259:9:8", + "nodeType": "YulTypedName", + "src": "1259:9:8", + "type": "" + } + ] + }, + { + "nativeSrc": "1299:109:8", + "nodeType": "YulVariableDeclaration", + "src": "1299:109:8", + "value": { + "arguments": [ + { + "name": "shiftBits", + "nativeSrc": "1330:9:8", + "nodeType": "YulIdentifier", + "src": "1330:9:8" + }, + { + "kind": "number", + "nativeSrc": "1341:66:8", + "nodeType": "YulLiteral", + "src": "1341:66:8", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "shift_left_dynamic", + "nativeSrc": "1311:18:8", + "nodeType": "YulIdentifier", + "src": "1311:18:8" + }, + "nativeSrc": "1311:97:8", + "nodeType": "YulFunctionCall", + "src": "1311:97:8" + }, + "variables": [ + { + "name": "mask", + "nativeSrc": "1303:4:8", + "nodeType": "YulTypedName", + "src": "1303:4:8", + "type": "" + } + ] + }, + { + "nativeSrc": "1417:51:8", + "nodeType": "YulAssignment", + "src": "1417:51:8", + "value": { + "arguments": [ + { + "name": "shiftBits", + "nativeSrc": "1448:9:8", + "nodeType": "YulIdentifier", + "src": "1448:9:8" + }, + { + "name": "toInsert", + "nativeSrc": "1459:8:8", + "nodeType": "YulIdentifier", + "src": "1459:8:8" + } + ], + "functionName": { + "name": "shift_left_dynamic", + "nativeSrc": "1429:18:8", + "nodeType": "YulIdentifier", + "src": "1429:18:8" + }, + "nativeSrc": "1429:39:8", + "nodeType": "YulFunctionCall", + "src": "1429:39:8" + }, + "variableNames": [ + { + "name": "toInsert", + "nativeSrc": "1417:8:8", + "nodeType": "YulIdentifier", + "src": "1417:8:8" + } + ] + }, + { + "nativeSrc": "1477:30:8", + "nodeType": "YulAssignment", + "src": "1477:30:8", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "1490:5:8", + "nodeType": "YulIdentifier", + "src": "1490:5:8" + }, + { + "arguments": [ + { + "name": "mask", + "nativeSrc": "1501:4:8", + "nodeType": "YulIdentifier", + "src": "1501:4:8" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "1497:3:8", + "nodeType": "YulIdentifier", + "src": "1497:3:8" + }, + "nativeSrc": "1497:9:8", + "nodeType": "YulFunctionCall", + "src": "1497:9:8" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1486:3:8", + "nodeType": "YulIdentifier", + "src": "1486:3:8" + }, + "nativeSrc": "1486:21:8", + "nodeType": "YulFunctionCall", + "src": "1486:21:8" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "1477:5:8", + "nodeType": "YulIdentifier", + "src": "1477:5:8" + } + ] + }, + { + "nativeSrc": "1516:40:8", + "nodeType": "YulAssignment", + "src": "1516:40:8", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "1529:5:8", + "nodeType": "YulIdentifier", + "src": "1529:5:8" + }, + { + "arguments": [ + { + "name": "toInsert", + "nativeSrc": "1540:8:8", + "nodeType": "YulIdentifier", + "src": "1540:8:8" + }, + { + "name": "mask", + "nativeSrc": "1550:4:8", + "nodeType": "YulIdentifier", + "src": "1550:4:8" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1536:3:8", + "nodeType": "YulIdentifier", + "src": "1536:3:8" + }, + "nativeSrc": "1536:19:8", + "nodeType": "YulFunctionCall", + "src": "1536:19:8" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "1526:2:8", + "nodeType": "YulIdentifier", + "src": "1526:2:8" + }, + "nativeSrc": "1526:30:8", + "nodeType": "YulFunctionCall", + "src": "1526:30:8" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "1516:6:8", + "nodeType": "YulIdentifier", + "src": "1516:6:8" + } + ] + } + ] + }, + "name": "update_byte_slice_dynamic32", + "nativeSrc": "1169:393:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "1206:5:8", + "nodeType": "YulTypedName", + "src": "1206:5:8", + "type": "" + }, + { + "name": "shiftBytes", + "nativeSrc": "1213:10:8", + "nodeType": "YulTypedName", + "src": "1213:10:8", + "type": "" + }, + { + "name": "toInsert", + "nativeSrc": "1225:8:8", + "nodeType": "YulTypedName", + "src": "1225:8:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nativeSrc": "1238:6:8", + "nodeType": "YulTypedName", + "src": "1238:6:8", + "type": "" + } + ], + "src": "1169:393:8" + }, + { + "body": { + "nativeSrc": "1613:32:8", + "nodeType": "YulBlock", + "src": "1613:32:8", + "statements": [ + { + "nativeSrc": "1623:16:8", + "nodeType": "YulAssignment", + "src": "1623:16:8", + "value": { + "name": "value", + "nativeSrc": "1634:5:8", + "nodeType": "YulIdentifier", + "src": "1634:5:8" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "1623:7:8", + "nodeType": "YulIdentifier", + "src": "1623:7:8" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nativeSrc": "1568:77:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "1595:5:8", + "nodeType": "YulTypedName", + "src": "1595:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "1605:7:8", + "nodeType": "YulTypedName", + "src": "1605:7:8", + "type": "" + } + ], + "src": "1568:77:8" + }, + { + "body": { + "nativeSrc": "1683:28:8", + "nodeType": "YulBlock", + "src": "1683:28:8", + "statements": [ + { + "nativeSrc": "1693:12:8", + "nodeType": "YulAssignment", + "src": "1693:12:8", + "value": { + "name": "value", + "nativeSrc": "1700:5:8", + "nodeType": "YulIdentifier", + "src": "1700:5:8" + }, + "variableNames": [ + { + "name": "ret", + "nativeSrc": "1693:3:8", + "nodeType": "YulIdentifier", + "src": "1693:3:8" + } + ] + } + ] + }, + "name": "identity", + "nativeSrc": "1651:60:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "1669:5:8", + "nodeType": "YulTypedName", + "src": "1669:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nativeSrc": "1679:3:8", + "nodeType": "YulTypedName", + "src": "1679:3:8", + "type": "" + } + ], + "src": "1651:60:8" + }, + { + "body": { + "nativeSrc": "1777:82:8", + "nodeType": "YulBlock", + "src": "1777:82:8", + "statements": [ + { + "nativeSrc": "1787:66:8", + "nodeType": "YulAssignment", + "src": "1787:66:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "1845:5:8", + "nodeType": "YulIdentifier", + "src": "1845:5:8" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nativeSrc": "1827:17:8", + "nodeType": "YulIdentifier", + "src": "1827:17:8" + }, + "nativeSrc": "1827:24:8", + "nodeType": "YulFunctionCall", + "src": "1827:24:8" + } + ], + "functionName": { + "name": "identity", + "nativeSrc": "1818:8:8", + "nodeType": "YulIdentifier", + "src": "1818:8:8" + }, + "nativeSrc": "1818:34:8", + "nodeType": "YulFunctionCall", + "src": "1818:34:8" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nativeSrc": "1800:17:8", + "nodeType": "YulIdentifier", + "src": "1800:17:8" + }, + "nativeSrc": "1800:53:8", + "nodeType": "YulFunctionCall", + "src": "1800:53:8" + }, + "variableNames": [ + { + "name": "converted", + "nativeSrc": "1787:9:8", + "nodeType": "YulIdentifier", + "src": "1787:9:8" + } + ] + } + ] + }, + "name": "convert_t_uint256_to_t_uint256", + "nativeSrc": "1717:142:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "1757:5:8", + "nodeType": "YulTypedName", + "src": "1757:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nativeSrc": "1767:9:8", + "nodeType": "YulTypedName", + "src": "1767:9:8", + "type": "" + } + ], + "src": "1717:142:8" + }, + { + "body": { + "nativeSrc": "1912:28:8", + "nodeType": "YulBlock", + "src": "1912:28:8", + "statements": [ + { + "nativeSrc": "1922:12:8", + "nodeType": "YulAssignment", + "src": "1922:12:8", + "value": { + "name": "value", + "nativeSrc": "1929:5:8", + "nodeType": "YulIdentifier", + "src": "1929:5:8" + }, + "variableNames": [ + { + "name": "ret", + "nativeSrc": "1922:3:8", + "nodeType": "YulIdentifier", + "src": "1922:3:8" + } + ] + } + ] + }, + "name": "prepare_store_t_uint256", + "nativeSrc": "1865:75:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "1898:5:8", + "nodeType": "YulTypedName", + "src": "1898:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nativeSrc": "1908:3:8", + "nodeType": "YulTypedName", + "src": "1908:3:8", + "type": "" + } + ], + "src": "1865:75:8" + }, + { + "body": { + "nativeSrc": "2022:193:8", + "nodeType": "YulBlock", + "src": "2022:193:8", + "statements": [ + { + "nativeSrc": "2032:63:8", + "nodeType": "YulVariableDeclaration", + "src": "2032:63:8", + "value": { + "arguments": [ + { + "name": "value_0", + "nativeSrc": "2087:7:8", + "nodeType": "YulIdentifier", + "src": "2087:7:8" + } + ], + "functionName": { + "name": "convert_t_uint256_to_t_uint256", + "nativeSrc": "2056:30:8", + "nodeType": "YulIdentifier", + "src": "2056:30:8" + }, + "nativeSrc": "2056:39:8", + "nodeType": "YulFunctionCall", + "src": "2056:39:8" + }, + "variables": [ + { + "name": "convertedValue_0", + "nativeSrc": "2036:16:8", + "nodeType": "YulTypedName", + "src": "2036:16:8", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "2111:4:8", + "nodeType": "YulIdentifier", + "src": "2111:4:8" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nativeSrc": "2151:4:8", + "nodeType": "YulIdentifier", + "src": "2151:4:8" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "2145:5:8", + "nodeType": "YulIdentifier", + "src": "2145:5:8" + }, + "nativeSrc": "2145:11:8", + "nodeType": "YulFunctionCall", + "src": "2145:11:8" + }, + { + "name": "offset", + "nativeSrc": "2158:6:8", + "nodeType": "YulIdentifier", + "src": "2158:6:8" + }, + { + "arguments": [ + { + "name": "convertedValue_0", + "nativeSrc": "2190:16:8", + "nodeType": "YulIdentifier", + "src": "2190:16:8" + } + ], + "functionName": { + "name": "prepare_store_t_uint256", + "nativeSrc": "2166:23:8", + "nodeType": "YulIdentifier", + "src": "2166:23:8" + }, + "nativeSrc": "2166:41:8", + "nodeType": "YulFunctionCall", + "src": "2166:41:8" + } + ], + "functionName": { + "name": "update_byte_slice_dynamic32", + "nativeSrc": "2117:27:8", + "nodeType": "YulIdentifier", + "src": "2117:27:8" + }, + "nativeSrc": "2117:91:8", + "nodeType": "YulFunctionCall", + "src": "2117:91:8" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "2104:6:8", + "nodeType": "YulIdentifier", + "src": "2104:6:8" + }, + "nativeSrc": "2104:105:8", + "nodeType": "YulFunctionCall", + "src": "2104:105:8" + }, + "nativeSrc": "2104:105:8", + "nodeType": "YulExpressionStatement", + "src": "2104:105:8" + } + ] + }, + "name": "update_storage_value_t_uint256_to_t_uint256", + "nativeSrc": "1946:269:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nativeSrc": "1999:4:8", + "nodeType": "YulTypedName", + "src": "1999:4:8", + "type": "" + }, + { + "name": "offset", + "nativeSrc": "2005:6:8", + "nodeType": "YulTypedName", + "src": "2005:6:8", + "type": "" + }, + { + "name": "value_0", + "nativeSrc": "2013:7:8", + "nodeType": "YulTypedName", + "src": "2013:7:8", + "type": "" + } + ], + "src": "1946:269:8" + }, + { + "body": { + "nativeSrc": "2270:24:8", + "nodeType": "YulBlock", + "src": "2270:24:8", + "statements": [ + { + "nativeSrc": "2280:8:8", + "nodeType": "YulAssignment", + "src": "2280:8:8", + "value": { + "kind": "number", + "nativeSrc": "2287:1:8", + "nodeType": "YulLiteral", + "src": "2287:1:8", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "ret", + "nativeSrc": "2280:3:8", + "nodeType": "YulIdentifier", + "src": "2280:3:8" + } + ] + } + ] + }, + "name": "zero_value_for_split_t_uint256", + "nativeSrc": "2221:73:8", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "ret", + "nativeSrc": "2266:3:8", + "nodeType": "YulTypedName", + "src": "2266:3:8", + "type": "" + } + ], + "src": "2221:73:8" + }, + { + "body": { + "nativeSrc": "2353:136:8", + "nodeType": "YulBlock", + "src": "2353:136:8", + "statements": [ + { + "nativeSrc": "2363:46:8", + "nodeType": "YulVariableDeclaration", + "src": "2363:46:8", + "value": { + "arguments": [], + "functionName": { + "name": "zero_value_for_split_t_uint256", + "nativeSrc": "2377:30:8", + "nodeType": "YulIdentifier", + "src": "2377:30:8" + }, + "nativeSrc": "2377:32:8", + "nodeType": "YulFunctionCall", + "src": "2377:32:8" + }, + "variables": [ + { + "name": "zero_0", + "nativeSrc": "2367:6:8", + "nodeType": "YulTypedName", + "src": "2367:6:8", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "2462:4:8", + "nodeType": "YulIdentifier", + "src": "2462:4:8" + }, + { + "name": "offset", + "nativeSrc": "2468:6:8", + "nodeType": "YulIdentifier", + "src": "2468:6:8" + }, + { + "name": "zero_0", + "nativeSrc": "2476:6:8", + "nodeType": "YulIdentifier", + "src": "2476:6:8" + } + ], + "functionName": { + "name": "update_storage_value_t_uint256_to_t_uint256", + "nativeSrc": "2418:43:8", + "nodeType": "YulIdentifier", + "src": "2418:43:8" + }, + "nativeSrc": "2418:65:8", + "nodeType": "YulFunctionCall", + "src": "2418:65:8" + }, + "nativeSrc": "2418:65:8", + "nodeType": "YulExpressionStatement", + "src": "2418:65:8" + } + ] + }, + "name": "storage_set_to_zero_t_uint256", + "nativeSrc": "2300:189:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nativeSrc": "2339:4:8", + "nodeType": "YulTypedName", + "src": "2339:4:8", + "type": "" + }, + { + "name": "offset", + "nativeSrc": "2345:6:8", + "nodeType": "YulTypedName", + "src": "2345:6:8", + "type": "" + } + ], + "src": "2300:189:8" + }, + { + "body": { + "nativeSrc": "2545:136:8", + "nodeType": "YulBlock", + "src": "2545:136:8", + "statements": [ + { + "body": { + "nativeSrc": "2612:63:8", + "nodeType": "YulBlock", + "src": "2612:63:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "start", + "nativeSrc": "2656:5:8", + "nodeType": "YulIdentifier", + "src": "2656:5:8" + }, + { + "kind": "number", + "nativeSrc": "2663:1:8", + "nodeType": "YulLiteral", + "src": "2663:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "storage_set_to_zero_t_uint256", + "nativeSrc": "2626:29:8", + "nodeType": "YulIdentifier", + "src": "2626:29:8" + }, + "nativeSrc": "2626:39:8", + "nodeType": "YulFunctionCall", + "src": "2626:39:8" + }, + "nativeSrc": "2626:39:8", + "nodeType": "YulExpressionStatement", + "src": "2626:39:8" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "start", + "nativeSrc": "2565:5:8", + "nodeType": "YulIdentifier", + "src": "2565:5:8" + }, + { + "name": "end", + "nativeSrc": "2572:3:8", + "nodeType": "YulIdentifier", + "src": "2572:3:8" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "2562:2:8", + "nodeType": "YulIdentifier", + "src": "2562:2:8" + }, + "nativeSrc": "2562:14:8", + "nodeType": "YulFunctionCall", + "src": "2562:14:8" + }, + "nativeSrc": "2555:120:8", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "2577:26:8", + "nodeType": "YulBlock", + "src": "2577:26:8", + "statements": [ + { + "nativeSrc": "2579:22:8", + "nodeType": "YulAssignment", + "src": "2579:22:8", + "value": { + "arguments": [ + { + "name": "start", + "nativeSrc": "2592:5:8", + "nodeType": "YulIdentifier", + "src": "2592:5:8" + }, + { + "kind": "number", + "nativeSrc": "2599:1:8", + "nodeType": "YulLiteral", + "src": "2599:1:8", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2588:3:8", + "nodeType": "YulIdentifier", + "src": "2588:3:8" + }, + "nativeSrc": "2588:13:8", + "nodeType": "YulFunctionCall", + "src": "2588:13:8" + }, + "variableNames": [ + { + "name": "start", + "nativeSrc": "2579:5:8", + "nodeType": "YulIdentifier", + "src": "2579:5:8" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "2559:2:8", + "nodeType": "YulBlock", + "src": "2559:2:8", + "statements": [] + }, + "src": "2555:120:8" + } + ] + }, + "name": "clear_storage_range_t_bytes1", + "nativeSrc": "2495:186:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "start", + "nativeSrc": "2533:5:8", + "nodeType": "YulTypedName", + "src": "2533:5:8", + "type": "" + }, + { + "name": "end", + "nativeSrc": "2540:3:8", + "nodeType": "YulTypedName", + "src": "2540:3:8", + "type": "" + } + ], + "src": "2495:186:8" + }, + { + "body": { + "nativeSrc": "2766:464:8", + "nodeType": "YulBlock", + "src": "2766:464:8", + "statements": [ + { + "body": { + "nativeSrc": "2792:431:8", + "nodeType": "YulBlock", + "src": "2792:431:8", + "statements": [ + { + "nativeSrc": "2806:54:8", + "nodeType": "YulVariableDeclaration", + "src": "2806:54:8", + "value": { + "arguments": [ + { + "name": "array", + "nativeSrc": "2854:5:8", + "nodeType": "YulIdentifier", + "src": "2854:5:8" + } + ], + "functionName": { + "name": "array_dataslot_t_string_storage", + "nativeSrc": "2822:31:8", + "nodeType": "YulIdentifier", + "src": "2822:31:8" + }, + "nativeSrc": "2822:38:8", + "nodeType": "YulFunctionCall", + "src": "2822:38:8" + }, + "variables": [ + { + "name": "dataArea", + "nativeSrc": "2810:8:8", + "nodeType": "YulTypedName", + "src": "2810:8:8", + "type": "" + } + ] + }, + { + "nativeSrc": "2873:63:8", + "nodeType": "YulVariableDeclaration", + "src": "2873:63:8", + "value": { + "arguments": [ + { + "name": "dataArea", + "nativeSrc": "2896:8:8", + "nodeType": "YulIdentifier", + "src": "2896:8:8" + }, + { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "2924:10:8", + "nodeType": "YulIdentifier", + "src": "2924:10:8" + } + ], + "functionName": { + "name": "divide_by_32_ceil", + "nativeSrc": "2906:17:8", + "nodeType": "YulIdentifier", + "src": "2906:17:8" + }, + "nativeSrc": "2906:29:8", + "nodeType": "YulFunctionCall", + "src": "2906:29:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2892:3:8", + "nodeType": "YulIdentifier", + "src": "2892:3:8" + }, + "nativeSrc": "2892:44:8", + "nodeType": "YulFunctionCall", + "src": "2892:44:8" + }, + "variables": [ + { + "name": "deleteStart", + "nativeSrc": "2877:11:8", + "nodeType": "YulTypedName", + "src": "2877:11:8", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "3093:27:8", + "nodeType": "YulBlock", + "src": "3093:27:8", + "statements": [ + { + "nativeSrc": "3095:23:8", + "nodeType": "YulAssignment", + "src": "3095:23:8", + "value": { + "name": "dataArea", + "nativeSrc": "3110:8:8", + "nodeType": "YulIdentifier", + "src": "3110:8:8" + }, + "variableNames": [ + { + "name": "deleteStart", + "nativeSrc": "3095:11:8", + "nodeType": "YulIdentifier", + "src": "3095:11:8" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "3077:10:8", + "nodeType": "YulIdentifier", + "src": "3077:10:8" + }, + { + "kind": "number", + "nativeSrc": "3089:2:8", + "nodeType": "YulLiteral", + "src": "3089:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "3074:2:8", + "nodeType": "YulIdentifier", + "src": "3074:2:8" + }, + "nativeSrc": "3074:18:8", + "nodeType": "YulFunctionCall", + "src": "3074:18:8" + }, + "nativeSrc": "3071:49:8", + "nodeType": "YulIf", + "src": "3071:49:8" + }, + { + "expression": { + "arguments": [ + { + "name": "deleteStart", + "nativeSrc": "3162:11:8", + "nodeType": "YulIdentifier", + "src": "3162:11:8" + }, + { + "arguments": [ + { + "name": "dataArea", + "nativeSrc": "3179:8:8", + "nodeType": "YulIdentifier", + "src": "3179:8:8" + }, + { + "arguments": [ + { + "name": "len", + "nativeSrc": "3207:3:8", + "nodeType": "YulIdentifier", + "src": "3207:3:8" + } + ], + "functionName": { + "name": "divide_by_32_ceil", + "nativeSrc": "3189:17:8", + "nodeType": "YulIdentifier", + "src": "3189:17:8" + }, + "nativeSrc": "3189:22:8", + "nodeType": "YulFunctionCall", + "src": "3189:22:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3175:3:8", + "nodeType": "YulIdentifier", + "src": "3175:3:8" + }, + "nativeSrc": "3175:37:8", + "nodeType": "YulFunctionCall", + "src": "3175:37:8" + } + ], + "functionName": { + "name": "clear_storage_range_t_bytes1", + "nativeSrc": "3133:28:8", + "nodeType": "YulIdentifier", + "src": "3133:28:8" + }, + "nativeSrc": "3133:80:8", + "nodeType": "YulFunctionCall", + "src": "3133:80:8" + }, + "nativeSrc": "3133:80:8", + "nodeType": "YulExpressionStatement", + "src": "3133:80:8" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "len", + "nativeSrc": "2783:3:8", + "nodeType": "YulIdentifier", + "src": "2783:3:8" + }, + { + "kind": "number", + "nativeSrc": "2788:2:8", + "nodeType": "YulLiteral", + "src": "2788:2:8", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "2780:2:8", + "nodeType": "YulIdentifier", + "src": "2780:2:8" + }, + "nativeSrc": "2780:11:8", + "nodeType": "YulFunctionCall", + "src": "2780:11:8" + }, + "nativeSrc": "2777:446:8", + "nodeType": "YulIf", + "src": "2777:446:8" + } + ] + }, + "name": "clean_up_bytearray_end_slots_t_string_storage", + "nativeSrc": "2687:543:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "array", + "nativeSrc": "2742:5:8", + "nodeType": "YulTypedName", + "src": "2742:5:8", + "type": "" + }, + { + "name": "len", + "nativeSrc": "2749:3:8", + "nodeType": "YulTypedName", + "src": "2749:3:8", + "type": "" + }, + { + "name": "startIndex", + "nativeSrc": "2754:10:8", + "nodeType": "YulTypedName", + "src": "2754:10:8", + "type": "" + } + ], + "src": "2687:543:8" + }, + { + "body": { + "nativeSrc": "3299:54:8", + "nodeType": "YulBlock", + "src": "3299:54:8", + "statements": [ + { + "nativeSrc": "3309:37:8", + "nodeType": "YulAssignment", + "src": "3309:37:8", + "value": { + "arguments": [ + { + "name": "bits", + "nativeSrc": "3334:4:8", + "nodeType": "YulIdentifier", + "src": "3334:4:8" + }, + { + "name": "value", + "nativeSrc": "3340:5:8", + "nodeType": "YulIdentifier", + "src": "3340:5:8" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "3330:3:8", + "nodeType": "YulIdentifier", + "src": "3330:3:8" + }, + "nativeSrc": "3330:16:8", + "nodeType": "YulFunctionCall", + "src": "3330:16:8" + }, + "variableNames": [ + { + "name": "newValue", + "nativeSrc": "3309:8:8", + "nodeType": "YulIdentifier", + "src": "3309:8:8" + } + ] + } + ] + }, + "name": "shift_right_unsigned_dynamic", + "nativeSrc": "3236:117:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "bits", + "nativeSrc": "3274:4:8", + "nodeType": "YulTypedName", + "src": "3274:4:8", + "type": "" + }, + { + "name": "value", + "nativeSrc": "3280:5:8", + "nodeType": "YulTypedName", + "src": "3280:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "newValue", + "nativeSrc": "3290:8:8", + "nodeType": "YulTypedName", + "src": "3290:8:8", + "type": "" + } + ], + "src": "3236:117:8" + }, + { + "body": { + "nativeSrc": "3410:118:8", + "nodeType": "YulBlock", + "src": "3410:118:8", + "statements": [ + { + "nativeSrc": "3420:68:8", + "nodeType": "YulVariableDeclaration", + "src": "3420:68:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3469:1:8", + "nodeType": "YulLiteral", + "src": "3469:1:8", + "type": "", + "value": "8" + }, + { + "name": "bytes", + "nativeSrc": "3472:5:8", + "nodeType": "YulIdentifier", + "src": "3472:5:8" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "3465:3:8", + "nodeType": "YulIdentifier", + "src": "3465:3:8" + }, + "nativeSrc": "3465:13:8", + "nodeType": "YulFunctionCall", + "src": "3465:13:8" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3484:1:8", + "nodeType": "YulLiteral", + "src": "3484:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "3480:3:8", + "nodeType": "YulIdentifier", + "src": "3480:3:8" + }, + "nativeSrc": "3480:6:8", + "nodeType": "YulFunctionCall", + "src": "3480:6:8" + } + ], + "functionName": { + "name": "shift_right_unsigned_dynamic", + "nativeSrc": "3436:28:8", + "nodeType": "YulIdentifier", + "src": "3436:28:8" + }, + "nativeSrc": "3436:51:8", + "nodeType": "YulFunctionCall", + "src": "3436:51:8" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "3432:3:8", + "nodeType": "YulIdentifier", + "src": "3432:3:8" + }, + "nativeSrc": "3432:56:8", + "nodeType": "YulFunctionCall", + "src": "3432:56:8" + }, + "variables": [ + { + "name": "mask", + "nativeSrc": "3424:4:8", + "nodeType": "YulTypedName", + "src": "3424:4:8", + "type": "" + } + ] + }, + { + "nativeSrc": "3497:25:8", + "nodeType": "YulAssignment", + "src": "3497:25:8", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "3511:4:8", + "nodeType": "YulIdentifier", + "src": "3511:4:8" + }, + { + "name": "mask", + "nativeSrc": "3517:4:8", + "nodeType": "YulIdentifier", + "src": "3517:4:8" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3507:3:8", + "nodeType": "YulIdentifier", + "src": "3507:3:8" + }, + "nativeSrc": "3507:15:8", + "nodeType": "YulFunctionCall", + "src": "3507:15:8" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "3497:6:8", + "nodeType": "YulIdentifier", + "src": "3497:6:8" + } + ] + } + ] + }, + "name": "mask_bytes_dynamic", + "nativeSrc": "3359:169:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "3387:4:8", + "nodeType": "YulTypedName", + "src": "3387:4:8", + "type": "" + }, + { + "name": "bytes", + "nativeSrc": "3393:5:8", + "nodeType": "YulTypedName", + "src": "3393:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nativeSrc": "3403:6:8", + "nodeType": "YulTypedName", + "src": "3403:6:8", + "type": "" + } + ], + "src": "3359:169:8" + }, + { + "body": { + "nativeSrc": "3614:214:8", + "nodeType": "YulBlock", + "src": "3614:214:8", + "statements": [ + { + "nativeSrc": "3747:37:8", + "nodeType": "YulAssignment", + "src": "3747:37:8", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "3774:4:8", + "nodeType": "YulIdentifier", + "src": "3774:4:8" + }, + { + "name": "len", + "nativeSrc": "3780:3:8", + "nodeType": "YulIdentifier", + "src": "3780:3:8" + } + ], + "functionName": { + "name": "mask_bytes_dynamic", + "nativeSrc": "3755:18:8", + "nodeType": "YulIdentifier", + "src": "3755:18:8" + }, + "nativeSrc": "3755:29:8", + "nodeType": "YulFunctionCall", + "src": "3755:29:8" + }, + "variableNames": [ + { + "name": "data", + "nativeSrc": "3747:4:8", + "nodeType": "YulIdentifier", + "src": "3747:4:8" + } + ] + }, + { + "nativeSrc": "3793:29:8", + "nodeType": "YulAssignment", + "src": "3793:29:8", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "3804:4:8", + "nodeType": "YulIdentifier", + "src": "3804:4:8" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3814:1:8", + "nodeType": "YulLiteral", + "src": "3814:1:8", + "type": "", + "value": "2" + }, + { + "name": "len", + "nativeSrc": "3817:3:8", + "nodeType": "YulIdentifier", + "src": "3817:3:8" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "3810:3:8", + "nodeType": "YulIdentifier", + "src": "3810:3:8" + }, + "nativeSrc": "3810:11:8", + "nodeType": "YulFunctionCall", + "src": "3810:11:8" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "3801:2:8", + "nodeType": "YulIdentifier", + "src": "3801:2:8" + }, + "nativeSrc": "3801:21:8", + "nodeType": "YulFunctionCall", + "src": "3801:21:8" + }, + "variableNames": [ + { + "name": "used", + "nativeSrc": "3793:4:8", + "nodeType": "YulIdentifier", + "src": "3793:4:8" + } + ] + } + ] + }, + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "3533:295:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "3595:4:8", + "nodeType": "YulTypedName", + "src": "3595:4:8", + "type": "" + }, + { + "name": "len", + "nativeSrc": "3601:3:8", + "nodeType": "YulTypedName", + "src": "3601:3:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "used", + "nativeSrc": "3609:4:8", + "nodeType": "YulTypedName", + "src": "3609:4:8", + "type": "" + } + ], + "src": "3533:295:8" + }, + { + "body": { + "nativeSrc": "3925:1303:8", + "nodeType": "YulBlock", + "src": "3925:1303:8", + "statements": [ + { + "nativeSrc": "3936:51:8", + "nodeType": "YulVariableDeclaration", + "src": "3936:51:8", + "value": { + "arguments": [ + { + "name": "src", + "nativeSrc": "3983:3:8", + "nodeType": "YulIdentifier", + "src": "3983:3:8" + } + ], + "functionName": { + "name": "array_length_t_string_memory_ptr", + "nativeSrc": "3950:32:8", + "nodeType": "YulIdentifier", + "src": "3950:32:8" + }, + "nativeSrc": "3950:37:8", + "nodeType": "YulFunctionCall", + "src": "3950:37:8" + }, + "variables": [ + { + "name": "newLen", + "nativeSrc": "3940:6:8", + "nodeType": "YulTypedName", + "src": "3940:6:8", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4072:22:8", + "nodeType": "YulBlock", + "src": "4072:22:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "4074:16:8", + "nodeType": "YulIdentifier", + "src": "4074:16:8" + }, + "nativeSrc": "4074:18:8", + "nodeType": "YulFunctionCall", + "src": "4074:18:8" + }, + "nativeSrc": "4074:18:8", + "nodeType": "YulExpressionStatement", + "src": "4074:18:8" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "4044:6:8", + "nodeType": "YulIdentifier", + "src": "4044:6:8" + }, + { + "kind": "number", + "nativeSrc": "4052:18:8", + "nodeType": "YulLiteral", + "src": "4052:18:8", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "4041:2:8", + "nodeType": "YulIdentifier", + "src": "4041:2:8" + }, + "nativeSrc": "4041:30:8", + "nodeType": "YulFunctionCall", + "src": "4041:30:8" + }, + "nativeSrc": "4038:56:8", + "nodeType": "YulIf", + "src": "4038:56:8" + }, + { + "nativeSrc": "4104:52:8", + "nodeType": "YulVariableDeclaration", + "src": "4104:52:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nativeSrc": "4150:4:8", + "nodeType": "YulIdentifier", + "src": "4150:4:8" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "4144:5:8", + "nodeType": "YulIdentifier", + "src": "4144:5:8" + }, + "nativeSrc": "4144:11:8", + "nodeType": "YulFunctionCall", + "src": "4144:11:8" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nativeSrc": "4118:25:8", + "nodeType": "YulIdentifier", + "src": "4118:25:8" + }, + "nativeSrc": "4118:38:8", + "nodeType": "YulFunctionCall", + "src": "4118:38:8" + }, + "variables": [ + { + "name": "oldLen", + "nativeSrc": "4108:6:8", + "nodeType": "YulTypedName", + "src": "4108:6:8", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "4249:4:8", + "nodeType": "YulIdentifier", + "src": "4249:4:8" + }, + { + "name": "oldLen", + "nativeSrc": "4255:6:8", + "nodeType": "YulIdentifier", + "src": "4255:6:8" + }, + { + "name": "newLen", + "nativeSrc": "4263:6:8", + "nodeType": "YulIdentifier", + "src": "4263:6:8" + } + ], + "functionName": { + "name": "clean_up_bytearray_end_slots_t_string_storage", + "nativeSrc": "4203:45:8", + "nodeType": "YulIdentifier", + "src": "4203:45:8" + }, + "nativeSrc": "4203:67:8", + "nodeType": "YulFunctionCall", + "src": "4203:67:8" + }, + "nativeSrc": "4203:67:8", + "nodeType": "YulExpressionStatement", + "src": "4203:67:8" + }, + { + "nativeSrc": "4280:18:8", + "nodeType": "YulVariableDeclaration", + "src": "4280:18:8", + "value": { + "kind": "number", + "nativeSrc": "4297:1:8", + "nodeType": "YulLiteral", + "src": "4297:1:8", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "srcOffset", + "nativeSrc": "4284:9:8", + "nodeType": "YulTypedName", + "src": "4284:9:8", + "type": "" + } + ] + }, + { + "nativeSrc": "4308:17:8", + "nodeType": "YulAssignment", + "src": "4308:17:8", + "value": { + "kind": "number", + "nativeSrc": "4321:4:8", + "nodeType": "YulLiteral", + "src": "4321:4:8", + "type": "", + "value": "0x20" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "4308:9:8", + "nodeType": "YulIdentifier", + "src": "4308:9:8" + } + ] + }, + { + "cases": [ + { + "body": { + "nativeSrc": "4372:611:8", + "nodeType": "YulBlock", + "src": "4372:611:8", + "statements": [ + { + "nativeSrc": "4386:37:8", + "nodeType": "YulVariableDeclaration", + "src": "4386:37:8", + "value": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "4405:6:8", + "nodeType": "YulIdentifier", + "src": "4405:6:8" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4417:4:8", + "nodeType": "YulLiteral", + "src": "4417:4:8", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "4413:3:8", + "nodeType": "YulIdentifier", + "src": "4413:3:8" + }, + "nativeSrc": "4413:9:8", + "nodeType": "YulFunctionCall", + "src": "4413:9:8" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4401:3:8", + "nodeType": "YulIdentifier", + "src": "4401:3:8" + }, + "nativeSrc": "4401:22:8", + "nodeType": "YulFunctionCall", + "src": "4401:22:8" + }, + "variables": [ + { + "name": "loopEnd", + "nativeSrc": "4390:7:8", + "nodeType": "YulTypedName", + "src": "4390:7:8", + "type": "" + } + ] + }, + { + "nativeSrc": "4437:51:8", + "nodeType": "YulVariableDeclaration", + "src": "4437:51:8", + "value": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "4483:4:8", + "nodeType": "YulIdentifier", + "src": "4483:4:8" + } + ], + "functionName": { + "name": "array_dataslot_t_string_storage", + "nativeSrc": "4451:31:8", + "nodeType": "YulIdentifier", + "src": "4451:31:8" + }, + "nativeSrc": "4451:37:8", + "nodeType": "YulFunctionCall", + "src": "4451:37:8" + }, + "variables": [ + { + "name": "dstPtr", + "nativeSrc": "4441:6:8", + "nodeType": "YulTypedName", + "src": "4441:6:8", + "type": "" + } + ] + }, + { + "nativeSrc": "4501:10:8", + "nodeType": "YulVariableDeclaration", + "src": "4501:10:8", + "value": { + "kind": "number", + "nativeSrc": "4510:1:8", + "nodeType": "YulLiteral", + "src": "4510:1:8", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "4505:1:8", + "nodeType": "YulTypedName", + "src": "4505:1:8", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4569:163:8", + "nodeType": "YulBlock", + "src": "4569:163:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "4594:6:8", + "nodeType": "YulIdentifier", + "src": "4594:6:8" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "4612:3:8", + "nodeType": "YulIdentifier", + "src": "4612:3:8" + }, + { + "name": "srcOffset", + "nativeSrc": "4617:9:8", + "nodeType": "YulIdentifier", + "src": "4617:9:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4608:3:8", + "nodeType": "YulIdentifier", + "src": "4608:3:8" + }, + "nativeSrc": "4608:19:8", + "nodeType": "YulFunctionCall", + "src": "4608:19:8" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4602:5:8", + "nodeType": "YulIdentifier", + "src": "4602:5:8" + }, + "nativeSrc": "4602:26:8", + "nodeType": "YulFunctionCall", + "src": "4602:26:8" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "4587:6:8", + "nodeType": "YulIdentifier", + "src": "4587:6:8" + }, + "nativeSrc": "4587:42:8", + "nodeType": "YulFunctionCall", + "src": "4587:42:8" + }, + "nativeSrc": "4587:42:8", + "nodeType": "YulExpressionStatement", + "src": "4587:42:8" + }, + { + "nativeSrc": "4646:24:8", + "nodeType": "YulAssignment", + "src": "4646:24:8", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "4660:6:8", + "nodeType": "YulIdentifier", + "src": "4660:6:8" + }, + { + "kind": "number", + "nativeSrc": "4668:1:8", + "nodeType": "YulLiteral", + "src": "4668:1:8", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4656:3:8", + "nodeType": "YulIdentifier", + "src": "4656:3:8" + }, + "nativeSrc": "4656:14:8", + "nodeType": "YulFunctionCall", + "src": "4656:14:8" + }, + "variableNames": [ + { + "name": "dstPtr", + "nativeSrc": "4646:6:8", + "nodeType": "YulIdentifier", + "src": "4646:6:8" + } + ] + }, + { + "nativeSrc": "4687:31:8", + "nodeType": "YulAssignment", + "src": "4687:31:8", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nativeSrc": "4704:9:8", + "nodeType": "YulIdentifier", + "src": "4704:9:8" + }, + { + "kind": "number", + "nativeSrc": "4715:2:8", + "nodeType": "YulLiteral", + "src": "4715:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4700:3:8", + "nodeType": "YulIdentifier", + "src": "4700:3:8" + }, + "nativeSrc": "4700:18:8", + "nodeType": "YulFunctionCall", + "src": "4700:18:8" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "4687:9:8", + "nodeType": "YulIdentifier", + "src": "4687:9:8" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "4535:1:8", + "nodeType": "YulIdentifier", + "src": "4535:1:8" + }, + { + "name": "loopEnd", + "nativeSrc": "4538:7:8", + "nodeType": "YulIdentifier", + "src": "4538:7:8" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "4532:2:8", + "nodeType": "YulIdentifier", + "src": "4532:2:8" + }, + "nativeSrc": "4532:14:8", + "nodeType": "YulFunctionCall", + "src": "4532:14:8" + }, + "nativeSrc": "4524:208:8", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "4547:21:8", + "nodeType": "YulBlock", + "src": "4547:21:8", + "statements": [ + { + "nativeSrc": "4549:17:8", + "nodeType": "YulAssignment", + "src": "4549:17:8", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "4558:1:8", + "nodeType": "YulIdentifier", + "src": "4558:1:8" + }, + { + "kind": "number", + "nativeSrc": "4561:4:8", + "nodeType": "YulLiteral", + "src": "4561:4:8", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4554:3:8", + "nodeType": "YulIdentifier", + "src": "4554:3:8" + }, + "nativeSrc": "4554:12:8", + "nodeType": "YulFunctionCall", + "src": "4554:12:8" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "4549:1:8", + "nodeType": "YulIdentifier", + "src": "4549:1:8" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "4528:3:8", + "nodeType": "YulBlock", + "src": "4528:3:8", + "statements": [] + }, + "src": "4524:208:8" + }, + { + "body": { + "nativeSrc": "4768:156:8", + "nodeType": "YulBlock", + "src": "4768:156:8", + "statements": [ + { + "nativeSrc": "4786:43:8", + "nodeType": "YulVariableDeclaration", + "src": "4786:43:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "4813:3:8", + "nodeType": "YulIdentifier", + "src": "4813:3:8" + }, + { + "name": "srcOffset", + "nativeSrc": "4818:9:8", + "nodeType": "YulIdentifier", + "src": "4818:9:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4809:3:8", + "nodeType": "YulIdentifier", + "src": "4809:3:8" + }, + "nativeSrc": "4809:19:8", + "nodeType": "YulFunctionCall", + "src": "4809:19:8" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4803:5:8", + "nodeType": "YulIdentifier", + "src": "4803:5:8" + }, + "nativeSrc": "4803:26:8", + "nodeType": "YulFunctionCall", + "src": "4803:26:8" + }, + "variables": [ + { + "name": "lastValue", + "nativeSrc": "4790:9:8", + "nodeType": "YulTypedName", + "src": "4790:9:8", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "4853:6:8", + "nodeType": "YulIdentifier", + "src": "4853:6:8" + }, + { + "arguments": [ + { + "name": "lastValue", + "nativeSrc": "4880:9:8", + "nodeType": "YulIdentifier", + "src": "4880:9:8" + }, + { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "4895:6:8", + "nodeType": "YulIdentifier", + "src": "4895:6:8" + }, + { + "kind": "number", + "nativeSrc": "4903:4:8", + "nodeType": "YulLiteral", + "src": "4903:4:8", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4891:3:8", + "nodeType": "YulIdentifier", + "src": "4891:3:8" + }, + "nativeSrc": "4891:17:8", + "nodeType": "YulFunctionCall", + "src": "4891:17:8" + } + ], + "functionName": { + "name": "mask_bytes_dynamic", + "nativeSrc": "4861:18:8", + "nodeType": "YulIdentifier", + "src": "4861:18:8" + }, + "nativeSrc": "4861:48:8", + "nodeType": "YulFunctionCall", + "src": "4861:48:8" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "4846:6:8", + "nodeType": "YulIdentifier", + "src": "4846:6:8" + }, + "nativeSrc": "4846:64:8", + "nodeType": "YulFunctionCall", + "src": "4846:64:8" + }, + "nativeSrc": "4846:64:8", + "nodeType": "YulExpressionStatement", + "src": "4846:64:8" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nativeSrc": "4751:7:8", + "nodeType": "YulIdentifier", + "src": "4751:7:8" + }, + { + "name": "newLen", + "nativeSrc": "4760:6:8", + "nodeType": "YulIdentifier", + "src": "4760:6:8" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "4748:2:8", + "nodeType": "YulIdentifier", + "src": "4748:2:8" + }, + "nativeSrc": "4748:19:8", + "nodeType": "YulFunctionCall", + "src": "4748:19:8" + }, + "nativeSrc": "4745:179:8", + "nodeType": "YulIf", + "src": "4745:179:8" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "4944:4:8", + "nodeType": "YulIdentifier", + "src": "4944:4:8" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "4958:6:8", + "nodeType": "YulIdentifier", + "src": "4958:6:8" + }, + { + "kind": "number", + "nativeSrc": "4966:1:8", + "nodeType": "YulLiteral", + "src": "4966:1:8", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "4954:3:8", + "nodeType": "YulIdentifier", + "src": "4954:3:8" + }, + "nativeSrc": "4954:14:8", + "nodeType": "YulFunctionCall", + "src": "4954:14:8" + }, + { + "kind": "number", + "nativeSrc": "4970:1:8", + "nodeType": "YulLiteral", + "src": "4970:1:8", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4950:3:8", + "nodeType": "YulIdentifier", + "src": "4950:3:8" + }, + "nativeSrc": "4950:22:8", + "nodeType": "YulFunctionCall", + "src": "4950:22:8" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "4937:6:8", + "nodeType": "YulIdentifier", + "src": "4937:6:8" + }, + "nativeSrc": "4937:36:8", + "nodeType": "YulFunctionCall", + "src": "4937:36:8" + }, + "nativeSrc": "4937:36:8", + "nodeType": "YulExpressionStatement", + "src": "4937:36:8" + } + ] + }, + "nativeSrc": "4365:618:8", + "nodeType": "YulCase", + "src": "4365:618:8", + "value": { + "kind": "number", + "nativeSrc": "4370:1:8", + "nodeType": "YulLiteral", + "src": "4370:1:8", + "type": "", + "value": "1" + } + }, + { + "body": { + "nativeSrc": "5000:222:8", + "nodeType": "YulBlock", + "src": "5000:222:8", + "statements": [ + { + "nativeSrc": "5014:14:8", + "nodeType": "YulVariableDeclaration", + "src": "5014:14:8", + "value": { + "kind": "number", + "nativeSrc": "5027:1:8", + "nodeType": "YulLiteral", + "src": "5027:1:8", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "5018:5:8", + "nodeType": "YulTypedName", + "src": "5018:5:8", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "5051:67:8", + "nodeType": "YulBlock", + "src": "5051:67:8", + "statements": [ + { + "nativeSrc": "5069:35:8", + "nodeType": "YulAssignment", + "src": "5069:35:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "5088:3:8", + "nodeType": "YulIdentifier", + "src": "5088:3:8" + }, + { + "name": "srcOffset", + "nativeSrc": "5093:9:8", + "nodeType": "YulIdentifier", + "src": "5093:9:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5084:3:8", + "nodeType": "YulIdentifier", + "src": "5084:3:8" + }, + "nativeSrc": "5084:19:8", + "nodeType": "YulFunctionCall", + "src": "5084:19:8" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "5078:5:8", + "nodeType": "YulIdentifier", + "src": "5078:5:8" + }, + "nativeSrc": "5078:26:8", + "nodeType": "YulFunctionCall", + "src": "5078:26:8" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "5069:5:8", + "nodeType": "YulIdentifier", + "src": "5069:5:8" + } + ] + } + ] + }, + "condition": { + "name": "newLen", + "nativeSrc": "5044:6:8", + "nodeType": "YulIdentifier", + "src": "5044:6:8" + }, + "nativeSrc": "5041:77:8", + "nodeType": "YulIf", + "src": "5041:77:8" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "5138:4:8", + "nodeType": "YulIdentifier", + "src": "5138:4:8" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "5197:5:8", + "nodeType": "YulIdentifier", + "src": "5197:5:8" + }, + { + "name": "newLen", + "nativeSrc": "5204:6:8", + "nodeType": "YulIdentifier", + "src": "5204:6:8" + } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "5144:52:8", + "nodeType": "YulIdentifier", + "src": "5144:52:8" + }, + "nativeSrc": "5144:67:8", + "nodeType": "YulFunctionCall", + "src": "5144:67:8" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "5131:6:8", + "nodeType": "YulIdentifier", + "src": "5131:6:8" + }, + "nativeSrc": "5131:81:8", + "nodeType": "YulFunctionCall", + "src": "5131:81:8" + }, + "nativeSrc": "5131:81:8", + "nodeType": "YulExpressionStatement", + "src": "5131:81:8" + } + ] + }, + "nativeSrc": "4992:230:8", + "nodeType": "YulCase", + "src": "4992:230:8", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "4345:6:8", + "nodeType": "YulIdentifier", + "src": "4345:6:8" + }, + { + "kind": "number", + "nativeSrc": "4353:2:8", + "nodeType": "YulLiteral", + "src": "4353:2:8", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "4342:2:8", + "nodeType": "YulIdentifier", + "src": "4342:2:8" + }, + "nativeSrc": "4342:14:8", + "nodeType": "YulFunctionCall", + "src": "4342:14:8" + }, + "nativeSrc": "4335:887:8", + "nodeType": "YulSwitch", + "src": "4335:887:8" + } + ] + }, + "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage", + "nativeSrc": "3833:1395:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nativeSrc": "3914:4:8", + "nodeType": "YulTypedName", + "src": "3914:4:8", + "type": "" + }, + { + "name": "src", + "nativeSrc": "3920:3:8", + "nodeType": "YulTypedName", + "src": "3920:3:8", + "type": "" + } + ], + "src": "3833:1395:8" + } + ] + }, + "contents": "{\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function array_dataslot_t_string_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_string_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_string_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src) {\n\n let newLen := array_length_t_string_memory_ptr(src)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_string_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n srcOffset := 0x20\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n}\n", + "id": 8, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "608060405234801561000f575f5ffd5b506040518060400160405280600381526020017f4c4f4c00000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4c4f4c0000000000000000000000000000000000000000000000000000000000815250816003908161008b91906102e0565b50806004908161009b91906102e0565b5050506103af565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061011e57607f821691505b602082108103610131576101306100da565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026101937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610158565b61019d8683610158565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6101e16101dc6101d7846101b5565b6101be565b6101b5565b9050919050565b5f819050919050565b6101fa836101c7565b61020e610206826101e8565b848454610164565b825550505050565b5f5f905090565b610225610216565b6102308184846101f1565b505050565b5b81811015610253576102485f8261021d565b600181019050610236565b5050565b601f8211156102985761026981610137565b61027284610149565b81016020851015610281578190505b61029561028d85610149565b830182610235565b50505b505050565b5f82821c905092915050565b5f6102b85f198460080261029d565b1980831691505092915050565b5f6102d083836102a9565b9150826002028217905092915050565b6102e9826100a3565b67ffffffffffffffff811115610302576103016100ad565b5b61030c8254610107565b610317828285610257565b5f60209050601f831160018114610348575f8415610336578287015190505b61034085826102c5565b8655506103a7565b601f19841661035686610137565b5f5b8281101561037d57848901518255600182019150602085019450602081019050610358565b8683101561039a5784890151610396601f8916826102a9565b8355505b6001600288020188555050505b505050505050565b610f9b806103bc5f395ff3fe608060405234801561000f575f5ffd5b50600436106100b2575f3560e01c80635c975abb1161006f5780635c975abb1461017a57806370a08231146101985780638456cb59146101c857806395d89b41146101d2578063a9059cbb146101f0578063dd62ed3e14610220576100b2565b806306fdde03146100b6578063095ea7b3146100d457806318160ddd1461010457806323b872dd14610122578063313ce567146101525780633f4ba83a14610170575b5f5ffd5b6100be610250565b6040516100cb9190610c14565b60405180910390f35b6100ee60048036038101906100e99190610cc5565b6102e0565b6040516100fb9190610d1d565b60405180910390f35b61010c610302565b6040516101199190610d45565b60405180910390f35b61013c60048036038101906101379190610d5e565b61030b565b6040516101499190610d1d565b60405180910390f35b61015a610339565b6040516101679190610dc9565b60405180910390f35b610178610341565b005b61018261034b565b60405161018f9190610d1d565b60405180910390f35b6101b260048036038101906101ad9190610de2565b610364565b6040516101bf9190610d45565b60405180910390f35b6101d06103a9565b005b6101da6103b3565b6040516101e79190610c14565b60405180910390f35b61020a60048036038101906102059190610cc5565b610443565b6040516102179190610d1d565b60405180910390f35b61023a60048036038101906102359190610e0d565b610465565b6040516102479190610d45565b60405180910390f35b60606003805461025f90610e78565b80601f016020809104026020016040519081016040528092919081815260200182805461028b90610e78565b80156102d65780601f106102ad576101008083540402835291602001916102d6565b820191905f5260205f20905b8154815290600101906020018083116102b957829003601f168201915b5050505050905090565b5f5f6102ea6104e7565b90506102f78185856104ee565b600191505092915050565b5f600254905090565b5f5f6103156104e7565b9050610322858285610500565b61032d858585610593565b60019150509392505050565b5f6012905090565b610349610683565b565b5f60026005541461035c575f61035f565b60015b905090565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6103b16106d3565b565b6060600480546103c290610e78565b80601f01602080910402602001604051908101604052809291908181526020018280546103ee90610e78565b80156104395780601f1061041057610100808354040283529160200191610439565b820191905f5260205f20905b81548152906001019060200180831161041c57829003601f168201915b5050505050905090565b5f5f61044d6104e7565b905061045a818585610593565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b6104fb8383836001610723565b505050565b5f61050b8484610465565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81101561058d578181101561057e578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161057593929190610eb7565b60405180910390fd5b61058c84848484035f610723565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610603575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016105fa9190610eec565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610673575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161066a9190610eec565b60405180910390fd5b61067e8383836108f2565b505050565b61068b61090a565b60016005819055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6106bc6104e7565b6040516106c99190610eec565b60405180910390a1565b6106db61094a565b60026005819055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861070c6104e7565b6040516107199190610eec565b60405180910390a1565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610793575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161078a9190610eec565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610803575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016107fa9190610eec565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156108ec578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108e39190610d45565b60405180910390a35b50505050565b6108fa61094a565b61090583838361098b565b505050565b61091261034b565b610948576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61095261034b565b15610989576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109db578060025f8282546109cf9190610f32565b92505081905550610aa9565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610a64578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610a5b93929190610eb7565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610af0578060025f8282540392505081905550610b3a565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b979190610d45565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610be682610ba4565b610bf08185610bae565b9350610c00818560208601610bbe565b610c0981610bcc565b840191505092915050565b5f6020820190508181035f830152610c2c8184610bdc565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610c6182610c38565b9050919050565b610c7181610c57565b8114610c7b575f5ffd5b50565b5f81359050610c8c81610c68565b92915050565b5f819050919050565b610ca481610c92565b8114610cae575f5ffd5b50565b5f81359050610cbf81610c9b565b92915050565b5f5f60408385031215610cdb57610cda610c34565b5b5f610ce885828601610c7e565b9250506020610cf985828601610cb1565b9150509250929050565b5f8115159050919050565b610d1781610d03565b82525050565b5f602082019050610d305f830184610d0e565b92915050565b610d3f81610c92565b82525050565b5f602082019050610d585f830184610d36565b92915050565b5f5f5f60608486031215610d7557610d74610c34565b5b5f610d8286828701610c7e565b9350506020610d9386828701610c7e565b9250506040610da486828701610cb1565b9150509250925092565b5f60ff82169050919050565b610dc381610dae565b82525050565b5f602082019050610ddc5f830184610dba565b92915050565b5f60208284031215610df757610df6610c34565b5b5f610e0484828501610c7e565b91505092915050565b5f5f60408385031215610e2357610e22610c34565b5b5f610e3085828601610c7e565b9250506020610e4185828601610c7e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610e8f57607f821691505b602082108103610ea257610ea1610e4b565b5b50919050565b610eb181610c57565b82525050565b5f606082019050610eca5f830186610ea8565b610ed76020830185610d36565b610ee46040830184610d36565b949350505050565b5f602082019050610eff5f830184610ea8565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610f3c82610c92565b9150610f4783610c92565b9250828201905080821115610f5f57610f5e610f05565b5b9291505056fea264697066735822122079df6ef2f44460794c07db31a82c5404990135ae596d303e977888265cf5450064736f6c634300081e0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4C4F4C0000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4C4F4C0000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0x3 SWAP1 DUP2 PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x2E0 JUMP JUMPDEST POP DUP1 PUSH1 0x4 SWAP1 DUP2 PUSH2 0x9B SWAP2 SWAP1 PUSH2 0x2E0 JUMP JUMPDEST POP POP POP PUSH2 0x3AF JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x11E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x131 JUMPI PUSH2 0x130 PUSH2 0xDA JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP DUP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x8 DUP4 MUL PUSH2 0x193 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0x158 JUMP JUMPDEST PUSH2 0x19D DUP7 DUP4 PUSH2 0x158 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x1E1 PUSH2 0x1DC PUSH2 0x1D7 DUP5 PUSH2 0x1B5 JUMP JUMPDEST PUSH2 0x1BE JUMP JUMPDEST PUSH2 0x1B5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1FA DUP4 PUSH2 0x1C7 JUMP JUMPDEST PUSH2 0x20E PUSH2 0x206 DUP3 PUSH2 0x1E8 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0x164 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x225 PUSH2 0x216 JUMP JUMPDEST PUSH2 0x230 DUP2 DUP5 DUP5 PUSH2 0x1F1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x253 JUMPI PUSH2 0x248 PUSH0 DUP3 PUSH2 0x21D JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x236 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x298 JUMPI PUSH2 0x269 DUP2 PUSH2 0x137 JUMP JUMPDEST PUSH2 0x272 DUP5 PUSH2 0x149 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x281 JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x295 PUSH2 0x28D DUP6 PUSH2 0x149 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x235 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2B8 PUSH0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x29D JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2D0 DUP4 DUP4 PUSH2 0x2A9 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2E9 DUP3 PUSH2 0xA3 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x302 JUMPI PUSH2 0x301 PUSH2 0xAD JUMP JUMPDEST JUMPDEST PUSH2 0x30C DUP3 SLOAD PUSH2 0x107 JUMP JUMPDEST PUSH2 0x317 DUP3 DUP3 DUP6 PUSH2 0x257 JUMP JUMPDEST PUSH0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x348 JUMPI PUSH0 DUP5 ISZERO PUSH2 0x336 JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH2 0x340 DUP6 DUP3 PUSH2 0x2C5 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x3A7 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x356 DUP7 PUSH2 0x137 JUMP JUMPDEST PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x37D JUMPI DUP5 DUP10 ADD MLOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x358 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x39A JUMPI DUP5 DUP10 ADD MLOAD PUSH2 0x396 PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x2A9 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xF9B DUP1 PUSH2 0x3BC PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB2 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5C975ABB GT PUSH2 0x6F JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1F0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x220 JUMPI PUSH2 0xB2 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x170 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xBE PUSH2 0x250 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCB SWAP2 SWAP1 PUSH2 0xC14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0xCC5 JUMP JUMPDEST PUSH2 0x2E0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFB SWAP2 SWAP1 PUSH2 0xD1D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10C PUSH2 0x302 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0xD45 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x137 SWAP2 SWAP1 PUSH2 0xD5E JUMP JUMPDEST PUSH2 0x30B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x149 SWAP2 SWAP1 PUSH2 0xD1D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15A PUSH2 0x339 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x167 SWAP2 SWAP1 PUSH2 0xDC9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 PUSH2 0x341 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x182 PUSH2 0x34B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18F SWAP2 SWAP1 PUSH2 0xD1D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B2 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1AD SWAP2 SWAP1 PUSH2 0xDE2 JUMP JUMPDEST PUSH2 0x364 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1BF SWAP2 SWAP1 PUSH2 0xD45 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1D0 PUSH2 0x3A9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1DA PUSH2 0x3B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E7 SWAP2 SWAP1 PUSH2 0xC14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x205 SWAP2 SWAP1 PUSH2 0xCC5 JUMP JUMPDEST PUSH2 0x443 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x217 SWAP2 SWAP1 PUSH2 0xD1D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x235 SWAP2 SWAP1 PUSH2 0xE0D JUMP JUMPDEST PUSH2 0x465 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x247 SWAP2 SWAP1 PUSH2 0xD45 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x25F SWAP1 PUSH2 0xE78 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x28B SWAP1 PUSH2 0xE78 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2D6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2AD JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2D6 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2B9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x2EA PUSH2 0x4E7 JUMP JUMPDEST SWAP1 POP PUSH2 0x2F7 DUP2 DUP6 DUP6 PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x315 PUSH2 0x4E7 JUMP JUMPDEST SWAP1 POP PUSH2 0x322 DUP6 DUP3 DUP6 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x32D DUP6 DUP6 DUP6 PUSH2 0x593 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x12 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x349 PUSH2 0x683 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x2 PUSH1 0x5 SLOAD EQ PUSH2 0x35C JUMPI PUSH0 PUSH2 0x35F JUMP JUMPDEST PUSH1 0x1 JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3B1 PUSH2 0x6D3 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x3C2 SWAP1 PUSH2 0xE78 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3EE SWAP1 PUSH2 0xE78 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x439 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x410 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x439 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x41C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x44D PUSH2 0x4E7 JUMP JUMPDEST SWAP1 POP PUSH2 0x45A DUP2 DUP6 DUP6 PUSH2 0x593 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x4FB DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x723 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x50B DUP5 DUP5 PUSH2 0x465 JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 LT ISZERO PUSH2 0x58D JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x57E JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x575 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xEB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x58C DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x723 JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x603 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5FA SWAP2 SWAP1 PUSH2 0xEEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x673 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x66A SWAP2 SWAP1 PUSH2 0xEEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x67E DUP4 DUP4 DUP4 PUSH2 0x8F2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x68B PUSH2 0x90A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x5 DUP2 SWAP1 SSTORE POP PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA PUSH2 0x6BC PUSH2 0x4E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6C9 SWAP2 SWAP1 PUSH2 0xEEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x6DB PUSH2 0x94A JUMP JUMPDEST PUSH1 0x2 PUSH1 0x5 DUP2 SWAP1 SSTORE POP PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x70C PUSH2 0x4E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x719 SWAP2 SWAP1 PUSH2 0xEEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x793 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x78A SWAP2 SWAP1 PUSH2 0xEEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x803 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7FA SWAP2 SWAP1 PUSH2 0xEEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x8EC JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x8E3 SWAP2 SWAP1 PUSH2 0xD45 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x8FA PUSH2 0x94A JUMP JUMPDEST PUSH2 0x905 DUP4 DUP4 DUP4 PUSH2 0x98B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x912 PUSH2 0x34B JUMP JUMPDEST PUSH2 0x948 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8DFC202B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH2 0x952 PUSH2 0x34B JUMP JUMPDEST ISZERO PUSH2 0x989 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD93C066500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x9DB JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x9CF SWAP2 SWAP1 PUSH2 0xF32 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0xAA9 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xA64 JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA5B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xEB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH0 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xAF0 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0xB3A JUMP JUMPDEST DUP1 PUSH0 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xB97 SWAP2 SWAP1 PUSH2 0xD45 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY PUSH0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0xBE6 DUP3 PUSH2 0xBA4 JUMP JUMPDEST PUSH2 0xBF0 DUP2 DUP6 PUSH2 0xBAE JUMP JUMPDEST SWAP4 POP PUSH2 0xC00 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xBBE JUMP JUMPDEST PUSH2 0xC09 DUP2 PUSH2 0xBCC JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0xC2C DUP2 DUP5 PUSH2 0xBDC JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0xC61 DUP3 PUSH2 0xC38 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xC71 DUP2 PUSH2 0xC57 JUMP JUMPDEST DUP2 EQ PUSH2 0xC7B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xC8C DUP2 PUSH2 0xC68 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xCA4 DUP2 PUSH2 0xC92 JUMP JUMPDEST DUP2 EQ PUSH2 0xCAE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xCBF DUP2 PUSH2 0xC9B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCDB JUMPI PUSH2 0xCDA PUSH2 0xC34 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xCE8 DUP6 DUP3 DUP7 ADD PUSH2 0xC7E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xCF9 DUP6 DUP3 DUP7 ADD PUSH2 0xCB1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD17 DUP2 PUSH2 0xD03 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xD30 PUSH0 DUP4 ADD DUP5 PUSH2 0xD0E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xD3F DUP2 PUSH2 0xC92 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xD58 PUSH0 DUP4 ADD DUP5 PUSH2 0xD36 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xD75 JUMPI PUSH2 0xD74 PUSH2 0xC34 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xD82 DUP7 DUP3 DUP8 ADD PUSH2 0xC7E JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xD93 DUP7 DUP3 DUP8 ADD PUSH2 0xC7E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0xDA4 DUP7 DUP3 DUP8 ADD PUSH2 0xCB1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xDC3 DUP2 PUSH2 0xDAE JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xDDC PUSH0 DUP4 ADD DUP5 PUSH2 0xDBA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDF7 JUMPI PUSH2 0xDF6 PUSH2 0xC34 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xE04 DUP5 DUP3 DUP6 ADD PUSH2 0xC7E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE23 JUMPI PUSH2 0xE22 PUSH2 0xC34 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xE30 DUP6 DUP3 DUP7 ADD PUSH2 0xC7E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xE41 DUP6 DUP3 DUP7 ADD PUSH2 0xC7E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0xE8F JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xEA2 JUMPI PUSH2 0xEA1 PUSH2 0xE4B JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xEB1 DUP2 PUSH2 0xC57 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xECA PUSH0 DUP4 ADD DUP7 PUSH2 0xEA8 JUMP JUMPDEST PUSH2 0xED7 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xD36 JUMP JUMPDEST PUSH2 0xEE4 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xD36 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xEFF PUSH0 DUP4 ADD DUP5 PUSH2 0xEA8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0xF3C DUP3 PUSH2 0xC92 JUMP JUMPDEST SWAP2 POP PUSH2 0xF47 DUP4 PUSH2 0xC92 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0xF5F JUMPI PUSH2 0xF5E PUSH2 0xF05 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH26 0xDF6EF2F44460794C07DB31A82C5404990135AE596D303E977888 0x26 TLOAD CREATE2 GASLIMIT STOP PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ", + "sourceMap": "113:190:0:-:0;;;151:36;;;;;;;;;;1582:113:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1656:5;1648;:13;;;;;;:::i;:::-;;1681:7;1671;:17;;;;;;:::i;:::-;;1582:113;;113:190:0;;7:99:8;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:180::-;160:77;157:1;150:88;257:4;254:1;247:15;281:4;278:1;271:15;298:180;346:77;343:1;336:88;443:4;440:1;433:15;467:4;464:1;457:15;484:320;528:6;565:1;559:4;555:12;545:22;;612:1;606:4;602:12;633:18;623:81;;689:4;681:6;677:17;667:27;;623:81;751:2;743:6;740:14;720:18;717:38;714:84;;770:18;;:::i;:::-;714:84;535:269;484:320;;;:::o;810:141::-;859:4;882:3;874:11;;905:3;902:1;895:14;939:4;936:1;926:18;918:26;;810:141;;;:::o;957:93::-;994:6;1041:2;1036;1029:5;1025:14;1021:23;1011:33;;957:93;;;:::o;1056:107::-;1100:8;1150:5;1144:4;1140:16;1119:37;;1056:107;;;;:::o;1169:393::-;1238:6;1288:1;1276:10;1272:18;1311:97;1341:66;1330:9;1311:97;:::i;:::-;1429:39;1459:8;1448:9;1429:39;:::i;:::-;1417:51;;1501:4;1497:9;1490:5;1486:21;1477:30;;1550:4;1540:8;1536:19;1529:5;1526:30;1516:40;;1245:317;;1169:393;;;;;:::o;1568:77::-;1605:7;1634:5;1623:16;;1568:77;;;:::o;1651:60::-;1679:3;1700:5;1693:12;;1651:60;;;:::o;1717:142::-;1767:9;1800:53;1818:34;1827:24;1845:5;1827:24;:::i;:::-;1818:34;:::i;:::-;1800:53;:::i;:::-;1787:66;;1717:142;;;:::o;1865:75::-;1908:3;1929:5;1922:12;;1865:75;;;:::o;1946:269::-;2056:39;2087:7;2056:39;:::i;:::-;2117:91;2166:41;2190:16;2166:41;:::i;:::-;2158:6;2151:4;2145:11;2117:91;:::i;:::-;2111:4;2104:105;2022:193;1946:269;;;:::o;2221:73::-;2266:3;2287:1;2280:8;;2221:73;:::o;2300:189::-;2377:32;;:::i;:::-;2418:65;2476:6;2468;2462:4;2418:65;:::i;:::-;2353:136;2300:189;;:::o;2495:186::-;2555:120;2572:3;2565:5;2562:14;2555:120;;;2626:39;2663:1;2656:5;2626:39;:::i;:::-;2599:1;2592:5;2588:13;2579:22;;2555:120;;;2495:186;;:::o;2687:543::-;2788:2;2783:3;2780:11;2777:446;;;2822:38;2854:5;2822:38;:::i;:::-;2906:29;2924:10;2906:29;:::i;:::-;2896:8;2892:44;3089:2;3077:10;3074:18;3071:49;;;3110:8;3095:23;;3071:49;3133:80;3189:22;3207:3;3189:22;:::i;:::-;3179:8;3175:37;3162:11;3133:80;:::i;:::-;2792:431;;2777:446;2687:543;;;:::o;3236:117::-;3290:8;3340:5;3334:4;3330:16;3309:37;;3236:117;;;;:::o;3359:169::-;3403:6;3436:51;3484:1;3480:6;3472:5;3469:1;3465:13;3436:51;:::i;:::-;3432:56;3517:4;3511;3507:15;3497:25;;3410:118;3359:169;;;;:::o;3533:295::-;3609:4;3755:29;3780:3;3774:4;3755:29;:::i;:::-;3747:37;;3817:3;3814:1;3810:11;3804:4;3801:21;3793:29;;3533:295;;;;:::o;3833:1395::-;3950:37;3983:3;3950:37;:::i;:::-;4052:18;4044:6;4041:30;4038:56;;;4074:18;;:::i;:::-;4038:56;4118:38;4150:4;4144:11;4118:38;:::i;:::-;4203:67;4263:6;4255;4249:4;4203:67;:::i;:::-;4297:1;4321:4;4308:17;;4353:2;4345:6;4342:14;4370:1;4365:618;;;;5027:1;5044:6;5041:77;;;5093:9;5088:3;5084:19;5078:26;5069:35;;5041:77;5144:67;5204:6;5197:5;5144:67;:::i;:::-;5138:4;5131:81;5000:222;4335:887;;4365:618;4417:4;4413:9;4405:6;4401:22;4451:37;4483:4;4451:37;:::i;:::-;4510:1;4524:208;4538:7;4535:1;4532:14;4524:208;;;4617:9;4612:3;4608:19;4602:26;4594:6;4587:42;4668:1;4660:6;4656:14;4646:24;;4715:2;4704:9;4700:18;4687:31;;4561:4;4558:1;4554:12;4549:17;;4524:208;;;4760:6;4751:7;4748:19;4745:179;;;4818:9;4813:3;4809:19;4803:26;4861:48;4903:4;4895:6;4891:17;4880:9;4861:48;:::i;:::-;4853:6;4846:64;4768:156;4745:179;4970:1;4966;4958:6;4954:14;4950:22;4944:4;4937:36;4372:611;;;4335:887;;3925:1303;;;3833:1395;;:::o;113:190:0:-;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@_approve_570": { + "entryPoint": 1262, + "id": 570, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_approve_630": { + "entryPoint": 1827, + "id": 630, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@_msgSender_829": { + "entryPoint": 1255, + "id": 829, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_pause_943": { + "entryPoint": 1747, + "id": 943, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_requireNotPaused_914": { + "entryPoint": 2378, + "id": 914, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_requirePaused_927": { + "entryPoint": 2314, + "id": 927, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_spendAllowance_678": { + "entryPoint": 1280, + "id": 678, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_transfer_409": { + "entryPoint": 1427, + "id": 409, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_unpause_959": { + "entryPoint": 1667, + "id": 959, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_update_486": { + "entryPoint": 2443, + "id": 486, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_update_790": { + "entryPoint": 2290, + "id": 790, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@allowance_306": { + "entryPoint": 1125, + "id": 306, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@approve_330": { + "entryPoint": 736, + "id": 330, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@balanceOf_265": { + "entryPoint": 868, + "id": 265, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@decimals_243": { + "entryPoint": 825, + "id": 243, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@name_225": { + "entryPoint": 592, + "id": 225, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@pause_19": { + "entryPoint": 937, + "id": 19, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@paused_902": { + "entryPoint": 843, + "id": 902, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@symbol_234": { + "entryPoint": 947, + "id": 234, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@totalSupply_252": { + "entryPoint": 770, + "id": 252, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@transferFrom_362": { + "entryPoint": 779, + "id": 362, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@transfer_289": { + "entryPoint": 1091, + "id": 289, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@unpause_26": { + "entryPoint": 833, + "id": 26, + "parameterSlots": 0, + "returnSlots": 0 + }, + "abi_decode_t_address": { + "entryPoint": 3198, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint256": { + "entryPoint": 3249, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 3554, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_address": { + "entryPoint": 3597, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_addresst_uint256": { + "entryPoint": 3422, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_addresst_uint256": { + "entryPoint": 3269, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_encode_t_address_to_t_address_fromStack": { + "entryPoint": 3752, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_bool_to_t_bool_fromStack": { + "entryPoint": 3342, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack": { + "entryPoint": 3036, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_t_uint256_to_t_uint256_fromStack": { + "entryPoint": 3382, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_uint8_to_t_uint8_fromStack": { + "entryPoint": 3514, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 3820, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 3767, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": 3357, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 3092, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": 3397, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": { + "entryPoint": 3529, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "allocate_unbounded": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "array_length_t_string_memory_ptr": { + "entryPoint": 2980, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_t_string_memory_ptr_fromStack": { + "entryPoint": 2990, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 3890, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "cleanup_t_address": { + "entryPoint": 3159, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_bool": { + "entryPoint": 3331, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint160": { + "entryPoint": 3128, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint256": { + "entryPoint": 3218, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint8": { + "entryPoint": 3502, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "copy_memory_to_memory_with_cleanup": { + "entryPoint": 3006, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "extract_byte_array_length": { + "entryPoint": 3704, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 3845, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x22": { + "entryPoint": 3659, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { + "entryPoint": 3124, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "round_up_to_mul_of_32": { + "entryPoint": 3020, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "validator_revert_t_address": { + "entryPoint": 3176, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_uint256": { + "entryPoint": 3227, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:7253:8", + "nodeType": "YulBlock", + "src": "0:7253:8", + "statements": [ + { + "body": { + "nativeSrc": "66:40:8", + "nodeType": "YulBlock", + "src": "66:40:8", + "statements": [ + { + "nativeSrc": "77:22:8", + "nodeType": "YulAssignment", + "src": "77:22:8", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "93:5:8", + "nodeType": "YulIdentifier", + "src": "93:5:8" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "87:5:8", + "nodeType": "YulIdentifier", + "src": "87:5:8" + }, + "nativeSrc": "87:12:8", + "nodeType": "YulFunctionCall", + "src": "87:12:8" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "77:6:8", + "nodeType": "YulIdentifier", + "src": "77:6:8" + } + ] + } + ] + }, + "name": "array_length_t_string_memory_ptr", + "nativeSrc": "7:99:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "49:5:8", + "nodeType": "YulTypedName", + "src": "49:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nativeSrc": "59:6:8", + "nodeType": "YulTypedName", + "src": "59:6:8", + "type": "" + } + ], + "src": "7:99:8" + }, + { + "body": { + "nativeSrc": "208:73:8", + "nodeType": "YulBlock", + "src": "208:73:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "225:3:8", + "nodeType": "YulIdentifier", + "src": "225:3:8" + }, + { + "name": "length", + "nativeSrc": "230:6:8", + "nodeType": "YulIdentifier", + "src": "230:6:8" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "218:6:8", + "nodeType": "YulIdentifier", + "src": "218:6:8" + }, + "nativeSrc": "218:19:8", + "nodeType": "YulFunctionCall", + "src": "218:19:8" + }, + "nativeSrc": "218:19:8", + "nodeType": "YulExpressionStatement", + "src": "218:19:8" + }, + { + "nativeSrc": "246:29:8", + "nodeType": "YulAssignment", + "src": "246:29:8", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "265:3:8", + "nodeType": "YulIdentifier", + "src": "265:3:8" + }, + { + "kind": "number", + "nativeSrc": "270:4:8", + "nodeType": "YulLiteral", + "src": "270:4:8", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "261:3:8", + "nodeType": "YulIdentifier", + "src": "261:3:8" + }, + "nativeSrc": "261:14:8", + "nodeType": "YulFunctionCall", + "src": "261:14:8" + }, + "variableNames": [ + { + "name": "updated_pos", + "nativeSrc": "246:11:8", + "nodeType": "YulIdentifier", + "src": "246:11:8" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nativeSrc": "112:169:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "180:3:8", + "nodeType": "YulTypedName", + "src": "180:3:8", + "type": "" + }, + { + "name": "length", + "nativeSrc": "185:6:8", + "nodeType": "YulTypedName", + "src": "185:6:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nativeSrc": "196:11:8", + "nodeType": "YulTypedName", + "src": "196:11:8", + "type": "" + } + ], + "src": "112:169:8" + }, + { + "body": { + "nativeSrc": "349:77:8", + "nodeType": "YulBlock", + "src": "349:77:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dst", + "nativeSrc": "366:3:8", + "nodeType": "YulIdentifier", + "src": "366:3:8" + }, + { + "name": "src", + "nativeSrc": "371:3:8", + "nodeType": "YulIdentifier", + "src": "371:3:8" + }, + { + "name": "length", + "nativeSrc": "376:6:8", + "nodeType": "YulIdentifier", + "src": "376:6:8" + } + ], + "functionName": { + "name": "mcopy", + "nativeSrc": "360:5:8", + "nodeType": "YulIdentifier", + "src": "360:5:8" + }, + "nativeSrc": "360:23:8", + "nodeType": "YulFunctionCall", + "src": "360:23:8" + }, + "nativeSrc": "360:23:8", + "nodeType": "YulExpressionStatement", + "src": "360:23:8" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "403:3:8", + "nodeType": "YulIdentifier", + "src": "403:3:8" + }, + { + "name": "length", + "nativeSrc": "408:6:8", + "nodeType": "YulIdentifier", + "src": "408:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "399:3:8", + "nodeType": "YulIdentifier", + "src": "399:3:8" + }, + "nativeSrc": "399:16:8", + "nodeType": "YulFunctionCall", + "src": "399:16:8" + }, + { + "kind": "number", + "nativeSrc": "417:1:8", + "nodeType": "YulLiteral", + "src": "417:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "392:6:8", + "nodeType": "YulIdentifier", + "src": "392:6:8" + }, + "nativeSrc": "392:27:8", + "nodeType": "YulFunctionCall", + "src": "392:27:8" + }, + "nativeSrc": "392:27:8", + "nodeType": "YulExpressionStatement", + "src": "392:27:8" + } + ] + }, + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "287:139:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nativeSrc": "331:3:8", + "nodeType": "YulTypedName", + "src": "331:3:8", + "type": "" + }, + { + "name": "dst", + "nativeSrc": "336:3:8", + "nodeType": "YulTypedName", + "src": "336:3:8", + "type": "" + }, + { + "name": "length", + "nativeSrc": "341:6:8", + "nodeType": "YulTypedName", + "src": "341:6:8", + "type": "" + } + ], + "src": "287:139:8" + }, + { + "body": { + "nativeSrc": "480:54:8", + "nodeType": "YulBlock", + "src": "480:54:8", + "statements": [ + { + "nativeSrc": "490:38:8", + "nodeType": "YulAssignment", + "src": "490:38:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "508:5:8", + "nodeType": "YulIdentifier", + "src": "508:5:8" + }, + { + "kind": "number", + "nativeSrc": "515:2:8", + "nodeType": "YulLiteral", + "src": "515:2:8", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "504:3:8", + "nodeType": "YulIdentifier", + "src": "504:3:8" + }, + "nativeSrc": "504:14:8", + "nodeType": "YulFunctionCall", + "src": "504:14:8" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "524:2:8", + "nodeType": "YulLiteral", + "src": "524:2:8", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "520:3:8", + "nodeType": "YulIdentifier", + "src": "520:3:8" + }, + "nativeSrc": "520:7:8", + "nodeType": "YulFunctionCall", + "src": "520:7:8" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "500:3:8", + "nodeType": "YulIdentifier", + "src": "500:3:8" + }, + "nativeSrc": "500:28:8", + "nodeType": "YulFunctionCall", + "src": "500:28:8" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "490:6:8", + "nodeType": "YulIdentifier", + "src": "490:6:8" + } + ] + } + ] + }, + "name": "round_up_to_mul_of_32", + "nativeSrc": "432:102:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "463:5:8", + "nodeType": "YulTypedName", + "src": "463:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nativeSrc": "473:6:8", + "nodeType": "YulTypedName", + "src": "473:6:8", + "type": "" + } + ], + "src": "432:102:8" + }, + { + "body": { + "nativeSrc": "632:285:8", + "nodeType": "YulBlock", + "src": "632:285:8", + "statements": [ + { + "nativeSrc": "642:53:8", + "nodeType": "YulVariableDeclaration", + "src": "642:53:8", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "689:5:8", + "nodeType": "YulIdentifier", + "src": "689:5:8" + } + ], + "functionName": { + "name": "array_length_t_string_memory_ptr", + "nativeSrc": "656:32:8", + "nodeType": "YulIdentifier", + "src": "656:32:8" + }, + "nativeSrc": "656:39:8", + "nodeType": "YulFunctionCall", + "src": "656:39:8" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "646:6:8", + "nodeType": "YulTypedName", + "src": "646:6:8", + "type": "" + } + ] + }, + { + "nativeSrc": "704:78:8", + "nodeType": "YulAssignment", + "src": "704:78:8", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "770:3:8", + "nodeType": "YulIdentifier", + "src": "770:3:8" + }, + { + "name": "length", + "nativeSrc": "775:6:8", + "nodeType": "YulIdentifier", + "src": "775:6:8" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nativeSrc": "711:58:8", + "nodeType": "YulIdentifier", + "src": "711:58:8" + }, + "nativeSrc": "711:71:8", + "nodeType": "YulFunctionCall", + "src": "711:71:8" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "704:3:8", + "nodeType": "YulIdentifier", + "src": "704:3:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "830:5:8", + "nodeType": "YulIdentifier", + "src": "830:5:8" + }, + { + "kind": "number", + "nativeSrc": "837:4:8", + "nodeType": "YulLiteral", + "src": "837:4:8", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "826:3:8", + "nodeType": "YulIdentifier", + "src": "826:3:8" + }, + "nativeSrc": "826:16:8", + "nodeType": "YulFunctionCall", + "src": "826:16:8" + }, + { + "name": "pos", + "nativeSrc": "844:3:8", + "nodeType": "YulIdentifier", + "src": "844:3:8" + }, + { + "name": "length", + "nativeSrc": "849:6:8", + "nodeType": "YulIdentifier", + "src": "849:6:8" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "791:34:8", + "nodeType": "YulIdentifier", + "src": "791:34:8" + }, + "nativeSrc": "791:65:8", + "nodeType": "YulFunctionCall", + "src": "791:65:8" + }, + "nativeSrc": "791:65:8", + "nodeType": "YulExpressionStatement", + "src": "791:65:8" + }, + { + "nativeSrc": "865:46:8", + "nodeType": "YulAssignment", + "src": "865:46:8", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "876:3:8", + "nodeType": "YulIdentifier", + "src": "876:3:8" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "903:6:8", + "nodeType": "YulIdentifier", + "src": "903:6:8" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nativeSrc": "881:21:8", + "nodeType": "YulIdentifier", + "src": "881:21:8" + }, + "nativeSrc": "881:29:8", + "nodeType": "YulFunctionCall", + "src": "881:29:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "872:3:8", + "nodeType": "YulIdentifier", + "src": "872:3:8" + }, + "nativeSrc": "872:39:8", + "nodeType": "YulFunctionCall", + "src": "872:39:8" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "865:3:8", + "nodeType": "YulIdentifier", + "src": "865:3:8" + } + ] + } + ] + }, + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nativeSrc": "540:377:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "613:5:8", + "nodeType": "YulTypedName", + "src": "613:5:8", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "620:3:8", + "nodeType": "YulTypedName", + "src": "620:3:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "628:3:8", + "nodeType": "YulTypedName", + "src": "628:3:8", + "type": "" + } + ], + "src": "540:377:8" + }, + { + "body": { + "nativeSrc": "1041:195:8", + "nodeType": "YulBlock", + "src": "1041:195:8", + "statements": [ + { + "nativeSrc": "1051:26:8", + "nodeType": "YulAssignment", + "src": "1051:26:8", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1063:9:8", + "nodeType": "YulIdentifier", + "src": "1063:9:8" + }, + { + "kind": "number", + "nativeSrc": "1074:2:8", + "nodeType": "YulLiteral", + "src": "1074:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1059:3:8", + "nodeType": "YulIdentifier", + "src": "1059:3:8" + }, + "nativeSrc": "1059:18:8", + "nodeType": "YulFunctionCall", + "src": "1059:18:8" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "1051:4:8", + "nodeType": "YulIdentifier", + "src": "1051:4:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1098:9:8", + "nodeType": "YulIdentifier", + "src": "1098:9:8" + }, + { + "kind": "number", + "nativeSrc": "1109:1:8", + "nodeType": "YulLiteral", + "src": "1109:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1094:3:8", + "nodeType": "YulIdentifier", + "src": "1094:3:8" + }, + "nativeSrc": "1094:17:8", + "nodeType": "YulFunctionCall", + "src": "1094:17:8" + }, + { + "arguments": [ + { + "name": "tail", + "nativeSrc": "1117:4:8", + "nodeType": "YulIdentifier", + "src": "1117:4:8" + }, + { + "name": "headStart", + "nativeSrc": "1123:9:8", + "nodeType": "YulIdentifier", + "src": "1123:9:8" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1113:3:8", + "nodeType": "YulIdentifier", + "src": "1113:3:8" + }, + "nativeSrc": "1113:20:8", + "nodeType": "YulFunctionCall", + "src": "1113:20:8" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1087:6:8", + "nodeType": "YulIdentifier", + "src": "1087:6:8" + }, + "nativeSrc": "1087:47:8", + "nodeType": "YulFunctionCall", + "src": "1087:47:8" + }, + "nativeSrc": "1087:47:8", + "nodeType": "YulExpressionStatement", + "src": "1087:47:8" + }, + { + "nativeSrc": "1143:86:8", + "nodeType": "YulAssignment", + "src": "1143:86:8", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "1215:6:8", + "nodeType": "YulIdentifier", + "src": "1215:6:8" + }, + { + "name": "tail", + "nativeSrc": "1224:4:8", + "nodeType": "YulIdentifier", + "src": "1224:4:8" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nativeSrc": "1151:63:8", + "nodeType": "YulIdentifier", + "src": "1151:63:8" + }, + "nativeSrc": "1151:78:8", + "nodeType": "YulFunctionCall", + "src": "1151:78:8" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "1143:4:8", + "nodeType": "YulIdentifier", + "src": "1143:4:8" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nativeSrc": "923:313:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1013:9:8", + "nodeType": "YulTypedName", + "src": "1013:9:8", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "1025:6:8", + "nodeType": "YulTypedName", + "src": "1025:6:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "1036:4:8", + "nodeType": "YulTypedName", + "src": "1036:4:8", + "type": "" + } + ], + "src": "923:313:8" + }, + { + "body": { + "nativeSrc": "1282:35:8", + "nodeType": "YulBlock", + "src": "1282:35:8", + "statements": [ + { + "nativeSrc": "1292:19:8", + "nodeType": "YulAssignment", + "src": "1292:19:8", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1308:2:8", + "nodeType": "YulLiteral", + "src": "1308:2:8", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1302:5:8", + "nodeType": "YulIdentifier", + "src": "1302:5:8" + }, + "nativeSrc": "1302:9:8", + "nodeType": "YulFunctionCall", + "src": "1302:9:8" + }, + "variableNames": [ + { + "name": "memPtr", + "nativeSrc": "1292:6:8", + "nodeType": "YulIdentifier", + "src": "1292:6:8" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nativeSrc": "1242:75:8", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nativeSrc": "1275:6:8", + "nodeType": "YulTypedName", + "src": "1275:6:8", + "type": "" + } + ], + "src": "1242:75:8" + }, + { + "body": { + "nativeSrc": "1412:28:8", + "nodeType": "YulBlock", + "src": "1412:28:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1429:1:8", + "nodeType": "YulLiteral", + "src": "1429:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1432:1:8", + "nodeType": "YulLiteral", + "src": "1432:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1422:6:8", + "nodeType": "YulIdentifier", + "src": "1422:6:8" + }, + "nativeSrc": "1422:12:8", + "nodeType": "YulFunctionCall", + "src": "1422:12:8" + }, + "nativeSrc": "1422:12:8", + "nodeType": "YulExpressionStatement", + "src": "1422:12:8" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "1323:117:8", + "nodeType": "YulFunctionDefinition", + "src": "1323:117:8" + }, + { + "body": { + "nativeSrc": "1535:28:8", + "nodeType": "YulBlock", + "src": "1535:28:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1552:1:8", + "nodeType": "YulLiteral", + "src": "1552:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1555:1:8", + "nodeType": "YulLiteral", + "src": "1555:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1545:6:8", + "nodeType": "YulIdentifier", + "src": "1545:6:8" + }, + "nativeSrc": "1545:12:8", + "nodeType": "YulFunctionCall", + "src": "1545:12:8" + }, + "nativeSrc": "1545:12:8", + "nodeType": "YulExpressionStatement", + "src": "1545:12:8" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nativeSrc": "1446:117:8", + "nodeType": "YulFunctionDefinition", + "src": "1446:117:8" + }, + { + "body": { + "nativeSrc": "1614:81:8", + "nodeType": "YulBlock", + "src": "1614:81:8", + "statements": [ + { + "nativeSrc": "1624:65:8", + "nodeType": "YulAssignment", + "src": "1624:65:8", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "1639:5:8", + "nodeType": "YulIdentifier", + "src": "1639:5:8" + }, + { + "kind": "number", + "nativeSrc": "1646:42:8", + "nodeType": "YulLiteral", + "src": "1646:42:8", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1635:3:8", + "nodeType": "YulIdentifier", + "src": "1635:3:8" + }, + "nativeSrc": "1635:54:8", + "nodeType": "YulFunctionCall", + "src": "1635:54:8" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "1624:7:8", + "nodeType": "YulIdentifier", + "src": "1624:7:8" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nativeSrc": "1569:126:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "1596:5:8", + "nodeType": "YulTypedName", + "src": "1596:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "1606:7:8", + "nodeType": "YulTypedName", + "src": "1606:7:8", + "type": "" + } + ], + "src": "1569:126:8" + }, + { + "body": { + "nativeSrc": "1746:51:8", + "nodeType": "YulBlock", + "src": "1746:51:8", + "statements": [ + { + "nativeSrc": "1756:35:8", + "nodeType": "YulAssignment", + "src": "1756:35:8", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "1785:5:8", + "nodeType": "YulIdentifier", + "src": "1785:5:8" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nativeSrc": "1767:17:8", + "nodeType": "YulIdentifier", + "src": "1767:17:8" + }, + "nativeSrc": "1767:24:8", + "nodeType": "YulFunctionCall", + "src": "1767:24:8" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "1756:7:8", + "nodeType": "YulIdentifier", + "src": "1756:7:8" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nativeSrc": "1701:96:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "1728:5:8", + "nodeType": "YulTypedName", + "src": "1728:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "1738:7:8", + "nodeType": "YulTypedName", + "src": "1738:7:8", + "type": "" + } + ], + "src": "1701:96:8" + }, + { + "body": { + "nativeSrc": "1846:79:8", + "nodeType": "YulBlock", + "src": "1846:79:8", + "statements": [ + { + "body": { + "nativeSrc": "1903:16:8", + "nodeType": "YulBlock", + "src": "1903:16:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1912:1:8", + "nodeType": "YulLiteral", + "src": "1912:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1915:1:8", + "nodeType": "YulLiteral", + "src": "1915:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1905:6:8", + "nodeType": "YulIdentifier", + "src": "1905:6:8" + }, + "nativeSrc": "1905:12:8", + "nodeType": "YulFunctionCall", + "src": "1905:12:8" + }, + "nativeSrc": "1905:12:8", + "nodeType": "YulExpressionStatement", + "src": "1905:12:8" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "1869:5:8", + "nodeType": "YulIdentifier", + "src": "1869:5:8" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "1894:5:8", + "nodeType": "YulIdentifier", + "src": "1894:5:8" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nativeSrc": "1876:17:8", + "nodeType": "YulIdentifier", + "src": "1876:17:8" + }, + "nativeSrc": "1876:24:8", + "nodeType": "YulFunctionCall", + "src": "1876:24:8" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "1866:2:8", + "nodeType": "YulIdentifier", + "src": "1866:2:8" + }, + "nativeSrc": "1866:35:8", + "nodeType": "YulFunctionCall", + "src": "1866:35:8" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "1859:6:8", + "nodeType": "YulIdentifier", + "src": "1859:6:8" + }, + "nativeSrc": "1859:43:8", + "nodeType": "YulFunctionCall", + "src": "1859:43:8" + }, + "nativeSrc": "1856:63:8", + "nodeType": "YulIf", + "src": "1856:63:8" + } + ] + }, + "name": "validator_revert_t_address", + "nativeSrc": "1803:122:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "1839:5:8", + "nodeType": "YulTypedName", + "src": "1839:5:8", + "type": "" + } + ], + "src": "1803:122:8" + }, + { + "body": { + "nativeSrc": "1983:87:8", + "nodeType": "YulBlock", + "src": "1983:87:8", + "statements": [ + { + "nativeSrc": "1993:29:8", + "nodeType": "YulAssignment", + "src": "1993:29:8", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "2015:6:8", + "nodeType": "YulIdentifier", + "src": "2015:6:8" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2002:12:8", + "nodeType": "YulIdentifier", + "src": "2002:12:8" + }, + "nativeSrc": "2002:20:8", + "nodeType": "YulFunctionCall", + "src": "2002:20:8" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "1993:5:8", + "nodeType": "YulIdentifier", + "src": "1993:5:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "2058:5:8", + "nodeType": "YulIdentifier", + "src": "2058:5:8" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nativeSrc": "2031:26:8", + "nodeType": "YulIdentifier", + "src": "2031:26:8" + }, + "nativeSrc": "2031:33:8", + "nodeType": "YulFunctionCall", + "src": "2031:33:8" + }, + "nativeSrc": "2031:33:8", + "nodeType": "YulExpressionStatement", + "src": "2031:33:8" + } + ] + }, + "name": "abi_decode_t_address", + "nativeSrc": "1931:139:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "1961:6:8", + "nodeType": "YulTypedName", + "src": "1961:6:8", + "type": "" + }, + { + "name": "end", + "nativeSrc": "1969:3:8", + "nodeType": "YulTypedName", + "src": "1969:3:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "1977:5:8", + "nodeType": "YulTypedName", + "src": "1977:5:8", + "type": "" + } + ], + "src": "1931:139:8" + }, + { + "body": { + "nativeSrc": "2121:32:8", + "nodeType": "YulBlock", + "src": "2121:32:8", + "statements": [ + { + "nativeSrc": "2131:16:8", + "nodeType": "YulAssignment", + "src": "2131:16:8", + "value": { + "name": "value", + "nativeSrc": "2142:5:8", + "nodeType": "YulIdentifier", + "src": "2142:5:8" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "2131:7:8", + "nodeType": "YulIdentifier", + "src": "2131:7:8" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nativeSrc": "2076:77:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "2103:5:8", + "nodeType": "YulTypedName", + "src": "2103:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "2113:7:8", + "nodeType": "YulTypedName", + "src": "2113:7:8", + "type": "" + } + ], + "src": "2076:77:8" + }, + { + "body": { + "nativeSrc": "2202:79:8", + "nodeType": "YulBlock", + "src": "2202:79:8", + "statements": [ + { + "body": { + "nativeSrc": "2259:16:8", + "nodeType": "YulBlock", + "src": "2259:16:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2268:1:8", + "nodeType": "YulLiteral", + "src": "2268:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2271:1:8", + "nodeType": "YulLiteral", + "src": "2271:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2261:6:8", + "nodeType": "YulIdentifier", + "src": "2261:6:8" + }, + "nativeSrc": "2261:12:8", + "nodeType": "YulFunctionCall", + "src": "2261:12:8" + }, + "nativeSrc": "2261:12:8", + "nodeType": "YulExpressionStatement", + "src": "2261:12:8" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "2225:5:8", + "nodeType": "YulIdentifier", + "src": "2225:5:8" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "2250:5:8", + "nodeType": "YulIdentifier", + "src": "2250:5:8" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nativeSrc": "2232:17:8", + "nodeType": "YulIdentifier", + "src": "2232:17:8" + }, + "nativeSrc": "2232:24:8", + "nodeType": "YulFunctionCall", + "src": "2232:24:8" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "2222:2:8", + "nodeType": "YulIdentifier", + "src": "2222:2:8" + }, + "nativeSrc": "2222:35:8", + "nodeType": "YulFunctionCall", + "src": "2222:35:8" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2215:6:8", + "nodeType": "YulIdentifier", + "src": "2215:6:8" + }, + "nativeSrc": "2215:43:8", + "nodeType": "YulFunctionCall", + "src": "2215:43:8" + }, + "nativeSrc": "2212:63:8", + "nodeType": "YulIf", + "src": "2212:63:8" + } + ] + }, + "name": "validator_revert_t_uint256", + "nativeSrc": "2159:122:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "2195:5:8", + "nodeType": "YulTypedName", + "src": "2195:5:8", + "type": "" + } + ], + "src": "2159:122:8" + }, + { + "body": { + "nativeSrc": "2339:87:8", + "nodeType": "YulBlock", + "src": "2339:87:8", + "statements": [ + { + "nativeSrc": "2349:29:8", + "nodeType": "YulAssignment", + "src": "2349:29:8", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "2371:6:8", + "nodeType": "YulIdentifier", + "src": "2371:6:8" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2358:12:8", + "nodeType": "YulIdentifier", + "src": "2358:12:8" + }, + "nativeSrc": "2358:20:8", + "nodeType": "YulFunctionCall", + "src": "2358:20:8" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "2349:5:8", + "nodeType": "YulIdentifier", + "src": "2349:5:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "2414:5:8", + "nodeType": "YulIdentifier", + "src": "2414:5:8" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nativeSrc": "2387:26:8", + "nodeType": "YulIdentifier", + "src": "2387:26:8" + }, + "nativeSrc": "2387:33:8", + "nodeType": "YulFunctionCall", + "src": "2387:33:8" + }, + "nativeSrc": "2387:33:8", + "nodeType": "YulExpressionStatement", + "src": "2387:33:8" + } + ] + }, + "name": "abi_decode_t_uint256", + "nativeSrc": "2287:139:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "2317:6:8", + "nodeType": "YulTypedName", + "src": "2317:6:8", + "type": "" + }, + { + "name": "end", + "nativeSrc": "2325:3:8", + "nodeType": "YulTypedName", + "src": "2325:3:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "2333:5:8", + "nodeType": "YulTypedName", + "src": "2333:5:8", + "type": "" + } + ], + "src": "2287:139:8" + }, + { + "body": { + "nativeSrc": "2515:391:8", + "nodeType": "YulBlock", + "src": "2515:391:8", + "statements": [ + { + "body": { + "nativeSrc": "2561:83:8", + "nodeType": "YulBlock", + "src": "2561:83:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "2563:77:8", + "nodeType": "YulIdentifier", + "src": "2563:77:8" + }, + "nativeSrc": "2563:79:8", + "nodeType": "YulFunctionCall", + "src": "2563:79:8" + }, + "nativeSrc": "2563:79:8", + "nodeType": "YulExpressionStatement", + "src": "2563:79:8" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "2536:7:8", + "nodeType": "YulIdentifier", + "src": "2536:7:8" + }, + { + "name": "headStart", + "nativeSrc": "2545:9:8", + "nodeType": "YulIdentifier", + "src": "2545:9:8" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2532:3:8", + "nodeType": "YulIdentifier", + "src": "2532:3:8" + }, + "nativeSrc": "2532:23:8", + "nodeType": "YulFunctionCall", + "src": "2532:23:8" + }, + { + "kind": "number", + "nativeSrc": "2557:2:8", + "nodeType": "YulLiteral", + "src": "2557:2:8", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2528:3:8", + "nodeType": "YulIdentifier", + "src": "2528:3:8" + }, + "nativeSrc": "2528:32:8", + "nodeType": "YulFunctionCall", + "src": "2528:32:8" + }, + "nativeSrc": "2525:119:8", + "nodeType": "YulIf", + "src": "2525:119:8" + }, + { + "nativeSrc": "2654:117:8", + "nodeType": "YulBlock", + "src": "2654:117:8", + "statements": [ + { + "nativeSrc": "2669:15:8", + "nodeType": "YulVariableDeclaration", + "src": "2669:15:8", + "value": { + "kind": "number", + "nativeSrc": "2683:1:8", + "nodeType": "YulLiteral", + "src": "2683:1:8", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "2673:6:8", + "nodeType": "YulTypedName", + "src": "2673:6:8", + "type": "" + } + ] + }, + { + "nativeSrc": "2698:63:8", + "nodeType": "YulAssignment", + "src": "2698:63:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2733:9:8", + "nodeType": "YulIdentifier", + "src": "2733:9:8" + }, + { + "name": "offset", + "nativeSrc": "2744:6:8", + "nodeType": "YulIdentifier", + "src": "2744:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2729:3:8", + "nodeType": "YulIdentifier", + "src": "2729:3:8" + }, + "nativeSrc": "2729:22:8", + "nodeType": "YulFunctionCall", + "src": "2729:22:8" + }, + { + "name": "dataEnd", + "nativeSrc": "2753:7:8", + "nodeType": "YulIdentifier", + "src": "2753:7:8" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nativeSrc": "2708:20:8", + "nodeType": "YulIdentifier", + "src": "2708:20:8" + }, + "nativeSrc": "2708:53:8", + "nodeType": "YulFunctionCall", + "src": "2708:53:8" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "2698:6:8", + "nodeType": "YulIdentifier", + "src": "2698:6:8" + } + ] + } + ] + }, + { + "nativeSrc": "2781:118:8", + "nodeType": "YulBlock", + "src": "2781:118:8", + "statements": [ + { + "nativeSrc": "2796:16:8", + "nodeType": "YulVariableDeclaration", + "src": "2796:16:8", + "value": { + "kind": "number", + "nativeSrc": "2810:2:8", + "nodeType": "YulLiteral", + "src": "2810:2:8", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "2800:6:8", + "nodeType": "YulTypedName", + "src": "2800:6:8", + "type": "" + } + ] + }, + { + "nativeSrc": "2826:63:8", + "nodeType": "YulAssignment", + "src": "2826:63:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2861:9:8", + "nodeType": "YulIdentifier", + "src": "2861:9:8" + }, + { + "name": "offset", + "nativeSrc": "2872:6:8", + "nodeType": "YulIdentifier", + "src": "2872:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2857:3:8", + "nodeType": "YulIdentifier", + "src": "2857:3:8" + }, + "nativeSrc": "2857:22:8", + "nodeType": "YulFunctionCall", + "src": "2857:22:8" + }, + { + "name": "dataEnd", + "nativeSrc": "2881:7:8", + "nodeType": "YulIdentifier", + "src": "2881:7:8" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nativeSrc": "2836:20:8", + "nodeType": "YulIdentifier", + "src": "2836:20:8" + }, + "nativeSrc": "2836:53:8", + "nodeType": "YulFunctionCall", + "src": "2836:53:8" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "2826:6:8", + "nodeType": "YulIdentifier", + "src": "2826:6:8" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nativeSrc": "2432:474:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2477:9:8", + "nodeType": "YulTypedName", + "src": "2477:9:8", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "2488:7:8", + "nodeType": "YulTypedName", + "src": "2488:7:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "2500:6:8", + "nodeType": "YulTypedName", + "src": "2500:6:8", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "2508:6:8", + "nodeType": "YulTypedName", + "src": "2508:6:8", + "type": "" + } + ], + "src": "2432:474:8" + }, + { + "body": { + "nativeSrc": "2954:48:8", + "nodeType": "YulBlock", + "src": "2954:48:8", + "statements": [ + { + "nativeSrc": "2964:32:8", + "nodeType": "YulAssignment", + "src": "2964:32:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "2989:5:8", + "nodeType": "YulIdentifier", + "src": "2989:5:8" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2982:6:8", + "nodeType": "YulIdentifier", + "src": "2982:6:8" + }, + "nativeSrc": "2982:13:8", + "nodeType": "YulFunctionCall", + "src": "2982:13:8" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2975:6:8", + "nodeType": "YulIdentifier", + "src": "2975:6:8" + }, + "nativeSrc": "2975:21:8", + "nodeType": "YulFunctionCall", + "src": "2975:21:8" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "2964:7:8", + "nodeType": "YulIdentifier", + "src": "2964:7:8" + } + ] + } + ] + }, + "name": "cleanup_t_bool", + "nativeSrc": "2912:90:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "2936:5:8", + "nodeType": "YulTypedName", + "src": "2936:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "2946:7:8", + "nodeType": "YulTypedName", + "src": "2946:7:8", + "type": "" + } + ], + "src": "2912:90:8" + }, + { + "body": { + "nativeSrc": "3067:50:8", + "nodeType": "YulBlock", + "src": "3067:50:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "3084:3:8", + "nodeType": "YulIdentifier", + "src": "3084:3:8" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "3104:5:8", + "nodeType": "YulIdentifier", + "src": "3104:5:8" + } + ], + "functionName": { + "name": "cleanup_t_bool", + "nativeSrc": "3089:14:8", + "nodeType": "YulIdentifier", + "src": "3089:14:8" + }, + "nativeSrc": "3089:21:8", + "nodeType": "YulFunctionCall", + "src": "3089:21:8" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3077:6:8", + "nodeType": "YulIdentifier", + "src": "3077:6:8" + }, + "nativeSrc": "3077:34:8", + "nodeType": "YulFunctionCall", + "src": "3077:34:8" + }, + "nativeSrc": "3077:34:8", + "nodeType": "YulExpressionStatement", + "src": "3077:34:8" + } + ] + }, + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nativeSrc": "3008:109:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "3055:5:8", + "nodeType": "YulTypedName", + "src": "3055:5:8", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "3062:3:8", + "nodeType": "YulTypedName", + "src": "3062:3:8", + "type": "" + } + ], + "src": "3008:109:8" + }, + { + "body": { + "nativeSrc": "3215:118:8", + "nodeType": "YulBlock", + "src": "3215:118:8", + "statements": [ + { + "nativeSrc": "3225:26:8", + "nodeType": "YulAssignment", + "src": "3225:26:8", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3237:9:8", + "nodeType": "YulIdentifier", + "src": "3237:9:8" + }, + { + "kind": "number", + "nativeSrc": "3248:2:8", + "nodeType": "YulLiteral", + "src": "3248:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3233:3:8", + "nodeType": "YulIdentifier", + "src": "3233:3:8" + }, + "nativeSrc": "3233:18:8", + "nodeType": "YulFunctionCall", + "src": "3233:18:8" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "3225:4:8", + "nodeType": "YulIdentifier", + "src": "3225:4:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "3299:6:8", + "nodeType": "YulIdentifier", + "src": "3299:6:8" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3312:9:8", + "nodeType": "YulIdentifier", + "src": "3312:9:8" + }, + { + "kind": "number", + "nativeSrc": "3323:1:8", + "nodeType": "YulLiteral", + "src": "3323:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3308:3:8", + "nodeType": "YulIdentifier", + "src": "3308:3:8" + }, + "nativeSrc": "3308:17:8", + "nodeType": "YulFunctionCall", + "src": "3308:17:8" + } + ], + "functionName": { + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nativeSrc": "3261:37:8", + "nodeType": "YulIdentifier", + "src": "3261:37:8" + }, + "nativeSrc": "3261:65:8", + "nodeType": "YulFunctionCall", + "src": "3261:65:8" + }, + "nativeSrc": "3261:65:8", + "nodeType": "YulExpressionStatement", + "src": "3261:65:8" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nativeSrc": "3123:210:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3187:9:8", + "nodeType": "YulTypedName", + "src": "3187:9:8", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "3199:6:8", + "nodeType": "YulTypedName", + "src": "3199:6:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "3210:4:8", + "nodeType": "YulTypedName", + "src": "3210:4:8", + "type": "" + } + ], + "src": "3123:210:8" + }, + { + "body": { + "nativeSrc": "3404:53:8", + "nodeType": "YulBlock", + "src": "3404:53:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "3421:3:8", + "nodeType": "YulIdentifier", + "src": "3421:3:8" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "3444:5:8", + "nodeType": "YulIdentifier", + "src": "3444:5:8" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nativeSrc": "3426:17:8", + "nodeType": "YulIdentifier", + "src": "3426:17:8" + }, + "nativeSrc": "3426:24:8", + "nodeType": "YulFunctionCall", + "src": "3426:24:8" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3414:6:8", + "nodeType": "YulIdentifier", + "src": "3414:6:8" + }, + "nativeSrc": "3414:37:8", + "nodeType": "YulFunctionCall", + "src": "3414:37:8" + }, + "nativeSrc": "3414:37:8", + "nodeType": "YulExpressionStatement", + "src": "3414:37:8" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nativeSrc": "3339:118:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "3392:5:8", + "nodeType": "YulTypedName", + "src": "3392:5:8", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "3399:3:8", + "nodeType": "YulTypedName", + "src": "3399:3:8", + "type": "" + } + ], + "src": "3339:118:8" + }, + { + "body": { + "nativeSrc": "3561:124:8", + "nodeType": "YulBlock", + "src": "3561:124:8", + "statements": [ + { + "nativeSrc": "3571:26:8", + "nodeType": "YulAssignment", + "src": "3571:26:8", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3583:9:8", + "nodeType": "YulIdentifier", + "src": "3583:9:8" + }, + { + "kind": "number", + "nativeSrc": "3594:2:8", + "nodeType": "YulLiteral", + "src": "3594:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3579:3:8", + "nodeType": "YulIdentifier", + "src": "3579:3:8" + }, + "nativeSrc": "3579:18:8", + "nodeType": "YulFunctionCall", + "src": "3579:18:8" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "3571:4:8", + "nodeType": "YulIdentifier", + "src": "3571:4:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "3651:6:8", + "nodeType": "YulIdentifier", + "src": "3651:6:8" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3664:9:8", + "nodeType": "YulIdentifier", + "src": "3664:9:8" + }, + { + "kind": "number", + "nativeSrc": "3675:1:8", + "nodeType": "YulLiteral", + "src": "3675:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3660:3:8", + "nodeType": "YulIdentifier", + "src": "3660:3:8" + }, + "nativeSrc": "3660:17:8", + "nodeType": "YulFunctionCall", + "src": "3660:17:8" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nativeSrc": "3607:43:8", + "nodeType": "YulIdentifier", + "src": "3607:43:8" + }, + "nativeSrc": "3607:71:8", + "nodeType": "YulFunctionCall", + "src": "3607:71:8" + }, + "nativeSrc": "3607:71:8", + "nodeType": "YulExpressionStatement", + "src": "3607:71:8" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nativeSrc": "3463:222:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3533:9:8", + "nodeType": "YulTypedName", + "src": "3533:9:8", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "3545:6:8", + "nodeType": "YulTypedName", + "src": "3545:6:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "3556:4:8", + "nodeType": "YulTypedName", + "src": "3556:4:8", + "type": "" + } + ], + "src": "3463:222:8" + }, + { + "body": { + "nativeSrc": "3791:519:8", + "nodeType": "YulBlock", + "src": "3791:519:8", + "statements": [ + { + "body": { + "nativeSrc": "3837:83:8", + "nodeType": "YulBlock", + "src": "3837:83:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "3839:77:8", + "nodeType": "YulIdentifier", + "src": "3839:77:8" + }, + "nativeSrc": "3839:79:8", + "nodeType": "YulFunctionCall", + "src": "3839:79:8" + }, + "nativeSrc": "3839:79:8", + "nodeType": "YulExpressionStatement", + "src": "3839:79:8" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "3812:7:8", + "nodeType": "YulIdentifier", + "src": "3812:7:8" + }, + { + "name": "headStart", + "nativeSrc": "3821:9:8", + "nodeType": "YulIdentifier", + "src": "3821:9:8" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3808:3:8", + "nodeType": "YulIdentifier", + "src": "3808:3:8" + }, + "nativeSrc": "3808:23:8", + "nodeType": "YulFunctionCall", + "src": "3808:23:8" + }, + { + "kind": "number", + "nativeSrc": "3833:2:8", + "nodeType": "YulLiteral", + "src": "3833:2:8", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "3804:3:8", + "nodeType": "YulIdentifier", + "src": "3804:3:8" + }, + "nativeSrc": "3804:32:8", + "nodeType": "YulFunctionCall", + "src": "3804:32:8" + }, + "nativeSrc": "3801:119:8", + "nodeType": "YulIf", + "src": "3801:119:8" + }, + { + "nativeSrc": "3930:117:8", + "nodeType": "YulBlock", + "src": "3930:117:8", + "statements": [ + { + "nativeSrc": "3945:15:8", + "nodeType": "YulVariableDeclaration", + "src": "3945:15:8", + "value": { + "kind": "number", + "nativeSrc": "3959:1:8", + "nodeType": "YulLiteral", + "src": "3959:1:8", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "3949:6:8", + "nodeType": "YulTypedName", + "src": "3949:6:8", + "type": "" + } + ] + }, + { + "nativeSrc": "3974:63:8", + "nodeType": "YulAssignment", + "src": "3974:63:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4009:9:8", + "nodeType": "YulIdentifier", + "src": "4009:9:8" + }, + { + "name": "offset", + "nativeSrc": "4020:6:8", + "nodeType": "YulIdentifier", + "src": "4020:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4005:3:8", + "nodeType": "YulIdentifier", + "src": "4005:3:8" + }, + "nativeSrc": "4005:22:8", + "nodeType": "YulFunctionCall", + "src": "4005:22:8" + }, + { + "name": "dataEnd", + "nativeSrc": "4029:7:8", + "nodeType": "YulIdentifier", + "src": "4029:7:8" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nativeSrc": "3984:20:8", + "nodeType": "YulIdentifier", + "src": "3984:20:8" + }, + "nativeSrc": "3984:53:8", + "nodeType": "YulFunctionCall", + "src": "3984:53:8" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "3974:6:8", + "nodeType": "YulIdentifier", + "src": "3974:6:8" + } + ] + } + ] + }, + { + "nativeSrc": "4057:118:8", + "nodeType": "YulBlock", + "src": "4057:118:8", + "statements": [ + { + "nativeSrc": "4072:16:8", + "nodeType": "YulVariableDeclaration", + "src": "4072:16:8", + "value": { + "kind": "number", + "nativeSrc": "4086:2:8", + "nodeType": "YulLiteral", + "src": "4086:2:8", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "4076:6:8", + "nodeType": "YulTypedName", + "src": "4076:6:8", + "type": "" + } + ] + }, + { + "nativeSrc": "4102:63:8", + "nodeType": "YulAssignment", + "src": "4102:63:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4137:9:8", + "nodeType": "YulIdentifier", + "src": "4137:9:8" + }, + { + "name": "offset", + "nativeSrc": "4148:6:8", + "nodeType": "YulIdentifier", + "src": "4148:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4133:3:8", + "nodeType": "YulIdentifier", + "src": "4133:3:8" + }, + "nativeSrc": "4133:22:8", + "nodeType": "YulFunctionCall", + "src": "4133:22:8" + }, + { + "name": "dataEnd", + "nativeSrc": "4157:7:8", + "nodeType": "YulIdentifier", + "src": "4157:7:8" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nativeSrc": "4112:20:8", + "nodeType": "YulIdentifier", + "src": "4112:20:8" + }, + "nativeSrc": "4112:53:8", + "nodeType": "YulFunctionCall", + "src": "4112:53:8" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "4102:6:8", + "nodeType": "YulIdentifier", + "src": "4102:6:8" + } + ] + } + ] + }, + { + "nativeSrc": "4185:118:8", + "nodeType": "YulBlock", + "src": "4185:118:8", + "statements": [ + { + "nativeSrc": "4200:16:8", + "nodeType": "YulVariableDeclaration", + "src": "4200:16:8", + "value": { + "kind": "number", + "nativeSrc": "4214:2:8", + "nodeType": "YulLiteral", + "src": "4214:2:8", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "4204:6:8", + "nodeType": "YulTypedName", + "src": "4204:6:8", + "type": "" + } + ] + }, + { + "nativeSrc": "4230:63:8", + "nodeType": "YulAssignment", + "src": "4230:63:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4265:9:8", + "nodeType": "YulIdentifier", + "src": "4265:9:8" + }, + { + "name": "offset", + "nativeSrc": "4276:6:8", + "nodeType": "YulIdentifier", + "src": "4276:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4261:3:8", + "nodeType": "YulIdentifier", + "src": "4261:3:8" + }, + "nativeSrc": "4261:22:8", + "nodeType": "YulFunctionCall", + "src": "4261:22:8" + }, + { + "name": "dataEnd", + "nativeSrc": "4285:7:8", + "nodeType": "YulIdentifier", + "src": "4285:7:8" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nativeSrc": "4240:20:8", + "nodeType": "YulIdentifier", + "src": "4240:20:8" + }, + "nativeSrc": "4240:53:8", + "nodeType": "YulFunctionCall", + "src": "4240:53:8" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "4230:6:8", + "nodeType": "YulIdentifier", + "src": "4230:6:8" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256", + "nativeSrc": "3691:619:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3745:9:8", + "nodeType": "YulTypedName", + "src": "3745:9:8", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "3756:7:8", + "nodeType": "YulTypedName", + "src": "3756:7:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "3768:6:8", + "nodeType": "YulTypedName", + "src": "3768:6:8", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "3776:6:8", + "nodeType": "YulTypedName", + "src": "3776:6:8", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "3784:6:8", + "nodeType": "YulTypedName", + "src": "3784:6:8", + "type": "" + } + ], + "src": "3691:619:8" + }, + { + "body": { + "nativeSrc": "4359:43:8", + "nodeType": "YulBlock", + "src": "4359:43:8", + "statements": [ + { + "nativeSrc": "4369:27:8", + "nodeType": "YulAssignment", + "src": "4369:27:8", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "4384:5:8", + "nodeType": "YulIdentifier", + "src": "4384:5:8" + }, + { + "kind": "number", + "nativeSrc": "4391:4:8", + "nodeType": "YulLiteral", + "src": "4391:4:8", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4380:3:8", + "nodeType": "YulIdentifier", + "src": "4380:3:8" + }, + "nativeSrc": "4380:16:8", + "nodeType": "YulFunctionCall", + "src": "4380:16:8" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "4369:7:8", + "nodeType": "YulIdentifier", + "src": "4369:7:8" + } + ] + } + ] + }, + "name": "cleanup_t_uint8", + "nativeSrc": "4316:86:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "4341:5:8", + "nodeType": "YulTypedName", + "src": "4341:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "4351:7:8", + "nodeType": "YulTypedName", + "src": "4351:7:8", + "type": "" + } + ], + "src": "4316:86:8" + }, + { + "body": { + "nativeSrc": "4469:51:8", + "nodeType": "YulBlock", + "src": "4469:51:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "4486:3:8", + "nodeType": "YulIdentifier", + "src": "4486:3:8" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "4507:5:8", + "nodeType": "YulIdentifier", + "src": "4507:5:8" + } + ], + "functionName": { + "name": "cleanup_t_uint8", + "nativeSrc": "4491:15:8", + "nodeType": "YulIdentifier", + "src": "4491:15:8" + }, + "nativeSrc": "4491:22:8", + "nodeType": "YulFunctionCall", + "src": "4491:22:8" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4479:6:8", + "nodeType": "YulIdentifier", + "src": "4479:6:8" + }, + "nativeSrc": "4479:35:8", + "nodeType": "YulFunctionCall", + "src": "4479:35:8" + }, + "nativeSrc": "4479:35:8", + "nodeType": "YulExpressionStatement", + "src": "4479:35:8" + } + ] + }, + "name": "abi_encode_t_uint8_to_t_uint8_fromStack", + "nativeSrc": "4408:112:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "4457:5:8", + "nodeType": "YulTypedName", + "src": "4457:5:8", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "4464:3:8", + "nodeType": "YulTypedName", + "src": "4464:3:8", + "type": "" + } + ], + "src": "4408:112:8" + }, + { + "body": { + "nativeSrc": "4620:120:8", + "nodeType": "YulBlock", + "src": "4620:120:8", + "statements": [ + { + "nativeSrc": "4630:26:8", + "nodeType": "YulAssignment", + "src": "4630:26:8", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4642:9:8", + "nodeType": "YulIdentifier", + "src": "4642:9:8" + }, + { + "kind": "number", + "nativeSrc": "4653:2:8", + "nodeType": "YulLiteral", + "src": "4653:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4638:3:8", + "nodeType": "YulIdentifier", + "src": "4638:3:8" + }, + "nativeSrc": "4638:18:8", + "nodeType": "YulFunctionCall", + "src": "4638:18:8" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "4630:4:8", + "nodeType": "YulIdentifier", + "src": "4630:4:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "4706:6:8", + "nodeType": "YulIdentifier", + "src": "4706:6:8" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4719:9:8", + "nodeType": "YulIdentifier", + "src": "4719:9:8" + }, + { + "kind": "number", + "nativeSrc": "4730:1:8", + "nodeType": "YulLiteral", + "src": "4730:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4715:3:8", + "nodeType": "YulIdentifier", + "src": "4715:3:8" + }, + "nativeSrc": "4715:17:8", + "nodeType": "YulFunctionCall", + "src": "4715:17:8" + } + ], + "functionName": { + "name": "abi_encode_t_uint8_to_t_uint8_fromStack", + "nativeSrc": "4666:39:8", + "nodeType": "YulIdentifier", + "src": "4666:39:8" + }, + "nativeSrc": "4666:67:8", + "nodeType": "YulFunctionCall", + "src": "4666:67:8" + }, + "nativeSrc": "4666:67:8", + "nodeType": "YulExpressionStatement", + "src": "4666:67:8" + } + ] + }, + "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed", + "nativeSrc": "4526:214:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4592:9:8", + "nodeType": "YulTypedName", + "src": "4592:9:8", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "4604:6:8", + "nodeType": "YulTypedName", + "src": "4604:6:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "4615:4:8", + "nodeType": "YulTypedName", + "src": "4615:4:8", + "type": "" + } + ], + "src": "4526:214:8" + }, + { + "body": { + "nativeSrc": "4812:263:8", + "nodeType": "YulBlock", + "src": "4812:263:8", + "statements": [ + { + "body": { + "nativeSrc": "4858:83:8", + "nodeType": "YulBlock", + "src": "4858:83:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "4860:77:8", + "nodeType": "YulIdentifier", + "src": "4860:77:8" + }, + "nativeSrc": "4860:79:8", + "nodeType": "YulFunctionCall", + "src": "4860:79:8" + }, + "nativeSrc": "4860:79:8", + "nodeType": "YulExpressionStatement", + "src": "4860:79:8" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "4833:7:8", + "nodeType": "YulIdentifier", + "src": "4833:7:8" + }, + { + "name": "headStart", + "nativeSrc": "4842:9:8", + "nodeType": "YulIdentifier", + "src": "4842:9:8" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4829:3:8", + "nodeType": "YulIdentifier", + "src": "4829:3:8" + }, + "nativeSrc": "4829:23:8", + "nodeType": "YulFunctionCall", + "src": "4829:23:8" + }, + { + "kind": "number", + "nativeSrc": "4854:2:8", + "nodeType": "YulLiteral", + "src": "4854:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "4825:3:8", + "nodeType": "YulIdentifier", + "src": "4825:3:8" + }, + "nativeSrc": "4825:32:8", + "nodeType": "YulFunctionCall", + "src": "4825:32:8" + }, + "nativeSrc": "4822:119:8", + "nodeType": "YulIf", + "src": "4822:119:8" + }, + { + "nativeSrc": "4951:117:8", + "nodeType": "YulBlock", + "src": "4951:117:8", + "statements": [ + { + "nativeSrc": "4966:15:8", + "nodeType": "YulVariableDeclaration", + "src": "4966:15:8", + "value": { + "kind": "number", + "nativeSrc": "4980:1:8", + "nodeType": "YulLiteral", + "src": "4980:1:8", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "4970:6:8", + "nodeType": "YulTypedName", + "src": "4970:6:8", + "type": "" + } + ] + }, + { + "nativeSrc": "4995:63:8", + "nodeType": "YulAssignment", + "src": "4995:63:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5030:9:8", + "nodeType": "YulIdentifier", + "src": "5030:9:8" + }, + { + "name": "offset", + "nativeSrc": "5041:6:8", + "nodeType": "YulIdentifier", + "src": "5041:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5026:3:8", + "nodeType": "YulIdentifier", + "src": "5026:3:8" + }, + "nativeSrc": "5026:22:8", + "nodeType": "YulFunctionCall", + "src": "5026:22:8" + }, + { + "name": "dataEnd", + "nativeSrc": "5050:7:8", + "nodeType": "YulIdentifier", + "src": "5050:7:8" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nativeSrc": "5005:20:8", + "nodeType": "YulIdentifier", + "src": "5005:20:8" + }, + "nativeSrc": "5005:53:8", + "nodeType": "YulFunctionCall", + "src": "5005:53:8" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "4995:6:8", + "nodeType": "YulIdentifier", + "src": "4995:6:8" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nativeSrc": "4746:329:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4782:9:8", + "nodeType": "YulTypedName", + "src": "4782:9:8", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "4793:7:8", + "nodeType": "YulTypedName", + "src": "4793:7:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "4805:6:8", + "nodeType": "YulTypedName", + "src": "4805:6:8", + "type": "" + } + ], + "src": "4746:329:8" + }, + { + "body": { + "nativeSrc": "5164:391:8", + "nodeType": "YulBlock", + "src": "5164:391:8", + "statements": [ + { + "body": { + "nativeSrc": "5210:83:8", + "nodeType": "YulBlock", + "src": "5210:83:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "5212:77:8", + "nodeType": "YulIdentifier", + "src": "5212:77:8" + }, + "nativeSrc": "5212:79:8", + "nodeType": "YulFunctionCall", + "src": "5212:79:8" + }, + "nativeSrc": "5212:79:8", + "nodeType": "YulExpressionStatement", + "src": "5212:79:8" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "5185:7:8", + "nodeType": "YulIdentifier", + "src": "5185:7:8" + }, + { + "name": "headStart", + "nativeSrc": "5194:9:8", + "nodeType": "YulIdentifier", + "src": "5194:9:8" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5181:3:8", + "nodeType": "YulIdentifier", + "src": "5181:3:8" + }, + "nativeSrc": "5181:23:8", + "nodeType": "YulFunctionCall", + "src": "5181:23:8" + }, + { + "kind": "number", + "nativeSrc": "5206:2:8", + "nodeType": "YulLiteral", + "src": "5206:2:8", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "5177:3:8", + "nodeType": "YulIdentifier", + "src": "5177:3:8" + }, + "nativeSrc": "5177:32:8", + "nodeType": "YulFunctionCall", + "src": "5177:32:8" + }, + "nativeSrc": "5174:119:8", + "nodeType": "YulIf", + "src": "5174:119:8" + }, + { + "nativeSrc": "5303:117:8", + "nodeType": "YulBlock", + "src": "5303:117:8", + "statements": [ + { + "nativeSrc": "5318:15:8", + "nodeType": "YulVariableDeclaration", + "src": "5318:15:8", + "value": { + "kind": "number", + "nativeSrc": "5332:1:8", + "nodeType": "YulLiteral", + "src": "5332:1:8", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "5322:6:8", + "nodeType": "YulTypedName", + "src": "5322:6:8", + "type": "" + } + ] + }, + { + "nativeSrc": "5347:63:8", + "nodeType": "YulAssignment", + "src": "5347:63:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5382:9:8", + "nodeType": "YulIdentifier", + "src": "5382:9:8" + }, + { + "name": "offset", + "nativeSrc": "5393:6:8", + "nodeType": "YulIdentifier", + "src": "5393:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5378:3:8", + "nodeType": "YulIdentifier", + "src": "5378:3:8" + }, + "nativeSrc": "5378:22:8", + "nodeType": "YulFunctionCall", + "src": "5378:22:8" + }, + { + "name": "dataEnd", + "nativeSrc": "5402:7:8", + "nodeType": "YulIdentifier", + "src": "5402:7:8" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nativeSrc": "5357:20:8", + "nodeType": "YulIdentifier", + "src": "5357:20:8" + }, + "nativeSrc": "5357:53:8", + "nodeType": "YulFunctionCall", + "src": "5357:53:8" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "5347:6:8", + "nodeType": "YulIdentifier", + "src": "5347:6:8" + } + ] + } + ] + }, + { + "nativeSrc": "5430:118:8", + "nodeType": "YulBlock", + "src": "5430:118:8", + "statements": [ + { + "nativeSrc": "5445:16:8", + "nodeType": "YulVariableDeclaration", + "src": "5445:16:8", + "value": { + "kind": "number", + "nativeSrc": "5459:2:8", + "nodeType": "YulLiteral", + "src": "5459:2:8", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "5449:6:8", + "nodeType": "YulTypedName", + "src": "5449:6:8", + "type": "" + } + ] + }, + { + "nativeSrc": "5475:63:8", + "nodeType": "YulAssignment", + "src": "5475:63:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5510:9:8", + "nodeType": "YulIdentifier", + "src": "5510:9:8" + }, + { + "name": "offset", + "nativeSrc": "5521:6:8", + "nodeType": "YulIdentifier", + "src": "5521:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5506:3:8", + "nodeType": "YulIdentifier", + "src": "5506:3:8" + }, + "nativeSrc": "5506:22:8", + "nodeType": "YulFunctionCall", + "src": "5506:22:8" + }, + { + "name": "dataEnd", + "nativeSrc": "5530:7:8", + "nodeType": "YulIdentifier", + "src": "5530:7:8" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nativeSrc": "5485:20:8", + "nodeType": "YulIdentifier", + "src": "5485:20:8" + }, + "nativeSrc": "5485:53:8", + "nodeType": "YulFunctionCall", + "src": "5485:53:8" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "5475:6:8", + "nodeType": "YulIdentifier", + "src": "5475:6:8" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nativeSrc": "5081:474:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5126:9:8", + "nodeType": "YulTypedName", + "src": "5126:9:8", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "5137:7:8", + "nodeType": "YulTypedName", + "src": "5137:7:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "5149:6:8", + "nodeType": "YulTypedName", + "src": "5149:6:8", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "5157:6:8", + "nodeType": "YulTypedName", + "src": "5157:6:8", + "type": "" + } + ], + "src": "5081:474:8" + }, + { + "body": { + "nativeSrc": "5589:152:8", + "nodeType": "YulBlock", + "src": "5589:152:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5606:1:8", + "nodeType": "YulLiteral", + "src": "5606:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5609:77:8", + "nodeType": "YulLiteral", + "src": "5609:77:8", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5599:6:8", + "nodeType": "YulIdentifier", + "src": "5599:6:8" + }, + "nativeSrc": "5599:88:8", + "nodeType": "YulFunctionCall", + "src": "5599:88:8" + }, + "nativeSrc": "5599:88:8", + "nodeType": "YulExpressionStatement", + "src": "5599:88:8" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5703:1:8", + "nodeType": "YulLiteral", + "src": "5703:1:8", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "5706:4:8", + "nodeType": "YulLiteral", + "src": "5706:4:8", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5696:6:8", + "nodeType": "YulIdentifier", + "src": "5696:6:8" + }, + "nativeSrc": "5696:15:8", + "nodeType": "YulFunctionCall", + "src": "5696:15:8" + }, + "nativeSrc": "5696:15:8", + "nodeType": "YulExpressionStatement", + "src": "5696:15:8" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5727:1:8", + "nodeType": "YulLiteral", + "src": "5727:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5730:4:8", + "nodeType": "YulLiteral", + "src": "5730:4:8", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5720:6:8", + "nodeType": "YulIdentifier", + "src": "5720:6:8" + }, + "nativeSrc": "5720:15:8", + "nodeType": "YulFunctionCall", + "src": "5720:15:8" + }, + "nativeSrc": "5720:15:8", + "nodeType": "YulExpressionStatement", + "src": "5720:15:8" + } + ] + }, + "name": "panic_error_0x22", + "nativeSrc": "5561:180:8", + "nodeType": "YulFunctionDefinition", + "src": "5561:180:8" + }, + { + "body": { + "nativeSrc": "5798:269:8", + "nodeType": "YulBlock", + "src": "5798:269:8", + "statements": [ + { + "nativeSrc": "5808:22:8", + "nodeType": "YulAssignment", + "src": "5808:22:8", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "5822:4:8", + "nodeType": "YulIdentifier", + "src": "5822:4:8" + }, + { + "kind": "number", + "nativeSrc": "5828:1:8", + "nodeType": "YulLiteral", + "src": "5828:1:8", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "5818:3:8", + "nodeType": "YulIdentifier", + "src": "5818:3:8" + }, + "nativeSrc": "5818:12:8", + "nodeType": "YulFunctionCall", + "src": "5818:12:8" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "5808:6:8", + "nodeType": "YulIdentifier", + "src": "5808:6:8" + } + ] + }, + { + "nativeSrc": "5839:38:8", + "nodeType": "YulVariableDeclaration", + "src": "5839:38:8", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "5869:4:8", + "nodeType": "YulIdentifier", + "src": "5869:4:8" + }, + { + "kind": "number", + "nativeSrc": "5875:1:8", + "nodeType": "YulLiteral", + "src": "5875:1:8", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "5865:3:8", + "nodeType": "YulIdentifier", + "src": "5865:3:8" + }, + "nativeSrc": "5865:12:8", + "nodeType": "YulFunctionCall", + "src": "5865:12:8" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "5843:18:8", + "nodeType": "YulTypedName", + "src": "5843:18:8", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "5916:51:8", + "nodeType": "YulBlock", + "src": "5916:51:8", + "statements": [ + { + "nativeSrc": "5930:27:8", + "nodeType": "YulAssignment", + "src": "5930:27:8", + "value": { + "arguments": [ + { + "name": "length", + "nativeSrc": "5944:6:8", + "nodeType": "YulIdentifier", + "src": "5944:6:8" + }, + { + "kind": "number", + "nativeSrc": "5952:4:8", + "nodeType": "YulLiteral", + "src": "5952:4:8", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "5940:3:8", + "nodeType": "YulIdentifier", + "src": "5940:3:8" + }, + "nativeSrc": "5940:17:8", + "nodeType": "YulFunctionCall", + "src": "5940:17:8" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "5930:6:8", + "nodeType": "YulIdentifier", + "src": "5930:6:8" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "5896:18:8", + "nodeType": "YulIdentifier", + "src": "5896:18:8" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "5889:6:8", + "nodeType": "YulIdentifier", + "src": "5889:6:8" + }, + "nativeSrc": "5889:26:8", + "nodeType": "YulFunctionCall", + "src": "5889:26:8" + }, + "nativeSrc": "5886:81:8", + "nodeType": "YulIf", + "src": "5886:81:8" + }, + { + "body": { + "nativeSrc": "6019:42:8", + "nodeType": "YulBlock", + "src": "6019:42:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x22", + "nativeSrc": "6033:16:8", + "nodeType": "YulIdentifier", + "src": "6033:16:8" + }, + "nativeSrc": "6033:18:8", + "nodeType": "YulFunctionCall", + "src": "6033:18:8" + }, + "nativeSrc": "6033:18:8", + "nodeType": "YulExpressionStatement", + "src": "6033:18:8" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "5983:18:8", + "nodeType": "YulIdentifier", + "src": "5983:18:8" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "6006:6:8", + "nodeType": "YulIdentifier", + "src": "6006:6:8" + }, + { + "kind": "number", + "nativeSrc": "6014:2:8", + "nodeType": "YulLiteral", + "src": "6014:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "6003:2:8", + "nodeType": "YulIdentifier", + "src": "6003:2:8" + }, + "nativeSrc": "6003:14:8", + "nodeType": "YulFunctionCall", + "src": "6003:14:8" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "5980:2:8", + "nodeType": "YulIdentifier", + "src": "5980:2:8" + }, + "nativeSrc": "5980:38:8", + "nodeType": "YulFunctionCall", + "src": "5980:38:8" + }, + "nativeSrc": "5977:84:8", + "nodeType": "YulIf", + "src": "5977:84:8" + } + ] + }, + "name": "extract_byte_array_length", + "nativeSrc": "5747:320:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "5782:4:8", + "nodeType": "YulTypedName", + "src": "5782:4:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nativeSrc": "5791:6:8", + "nodeType": "YulTypedName", + "src": "5791:6:8", + "type": "" + } + ], + "src": "5747:320:8" + }, + { + "body": { + "nativeSrc": "6138:53:8", + "nodeType": "YulBlock", + "src": "6138:53:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "6155:3:8", + "nodeType": "YulIdentifier", + "src": "6155:3:8" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "6178:5:8", + "nodeType": "YulIdentifier", + "src": "6178:5:8" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nativeSrc": "6160:17:8", + "nodeType": "YulIdentifier", + "src": "6160:17:8" + }, + "nativeSrc": "6160:24:8", + "nodeType": "YulFunctionCall", + "src": "6160:24:8" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6148:6:8", + "nodeType": "YulIdentifier", + "src": "6148:6:8" + }, + "nativeSrc": "6148:37:8", + "nodeType": "YulFunctionCall", + "src": "6148:37:8" + }, + "nativeSrc": "6148:37:8", + "nodeType": "YulExpressionStatement", + "src": "6148:37:8" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_fromStack", + "nativeSrc": "6073:118:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "6126:5:8", + "nodeType": "YulTypedName", + "src": "6126:5:8", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "6133:3:8", + "nodeType": "YulTypedName", + "src": "6133:3:8", + "type": "" + } + ], + "src": "6073:118:8" + }, + { + "body": { + "nativeSrc": "6351:288:8", + "nodeType": "YulBlock", + "src": "6351:288:8", + "statements": [ + { + "nativeSrc": "6361:26:8", + "nodeType": "YulAssignment", + "src": "6361:26:8", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6373:9:8", + "nodeType": "YulIdentifier", + "src": "6373:9:8" + }, + { + "kind": "number", + "nativeSrc": "6384:2:8", + "nodeType": "YulLiteral", + "src": "6384:2:8", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6369:3:8", + "nodeType": "YulIdentifier", + "src": "6369:3:8" + }, + "nativeSrc": "6369:18:8", + "nodeType": "YulFunctionCall", + "src": "6369:18:8" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "6361:4:8", + "nodeType": "YulIdentifier", + "src": "6361:4:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "6441:6:8", + "nodeType": "YulIdentifier", + "src": "6441:6:8" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6454:9:8", + "nodeType": "YulIdentifier", + "src": "6454:9:8" + }, + { + "kind": "number", + "nativeSrc": "6465:1:8", + "nodeType": "YulLiteral", + "src": "6465:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6450:3:8", + "nodeType": "YulIdentifier", + "src": "6450:3:8" + }, + "nativeSrc": "6450:17:8", + "nodeType": "YulFunctionCall", + "src": "6450:17:8" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nativeSrc": "6397:43:8", + "nodeType": "YulIdentifier", + "src": "6397:43:8" + }, + "nativeSrc": "6397:71:8", + "nodeType": "YulFunctionCall", + "src": "6397:71:8" + }, + "nativeSrc": "6397:71:8", + "nodeType": "YulExpressionStatement", + "src": "6397:71:8" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nativeSrc": "6522:6:8", + "nodeType": "YulIdentifier", + "src": "6522:6:8" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6535:9:8", + "nodeType": "YulIdentifier", + "src": "6535:9:8" + }, + { + "kind": "number", + "nativeSrc": "6546:2:8", + "nodeType": "YulLiteral", + "src": "6546:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6531:3:8", + "nodeType": "YulIdentifier", + "src": "6531:3:8" + }, + "nativeSrc": "6531:18:8", + "nodeType": "YulFunctionCall", + "src": "6531:18:8" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nativeSrc": "6478:43:8", + "nodeType": "YulIdentifier", + "src": "6478:43:8" + }, + "nativeSrc": "6478:72:8", + "nodeType": "YulFunctionCall", + "src": "6478:72:8" + }, + "nativeSrc": "6478:72:8", + "nodeType": "YulExpressionStatement", + "src": "6478:72:8" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nativeSrc": "6604:6:8", + "nodeType": "YulIdentifier", + "src": "6604:6:8" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6617:9:8", + "nodeType": "YulIdentifier", + "src": "6617:9:8" + }, + { + "kind": "number", + "nativeSrc": "6628:2:8", + "nodeType": "YulLiteral", + "src": "6628:2:8", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6613:3:8", + "nodeType": "YulIdentifier", + "src": "6613:3:8" + }, + "nativeSrc": "6613:18:8", + "nodeType": "YulFunctionCall", + "src": "6613:18:8" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nativeSrc": "6560:43:8", + "nodeType": "YulIdentifier", + "src": "6560:43:8" + }, + "nativeSrc": "6560:72:8", + "nodeType": "YulFunctionCall", + "src": "6560:72:8" + }, + "nativeSrc": "6560:72:8", + "nodeType": "YulExpressionStatement", + "src": "6560:72:8" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "6197:442:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "6307:9:8", + "nodeType": "YulTypedName", + "src": "6307:9:8", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "6319:6:8", + "nodeType": "YulTypedName", + "src": "6319:6:8", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "6327:6:8", + "nodeType": "YulTypedName", + "src": "6327:6:8", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "6335:6:8", + "nodeType": "YulTypedName", + "src": "6335:6:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "6346:4:8", + "nodeType": "YulTypedName", + "src": "6346:4:8", + "type": "" + } + ], + "src": "6197:442:8" + }, + { + "body": { + "nativeSrc": "6743:124:8", + "nodeType": "YulBlock", + "src": "6743:124:8", + "statements": [ + { + "nativeSrc": "6753:26:8", + "nodeType": "YulAssignment", + "src": "6753:26:8", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6765:9:8", + "nodeType": "YulIdentifier", + "src": "6765:9:8" + }, + { + "kind": "number", + "nativeSrc": "6776:2:8", + "nodeType": "YulLiteral", + "src": "6776:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6761:3:8", + "nodeType": "YulIdentifier", + "src": "6761:3:8" + }, + "nativeSrc": "6761:18:8", + "nodeType": "YulFunctionCall", + "src": "6761:18:8" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "6753:4:8", + "nodeType": "YulIdentifier", + "src": "6753:4:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "6833:6:8", + "nodeType": "YulIdentifier", + "src": "6833:6:8" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6846:9:8", + "nodeType": "YulIdentifier", + "src": "6846:9:8" + }, + { + "kind": "number", + "nativeSrc": "6857:1:8", + "nodeType": "YulLiteral", + "src": "6857:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6842:3:8", + "nodeType": "YulIdentifier", + "src": "6842:3:8" + }, + "nativeSrc": "6842:17:8", + "nodeType": "YulFunctionCall", + "src": "6842:17:8" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nativeSrc": "6789:43:8", + "nodeType": "YulIdentifier", + "src": "6789:43:8" + }, + "nativeSrc": "6789:71:8", + "nodeType": "YulFunctionCall", + "src": "6789:71:8" + }, + "nativeSrc": "6789:71:8", + "nodeType": "YulExpressionStatement", + "src": "6789:71:8" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nativeSrc": "6645:222:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "6715:9:8", + "nodeType": "YulTypedName", + "src": "6715:9:8", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "6727:6:8", + "nodeType": "YulTypedName", + "src": "6727:6:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "6738:4:8", + "nodeType": "YulTypedName", + "src": "6738:4:8", + "type": "" + } + ], + "src": "6645:222:8" + }, + { + "body": { + "nativeSrc": "6901:152:8", + "nodeType": "YulBlock", + "src": "6901:152:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6918:1:8", + "nodeType": "YulLiteral", + "src": "6918:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "6921:77:8", + "nodeType": "YulLiteral", + "src": "6921:77:8", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6911:6:8", + "nodeType": "YulIdentifier", + "src": "6911:6:8" + }, + "nativeSrc": "6911:88:8", + "nodeType": "YulFunctionCall", + "src": "6911:88:8" + }, + "nativeSrc": "6911:88:8", + "nodeType": "YulExpressionStatement", + "src": "6911:88:8" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7015:1:8", + "nodeType": "YulLiteral", + "src": "7015:1:8", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "7018:4:8", + "nodeType": "YulLiteral", + "src": "7018:4:8", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7008:6:8", + "nodeType": "YulIdentifier", + "src": "7008:6:8" + }, + "nativeSrc": "7008:15:8", + "nodeType": "YulFunctionCall", + "src": "7008:15:8" + }, + "nativeSrc": "7008:15:8", + "nodeType": "YulExpressionStatement", + "src": "7008:15:8" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7039:1:8", + "nodeType": "YulLiteral", + "src": "7039:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "7042:4:8", + "nodeType": "YulLiteral", + "src": "7042:4:8", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "7032:6:8", + "nodeType": "YulIdentifier", + "src": "7032:6:8" + }, + "nativeSrc": "7032:15:8", + "nodeType": "YulFunctionCall", + "src": "7032:15:8" + }, + "nativeSrc": "7032:15:8", + "nodeType": "YulExpressionStatement", + "src": "7032:15:8" + } + ] + }, + "name": "panic_error_0x11", + "nativeSrc": "6873:180:8", + "nodeType": "YulFunctionDefinition", + "src": "6873:180:8" + }, + { + "body": { + "nativeSrc": "7103:147:8", + "nodeType": "YulBlock", + "src": "7103:147:8", + "statements": [ + { + "nativeSrc": "7113:25:8", + "nodeType": "YulAssignment", + "src": "7113:25:8", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "7136:1:8", + "nodeType": "YulIdentifier", + "src": "7136:1:8" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nativeSrc": "7118:17:8", + "nodeType": "YulIdentifier", + "src": "7118:17:8" + }, + "nativeSrc": "7118:20:8", + "nodeType": "YulFunctionCall", + "src": "7118:20:8" + }, + "variableNames": [ + { + "name": "x", + "nativeSrc": "7113:1:8", + "nodeType": "YulIdentifier", + "src": "7113:1:8" + } + ] + }, + { + "nativeSrc": "7147:25:8", + "nodeType": "YulAssignment", + "src": "7147:25:8", + "value": { + "arguments": [ + { + "name": "y", + "nativeSrc": "7170:1:8", + "nodeType": "YulIdentifier", + "src": "7170:1:8" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nativeSrc": "7152:17:8", + "nodeType": "YulIdentifier", + "src": "7152:17:8" + }, + "nativeSrc": "7152:20:8", + "nodeType": "YulFunctionCall", + "src": "7152:20:8" + }, + "variableNames": [ + { + "name": "y", + "nativeSrc": "7147:1:8", + "nodeType": "YulIdentifier", + "src": "7147:1:8" + } + ] + }, + { + "nativeSrc": "7181:16:8", + "nodeType": "YulAssignment", + "src": "7181:16:8", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "7192:1:8", + "nodeType": "YulIdentifier", + "src": "7192:1:8" + }, + { + "name": "y", + "nativeSrc": "7195:1:8", + "nodeType": "YulIdentifier", + "src": "7195:1:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7188:3:8", + "nodeType": "YulIdentifier", + "src": "7188:3:8" + }, + "nativeSrc": "7188:9:8", + "nodeType": "YulFunctionCall", + "src": "7188:9:8" + }, + "variableNames": [ + { + "name": "sum", + "nativeSrc": "7181:3:8", + "nodeType": "YulIdentifier", + "src": "7181:3:8" + } + ] + }, + { + "body": { + "nativeSrc": "7221:22:8", + "nodeType": "YulBlock", + "src": "7221:22:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "7223:16:8", + "nodeType": "YulIdentifier", + "src": "7223:16:8" + }, + "nativeSrc": "7223:18:8", + "nodeType": "YulFunctionCall", + "src": "7223:18:8" + }, + "nativeSrc": "7223:18:8", + "nodeType": "YulExpressionStatement", + "src": "7223:18:8" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nativeSrc": "7213:1:8", + "nodeType": "YulIdentifier", + "src": "7213:1:8" + }, + { + "name": "sum", + "nativeSrc": "7216:3:8", + "nodeType": "YulIdentifier", + "src": "7216:3:8" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "7210:2:8", + "nodeType": "YulIdentifier", + "src": "7210:2:8" + }, + "nativeSrc": "7210:10:8", + "nodeType": "YulFunctionCall", + "src": "7210:10:8" + }, + "nativeSrc": "7207:36:8", + "nodeType": "YulIf", + "src": "7207:36:8" + } + ] + }, + "name": "checked_add_t_uint256", + "nativeSrc": "7059:191:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "7090:1:8", + "nodeType": "YulTypedName", + "src": "7090:1:8", + "type": "" + }, + { + "name": "y", + "nativeSrc": "7093:1:8", + "nodeType": "YulTypedName", + "src": "7093:1:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nativeSrc": "7099:3:8", + "nodeType": "YulTypedName", + "src": "7099:3:8", + "type": "" + } + ], + "src": "7059:191:8" + } + ] + }, + "contents": "{\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n\n mcopy(dst, src, length)\n mstore(add(dst, length), 0)\n\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function abi_encode_t_uint8_to_t_uint8_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint8(value))\n }\n\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint8_to_t_uint8_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n}\n", + "id": 8, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561000f575f5ffd5b50600436106100b2575f3560e01c80635c975abb1161006f5780635c975abb1461017a57806370a08231146101985780638456cb59146101c857806395d89b41146101d2578063a9059cbb146101f0578063dd62ed3e14610220576100b2565b806306fdde03146100b6578063095ea7b3146100d457806318160ddd1461010457806323b872dd14610122578063313ce567146101525780633f4ba83a14610170575b5f5ffd5b6100be610250565b6040516100cb9190610c14565b60405180910390f35b6100ee60048036038101906100e99190610cc5565b6102e0565b6040516100fb9190610d1d565b60405180910390f35b61010c610302565b6040516101199190610d45565b60405180910390f35b61013c60048036038101906101379190610d5e565b61030b565b6040516101499190610d1d565b60405180910390f35b61015a610339565b6040516101679190610dc9565b60405180910390f35b610178610341565b005b61018261034b565b60405161018f9190610d1d565b60405180910390f35b6101b260048036038101906101ad9190610de2565b610364565b6040516101bf9190610d45565b60405180910390f35b6101d06103a9565b005b6101da6103b3565b6040516101e79190610c14565b60405180910390f35b61020a60048036038101906102059190610cc5565b610443565b6040516102179190610d1d565b60405180910390f35b61023a60048036038101906102359190610e0d565b610465565b6040516102479190610d45565b60405180910390f35b60606003805461025f90610e78565b80601f016020809104026020016040519081016040528092919081815260200182805461028b90610e78565b80156102d65780601f106102ad576101008083540402835291602001916102d6565b820191905f5260205f20905b8154815290600101906020018083116102b957829003601f168201915b5050505050905090565b5f5f6102ea6104e7565b90506102f78185856104ee565b600191505092915050565b5f600254905090565b5f5f6103156104e7565b9050610322858285610500565b61032d858585610593565b60019150509392505050565b5f6012905090565b610349610683565b565b5f60026005541461035c575f61035f565b60015b905090565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6103b16106d3565b565b6060600480546103c290610e78565b80601f01602080910402602001604051908101604052809291908181526020018280546103ee90610e78565b80156104395780601f1061041057610100808354040283529160200191610439565b820191905f5260205f20905b81548152906001019060200180831161041c57829003601f168201915b5050505050905090565b5f5f61044d6104e7565b905061045a818585610593565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b6104fb8383836001610723565b505050565b5f61050b8484610465565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81101561058d578181101561057e578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161057593929190610eb7565b60405180910390fd5b61058c84848484035f610723565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610603575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016105fa9190610eec565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610673575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161066a9190610eec565b60405180910390fd5b61067e8383836108f2565b505050565b61068b61090a565b60016005819055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6106bc6104e7565b6040516106c99190610eec565b60405180910390a1565b6106db61094a565b60026005819055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861070c6104e7565b6040516107199190610eec565b60405180910390a1565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610793575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161078a9190610eec565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610803575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016107fa9190610eec565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156108ec578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108e39190610d45565b60405180910390a35b50505050565b6108fa61094a565b61090583838361098b565b505050565b61091261034b565b610948576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61095261034b565b15610989576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109db578060025f8282546109cf9190610f32565b92505081905550610aa9565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610a64578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610a5b93929190610eb7565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610af0578060025f8282540392505081905550610b3a565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b979190610d45565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610be682610ba4565b610bf08185610bae565b9350610c00818560208601610bbe565b610c0981610bcc565b840191505092915050565b5f6020820190508181035f830152610c2c8184610bdc565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610c6182610c38565b9050919050565b610c7181610c57565b8114610c7b575f5ffd5b50565b5f81359050610c8c81610c68565b92915050565b5f819050919050565b610ca481610c92565b8114610cae575f5ffd5b50565b5f81359050610cbf81610c9b565b92915050565b5f5f60408385031215610cdb57610cda610c34565b5b5f610ce885828601610c7e565b9250506020610cf985828601610cb1565b9150509250929050565b5f8115159050919050565b610d1781610d03565b82525050565b5f602082019050610d305f830184610d0e565b92915050565b610d3f81610c92565b82525050565b5f602082019050610d585f830184610d36565b92915050565b5f5f5f60608486031215610d7557610d74610c34565b5b5f610d8286828701610c7e565b9350506020610d9386828701610c7e565b9250506040610da486828701610cb1565b9150509250925092565b5f60ff82169050919050565b610dc381610dae565b82525050565b5f602082019050610ddc5f830184610dba565b92915050565b5f60208284031215610df757610df6610c34565b5b5f610e0484828501610c7e565b91505092915050565b5f5f60408385031215610e2357610e22610c34565b5b5f610e3085828601610c7e565b9250506020610e4185828601610c7e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610e8f57607f821691505b602082108103610ea257610ea1610e4b565b5b50919050565b610eb181610c57565b82525050565b5f606082019050610eca5f830186610ea8565b610ed76020830185610d36565b610ee46040830184610d36565b949350505050565b5f602082019050610eff5f830184610ea8565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610f3c82610c92565b9150610f4783610c92565b9250828201905080821115610f5f57610f5e610f05565b5b9291505056fea264697066735822122079df6ef2f44460794c07db31a82c5404990135ae596d303e977888265cf5450064736f6c634300081e0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB2 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5C975ABB GT PUSH2 0x6F JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1F0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x220 JUMPI PUSH2 0xB2 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x170 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xBE PUSH2 0x250 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCB SWAP2 SWAP1 PUSH2 0xC14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0xCC5 JUMP JUMPDEST PUSH2 0x2E0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFB SWAP2 SWAP1 PUSH2 0xD1D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10C PUSH2 0x302 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0xD45 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x137 SWAP2 SWAP1 PUSH2 0xD5E JUMP JUMPDEST PUSH2 0x30B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x149 SWAP2 SWAP1 PUSH2 0xD1D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15A PUSH2 0x339 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x167 SWAP2 SWAP1 PUSH2 0xDC9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 PUSH2 0x341 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x182 PUSH2 0x34B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18F SWAP2 SWAP1 PUSH2 0xD1D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B2 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1AD SWAP2 SWAP1 PUSH2 0xDE2 JUMP JUMPDEST PUSH2 0x364 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1BF SWAP2 SWAP1 PUSH2 0xD45 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1D0 PUSH2 0x3A9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1DA PUSH2 0x3B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E7 SWAP2 SWAP1 PUSH2 0xC14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x205 SWAP2 SWAP1 PUSH2 0xCC5 JUMP JUMPDEST PUSH2 0x443 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x217 SWAP2 SWAP1 PUSH2 0xD1D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x235 SWAP2 SWAP1 PUSH2 0xE0D JUMP JUMPDEST PUSH2 0x465 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x247 SWAP2 SWAP1 PUSH2 0xD45 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x25F SWAP1 PUSH2 0xE78 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x28B SWAP1 PUSH2 0xE78 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2D6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2AD JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2D6 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2B9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x2EA PUSH2 0x4E7 JUMP JUMPDEST SWAP1 POP PUSH2 0x2F7 DUP2 DUP6 DUP6 PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x315 PUSH2 0x4E7 JUMP JUMPDEST SWAP1 POP PUSH2 0x322 DUP6 DUP3 DUP6 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x32D DUP6 DUP6 DUP6 PUSH2 0x593 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x12 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x349 PUSH2 0x683 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x2 PUSH1 0x5 SLOAD EQ PUSH2 0x35C JUMPI PUSH0 PUSH2 0x35F JUMP JUMPDEST PUSH1 0x1 JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3B1 PUSH2 0x6D3 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x3C2 SWAP1 PUSH2 0xE78 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3EE SWAP1 PUSH2 0xE78 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x439 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x410 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x439 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x41C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x44D PUSH2 0x4E7 JUMP JUMPDEST SWAP1 POP PUSH2 0x45A DUP2 DUP6 DUP6 PUSH2 0x593 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x4FB DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x723 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x50B DUP5 DUP5 PUSH2 0x465 JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 LT ISZERO PUSH2 0x58D JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x57E JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x575 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xEB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x58C DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x723 JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x603 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5FA SWAP2 SWAP1 PUSH2 0xEEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x673 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x66A SWAP2 SWAP1 PUSH2 0xEEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x67E DUP4 DUP4 DUP4 PUSH2 0x8F2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x68B PUSH2 0x90A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x5 DUP2 SWAP1 SSTORE POP PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA PUSH2 0x6BC PUSH2 0x4E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6C9 SWAP2 SWAP1 PUSH2 0xEEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x6DB PUSH2 0x94A JUMP JUMPDEST PUSH1 0x2 PUSH1 0x5 DUP2 SWAP1 SSTORE POP PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x70C PUSH2 0x4E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x719 SWAP2 SWAP1 PUSH2 0xEEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x793 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x78A SWAP2 SWAP1 PUSH2 0xEEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x803 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7FA SWAP2 SWAP1 PUSH2 0xEEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x8EC JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x8E3 SWAP2 SWAP1 PUSH2 0xD45 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x8FA PUSH2 0x94A JUMP JUMPDEST PUSH2 0x905 DUP4 DUP4 DUP4 PUSH2 0x98B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x912 PUSH2 0x34B JUMP JUMPDEST PUSH2 0x948 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8DFC202B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH2 0x952 PUSH2 0x34B JUMP JUMPDEST ISZERO PUSH2 0x989 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD93C066500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x9DB JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x9CF SWAP2 SWAP1 PUSH2 0xF32 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0xAA9 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xA64 JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA5B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xEB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH0 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xAF0 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0xB3A JUMP JUMPDEST DUP1 PUSH0 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xB97 SWAP2 SWAP1 PUSH2 0xD45 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY PUSH0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0xBE6 DUP3 PUSH2 0xBA4 JUMP JUMPDEST PUSH2 0xBF0 DUP2 DUP6 PUSH2 0xBAE JUMP JUMPDEST SWAP4 POP PUSH2 0xC00 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xBBE JUMP JUMPDEST PUSH2 0xC09 DUP2 PUSH2 0xBCC JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0xC2C DUP2 DUP5 PUSH2 0xBDC JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0xC61 DUP3 PUSH2 0xC38 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xC71 DUP2 PUSH2 0xC57 JUMP JUMPDEST DUP2 EQ PUSH2 0xC7B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xC8C DUP2 PUSH2 0xC68 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xCA4 DUP2 PUSH2 0xC92 JUMP JUMPDEST DUP2 EQ PUSH2 0xCAE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xCBF DUP2 PUSH2 0xC9B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCDB JUMPI PUSH2 0xCDA PUSH2 0xC34 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xCE8 DUP6 DUP3 DUP7 ADD PUSH2 0xC7E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xCF9 DUP6 DUP3 DUP7 ADD PUSH2 0xCB1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD17 DUP2 PUSH2 0xD03 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xD30 PUSH0 DUP4 ADD DUP5 PUSH2 0xD0E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xD3F DUP2 PUSH2 0xC92 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xD58 PUSH0 DUP4 ADD DUP5 PUSH2 0xD36 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xD75 JUMPI PUSH2 0xD74 PUSH2 0xC34 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xD82 DUP7 DUP3 DUP8 ADD PUSH2 0xC7E JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xD93 DUP7 DUP3 DUP8 ADD PUSH2 0xC7E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0xDA4 DUP7 DUP3 DUP8 ADD PUSH2 0xCB1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xDC3 DUP2 PUSH2 0xDAE JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xDDC PUSH0 DUP4 ADD DUP5 PUSH2 0xDBA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDF7 JUMPI PUSH2 0xDF6 PUSH2 0xC34 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xE04 DUP5 DUP3 DUP6 ADD PUSH2 0xC7E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE23 JUMPI PUSH2 0xE22 PUSH2 0xC34 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xE30 DUP6 DUP3 DUP7 ADD PUSH2 0xC7E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xE41 DUP6 DUP3 DUP7 ADD PUSH2 0xC7E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0xE8F JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xEA2 JUMPI PUSH2 0xEA1 PUSH2 0xE4B JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xEB1 DUP2 PUSH2 0xC57 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xECA PUSH0 DUP4 ADD DUP7 PUSH2 0xEA8 JUMP JUMPDEST PUSH2 0xED7 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xD36 JUMP JUMPDEST PUSH2 0xEE4 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xD36 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xEFF PUSH0 DUP4 ADD DUP5 PUSH2 0xEA8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0xF3C DUP3 PUSH2 0xC92 JUMP JUMPDEST SWAP2 POP PUSH2 0xF47 DUP4 PUSH2 0xC92 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0xF5F JUMPI PUSH2 0xF5E PUSH2 0xF05 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH26 0xDF6EF2F44460794C07DB31A82C5404990135AE596D303E977888 0x26 TLOAD CREATE2 GASLIMIT STOP PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ", + "sourceMap": "113:190:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3902:186;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2803:97;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4680:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2688:82;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;248:53:0;;;:::i;:::-;;1729:104:7;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2933:116:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;193:49:0;;;:::i;:::-;;1962:93:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3244:178;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3455:140;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1760:89;1805:13;1837:5;1830:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89;:::o;3902:186::-;3975:4;3991:13;4007:12;:10;:12::i;:::-;3991:28;;4029:31;4038:5;4045:7;4054:5;4029:8;:31::i;:::-;4077:4;4070:11;;;3902:186;;;;:::o;2803:97::-;2855:7;2881:12;;2874:19;;2803:97;:::o;4680:244::-;4767:4;4783:15;4801:12;:10;:12::i;:::-;4783:30;;4823:37;4839:4;4845:7;4854:5;4823:15;:37::i;:::-;4870:26;4880:4;4886:2;4890:5;4870:9;:26::i;:::-;4913:4;4906:11;;;4680:244;;;;;:::o;2688:82::-;2737:5;2761:2;2754:9;;2688:82;:::o;248:53:0:-;284:10;:8;:10::i;:::-;248:53::o;1729:104:7:-;1776:4;1810:1;1799:7;;:12;:27;;1821:5;1799:27;;;1814:4;1799:27;1792:34;;1729:104;:::o;2933:116:2:-;2998:7;3024:9;:18;3034:7;3024:18;;;;;;;;;;;;;;;;3017:25;;2933:116;;;:::o;193:49:0:-;227:8;:6;:8::i;:::-;193:49::o;1962:93:2:-;2009:13;2041:7;2034:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1962:93;:::o;3244:178::-;3313:4;3329:13;3345:12;:10;:12::i;:::-;3329:28;;3367:27;3377:5;3384:2;3388:5;3367:9;:27::i;:::-;3411:4;3404:11;;;3244:178;;;;:::o;3455:140::-;3535:7;3561:11;:18;3573:5;3561:18;;;;;;;;;;;;;;;:27;3580:7;3561:27;;;;;;;;;;;;;;;;3554:34;;3455:140;;;;:::o;656:96:6:-;709:7;735:10;728:17;;656:96;:::o;8630:128:2:-;8714:37;8723:5;8730:7;8739:5;8746:4;8714:8;:37::i;:::-;8630:128;;;:::o;10319:476::-;10418:24;10445:25;10455:5;10462:7;10445:9;:25::i;:::-;10418:52;;10503:17;10484:16;:36;10480:309;;;10559:5;10540:16;:24;10536:130;;;10618:7;10627:16;10645:5;10591:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;10536:130;10707:57;10716:5;10723:7;10751:5;10732:16;:24;10758:5;10707:8;:57::i;:::-;10480:309;10408:387;10319:476;;;:::o;5297:300::-;5396:1;5380:18;;:4;:18;;;5376:86;;5448:1;5421:30;;;;;;;;;;;:::i;:::-;;;;;;;;5376:86;5489:1;5475:16;;:2;:16;;;5471:86;;5543:1;5514:32;;;;;;;;;;;:::i;:::-;;;;;;;;5471:86;5566:24;5574:4;5580:2;5584:5;5566:7;:24::i;:::-;5297:300;;;:::o;2606:113:7:-;1600:16;:14;:16::i;:::-;2674:1:::1;2664:7;:11;;;;2690:22;2699:12;:10;:12::i;:::-;2690:22;;;;;;:::i;:::-;;;;;;;;2606:113::o:0;2362:112::-;1353:19;:17;:19::i;:::-;2431:1:::1;2421:7;:11;;;;2447:20;2454:12;:10;:12::i;:::-;2447:20;;;;;;:::i;:::-;;;;;;;;2362:112::o:0;9605:432:2:-;9734:1;9717:19;;:5;:19;;;9713:89;;9788:1;9759:32;;;;;;;;;;;:::i;:::-;;;;;;;;9713:89;9834:1;9815:21;;:7;:21;;;9811:90;;9887:1;9859:31;;;;;;;;;;;:::i;:::-;;;;;;;;9811:90;9940:5;9910:11;:18;9922:5;9910:18;;;;;;;;;;;;;;;:27;9929:7;9910:27;;;;;;;;;;;;;;;:35;;;;9959:9;9955:76;;;10005:7;9989:31;;9998:5;9989:31;;;10014:5;9989:31;;;;;;:::i;:::-;;;;;;;;9955:76;9605:432;;;;:::o;1113:145:4:-;1353:19:7;:17;:19::i;:::-;1221:30:4::1;1235:4;1241:2;1245:5;1221:13;:30::i;:::-;1113:145:::0;;;:::o;2101:126:7:-;2164:8;:6;:8::i;:::-;2159:62;;2195:15;;;;;;;;;;;;;;2159:62;2101:126::o;1901:128::-;1966:8;:6;:8::i;:::-;1962:61;;;1997:15;;;;;;;;;;;;;;1962:61;1901:128::o;5912:1107:2:-;6017:1;6001:18;;:4;:18;;;5997:540;;6153:5;6137:12;;:21;;;;;;;:::i;:::-;;;;;;;;5997:540;;;6189:19;6211:9;:15;6221:4;6211:15;;;;;;;;;;;;;;;;6189:37;;6258:5;6244:11;:19;6240:115;;;6315:4;6321:11;6334:5;6290:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;6240:115;6507:5;6493:11;:19;6475:9;:15;6485:4;6475:15;;;;;;;;;;;;;;;:37;;;;6175:362;5997:540;6565:1;6551:16;;:2;:16;;;6547:425;;6730:5;6714:12;;:21;;;;;;;;;;;6547:425;;;6942:5;6925:9;:13;6935:2;6925:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;6547:425;7002:2;6987:25;;6996:4;6987:25;;;7006:5;6987:25;;;;;;:::i;:::-;;;;;;;;5912:1107;;;:::o;7:99:8:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:329::-;4805:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;4746:329;;;;:::o;5081:474::-;5149:6;5157;5206:2;5194:9;5185:7;5181:23;5177:32;5174:119;;;5212:79;;:::i;:::-;5174:119;5332:1;5357:53;5402:7;5393:6;5382:9;5378:22;5357:53;:::i;:::-;5347:63;;5303:117;5459:2;5485:53;5530:7;5521:6;5510:9;5506:22;5485:53;:::i;:::-;5475:63;;5430:118;5081:474;;;;;:::o;5561:180::-;5609:77;5606:1;5599:88;5706:4;5703:1;5696:15;5730:4;5727:1;5720:15;5747:320;5791:6;5828:1;5822:4;5818:12;5808:22;;5875:1;5869:4;5865:12;5896:18;5886:81;;5952:4;5944:6;5940:17;5930:27;;5886:81;6014:2;6006:6;6003:14;5983:18;5980:38;5977:84;;6033:18;;:::i;:::-;5977:84;5798:269;5747:320;;;:::o;6073:118::-;6160:24;6178:5;6160:24;:::i;:::-;6155:3;6148:37;6073:118;;:::o;6197:442::-;6346:4;6384:2;6373:9;6369:18;6361:26;;6397:71;6465:1;6454:9;6450:17;6441:6;6397:71;:::i;:::-;6478:72;6546:2;6535:9;6531:18;6522:6;6478:72;:::i;:::-;6560;6628:2;6617:9;6613:18;6604:6;6560:72;:::i;:::-;6197:442;;;;;;:::o;6645:222::-;6738:4;6776:2;6765:9;6761:18;6753:26;;6789:71;6857:1;6846:9;6842:17;6833:6;6789:71;:::i;:::-;6645:222;;;;:::o;6873:180::-;6921:77;6918:1;6911:88;7018:4;7015:1;7008:15;7042:4;7039:1;7032:15;7059:191;7099:3;7118:20;7136:1;7118:20;:::i;:::-;7113:25;;7152:20;7170:1;7152:20;:::i;:::-;7147:25;;7195:1;7192;7188:9;7181:16;;7216:3;7213:1;7210:10;7207:36;;;7223:18;;:::i;:::-;7207:36;7059:191;;;;:::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "799000", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "allowance(address,address)": "infinite", + "approve(address,uint256)": "infinite", + "balanceOf(address)": "2850", + "decimals()": "427", + "name()": "infinite", + "pause()": "25805", + "paused()": "2471", + "symbol()": "infinite", + "totalSupply()": "2477", + "transfer(address,uint256)": "infinite", + "transferFrom(address,address,uint256)": "infinite", + "unpause()": "2503" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 113, + "end": 303, + "name": "PUSH", + "source": 0, + "value": "80" + }, + { + "begin": 113, + "end": 303, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 113, + "end": 303, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 151, + "end": 187, + "name": "CALLVALUE", + "source": 0 + }, + { + "begin": 151, + "end": 187, + "name": "DUP1", + "source": 0 + }, + { + "begin": 151, + "end": 187, + "name": "ISZERO", + "source": 0 + }, + { + "begin": 151, + "end": 187, + "name": "PUSH [tag]", + "source": 0, + "value": "1" + }, + { + "begin": 151, + "end": 187, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 151, + "end": 187, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 151, + "end": 187, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 151, + "end": 187, + "name": "REVERT", + "source": 0 + }, + { + "begin": 151, + "end": 187, + "name": "tag", + "source": 0, + "value": "1" + }, + { + "begin": 151, + "end": 187, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 151, + "end": 187, + "name": "POP", + "source": 0 + }, + { + "begin": 1582, + "end": 1695, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 1582, + "end": 1695, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 1582, + "end": 1695, + "name": "DUP1", + "source": 2 + }, + { + "begin": 1582, + "end": 1695, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 1582, + "end": 1695, + "name": "ADD", + "source": 2 + }, + { + "begin": 1582, + "end": 1695, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 1582, + "end": 1695, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 1582, + "end": 1695, + "name": "DUP1", + "source": 2 + }, + { + "begin": 1582, + "end": 1695, + "name": "PUSH", + "source": 2, + "value": "3" + }, + { + "begin": 1582, + "end": 1695, + "name": "DUP2", + "source": 2 + }, + { + "begin": 1582, + "end": 1695, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 1582, + "end": 1695, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 1582, + "end": 1695, + "name": "ADD", + "source": 2 + }, + { + "begin": 1582, + "end": 1695, + "name": "PUSH", + "source": 2, + "value": "4C4F4C0000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1582, + "end": 1695, + "name": "DUP2", + "source": 2 + }, + { + "begin": 1582, + "end": 1695, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 1582, + "end": 1695, + "name": "POP", + "source": 2 + }, + { + "begin": 1582, + "end": 1695, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 1582, + "end": 1695, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 1582, + "end": 1695, + "name": "DUP1", + "source": 2 + }, + { + "begin": 1582, + "end": 1695, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 1582, + "end": 1695, + "name": "ADD", + "source": 2 + }, + { + "begin": 1582, + "end": 1695, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 1582, + "end": 1695, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 1582, + "end": 1695, + "name": "DUP1", + "source": 2 + }, + { + "begin": 1582, + "end": 1695, + "name": "PUSH", + "source": 2, + "value": "3" + }, + { + "begin": 1582, + "end": 1695, + "name": "DUP2", + "source": 2 + }, + { + "begin": 1582, + "end": 1695, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 1582, + "end": 1695, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 1582, + "end": 1695, + "name": "ADD", + "source": 2 + }, + { + "begin": 1582, + "end": 1695, + "name": "PUSH", + "source": 2, + "value": "4C4F4C0000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1582, + "end": 1695, + "name": "DUP2", + "source": 2 + }, + { + "begin": 1582, + "end": 1695, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 1582, + "end": 1695, + "name": "POP", + "source": 2 + }, + { + "begin": 1656, + "end": 1661, + "name": "DUP2", + "source": 2 + }, + { + "begin": 1648, + "end": 1653, + "name": "PUSH", + "source": 2, + "value": "3" + }, + { + "begin": 1648, + "end": 1661, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1648, + "end": 1661, + "name": "DUP2", + "source": 2 + }, + { + "begin": 1648, + "end": 1661, + "name": "PUSH [tag]", + "source": 2, + "value": "5" + }, + { + "begin": 1648, + "end": 1661, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 1648, + "end": 1661, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1648, + "end": 1661, + "name": "PUSH [tag]", + "source": 2, + "value": "6" + }, + { + "begin": 1648, + "end": 1661, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 1648, + "end": 1661, + "name": "tag", + "source": 2, + "value": "5" + }, + { + "begin": 1648, + "end": 1661, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1648, + "end": 1661, + "name": "POP", + "source": 2 + }, + { + "begin": 1681, + "end": 1688, + "name": "DUP1", + "source": 2 + }, + { + "begin": 1671, + "end": 1678, + "name": "PUSH", + "source": 2, + "value": "4" + }, + { + "begin": 1671, + "end": 1688, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1671, + "end": 1688, + "name": "DUP2", + "source": 2 + }, + { + "begin": 1671, + "end": 1688, + "name": "PUSH [tag]", + "source": 2, + "value": "7" + }, + { + "begin": 1671, + "end": 1688, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 1671, + "end": 1688, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1671, + "end": 1688, + "name": "PUSH [tag]", + "source": 2, + "value": "6" + }, + { + "begin": 1671, + "end": 1688, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 1671, + "end": 1688, + "name": "tag", + "source": 2, + "value": "7" + }, + { + "begin": 1671, + "end": 1688, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1671, + "end": 1688, + "name": "POP", + "source": 2 + }, + { + "begin": 1582, + "end": 1695, + "name": "POP", + "source": 2 + }, + { + "begin": 1582, + "end": 1695, + "name": "POP", + "source": 2 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH [tag]", + "source": 0, + "value": "9" + }, + { + "begin": 113, + "end": 303, + "name": "JUMP", + "source": 0 + }, + { + "begin": 7, + "end": 106, + "name": "tag", + "source": 8, + "value": "10" + }, + { + "begin": 7, + "end": 106, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 59, + "end": 65, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 93, + "end": 98, + "name": "DUP2", + "source": 8 + }, + { + "begin": 87, + "end": 99, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 77, + "end": 99, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 77, + "end": 99, + "name": "POP", + "source": 8 + }, + { + "begin": 7, + "end": 106, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 7, + "end": 106, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 7, + "end": 106, + "name": "POP", + "source": 8 + }, + { + "begin": 7, + "end": 106, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 112, + "end": 292, + "name": "tag", + "source": 8, + "value": "11" + }, + { + "begin": 112, + "end": 292, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 160, + "end": 237, + "name": "PUSH", + "source": 8, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 157, + "end": 158, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 150, + "end": 238, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 257, + "end": 261, + "name": "PUSH", + "source": 8, + "value": "41" + }, + { + "begin": 254, + "end": 255, + "name": "PUSH", + "source": 8, + "value": "4" + }, + { + "begin": 247, + "end": 262, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 281, + "end": 285, + "name": "PUSH", + "source": 8, + "value": "24" + }, + { + "begin": 278, + "end": 279, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 271, + "end": 286, + "name": "REVERT", + "source": 8 + }, + { + "begin": 298, + "end": 478, + "name": "tag", + "source": 8, + "value": "12" + }, + { + "begin": 298, + "end": 478, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 346, + "end": 423, + "name": "PUSH", + "source": 8, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 343, + "end": 344, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 336, + "end": 424, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 443, + "end": 447, + "name": "PUSH", + "source": 8, + "value": "22" + }, + { + "begin": 440, + "end": 441, + "name": "PUSH", + "source": 8, + "value": "4" + }, + { + "begin": 433, + "end": 448, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 467, + "end": 471, + "name": "PUSH", + "source": 8, + "value": "24" + }, + { + "begin": 464, + "end": 465, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 457, + "end": 472, + "name": "REVERT", + "source": 8 + }, + { + "begin": 484, + "end": 804, + "name": "tag", + "source": 8, + "value": "13" + }, + { + "begin": 484, + "end": 804, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 528, + "end": 534, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 565, + "end": 566, + "name": "PUSH", + "source": 8, + "value": "2" + }, + { + "begin": 559, + "end": 563, + "name": "DUP3", + "source": 8 + }, + { + "begin": 555, + "end": 567, + "name": "DIV", + "source": 8 + }, + { + "begin": 545, + "end": 567, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 545, + "end": 567, + "name": "POP", + "source": 8 + }, + { + "begin": 612, + "end": 613, + "name": "PUSH", + "source": 8, + "value": "1" + }, + { + "begin": 606, + "end": 610, + "name": "DUP3", + "source": 8 + }, + { + "begin": 602, + "end": 614, + "name": "AND", + "source": 8 + }, + { + "begin": 633, + "end": 651, + "name": "DUP1", + "source": 8 + }, + { + "begin": 623, + "end": 704, + "name": "PUSH [tag]", + "source": 8, + "value": "35" + }, + { + "begin": 623, + "end": 704, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 689, + "end": 693, + "name": "PUSH", + "source": 8, + "value": "7F" + }, + { + "begin": 681, + "end": 687, + "name": "DUP3", + "source": 8 + }, + { + "begin": 677, + "end": 694, + "name": "AND", + "source": 8 + }, + { + "begin": 667, + "end": 694, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 667, + "end": 694, + "name": "POP", + "source": 8 + }, + { + "begin": 623, + "end": 704, + "name": "tag", + "source": 8, + "value": "35" + }, + { + "begin": 623, + "end": 704, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 751, + "end": 753, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 743, + "end": 749, + "name": "DUP3", + "source": 8 + }, + { + "begin": 740, + "end": 754, + "name": "LT", + "source": 8 + }, + { + "begin": 720, + "end": 738, + "name": "DUP2", + "source": 8 + }, + { + "begin": 717, + "end": 755, + "name": "SUB", + "source": 8 + }, + { + "begin": 714, + "end": 798, + "name": "PUSH [tag]", + "source": 8, + "value": "36" + }, + { + "begin": 714, + "end": 798, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 770, + "end": 788, + "name": "PUSH [tag]", + "source": 8, + "value": "37" + }, + { + "begin": 770, + "end": 788, + "name": "PUSH [tag]", + "source": 8, + "value": "12" + }, + { + "begin": 770, + "end": 788, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 770, + "end": 788, + "name": "tag", + "source": 8, + "value": "37" + }, + { + "begin": 770, + "end": 788, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 714, + "end": 798, + "name": "tag", + "source": 8, + "value": "36" + }, + { + "begin": 714, + "end": 798, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 535, + "end": 804, + "name": "POP", + "source": 8 + }, + { + "begin": 484, + "end": 804, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 484, + "end": 804, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 484, + "end": 804, + "name": "POP", + "source": 8 + }, + { + "begin": 484, + "end": 804, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 810, + "end": 951, + "name": "tag", + "source": 8, + "value": "14" + }, + { + "begin": 810, + "end": 951, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 859, + "end": 863, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 882, + "end": 885, + "name": "DUP2", + "source": 8 + }, + { + "begin": 874, + "end": 885, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 874, + "end": 885, + "name": "POP", + "source": 8 + }, + { + "begin": 905, + "end": 908, + "name": "DUP2", + "source": 8 + }, + { + "begin": 902, + "end": 903, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 895, + "end": 909, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 939, + "end": 943, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 936, + "end": 937, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 926, + "end": 944, + "name": "KECCAK256", + "source": 8 + }, + { + "begin": 918, + "end": 944, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 918, + "end": 944, + "name": "POP", + "source": 8 + }, + { + "begin": 810, + "end": 951, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 810, + "end": 951, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 810, + "end": 951, + "name": "POP", + "source": 8 + }, + { + "begin": 810, + "end": 951, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 957, + "end": 1050, + "name": "tag", + "source": 8, + "value": "15" + }, + { + "begin": 957, + "end": 1050, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 994, + "end": 1000, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 1041, + "end": 1043, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 1036, + "end": 1038, + "name": "PUSH", + "source": 8, + "value": "1F" + }, + { + "begin": 1029, + "end": 1034, + "name": "DUP4", + "source": 8 + }, + { + "begin": 1025, + "end": 1039, + "name": "ADD", + "source": 8 + }, + { + "begin": 1021, + "end": 1044, + "name": "DIV", + "source": 8 + }, + { + "begin": 1011, + "end": 1044, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 1011, + "end": 1044, + "name": "POP", + "source": 8 + }, + { + "begin": 957, + "end": 1050, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 957, + "end": 1050, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 957, + "end": 1050, + "name": "POP", + "source": 8 + }, + { + "begin": 957, + "end": 1050, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 1056, + "end": 1163, + "name": "tag", + "source": 8, + "value": "16" + }, + { + "begin": 1056, + "end": 1163, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 1100, + "end": 1108, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 1150, + "end": 1155, + "name": "DUP3", + "source": 8 + }, + { + "begin": 1144, + "end": 1148, + "name": "DUP3", + "source": 8 + }, + { + "begin": 1140, + "end": 1156, + "name": "SHL", + "source": 8 + }, + { + "begin": 1119, + "end": 1156, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 1119, + "end": 1156, + "name": "POP", + "source": 8 + }, + { + "begin": 1056, + "end": 1163, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 1056, + "end": 1163, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 1056, + "end": 1163, + "name": "POP", + "source": 8 + }, + { + "begin": 1056, + "end": 1163, + "name": "POP", + "source": 8 + }, + { + "begin": 1056, + "end": 1163, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 1169, + "end": 1562, + "name": "tag", + "source": 8, + "value": "17" + }, + { + "begin": 1169, + "end": 1562, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 1238, + "end": 1244, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 1288, + "end": 1289, + "name": "PUSH", + "source": 8, + "value": "8" + }, + { + "begin": 1276, + "end": 1286, + "name": "DUP4", + "source": 8 + }, + { + "begin": 1272, + "end": 1290, + "name": "MUL", + "source": 8 + }, + { + "begin": 1311, + "end": 1408, + "name": "PUSH [tag]", + "source": 8, + "value": "42" + }, + { + "begin": 1341, + "end": 1407, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1330, + "end": 1339, + "name": "DUP3", + "source": 8 + }, + { + "begin": 1311, + "end": 1408, + "name": "PUSH [tag]", + "source": 8, + "value": "16" + }, + { + "begin": 1311, + "end": 1408, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 1311, + "end": 1408, + "name": "tag", + "source": 8, + "value": "42" + }, + { + "begin": 1311, + "end": 1408, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 1429, + "end": 1468, + "name": "PUSH [tag]", + "source": 8, + "value": "43" + }, + { + "begin": 1459, + "end": 1467, + "name": "DUP7", + "source": 8 + }, + { + "begin": 1448, + "end": 1457, + "name": "DUP4", + "source": 8 + }, + { + "begin": 1429, + "end": 1468, + "name": "PUSH [tag]", + "source": 8, + "value": "16" + }, + { + "begin": 1429, + "end": 1468, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 1429, + "end": 1468, + "name": "tag", + "source": 8, + "value": "43" + }, + { + "begin": 1429, + "end": 1468, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 1417, + "end": 1468, + "name": "SWAP6", + "source": 8 + }, + { + "begin": 1417, + "end": 1468, + "name": "POP", + "source": 8 + }, + { + "begin": 1501, + "end": 1505, + "name": "DUP1", + "source": 8 + }, + { + "begin": 1497, + "end": 1506, + "name": "NOT", + "source": 8 + }, + { + "begin": 1490, + "end": 1495, + "name": "DUP5", + "source": 8 + }, + { + "begin": 1486, + "end": 1507, + "name": "AND", + "source": 8 + }, + { + "begin": 1477, + "end": 1507, + "name": "SWAP4", + "source": 8 + }, + { + "begin": 1477, + "end": 1507, + "name": "POP", + "source": 8 + }, + { + "begin": 1550, + "end": 1554, + "name": "DUP1", + "source": 8 + }, + { + "begin": 1540, + "end": 1548, + "name": "DUP7", + "source": 8 + }, + { + "begin": 1536, + "end": 1555, + "name": "AND", + "source": 8 + }, + { + "begin": 1529, + "end": 1534, + "name": "DUP5", + "source": 8 + }, + { + "begin": 1526, + "end": 1556, + "name": "OR", + "source": 8 + }, + { + "begin": 1516, + "end": 1556, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 1516, + "end": 1556, + "name": "POP", + "source": 8 + }, + { + "begin": 1245, + "end": 1562, + "name": "POP", + "source": 8 + }, + { + "begin": 1245, + "end": 1562, + "name": "POP", + "source": 8 + }, + { + "begin": 1169, + "end": 1562, + "name": "SWAP4", + "source": 8 + }, + { + "begin": 1169, + "end": 1562, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 1169, + "end": 1562, + "name": "POP", + "source": 8 + }, + { + "begin": 1169, + "end": 1562, + "name": "POP", + "source": 8 + }, + { + "begin": 1169, + "end": 1562, + "name": "POP", + "source": 8 + }, + { + "begin": 1169, + "end": 1562, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 1568, + "end": 1645, + "name": "tag", + "source": 8, + "value": "18" + }, + { + "begin": 1568, + "end": 1645, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 1605, + "end": 1612, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 1634, + "end": 1639, + "name": "DUP2", + "source": 8 + }, + { + "begin": 1623, + "end": 1639, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 1623, + "end": 1639, + "name": "POP", + "source": 8 + }, + { + "begin": 1568, + "end": 1645, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 1568, + "end": 1645, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 1568, + "end": 1645, + "name": "POP", + "source": 8 + }, + { + "begin": 1568, + "end": 1645, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 1651, + "end": 1711, + "name": "tag", + "source": 8, + "value": "19" + }, + { + "begin": 1651, + "end": 1711, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 1679, + "end": 1682, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 1700, + "end": 1705, + "name": "DUP2", + "source": 8 + }, + { + "begin": 1693, + "end": 1705, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 1693, + "end": 1705, + "name": "POP", + "source": 8 + }, + { + "begin": 1651, + "end": 1711, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 1651, + "end": 1711, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 1651, + "end": 1711, + "name": "POP", + "source": 8 + }, + { + "begin": 1651, + "end": 1711, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 1717, + "end": 1859, + "name": "tag", + "source": 8, + "value": "20" + }, + { + "begin": 1717, + "end": 1859, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 1767, + "end": 1776, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 1800, + "end": 1853, + "name": "PUSH [tag]", + "source": 8, + "value": "47" + }, + { + "begin": 1818, + "end": 1852, + "name": "PUSH [tag]", + "source": 8, + "value": "48" + }, + { + "begin": 1827, + "end": 1851, + "name": "PUSH [tag]", + "source": 8, + "value": "49" + }, + { + "begin": 1845, + "end": 1850, + "name": "DUP5", + "source": 8 + }, + { + "begin": 1827, + "end": 1851, + "name": "PUSH [tag]", + "source": 8, + "value": "18" + }, + { + "begin": 1827, + "end": 1851, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 1827, + "end": 1851, + "name": "tag", + "source": 8, + "value": "49" + }, + { + "begin": 1827, + "end": 1851, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 1818, + "end": 1852, + "name": "PUSH [tag]", + "source": 8, + "value": "19" + }, + { + "begin": 1818, + "end": 1852, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 1818, + "end": 1852, + "name": "tag", + "source": 8, + "value": "48" + }, + { + "begin": 1818, + "end": 1852, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 1800, + "end": 1853, + "name": "PUSH [tag]", + "source": 8, + "value": "18" + }, + { + "begin": 1800, + "end": 1853, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 1800, + "end": 1853, + "name": "tag", + "source": 8, + "value": "47" + }, + { + "begin": 1800, + "end": 1853, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 1787, + "end": 1853, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 1787, + "end": 1853, + "name": "POP", + "source": 8 + }, + { + "begin": 1717, + "end": 1859, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 1717, + "end": 1859, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 1717, + "end": 1859, + "name": "POP", + "source": 8 + }, + { + "begin": 1717, + "end": 1859, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 1865, + "end": 1940, + "name": "tag", + "source": 8, + "value": "21" + }, + { + "begin": 1865, + "end": 1940, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 1908, + "end": 1911, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 1929, + "end": 1934, + "name": "DUP2", + "source": 8 + }, + { + "begin": 1922, + "end": 1934, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 1922, + "end": 1934, + "name": "POP", + "source": 8 + }, + { + "begin": 1865, + "end": 1940, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 1865, + "end": 1940, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 1865, + "end": 1940, + "name": "POP", + "source": 8 + }, + { + "begin": 1865, + "end": 1940, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 1946, + "end": 2215, + "name": "tag", + "source": 8, + "value": "22" + }, + { + "begin": 1946, + "end": 2215, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2056, + "end": 2095, + "name": "PUSH [tag]", + "source": 8, + "value": "52" + }, + { + "begin": 2087, + "end": 2094, + "name": "DUP4", + "source": 8 + }, + { + "begin": 2056, + "end": 2095, + "name": "PUSH [tag]", + "source": 8, + "value": "20" + }, + { + "begin": 2056, + "end": 2095, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 2056, + "end": 2095, + "name": "tag", + "source": 8, + "value": "52" + }, + { + "begin": 2056, + "end": 2095, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2117, + "end": 2208, + "name": "PUSH [tag]", + "source": 8, + "value": "53" + }, + { + "begin": 2166, + "end": 2207, + "name": "PUSH [tag]", + "source": 8, + "value": "54" + }, + { + "begin": 2190, + "end": 2206, + "name": "DUP3", + "source": 8 + }, + { + "begin": 2166, + "end": 2207, + "name": "PUSH [tag]", + "source": 8, + "value": "21" + }, + { + "begin": 2166, + "end": 2207, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 2166, + "end": 2207, + "name": "tag", + "source": 8, + "value": "54" + }, + { + "begin": 2166, + "end": 2207, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2158, + "end": 2164, + "name": "DUP5", + "source": 8 + }, + { + "begin": 2151, + "end": 2155, + "name": "DUP5", + "source": 8 + }, + { + "begin": 2145, + "end": 2156, + "name": "SLOAD", + "source": 8 + }, + { + "begin": 2117, + "end": 2208, + "name": "PUSH [tag]", + "source": 8, + "value": "17" + }, + { + "begin": 2117, + "end": 2208, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 2117, + "end": 2208, + "name": "tag", + "source": 8, + "value": "53" + }, + { + "begin": 2117, + "end": 2208, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2111, + "end": 2115, + "name": "DUP3", + "source": 8 + }, + { + "begin": 2104, + "end": 2209, + "name": "SSTORE", + "source": 8 + }, + { + "begin": 2022, + "end": 2215, + "name": "POP", + "source": 8 + }, + { + "begin": 1946, + "end": 2215, + "name": "POP", + "source": 8 + }, + { + "begin": 1946, + "end": 2215, + "name": "POP", + "source": 8 + }, + { + "begin": 1946, + "end": 2215, + "name": "POP", + "source": 8 + }, + { + "begin": 1946, + "end": 2215, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 2221, + "end": 2294, + "name": "tag", + "source": 8, + "value": "23" + }, + { + "begin": 2221, + "end": 2294, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2266, + "end": 2269, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 2287, + "end": 2288, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 2280, + "end": 2288, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 2280, + "end": 2288, + "name": "POP", + "source": 8 + }, + { + "begin": 2221, + "end": 2294, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 2221, + "end": 2294, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 2300, + "end": 2489, + "name": "tag", + "source": 8, + "value": "24" + }, + { + "begin": 2300, + "end": 2489, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2377, + "end": 2409, + "name": "PUSH [tag]", + "source": 8, + "value": "57" + }, + { + "begin": 2377, + "end": 2409, + "name": "PUSH [tag]", + "source": 8, + "value": "23" + }, + { + "begin": 2377, + "end": 2409, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 2377, + "end": 2409, + "name": "tag", + "source": 8, + "value": "57" + }, + { + "begin": 2377, + "end": 2409, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2418, + "end": 2483, + "name": "PUSH [tag]", + "source": 8, + "value": "58" + }, + { + "begin": 2476, + "end": 2482, + "name": "DUP2", + "source": 8 + }, + { + "begin": 2468, + "end": 2474, + "name": "DUP5", + "source": 8 + }, + { + "begin": 2462, + "end": 2466, + "name": "DUP5", + "source": 8 + }, + { + "begin": 2418, + "end": 2483, + "name": "PUSH [tag]", + "source": 8, + "value": "22" + }, + { + "begin": 2418, + "end": 2483, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 2418, + "end": 2483, + "name": "tag", + "source": 8, + "value": "58" + }, + { + "begin": 2418, + "end": 2483, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2353, + "end": 2489, + "name": "POP", + "source": 8 + }, + { + "begin": 2300, + "end": 2489, + "name": "POP", + "source": 8 + }, + { + "begin": 2300, + "end": 2489, + "name": "POP", + "source": 8 + }, + { + "begin": 2300, + "end": 2489, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 2495, + "end": 2681, + "name": "tag", + "source": 8, + "value": "25" + }, + { + "begin": 2495, + "end": 2681, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2555, + "end": 2675, + "name": "tag", + "source": 8, + "value": "60" + }, + { + "begin": 2555, + "end": 2675, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2572, + "end": 2575, + "name": "DUP2", + "source": 8 + }, + { + "begin": 2565, + "end": 2570, + "name": "DUP2", + "source": 8 + }, + { + "begin": 2562, + "end": 2576, + "name": "LT", + "source": 8 + }, + { + "begin": 2555, + "end": 2675, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 2555, + "end": 2675, + "name": "PUSH [tag]", + "source": 8, + "value": "62" + }, + { + "begin": 2555, + "end": 2675, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 2626, + "end": 2665, + "name": "PUSH [tag]", + "source": 8, + "value": "63" + }, + { + "begin": 2663, + "end": 2664, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 2656, + "end": 2661, + "name": "DUP3", + "source": 8 + }, + { + "begin": 2626, + "end": 2665, + "name": "PUSH [tag]", + "source": 8, + "value": "24" + }, + { + "begin": 2626, + "end": 2665, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 2626, + "end": 2665, + "name": "tag", + "source": 8, + "value": "63" + }, + { + "begin": 2626, + "end": 2665, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2599, + "end": 2600, + "name": "PUSH", + "source": 8, + "value": "1" + }, + { + "begin": 2592, + "end": 2597, + "name": "DUP2", + "source": 8 + }, + { + "begin": 2588, + "end": 2601, + "name": "ADD", + "source": 8 + }, + { + "begin": 2579, + "end": 2601, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 2579, + "end": 2601, + "name": "POP", + "source": 8 + }, + { + "begin": 2555, + "end": 2675, + "name": "PUSH [tag]", + "source": 8, + "value": "60" + }, + { + "begin": 2555, + "end": 2675, + "name": "JUMP", + "source": 8 + }, + { + "begin": 2555, + "end": 2675, + "name": "tag", + "source": 8, + "value": "62" + }, + { + "begin": 2555, + "end": 2675, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2495, + "end": 2681, + "name": "POP", + "source": 8 + }, + { + "begin": 2495, + "end": 2681, + "name": "POP", + "source": 8 + }, + { + "begin": 2495, + "end": 2681, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 2687, + "end": 3230, + "name": "tag", + "source": 8, + "value": "26" + }, + { + "begin": 2687, + "end": 3230, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2788, + "end": 2790, + "name": "PUSH", + "source": 8, + "value": "1F" + }, + { + "begin": 2783, + "end": 2786, + "name": "DUP3", + "source": 8 + }, + { + "begin": 2780, + "end": 2791, + "name": "GT", + "source": 8 + }, + { + "begin": 2777, + "end": 3223, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 2777, + "end": 3223, + "name": "PUSH [tag]", + "source": 8, + "value": "65" + }, + { + "begin": 2777, + "end": 3223, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 2822, + "end": 2860, + "name": "PUSH [tag]", + "source": 8, + "value": "66" + }, + { + "begin": 2854, + "end": 2859, + "name": "DUP2", + "source": 8 + }, + { + "begin": 2822, + "end": 2860, + "name": "PUSH [tag]", + "source": 8, + "value": "14" + }, + { + "begin": 2822, + "end": 2860, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 2822, + "end": 2860, + "name": "tag", + "source": 8, + "value": "66" + }, + { + "begin": 2822, + "end": 2860, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2906, + "end": 2935, + "name": "PUSH [tag]", + "source": 8, + "value": "67" + }, + { + "begin": 2924, + "end": 2934, + "name": "DUP5", + "source": 8 + }, + { + "begin": 2906, + "end": 2935, + "name": "PUSH [tag]", + "source": 8, + "value": "15" + }, + { + "begin": 2906, + "end": 2935, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 2906, + "end": 2935, + "name": "tag", + "source": 8, + "value": "67" + }, + { + "begin": 2906, + "end": 2935, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2896, + "end": 2904, + "name": "DUP2", + "source": 8 + }, + { + "begin": 2892, + "end": 2936, + "name": "ADD", + "source": 8 + }, + { + "begin": 3089, + "end": 3091, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 3077, + "end": 3087, + "name": "DUP6", + "source": 8 + }, + { + "begin": 3074, + "end": 3092, + "name": "LT", + "source": 8 + }, + { + "begin": 3071, + "end": 3120, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 3071, + "end": 3120, + "name": "PUSH [tag]", + "source": 8, + "value": "68" + }, + { + "begin": 3071, + "end": 3120, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 3110, + "end": 3118, + "name": "DUP2", + "source": 8 + }, + { + "begin": 3095, + "end": 3118, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 3095, + "end": 3118, + "name": "POP", + "source": 8 + }, + { + "begin": 3071, + "end": 3120, + "name": "tag", + "source": 8, + "value": "68" + }, + { + "begin": 3071, + "end": 3120, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 3133, + "end": 3213, + "name": "PUSH [tag]", + "source": 8, + "value": "69" + }, + { + "begin": 3189, + "end": 3211, + "name": "PUSH [tag]", + "source": 8, + "value": "70" + }, + { + "begin": 3207, + "end": 3210, + "name": "DUP6", + "source": 8 + }, + { + "begin": 3189, + "end": 3211, + "name": "PUSH [tag]", + "source": 8, + "value": "15" + }, + { + "begin": 3189, + "end": 3211, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 3189, + "end": 3211, + "name": "tag", + "source": 8, + "value": "70" + }, + { + "begin": 3189, + "end": 3211, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 3179, + "end": 3187, + "name": "DUP4", + "source": 8 + }, + { + "begin": 3175, + "end": 3212, + "name": "ADD", + "source": 8 + }, + { + "begin": 3162, + "end": 3173, + "name": "DUP3", + "source": 8 + }, + { + "begin": 3133, + "end": 3213, + "name": "PUSH [tag]", + "source": 8, + "value": "25" + }, + { + "begin": 3133, + "end": 3213, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 3133, + "end": 3213, + "name": "tag", + "source": 8, + "value": "69" + }, + { + "begin": 3133, + "end": 3213, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2792, + "end": 3223, + "name": "POP", + "source": 8 + }, + { + "begin": 2792, + "end": 3223, + "name": "POP", + "source": 8 + }, + { + "begin": 2777, + "end": 3223, + "name": "tag", + "source": 8, + "value": "65" + }, + { + "begin": 2777, + "end": 3223, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2687, + "end": 3230, + "name": "POP", + "source": 8 + }, + { + "begin": 2687, + "end": 3230, + "name": "POP", + "source": 8 + }, + { + "begin": 2687, + "end": 3230, + "name": "POP", + "source": 8 + }, + { + "begin": 2687, + "end": 3230, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 3236, + "end": 3353, + "name": "tag", + "source": 8, + "value": "27" + }, + { + "begin": 3236, + "end": 3353, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 3290, + "end": 3298, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 3340, + "end": 3345, + "name": "DUP3", + "source": 8 + }, + { + "begin": 3334, + "end": 3338, + "name": "DUP3", + "source": 8 + }, + { + "begin": 3330, + "end": 3346, + "name": "SHR", + "source": 8 + }, + { + "begin": 3309, + "end": 3346, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 3309, + "end": 3346, + "name": "POP", + "source": 8 + }, + { + "begin": 3236, + "end": 3353, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 3236, + "end": 3353, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 3236, + "end": 3353, + "name": "POP", + "source": 8 + }, + { + "begin": 3236, + "end": 3353, + "name": "POP", + "source": 8 + }, + { + "begin": 3236, + "end": 3353, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 3359, + "end": 3528, + "name": "tag", + "source": 8, + "value": "28" + }, + { + "begin": 3359, + "end": 3528, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 3403, + "end": 3409, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 3436, + "end": 3487, + "name": "PUSH [tag]", + "source": 8, + "value": "73" + }, + { + "begin": 3484, + "end": 3485, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 3480, + "end": 3486, + "name": "NOT", + "source": 8 + }, + { + "begin": 3472, + "end": 3477, + "name": "DUP5", + "source": 8 + }, + { + "begin": 3469, + "end": 3470, + "name": "PUSH", + "source": 8, + "value": "8" + }, + { + "begin": 3465, + "end": 3478, + "name": "MUL", + "source": 8 + }, + { + "begin": 3436, + "end": 3487, + "name": "PUSH [tag]", + "source": 8, + "value": "27" + }, + { + "begin": 3436, + "end": 3487, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 3436, + "end": 3487, + "name": "tag", + "source": 8, + "value": "73" + }, + { + "begin": 3436, + "end": 3487, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 3432, + "end": 3488, + "name": "NOT", + "source": 8 + }, + { + "begin": 3517, + "end": 3521, + "name": "DUP1", + "source": 8 + }, + { + "begin": 3511, + "end": 3515, + "name": "DUP4", + "source": 8 + }, + { + "begin": 3507, + "end": 3522, + "name": "AND", + "source": 8 + }, + { + "begin": 3497, + "end": 3522, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 3497, + "end": 3522, + "name": "POP", + "source": 8 + }, + { + "begin": 3410, + "end": 3528, + "name": "POP", + "source": 8 + }, + { + "begin": 3359, + "end": 3528, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 3359, + "end": 3528, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 3359, + "end": 3528, + "name": "POP", + "source": 8 + }, + { + "begin": 3359, + "end": 3528, + "name": "POP", + "source": 8 + }, + { + "begin": 3359, + "end": 3528, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 3533, + "end": 3828, + "name": "tag", + "source": 8, + "value": "29" + }, + { + "begin": 3533, + "end": 3828, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 3609, + "end": 3613, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 3755, + "end": 3784, + "name": "PUSH [tag]", + "source": 8, + "value": "75" + }, + { + "begin": 3780, + "end": 3783, + "name": "DUP4", + "source": 8 + }, + { + "begin": 3774, + "end": 3778, + "name": "DUP4", + "source": 8 + }, + { + "begin": 3755, + "end": 3784, + "name": "PUSH [tag]", + "source": 8, + "value": "28" + }, + { + "begin": 3755, + "end": 3784, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 3755, + "end": 3784, + "name": "tag", + "source": 8, + "value": "75" + }, + { + "begin": 3755, + "end": 3784, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 3747, + "end": 3784, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 3747, + "end": 3784, + "name": "POP", + "source": 8 + }, + { + "begin": 3817, + "end": 3820, + "name": "DUP3", + "source": 8 + }, + { + "begin": 3814, + "end": 3815, + "name": "PUSH", + "source": 8, + "value": "2" + }, + { + "begin": 3810, + "end": 3821, + "name": "MUL", + "source": 8 + }, + { + "begin": 3804, + "end": 3808, + "name": "DUP3", + "source": 8 + }, + { + "begin": 3801, + "end": 3822, + "name": "OR", + "source": 8 + }, + { + "begin": 3793, + "end": 3822, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 3793, + "end": 3822, + "name": "POP", + "source": 8 + }, + { + "begin": 3533, + "end": 3828, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 3533, + "end": 3828, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 3533, + "end": 3828, + "name": "POP", + "source": 8 + }, + { + "begin": 3533, + "end": 3828, + "name": "POP", + "source": 8 + }, + { + "begin": 3533, + "end": 3828, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 3833, + "end": 5228, + "name": "tag", + "source": 8, + "value": "6" + }, + { + "begin": 3833, + "end": 5228, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 3950, + "end": 3987, + "name": "PUSH [tag]", + "source": 8, + "value": "77" + }, + { + "begin": 3983, + "end": 3986, + "name": "DUP3", + "source": 8 + }, + { + "begin": 3950, + "end": 3987, + "name": "PUSH [tag]", + "source": 8, + "value": "10" + }, + { + "begin": 3950, + "end": 3987, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 3950, + "end": 3987, + "name": "tag", + "source": 8, + "value": "77" + }, + { + "begin": 3950, + "end": 3987, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 4052, + "end": 4070, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 4044, + "end": 4050, + "name": "DUP2", + "source": 8 + }, + { + "begin": 4041, + "end": 4071, + "name": "GT", + "source": 8 + }, + { + "begin": 4038, + "end": 4094, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 4038, + "end": 4094, + "name": "PUSH [tag]", + "source": 8, + "value": "78" + }, + { + "begin": 4038, + "end": 4094, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 4074, + "end": 4092, + "name": "PUSH [tag]", + "source": 8, + "value": "79" + }, + { + "begin": 4074, + "end": 4092, + "name": "PUSH [tag]", + "source": 8, + "value": "11" + }, + { + "begin": 4074, + "end": 4092, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 4074, + "end": 4092, + "name": "tag", + "source": 8, + "value": "79" + }, + { + "begin": 4074, + "end": 4092, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 4038, + "end": 4094, + "name": "tag", + "source": 8, + "value": "78" + }, + { + "begin": 4038, + "end": 4094, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 4118, + "end": 4156, + "name": "PUSH [tag]", + "source": 8, + "value": "80" + }, + { + "begin": 4150, + "end": 4154, + "name": "DUP3", + "source": 8 + }, + { + "begin": 4144, + "end": 4155, + "name": "SLOAD", + "source": 8 + }, + { + "begin": 4118, + "end": 4156, + "name": "PUSH [tag]", + "source": 8, + "value": "13" + }, + { + "begin": 4118, + "end": 4156, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 4118, + "end": 4156, + "name": "tag", + "source": 8, + "value": "80" + }, + { + "begin": 4118, + "end": 4156, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 4203, + "end": 4270, + "name": "PUSH [tag]", + "source": 8, + "value": "81" + }, + { + "begin": 4263, + "end": 4269, + "name": "DUP3", + "source": 8 + }, + { + "begin": 4255, + "end": 4261, + "name": "DUP3", + "source": 8 + }, + { + "begin": 4249, + "end": 4253, + "name": "DUP6", + "source": 8 + }, + { + "begin": 4203, + "end": 4270, + "name": "PUSH [tag]", + "source": 8, + "value": "26" + }, + { + "begin": 4203, + "end": 4270, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 4203, + "end": 4270, + "name": "tag", + "source": 8, + "value": "81" + }, + { + "begin": 4203, + "end": 4270, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 4297, + "end": 4298, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 4321, + "end": 4325, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 4308, + "end": 4325, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 4308, + "end": 4325, + "name": "POP", + "source": 8 + }, + { + "begin": 4353, + "end": 4355, + "name": "PUSH", + "source": 8, + "value": "1F" + }, + { + "begin": 4345, + "end": 4351, + "name": "DUP4", + "source": 8 + }, + { + "begin": 4342, + "end": 4356, + "name": "GT", + "source": 8 + }, + { + "begin": 4370, + "end": 4371, + "name": "PUSH", + "source": 8, + "value": "1" + }, + { + "begin": 4365, + "end": 4983, + "name": "DUP2", + "source": 8 + }, + { + "begin": 4365, + "end": 4983, + "name": "EQ", + "source": 8 + }, + { + "begin": 4365, + "end": 4983, + "name": "PUSH [tag]", + "source": 8, + "value": "83" + }, + { + "begin": 4365, + "end": 4983, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 5027, + "end": 5028, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5044, + "end": 5050, + "name": "DUP5", + "source": 8 + }, + { + "begin": 5041, + "end": 5118, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 5041, + "end": 5118, + "name": "PUSH [tag]", + "source": 8, + "value": "84" + }, + { + "begin": 5041, + "end": 5118, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 5093, + "end": 5102, + "name": "DUP3", + "source": 8 + }, + { + "begin": 5088, + "end": 5091, + "name": "DUP8", + "source": 8 + }, + { + "begin": 5084, + "end": 5103, + "name": "ADD", + "source": 8 + }, + { + "begin": 5078, + "end": 5104, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 5069, + "end": 5104, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5069, + "end": 5104, + "name": "POP", + "source": 8 + }, + { + "begin": 5041, + "end": 5118, + "name": "tag", + "source": 8, + "value": "84" + }, + { + "begin": 5041, + "end": 5118, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5144, + "end": 5211, + "name": "PUSH [tag]", + "source": 8, + "value": "85" + }, + { + "begin": 5204, + "end": 5210, + "name": "DUP6", + "source": 8 + }, + { + "begin": 5197, + "end": 5202, + "name": "DUP3", + "source": 8 + }, + { + "begin": 5144, + "end": 5211, + "name": "PUSH [tag]", + "source": 8, + "value": "29" + }, + { + "begin": 5144, + "end": 5211, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 5144, + "end": 5211, + "name": "tag", + "source": 8, + "value": "85" + }, + { + "begin": 5144, + "end": 5211, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5138, + "end": 5142, + "name": "DUP7", + "source": 8 + }, + { + "begin": 5131, + "end": 5212, + "name": "SSTORE", + "source": 8 + }, + { + "begin": 5000, + "end": 5222, + "name": "POP", + "source": 8 + }, + { + "begin": 4335, + "end": 5222, + "name": "PUSH [tag]", + "source": 8, + "value": "82" + }, + { + "begin": 4335, + "end": 5222, + "name": "JUMP", + "source": 8 + }, + { + "begin": 4365, + "end": 4983, + "name": "tag", + "source": 8, + "value": "83" + }, + { + "begin": 4365, + "end": 4983, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 4417, + "end": 4421, + "name": "PUSH", + "source": 8, + "value": "1F" + }, + { + "begin": 4413, + "end": 4422, + "name": "NOT", + "source": 8 + }, + { + "begin": 4405, + "end": 4411, + "name": "DUP5", + "source": 8 + }, + { + "begin": 4401, + "end": 4423, + "name": "AND", + "source": 8 + }, + { + "begin": 4451, + "end": 4488, + "name": "PUSH [tag]", + "source": 8, + "value": "86" + }, + { + "begin": 4483, + "end": 4487, + "name": "DUP7", + "source": 8 + }, + { + "begin": 4451, + "end": 4488, + "name": "PUSH [tag]", + "source": 8, + "value": "14" + }, + { + "begin": 4451, + "end": 4488, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 4451, + "end": 4488, + "name": "tag", + "source": 8, + "value": "86" + }, + { + "begin": 4451, + "end": 4488, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 4510, + "end": 4511, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 4524, + "end": 4732, + "name": "tag", + "source": 8, + "value": "87" + }, + { + "begin": 4524, + "end": 4732, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 4538, + "end": 4545, + "name": "DUP3", + "source": 8 + }, + { + "begin": 4535, + "end": 4536, + "name": "DUP2", + "source": 8 + }, + { + "begin": 4532, + "end": 4546, + "name": "LT", + "source": 8 + }, + { + "begin": 4524, + "end": 4732, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 4524, + "end": 4732, + "name": "PUSH [tag]", + "source": 8, + "value": "89" + }, + { + "begin": 4524, + "end": 4732, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 4617, + "end": 4626, + "name": "DUP5", + "source": 8 + }, + { + "begin": 4612, + "end": 4615, + "name": "DUP10", + "source": 8 + }, + { + "begin": 4608, + "end": 4627, + "name": "ADD", + "source": 8 + }, + { + "begin": 4602, + "end": 4628, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 4594, + "end": 4600, + "name": "DUP3", + "source": 8 + }, + { + "begin": 4587, + "end": 4629, + "name": "SSTORE", + "source": 8 + }, + { + "begin": 4668, + "end": 4669, + "name": "PUSH", + "source": 8, + "value": "1" + }, + { + "begin": 4660, + "end": 4666, + "name": "DUP3", + "source": 8 + }, + { + "begin": 4656, + "end": 4670, + "name": "ADD", + "source": 8 + }, + { + "begin": 4646, + "end": 4670, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 4646, + "end": 4670, + "name": "POP", + "source": 8 + }, + { + "begin": 4715, + "end": 4717, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 4704, + "end": 4713, + "name": "DUP6", + "source": 8 + }, + { + "begin": 4700, + "end": 4718, + "name": "ADD", + "source": 8 + }, + { + "begin": 4687, + "end": 4718, + "name": "SWAP5", + "source": 8 + }, + { + "begin": 4687, + "end": 4718, + "name": "POP", + "source": 8 + }, + { + "begin": 4561, + "end": 4565, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 4558, + "end": 4559, + "name": "DUP2", + "source": 8 + }, + { + "begin": 4554, + "end": 4566, + "name": "ADD", + "source": 8 + }, + { + "begin": 4549, + "end": 4566, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 4549, + "end": 4566, + "name": "POP", + "source": 8 + }, + { + "begin": 4524, + "end": 4732, + "name": "PUSH [tag]", + "source": 8, + "value": "87" + }, + { + "begin": 4524, + "end": 4732, + "name": "JUMP", + "source": 8 + }, + { + "begin": 4524, + "end": 4732, + "name": "tag", + "source": 8, + "value": "89" + }, + { + "begin": 4524, + "end": 4732, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 4760, + "end": 4766, + "name": "DUP7", + "source": 8 + }, + { + "begin": 4751, + "end": 4758, + "name": "DUP4", + "source": 8 + }, + { + "begin": 4748, + "end": 4767, + "name": "LT", + "source": 8 + }, + { + "begin": 4745, + "end": 4924, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 4745, + "end": 4924, + "name": "PUSH [tag]", + "source": 8, + "value": "90" + }, + { + "begin": 4745, + "end": 4924, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 4818, + "end": 4827, + "name": "DUP5", + "source": 8 + }, + { + "begin": 4813, + "end": 4816, + "name": "DUP10", + "source": 8 + }, + { + "begin": 4809, + "end": 4828, + "name": "ADD", + "source": 8 + }, + { + "begin": 4803, + "end": 4829, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 4861, + "end": 4909, + "name": "PUSH [tag]", + "source": 8, + "value": "91" + }, + { + "begin": 4903, + "end": 4907, + "name": "PUSH", + "source": 8, + "value": "1F" + }, + { + "begin": 4895, + "end": 4901, + "name": "DUP10", + "source": 8 + }, + { + "begin": 4891, + "end": 4908, + "name": "AND", + "source": 8 + }, + { + "begin": 4880, + "end": 4889, + "name": "DUP3", + "source": 8 + }, + { + "begin": 4861, + "end": 4909, + "name": "PUSH [tag]", + "source": 8, + "value": "28" + }, + { + "begin": 4861, + "end": 4909, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 4861, + "end": 4909, + "name": "tag", + "source": 8, + "value": "91" + }, + { + "begin": 4861, + "end": 4909, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 4853, + "end": 4859, + "name": "DUP4", + "source": 8 + }, + { + "begin": 4846, + "end": 4910, + "name": "SSTORE", + "source": 8 + }, + { + "begin": 4768, + "end": 4924, + "name": "POP", + "source": 8 + }, + { + "begin": 4745, + "end": 4924, + "name": "tag", + "source": 8, + "value": "90" + }, + { + "begin": 4745, + "end": 4924, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 4970, + "end": 4971, + "name": "PUSH", + "source": 8, + "value": "1" + }, + { + "begin": 4966, + "end": 4967, + "name": "PUSH", + "source": 8, + "value": "2" + }, + { + "begin": 4958, + "end": 4964, + "name": "DUP9", + "source": 8 + }, + { + "begin": 4954, + "end": 4968, + "name": "MUL", + "source": 8 + }, + { + "begin": 4950, + "end": 4972, + "name": "ADD", + "source": 8 + }, + { + "begin": 4944, + "end": 4948, + "name": "DUP9", + "source": 8 + }, + { + "begin": 4937, + "end": 4973, + "name": "SSTORE", + "source": 8 + }, + { + "begin": 4372, + "end": 4983, + "name": "POP", + "source": 8 + }, + { + "begin": 4372, + "end": 4983, + "name": "POP", + "source": 8 + }, + { + "begin": 4372, + "end": 4983, + "name": "POP", + "source": 8 + }, + { + "begin": 4335, + "end": 5222, + "name": "tag", + "source": 8, + "value": "82" + }, + { + "begin": 4335, + "end": 5222, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 4335, + "end": 5222, + "name": "POP", + "source": 8 + }, + { + "begin": 3925, + "end": 5228, + "name": "POP", + "source": 8 + }, + { + "begin": 3925, + "end": 5228, + "name": "POP", + "source": 8 + }, + { + "begin": 3925, + "end": 5228, + "name": "POP", + "source": 8 + }, + { + "begin": 3833, + "end": 5228, + "name": "POP", + "source": 8 + }, + { + "begin": 3833, + "end": 5228, + "name": "POP", + "source": 8 + }, + { + "begin": 3833, + "end": 5228, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 113, + "end": 303, + "name": "tag", + "source": 0, + "value": "9" + }, + { + "begin": 113, + "end": 303, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH #[$]", + "source": 0, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 113, + "end": 303, + "name": "DUP1", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH [$]", + "source": 0, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 113, + "end": 303, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 113, + "end": 303, + "name": "CODECOPY", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 113, + "end": 303, + "name": "RETURN", + "source": 0 + } + ], + ".data": { + "0": { + ".auxdata": "a264697066735822122079df6ef2f44460794c07db31a82c5404990135ae596d303e977888265cf5450064736f6c634300081e0033", + ".code": [ + { + "begin": 113, + "end": 303, + "name": "PUSH", + "source": 0, + "value": "80" + }, + { + "begin": 113, + "end": 303, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 113, + "end": 303, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "CALLVALUE", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "DUP1", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "ISZERO", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH [tag]", + "source": 0, + "value": "1" + }, + { + "begin": 113, + "end": 303, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 113, + "end": 303, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 113, + "end": 303, + "name": "REVERT", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "tag", + "source": 0, + "value": "1" + }, + { + "begin": 113, + "end": 303, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "POP", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH", + "source": 0, + "value": "4" + }, + { + "begin": 113, + "end": 303, + "name": "CALLDATASIZE", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "LT", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH [tag]", + "source": 0, + "value": "2" + }, + { + "begin": 113, + "end": 303, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 113, + "end": 303, + "name": "CALLDATALOAD", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH", + "source": 0, + "value": "E0" + }, + { + "begin": 113, + "end": 303, + "name": "SHR", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "DUP1", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH", + "source": 0, + "value": "5C975ABB" + }, + { + "begin": 113, + "end": 303, + "name": "GT", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH [tag]", + "source": 0, + "value": "15" + }, + { + "begin": 113, + "end": 303, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "DUP1", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH", + "source": 0, + "value": "5C975ABB" + }, + { + "begin": 113, + "end": 303, + "name": "EQ", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH [tag]", + "source": 0, + "value": "9" + }, + { + "begin": 113, + "end": 303, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "DUP1", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH", + "source": 0, + "value": "70A08231" + }, + { + "begin": 113, + "end": 303, + "name": "EQ", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH [tag]", + "source": 0, + "value": "10" + }, + { + "begin": 113, + "end": 303, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "DUP1", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH", + "source": 0, + "value": "8456CB59" + }, + { + "begin": 113, + "end": 303, + "name": "EQ", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH [tag]", + "source": 0, + "value": "11" + }, + { + "begin": 113, + "end": 303, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "DUP1", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH", + "source": 0, + "value": "95D89B41" + }, + { + "begin": 113, + "end": 303, + "name": "EQ", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH [tag]", + "source": 0, + "value": "12" + }, + { + "begin": 113, + "end": 303, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "DUP1", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH", + "source": 0, + "value": "A9059CBB" + }, + { + "begin": 113, + "end": 303, + "name": "EQ", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH [tag]", + "source": 0, + "value": "13" + }, + { + "begin": 113, + "end": 303, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "DUP1", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH", + "source": 0, + "value": "DD62ED3E" + }, + { + "begin": 113, + "end": 303, + "name": "EQ", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH [tag]", + "source": 0, + "value": "14" + }, + { + "begin": 113, + "end": 303, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH [tag]", + "source": 0, + "value": "2" + }, + { + "begin": 113, + "end": 303, + "name": "JUMP", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "tag", + "source": 0, + "value": "15" + }, + { + "begin": 113, + "end": 303, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "DUP1", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH", + "source": 0, + "value": "6FDDE03" + }, + { + "begin": 113, + "end": 303, + "name": "EQ", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH [tag]", + "source": 0, + "value": "3" + }, + { + "begin": 113, + "end": 303, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "DUP1", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH", + "source": 0, + "value": "95EA7B3" + }, + { + "begin": 113, + "end": 303, + "name": "EQ", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH [tag]", + "source": 0, + "value": "4" + }, + { + "begin": 113, + "end": 303, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "DUP1", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH", + "source": 0, + "value": "18160DDD" + }, + { + "begin": 113, + "end": 303, + "name": "EQ", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH [tag]", + "source": 0, + "value": "5" + }, + { + "begin": 113, + "end": 303, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "DUP1", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH", + "source": 0, + "value": "23B872DD" + }, + { + "begin": 113, + "end": 303, + "name": "EQ", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH [tag]", + "source": 0, + "value": "6" + }, + { + "begin": 113, + "end": 303, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "DUP1", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH", + "source": 0, + "value": "313CE567" + }, + { + "begin": 113, + "end": 303, + "name": "EQ", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH [tag]", + "source": 0, + "value": "7" + }, + { + "begin": 113, + "end": 303, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "DUP1", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH", + "source": 0, + "value": "3F4BA83A" + }, + { + "begin": 113, + "end": 303, + "name": "EQ", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH [tag]", + "source": 0, + "value": "8" + }, + { + "begin": 113, + "end": 303, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "tag", + "source": 0, + "value": "2" + }, + { + "begin": 113, + "end": 303, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 113, + "end": 303, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 113, + "end": 303, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 113, + "end": 303, + "name": "REVERT", + "source": 0 + }, + { + "begin": 1760, + "end": 1849, + "name": "tag", + "source": 2, + "value": "3" + }, + { + "begin": 1760, + "end": 1849, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1760, + "end": 1849, + "name": "PUSH [tag]", + "source": 2, + "value": "16" + }, + { + "begin": 1760, + "end": 1849, + "name": "PUSH [tag]", + "source": 2, + "value": "17" + }, + { + "begin": 1760, + "end": 1849, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 1760, + "end": 1849, + "name": "tag", + "source": 2, + "value": "16" + }, + { + "begin": 1760, + "end": 1849, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1760, + "end": 1849, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 1760, + "end": 1849, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 1760, + "end": 1849, + "name": "PUSH [tag]", + "source": 2, + "value": "18" + }, + { + "begin": 1760, + "end": 1849, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 1760, + "end": 1849, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1760, + "end": 1849, + "name": "PUSH [tag]", + "source": 2, + "value": "19" + }, + { + "begin": 1760, + "end": 1849, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 1760, + "end": 1849, + "name": "tag", + "source": 2, + "value": "18" + }, + { + "begin": 1760, + "end": 1849, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1760, + "end": 1849, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 1760, + "end": 1849, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 1760, + "end": 1849, + "name": "DUP1", + "source": 2 + }, + { + "begin": 1760, + "end": 1849, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 1760, + "end": 1849, + "name": "SUB", + "source": 2 + }, + { + "begin": 1760, + "end": 1849, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1760, + "end": 1849, + "name": "RETURN", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "tag", + "source": 2, + "value": "4" + }, + { + "begin": 3902, + "end": 4088, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "PUSH [tag]", + "source": 2, + "value": "20" + }, + { + "begin": 3902, + "end": 4088, + "name": "PUSH", + "source": 2, + "value": "4" + }, + { + "begin": 3902, + "end": 4088, + "name": "DUP1", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "CALLDATASIZE", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "SUB", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "DUP2", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "ADD", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "PUSH [tag]", + "source": 2, + "value": "21" + }, + { + "begin": 3902, + "end": 4088, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "PUSH [tag]", + "source": 2, + "value": "22" + }, + { + "begin": 3902, + "end": 4088, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "tag", + "source": 2, + "value": "21" + }, + { + "begin": 3902, + "end": 4088, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "PUSH [tag]", + "source": 2, + "value": "23" + }, + { + "begin": 3902, + "end": 4088, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "tag", + "source": 2, + "value": "20" + }, + { + "begin": 3902, + "end": 4088, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 3902, + "end": 4088, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "PUSH [tag]", + "source": 2, + "value": "24" + }, + { + "begin": 3902, + "end": 4088, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "PUSH [tag]", + "source": 2, + "value": "25" + }, + { + "begin": 3902, + "end": 4088, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "tag", + "source": 2, + "value": "24" + }, + { + "begin": 3902, + "end": 4088, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 3902, + "end": 4088, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "DUP1", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "SUB", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "RETURN", + "source": 2 + }, + { + "begin": 2803, + "end": 2900, + "name": "tag", + "source": 2, + "value": "5" + }, + { + "begin": 2803, + "end": 2900, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2803, + "end": 2900, + "name": "PUSH [tag]", + "source": 2, + "value": "26" + }, + { + "begin": 2803, + "end": 2900, + "name": "PUSH [tag]", + "source": 2, + "value": "27" + }, + { + "begin": 2803, + "end": 2900, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2803, + "end": 2900, + "name": "tag", + "source": 2, + "value": "26" + }, + { + "begin": 2803, + "end": 2900, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2803, + "end": 2900, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 2803, + "end": 2900, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 2803, + "end": 2900, + "name": "PUSH [tag]", + "source": 2, + "value": "28" + }, + { + "begin": 2803, + "end": 2900, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 2803, + "end": 2900, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2803, + "end": 2900, + "name": "PUSH [tag]", + "source": 2, + "value": "29" + }, + { + "begin": 2803, + "end": 2900, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2803, + "end": 2900, + "name": "tag", + "source": 2, + "value": "28" + }, + { + "begin": 2803, + "end": 2900, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2803, + "end": 2900, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 2803, + "end": 2900, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 2803, + "end": 2900, + "name": "DUP1", + "source": 2 + }, + { + "begin": 2803, + "end": 2900, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 2803, + "end": 2900, + "name": "SUB", + "source": 2 + }, + { + "begin": 2803, + "end": 2900, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2803, + "end": 2900, + "name": "RETURN", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "tag", + "source": 2, + "value": "6" + }, + { + "begin": 4680, + "end": 4924, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "PUSH [tag]", + "source": 2, + "value": "30" + }, + { + "begin": 4680, + "end": 4924, + "name": "PUSH", + "source": 2, + "value": "4" + }, + { + "begin": 4680, + "end": 4924, + "name": "DUP1", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "CALLDATASIZE", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "SUB", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "DUP2", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "ADD", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "PUSH [tag]", + "source": 2, + "value": "31" + }, + { + "begin": 4680, + "end": 4924, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "PUSH [tag]", + "source": 2, + "value": "32" + }, + { + "begin": 4680, + "end": 4924, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "tag", + "source": 2, + "value": "31" + }, + { + "begin": 4680, + "end": 4924, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "PUSH [tag]", + "source": 2, + "value": "33" + }, + { + "begin": 4680, + "end": 4924, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "tag", + "source": 2, + "value": "30" + }, + { + "begin": 4680, + "end": 4924, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 4680, + "end": 4924, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "PUSH [tag]", + "source": 2, + "value": "34" + }, + { + "begin": 4680, + "end": 4924, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "PUSH [tag]", + "source": 2, + "value": "25" + }, + { + "begin": 4680, + "end": 4924, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "tag", + "source": 2, + "value": "34" + }, + { + "begin": 4680, + "end": 4924, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 4680, + "end": 4924, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "DUP1", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "SUB", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "RETURN", + "source": 2 + }, + { + "begin": 2688, + "end": 2770, + "name": "tag", + "source": 2, + "value": "7" + }, + { + "begin": 2688, + "end": 2770, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2688, + "end": 2770, + "name": "PUSH [tag]", + "source": 2, + "value": "35" + }, + { + "begin": 2688, + "end": 2770, + "name": "PUSH [tag]", + "source": 2, + "value": "36" + }, + { + "begin": 2688, + "end": 2770, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2688, + "end": 2770, + "name": "tag", + "source": 2, + "value": "35" + }, + { + "begin": 2688, + "end": 2770, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2688, + "end": 2770, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 2688, + "end": 2770, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 2688, + "end": 2770, + "name": "PUSH [tag]", + "source": 2, + "value": "37" + }, + { + "begin": 2688, + "end": 2770, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 2688, + "end": 2770, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2688, + "end": 2770, + "name": "PUSH [tag]", + "source": 2, + "value": "38" + }, + { + "begin": 2688, + "end": 2770, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2688, + "end": 2770, + "name": "tag", + "source": 2, + "value": "37" + }, + { + "begin": 2688, + "end": 2770, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2688, + "end": 2770, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 2688, + "end": 2770, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 2688, + "end": 2770, + "name": "DUP1", + "source": 2 + }, + { + "begin": 2688, + "end": 2770, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 2688, + "end": 2770, + "name": "SUB", + "source": 2 + }, + { + "begin": 2688, + "end": 2770, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2688, + "end": 2770, + "name": "RETURN", + "source": 2 + }, + { + "begin": 248, + "end": 301, + "name": "tag", + "source": 0, + "value": "8" + }, + { + "begin": 248, + "end": 301, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 248, + "end": 301, + "name": "PUSH [tag]", + "source": 0, + "value": "39" + }, + { + "begin": 248, + "end": 301, + "name": "PUSH [tag]", + "source": 0, + "value": "40" + }, + { + "begin": 248, + "end": 301, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 248, + "end": 301, + "name": "tag", + "source": 0, + "value": "39" + }, + { + "begin": 248, + "end": 301, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 248, + "end": 301, + "name": "STOP", + "source": 0 + }, + { + "begin": 1729, + "end": 1833, + "name": "tag", + "source": 7, + "value": "9" + }, + { + "begin": 1729, + "end": 1833, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1729, + "end": 1833, + "name": "PUSH [tag]", + "source": 7, + "value": "41" + }, + { + "begin": 1729, + "end": 1833, + "name": "PUSH [tag]", + "source": 7, + "value": "42" + }, + { + "begin": 1729, + "end": 1833, + "jumpType": "[in]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 1729, + "end": 1833, + "name": "tag", + "source": 7, + "value": "41" + }, + { + "begin": 1729, + "end": 1833, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1729, + "end": 1833, + "name": "PUSH", + "source": 7, + "value": "40" + }, + { + "begin": 1729, + "end": 1833, + "name": "MLOAD", + "source": 7 + }, + { + "begin": 1729, + "end": 1833, + "name": "PUSH [tag]", + "source": 7, + "value": "43" + }, + { + "begin": 1729, + "end": 1833, + "name": "SWAP2", + "source": 7 + }, + { + "begin": 1729, + "end": 1833, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 1729, + "end": 1833, + "name": "PUSH [tag]", + "source": 7, + "value": "25" + }, + { + "begin": 1729, + "end": 1833, + "jumpType": "[in]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 1729, + "end": 1833, + "name": "tag", + "source": 7, + "value": "43" + }, + { + "begin": 1729, + "end": 1833, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1729, + "end": 1833, + "name": "PUSH", + "source": 7, + "value": "40" + }, + { + "begin": 1729, + "end": 1833, + "name": "MLOAD", + "source": 7 + }, + { + "begin": 1729, + "end": 1833, + "name": "DUP1", + "source": 7 + }, + { + "begin": 1729, + "end": 1833, + "name": "SWAP2", + "source": 7 + }, + { + "begin": 1729, + "end": 1833, + "name": "SUB", + "source": 7 + }, + { + "begin": 1729, + "end": 1833, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 1729, + "end": 1833, + "name": "RETURN", + "source": 7 + }, + { + "begin": 2933, + "end": 3049, + "name": "tag", + "source": 2, + "value": "10" + }, + { + "begin": 2933, + "end": 3049, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "name": "PUSH [tag]", + "source": 2, + "value": "44" + }, + { + "begin": 2933, + "end": 3049, + "name": "PUSH", + "source": 2, + "value": "4" + }, + { + "begin": 2933, + "end": 3049, + "name": "DUP1", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "name": "CALLDATASIZE", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "name": "SUB", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "name": "DUP2", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "name": "ADD", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "name": "PUSH [tag]", + "source": 2, + "value": "45" + }, + { + "begin": 2933, + "end": 3049, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "name": "PUSH [tag]", + "source": 2, + "value": "46" + }, + { + "begin": 2933, + "end": 3049, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "name": "tag", + "source": 2, + "value": "45" + }, + { + "begin": 2933, + "end": 3049, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "name": "PUSH [tag]", + "source": 2, + "value": "47" + }, + { + "begin": 2933, + "end": 3049, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "name": "tag", + "source": 2, + "value": "44" + }, + { + "begin": 2933, + "end": 3049, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 2933, + "end": 3049, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "name": "PUSH [tag]", + "source": 2, + "value": "48" + }, + { + "begin": 2933, + "end": 3049, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "name": "PUSH [tag]", + "source": 2, + "value": "29" + }, + { + "begin": 2933, + "end": 3049, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "name": "tag", + "source": 2, + "value": "48" + }, + { + "begin": 2933, + "end": 3049, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 2933, + "end": 3049, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "name": "DUP1", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "name": "SUB", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "name": "RETURN", + "source": 2 + }, + { + "begin": 193, + "end": 242, + "name": "tag", + "source": 0, + "value": "11" + }, + { + "begin": 193, + "end": 242, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 193, + "end": 242, + "name": "PUSH [tag]", + "source": 0, + "value": "49" + }, + { + "begin": 193, + "end": 242, + "name": "PUSH [tag]", + "source": 0, + "value": "50" + }, + { + "begin": 193, + "end": 242, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 193, + "end": 242, + "name": "tag", + "source": 0, + "value": "49" + }, + { + "begin": 193, + "end": 242, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 193, + "end": 242, + "name": "STOP", + "source": 0 + }, + { + "begin": 1962, + "end": 2055, + "name": "tag", + "source": 2, + "value": "12" + }, + { + "begin": 1962, + "end": 2055, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1962, + "end": 2055, + "name": "PUSH [tag]", + "source": 2, + "value": "51" + }, + { + "begin": 1962, + "end": 2055, + "name": "PUSH [tag]", + "source": 2, + "value": "52" + }, + { + "begin": 1962, + "end": 2055, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 1962, + "end": 2055, + "name": "tag", + "source": 2, + "value": "51" + }, + { + "begin": 1962, + "end": 2055, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1962, + "end": 2055, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 1962, + "end": 2055, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 1962, + "end": 2055, + "name": "PUSH [tag]", + "source": 2, + "value": "53" + }, + { + "begin": 1962, + "end": 2055, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 1962, + "end": 2055, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1962, + "end": 2055, + "name": "PUSH [tag]", + "source": 2, + "value": "19" + }, + { + "begin": 1962, + "end": 2055, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 1962, + "end": 2055, + "name": "tag", + "source": 2, + "value": "53" + }, + { + "begin": 1962, + "end": 2055, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1962, + "end": 2055, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 1962, + "end": 2055, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 1962, + "end": 2055, + "name": "DUP1", + "source": 2 + }, + { + "begin": 1962, + "end": 2055, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 1962, + "end": 2055, + "name": "SUB", + "source": 2 + }, + { + "begin": 1962, + "end": 2055, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1962, + "end": 2055, + "name": "RETURN", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "tag", + "source": 2, + "value": "13" + }, + { + "begin": 3244, + "end": 3422, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "PUSH [tag]", + "source": 2, + "value": "54" + }, + { + "begin": 3244, + "end": 3422, + "name": "PUSH", + "source": 2, + "value": "4" + }, + { + "begin": 3244, + "end": 3422, + "name": "DUP1", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "CALLDATASIZE", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "SUB", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "DUP2", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "ADD", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "PUSH [tag]", + "source": 2, + "value": "55" + }, + { + "begin": 3244, + "end": 3422, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "PUSH [tag]", + "source": 2, + "value": "22" + }, + { + "begin": 3244, + "end": 3422, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "tag", + "source": 2, + "value": "55" + }, + { + "begin": 3244, + "end": 3422, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "PUSH [tag]", + "source": 2, + "value": "56" + }, + { + "begin": 3244, + "end": 3422, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "tag", + "source": 2, + "value": "54" + }, + { + "begin": 3244, + "end": 3422, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 3244, + "end": 3422, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "PUSH [tag]", + "source": 2, + "value": "57" + }, + { + "begin": 3244, + "end": 3422, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "PUSH [tag]", + "source": 2, + "value": "25" + }, + { + "begin": 3244, + "end": 3422, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "tag", + "source": 2, + "value": "57" + }, + { + "begin": 3244, + "end": 3422, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 3244, + "end": 3422, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "DUP1", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "SUB", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "RETURN", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "tag", + "source": 2, + "value": "14" + }, + { + "begin": 3455, + "end": 3595, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "PUSH [tag]", + "source": 2, + "value": "58" + }, + { + "begin": 3455, + "end": 3595, + "name": "PUSH", + "source": 2, + "value": "4" + }, + { + "begin": 3455, + "end": 3595, + "name": "DUP1", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "CALLDATASIZE", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "SUB", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "DUP2", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "ADD", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "PUSH [tag]", + "source": 2, + "value": "59" + }, + { + "begin": 3455, + "end": 3595, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "PUSH [tag]", + "source": 2, + "value": "60" + }, + { + "begin": 3455, + "end": 3595, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "tag", + "source": 2, + "value": "59" + }, + { + "begin": 3455, + "end": 3595, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "PUSH [tag]", + "source": 2, + "value": "61" + }, + { + "begin": 3455, + "end": 3595, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "tag", + "source": 2, + "value": "58" + }, + { + "begin": 3455, + "end": 3595, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 3455, + "end": 3595, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "PUSH [tag]", + "source": 2, + "value": "62" + }, + { + "begin": 3455, + "end": 3595, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "PUSH [tag]", + "source": 2, + "value": "29" + }, + { + "begin": 3455, + "end": 3595, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "tag", + "source": 2, + "value": "62" + }, + { + "begin": 3455, + "end": 3595, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 3455, + "end": 3595, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "DUP1", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "SUB", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "RETURN", + "source": 2 + }, + { + "begin": 1760, + "end": 1849, + "name": "tag", + "source": 2, + "value": "17" + }, + { + "begin": 1760, + "end": 1849, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1805, + "end": 1818, + "name": "PUSH", + "source": 2, + "value": "60" + }, + { + "begin": 1837, + "end": 1842, + "name": "PUSH", + "source": 2, + "value": "3" + }, + { + "begin": 1830, + "end": 1842, + "name": "DUP1", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "SLOAD", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "PUSH [tag]", + "source": 2, + "value": "64" + }, + { + "begin": 1830, + "end": 1842, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "PUSH [tag]", + "source": 2, + "value": "65" + }, + { + "begin": 1830, + "end": 1842, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "tag", + "source": 2, + "value": "64" + }, + { + "begin": 1830, + "end": 1842, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "DUP1", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "PUSH", + "source": 2, + "value": "1F" + }, + { + "begin": 1830, + "end": 1842, + "name": "ADD", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 1830, + "end": 1842, + "name": "DUP1", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "DIV", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "MUL", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 1830, + "end": 1842, + "name": "ADD", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 1830, + "end": 1842, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "DUP2", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "ADD", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 1830, + "end": 1842, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "DUP1", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "SWAP3", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "DUP2", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "DUP2", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 1830, + "end": 1842, + "name": "ADD", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "DUP3", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "DUP1", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "SLOAD", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "PUSH [tag]", + "source": 2, + "value": "66" + }, + { + "begin": 1830, + "end": 1842, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "PUSH [tag]", + "source": 2, + "value": "65" + }, + { + "begin": 1830, + "end": 1842, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "tag", + "source": 2, + "value": "66" + }, + { + "begin": 1830, + "end": 1842, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "DUP1", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "ISZERO", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "PUSH [tag]", + "source": 2, + "value": "67" + }, + { + "begin": 1830, + "end": 1842, + "name": "JUMPI", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "DUP1", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "PUSH", + "source": 2, + "value": "1F" + }, + { + "begin": 1830, + "end": 1842, + "name": "LT", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "PUSH [tag]", + "source": 2, + "value": "68" + }, + { + "begin": 1830, + "end": 1842, + "name": "JUMPI", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "PUSH", + "source": 2, + "value": "100" + }, + { + "begin": 1830, + "end": 1842, + "name": "DUP1", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "DUP4", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "SLOAD", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "DIV", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "MUL", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "DUP4", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 1830, + "end": 1842, + "name": "ADD", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "PUSH [tag]", + "source": 2, + "value": "67" + }, + { + "begin": 1830, + "end": 1842, + "name": "JUMP", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "tag", + "source": 2, + "value": "68" + }, + { + "begin": 1830, + "end": 1842, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "DUP3", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "ADD", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 1830, + "end": 1842, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 1830, + "end": 1842, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 1830, + "end": 1842, + "name": "KECCAK256", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "tag", + "source": 2, + "value": "69" + }, + { + "begin": 1830, + "end": 1842, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "DUP2", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "SLOAD", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "DUP2", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "PUSH", + "source": 2, + "value": "1" + }, + { + "begin": 1830, + "end": 1842, + "name": "ADD", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 1830, + "end": 1842, + "name": "ADD", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "DUP1", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "DUP4", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "GT", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "PUSH [tag]", + "source": 2, + "value": "69" + }, + { + "begin": 1830, + "end": 1842, + "name": "JUMPI", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "DUP3", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "SUB", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "PUSH", + "source": 2, + "value": "1F" + }, + { + "begin": 1830, + "end": 1842, + "name": "AND", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "DUP3", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "ADD", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "tag", + "source": 2, + "value": "67" + }, + { + "begin": 1830, + "end": 1842, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "POP", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "POP", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "POP", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "POP", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "POP", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1830, + "end": 1842, + "name": "POP", + "source": 2 + }, + { + "begin": 1760, + "end": 1849, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1760, + "end": 1849, + "jumpType": "[out]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "tag", + "source": 2, + "value": "23" + }, + { + "begin": 3902, + "end": 4088, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 3975, + "end": 3979, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 3991, + "end": 4004, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 4007, + "end": 4019, + "name": "PUSH [tag]", + "source": 2, + "value": "71" + }, + { + "begin": 4007, + "end": 4017, + "name": "PUSH [tag]", + "source": 2, + "value": "72" + }, + { + "begin": 4007, + "end": 4019, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 4007, + "end": 4019, + "name": "tag", + "source": 2, + "value": "71" + }, + { + "begin": 4007, + "end": 4019, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 3991, + "end": 4019, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3991, + "end": 4019, + "name": "POP", + "source": 2 + }, + { + "begin": 4029, + "end": 4060, + "name": "PUSH [tag]", + "source": 2, + "value": "73" + }, + { + "begin": 4038, + "end": 4043, + "name": "DUP2", + "source": 2 + }, + { + "begin": 4045, + "end": 4052, + "name": "DUP6", + "source": 2 + }, + { + "begin": 4054, + "end": 4059, + "name": "DUP6", + "source": 2 + }, + { + "begin": 4029, + "end": 4037, + "name": "PUSH [tag]", + "source": 2, + "value": "74" + }, + { + "begin": 4029, + "end": 4060, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 4029, + "end": 4060, + "name": "tag", + "source": 2, + "value": "73" + }, + { + "begin": 4029, + "end": 4060, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 4077, + "end": 4081, + "name": "PUSH", + "source": 2, + "value": "1" + }, + { + "begin": 4070, + "end": 4081, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 4070, + "end": 4081, + "name": "POP", + "source": 2 + }, + { + "begin": 4070, + "end": 4081, + "name": "POP", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "SWAP3", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "POP", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "name": "POP", + "source": 2 + }, + { + "begin": 3902, + "end": 4088, + "jumpType": "[out]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2803, + "end": 2900, + "name": "tag", + "source": 2, + "value": "27" + }, + { + "begin": 2803, + "end": 2900, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2855, + "end": 2862, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 2881, + "end": 2893, + "name": "PUSH", + "source": 2, + "value": "2" + }, + { + "begin": 2881, + "end": 2893, + "name": "SLOAD", + "source": 2 + }, + { + "begin": 2874, + "end": 2893, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2874, + "end": 2893, + "name": "POP", + "source": 2 + }, + { + "begin": 2803, + "end": 2900, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2803, + "end": 2900, + "jumpType": "[out]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "tag", + "source": 2, + "value": "33" + }, + { + "begin": 4680, + "end": 4924, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 4767, + "end": 4771, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 4783, + "end": 4798, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 4801, + "end": 4813, + "name": "PUSH [tag]", + "source": 2, + "value": "77" + }, + { + "begin": 4801, + "end": 4811, + "name": "PUSH [tag]", + "source": 2, + "value": "72" + }, + { + "begin": 4801, + "end": 4813, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 4801, + "end": 4813, + "name": "tag", + "source": 2, + "value": "77" + }, + { + "begin": 4801, + "end": 4813, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 4783, + "end": 4813, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 4783, + "end": 4813, + "name": "POP", + "source": 2 + }, + { + "begin": 4823, + "end": 4860, + "name": "PUSH [tag]", + "source": 2, + "value": "78" + }, + { + "begin": 4839, + "end": 4843, + "name": "DUP6", + "source": 2 + }, + { + "begin": 4845, + "end": 4852, + "name": "DUP3", + "source": 2 + }, + { + "begin": 4854, + "end": 4859, + "name": "DUP6", + "source": 2 + }, + { + "begin": 4823, + "end": 4838, + "name": "PUSH [tag]", + "source": 2, + "value": "79" + }, + { + "begin": 4823, + "end": 4860, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 4823, + "end": 4860, + "name": "tag", + "source": 2, + "value": "78" + }, + { + "begin": 4823, + "end": 4860, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 4870, + "end": 4896, + "name": "PUSH [tag]", + "source": 2, + "value": "80" + }, + { + "begin": 4880, + "end": 4884, + "name": "DUP6", + "source": 2 + }, + { + "begin": 4886, + "end": 4888, + "name": "DUP6", + "source": 2 + }, + { + "begin": 4890, + "end": 4895, + "name": "DUP6", + "source": 2 + }, + { + "begin": 4870, + "end": 4879, + "name": "PUSH [tag]", + "source": 2, + "value": "81" + }, + { + "begin": 4870, + "end": 4896, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 4870, + "end": 4896, + "name": "tag", + "source": 2, + "value": "80" + }, + { + "begin": 4870, + "end": 4896, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 4913, + "end": 4917, + "name": "PUSH", + "source": 2, + "value": "1" + }, + { + "begin": 4906, + "end": 4917, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 4906, + "end": 4917, + "name": "POP", + "source": 2 + }, + { + "begin": 4906, + "end": 4917, + "name": "POP", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "SWAP4", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "SWAP3", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "POP", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "POP", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "name": "POP", + "source": 2 + }, + { + "begin": 4680, + "end": 4924, + "jumpType": "[out]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2688, + "end": 2770, + "name": "tag", + "source": 2, + "value": "36" + }, + { + "begin": 2688, + "end": 2770, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2737, + "end": 2742, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 2761, + "end": 2763, + "name": "PUSH", + "source": 2, + "value": "12" + }, + { + "begin": 2754, + "end": 2763, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2754, + "end": 2763, + "name": "POP", + "source": 2 + }, + { + "begin": 2688, + "end": 2770, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2688, + "end": 2770, + "jumpType": "[out]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 248, + "end": 301, + "name": "tag", + "source": 0, + "value": "40" + }, + { + "begin": 248, + "end": 301, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 284, + "end": 294, + "name": "PUSH [tag]", + "source": 0, + "value": "84" + }, + { + "begin": 284, + "end": 292, + "name": "PUSH [tag]", + "source": 0, + "value": "85" + }, + { + "begin": 284, + "end": 294, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 284, + "end": 294, + "name": "tag", + "source": 0, + "value": "84" + }, + { + "begin": 284, + "end": 294, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 248, + "end": 301, + "jumpType": "[out]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 1729, + "end": 1833, + "name": "tag", + "source": 7, + "value": "42" + }, + { + "begin": 1729, + "end": 1833, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1776, + "end": 1780, + "name": "PUSH", + "source": 7, + "value": "0" + }, + { + "begin": 1810, + "end": 1811, + "name": "PUSH", + "source": 7, + "value": "2" + }, + { + "begin": 1799, + "end": 1806, + "name": "PUSH", + "source": 7, + "value": "5" + }, + { + "begin": 1799, + "end": 1806, + "name": "SLOAD", + "source": 7 + }, + { + "begin": 1799, + "end": 1811, + "name": "EQ", + "source": 7 + }, + { + "begin": 1799, + "end": 1826, + "name": "PUSH [tag]", + "source": 7, + "value": "87" + }, + { + "begin": 1799, + "end": 1826, + "name": "JUMPI", + "source": 7 + }, + { + "begin": 1821, + "end": 1826, + "name": "PUSH", + "source": 7, + "value": "0" + }, + { + "begin": 1799, + "end": 1826, + "name": "PUSH [tag]", + "source": 7, + "value": "88" + }, + { + "begin": 1799, + "end": 1826, + "name": "JUMP", + "source": 7 + }, + { + "begin": 1799, + "end": 1826, + "name": "tag", + "source": 7, + "value": "87" + }, + { + "begin": 1799, + "end": 1826, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1814, + "end": 1818, + "name": "PUSH", + "source": 7, + "value": "1" + }, + { + "begin": 1799, + "end": 1826, + "name": "tag", + "source": 7, + "value": "88" + }, + { + "begin": 1799, + "end": 1826, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1792, + "end": 1826, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 1792, + "end": 1826, + "name": "POP", + "source": 7 + }, + { + "begin": 1729, + "end": 1833, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 1729, + "end": 1833, + "jumpType": "[out]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 2933, + "end": 3049, + "name": "tag", + "source": 2, + "value": "47" + }, + { + "begin": 2933, + "end": 3049, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2998, + "end": 3005, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 3024, + "end": 3033, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 3024, + "end": 3042, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 3034, + "end": 3041, + "name": "DUP4", + "source": 2 + }, + { + "begin": 3024, + "end": 3042, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3024, + "end": 3042, + "name": "AND", + "source": 2 + }, + { + "begin": 3024, + "end": 3042, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3024, + "end": 3042, + "name": "AND", + "source": 2 + }, + { + "begin": 3024, + "end": 3042, + "name": "DUP2", + "source": 2 + }, + { + "begin": 3024, + "end": 3042, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 3024, + "end": 3042, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 3024, + "end": 3042, + "name": "ADD", + "source": 2 + }, + { + "begin": 3024, + "end": 3042, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3024, + "end": 3042, + "name": "DUP2", + "source": 2 + }, + { + "begin": 3024, + "end": 3042, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 3024, + "end": 3042, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 3024, + "end": 3042, + "name": "ADD", + "source": 2 + }, + { + "begin": 3024, + "end": 3042, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 3024, + "end": 3042, + "name": "KECCAK256", + "source": 2 + }, + { + "begin": 3024, + "end": 3042, + "name": "SLOAD", + "source": 2 + }, + { + "begin": 3017, + "end": 3042, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3017, + "end": 3042, + "name": "POP", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "name": "POP", + "source": 2 + }, + { + "begin": 2933, + "end": 3049, + "jumpType": "[out]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 193, + "end": 242, + "name": "tag", + "source": 0, + "value": "50" + }, + { + "begin": 193, + "end": 242, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 227, + "end": 235, + "name": "PUSH [tag]", + "source": 0, + "value": "91" + }, + { + "begin": 227, + "end": 233, + "name": "PUSH [tag]", + "source": 0, + "value": "92" + }, + { + "begin": 227, + "end": 235, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 227, + "end": 235, + "name": "tag", + "source": 0, + "value": "91" + }, + { + "begin": 227, + "end": 235, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 193, + "end": 242, + "jumpType": "[out]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 1962, + "end": 2055, + "name": "tag", + "source": 2, + "value": "52" + }, + { + "begin": 1962, + "end": 2055, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2009, + "end": 2022, + "name": "PUSH", + "source": 2, + "value": "60" + }, + { + "begin": 2041, + "end": 2048, + "name": "PUSH", + "source": 2, + "value": "4" + }, + { + "begin": 2034, + "end": 2048, + "name": "DUP1", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "SLOAD", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "PUSH [tag]", + "source": 2, + "value": "94" + }, + { + "begin": 2034, + "end": 2048, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "PUSH [tag]", + "source": 2, + "value": "65" + }, + { + "begin": 2034, + "end": 2048, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "tag", + "source": 2, + "value": "94" + }, + { + "begin": 2034, + "end": 2048, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "DUP1", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "PUSH", + "source": 2, + "value": "1F" + }, + { + "begin": 2034, + "end": 2048, + "name": "ADD", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 2034, + "end": 2048, + "name": "DUP1", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "DIV", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "MUL", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 2034, + "end": 2048, + "name": "ADD", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 2034, + "end": 2048, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "DUP2", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "ADD", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 2034, + "end": 2048, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "DUP1", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "SWAP3", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "DUP2", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "DUP2", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 2034, + "end": 2048, + "name": "ADD", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "DUP3", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "DUP1", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "SLOAD", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "PUSH [tag]", + "source": 2, + "value": "95" + }, + { + "begin": 2034, + "end": 2048, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "PUSH [tag]", + "source": 2, + "value": "65" + }, + { + "begin": 2034, + "end": 2048, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "tag", + "source": 2, + "value": "95" + }, + { + "begin": 2034, + "end": 2048, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "DUP1", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "ISZERO", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "PUSH [tag]", + "source": 2, + "value": "96" + }, + { + "begin": 2034, + "end": 2048, + "name": "JUMPI", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "DUP1", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "PUSH", + "source": 2, + "value": "1F" + }, + { + "begin": 2034, + "end": 2048, + "name": "LT", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "PUSH [tag]", + "source": 2, + "value": "97" + }, + { + "begin": 2034, + "end": 2048, + "name": "JUMPI", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "PUSH", + "source": 2, + "value": "100" + }, + { + "begin": 2034, + "end": 2048, + "name": "DUP1", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "DUP4", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "SLOAD", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "DIV", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "MUL", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "DUP4", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 2034, + "end": 2048, + "name": "ADD", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "PUSH [tag]", + "source": 2, + "value": "96" + }, + { + "begin": 2034, + "end": 2048, + "name": "JUMP", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "tag", + "source": 2, + "value": "97" + }, + { + "begin": 2034, + "end": 2048, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "DUP3", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "ADD", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 2034, + "end": 2048, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 2034, + "end": 2048, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 2034, + "end": 2048, + "name": "KECCAK256", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "tag", + "source": 2, + "value": "98" + }, + { + "begin": 2034, + "end": 2048, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "DUP2", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "SLOAD", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "DUP2", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "PUSH", + "source": 2, + "value": "1" + }, + { + "begin": 2034, + "end": 2048, + "name": "ADD", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 2034, + "end": 2048, + "name": "ADD", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "DUP1", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "DUP4", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "GT", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "PUSH [tag]", + "source": 2, + "value": "98" + }, + { + "begin": 2034, + "end": 2048, + "name": "JUMPI", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "DUP3", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "SUB", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "PUSH", + "source": 2, + "value": "1F" + }, + { + "begin": 2034, + "end": 2048, + "name": "AND", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "DUP3", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "ADD", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "tag", + "source": 2, + "value": "96" + }, + { + "begin": 2034, + "end": 2048, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "POP", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "POP", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "POP", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "POP", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "POP", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2034, + "end": 2048, + "name": "POP", + "source": 2 + }, + { + "begin": 1962, + "end": 2055, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1962, + "end": 2055, + "jumpType": "[out]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "tag", + "source": 2, + "value": "56" + }, + { + "begin": 3244, + "end": 3422, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 3313, + "end": 3317, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 3329, + "end": 3342, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 3345, + "end": 3357, + "name": "PUSH [tag]", + "source": 2, + "value": "100" + }, + { + "begin": 3345, + "end": 3355, + "name": "PUSH [tag]", + "source": 2, + "value": "72" + }, + { + "begin": 3345, + "end": 3357, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 3345, + "end": 3357, + "name": "tag", + "source": 2, + "value": "100" + }, + { + "begin": 3345, + "end": 3357, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 3329, + "end": 3357, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3329, + "end": 3357, + "name": "POP", + "source": 2 + }, + { + "begin": 3367, + "end": 3394, + "name": "PUSH [tag]", + "source": 2, + "value": "101" + }, + { + "begin": 3377, + "end": 3382, + "name": "DUP2", + "source": 2 + }, + { + "begin": 3384, + "end": 3386, + "name": "DUP6", + "source": 2 + }, + { + "begin": 3388, + "end": 3393, + "name": "DUP6", + "source": 2 + }, + { + "begin": 3367, + "end": 3376, + "name": "PUSH [tag]", + "source": 2, + "value": "81" + }, + { + "begin": 3367, + "end": 3394, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 3367, + "end": 3394, + "name": "tag", + "source": 2, + "value": "101" + }, + { + "begin": 3367, + "end": 3394, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 3411, + "end": 3415, + "name": "PUSH", + "source": 2, + "value": "1" + }, + { + "begin": 3404, + "end": 3415, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 3404, + "end": 3415, + "name": "POP", + "source": 2 + }, + { + "begin": 3404, + "end": 3415, + "name": "POP", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "SWAP3", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "POP", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "name": "POP", + "source": 2 + }, + { + "begin": 3244, + "end": 3422, + "jumpType": "[out]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "tag", + "source": 2, + "value": "61" + }, + { + "begin": 3455, + "end": 3595, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 3535, + "end": 3542, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 3561, + "end": 3572, + "name": "PUSH", + "source": 2, + "value": "1" + }, + { + "begin": 3561, + "end": 3579, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 3573, + "end": 3578, + "name": "DUP5", + "source": 2 + }, + { + "begin": 3561, + "end": 3579, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3561, + "end": 3579, + "name": "AND", + "source": 2 + }, + { + "begin": 3561, + "end": 3579, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3561, + "end": 3579, + "name": "AND", + "source": 2 + }, + { + "begin": 3561, + "end": 3579, + "name": "DUP2", + "source": 2 + }, + { + "begin": 3561, + "end": 3579, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 3561, + "end": 3579, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 3561, + "end": 3579, + "name": "ADD", + "source": 2 + }, + { + "begin": 3561, + "end": 3579, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3561, + "end": 3579, + "name": "DUP2", + "source": 2 + }, + { + "begin": 3561, + "end": 3579, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 3561, + "end": 3579, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 3561, + "end": 3579, + "name": "ADD", + "source": 2 + }, + { + "begin": 3561, + "end": 3579, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 3561, + "end": 3579, + "name": "KECCAK256", + "source": 2 + }, + { + "begin": 3561, + "end": 3588, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 3580, + "end": 3587, + "name": "DUP4", + "source": 2 + }, + { + "begin": 3561, + "end": 3588, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3561, + "end": 3588, + "name": "AND", + "source": 2 + }, + { + "begin": 3561, + "end": 3588, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3561, + "end": 3588, + "name": "AND", + "source": 2 + }, + { + "begin": 3561, + "end": 3588, + "name": "DUP2", + "source": 2 + }, + { + "begin": 3561, + "end": 3588, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 3561, + "end": 3588, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 3561, + "end": 3588, + "name": "ADD", + "source": 2 + }, + { + "begin": 3561, + "end": 3588, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3561, + "end": 3588, + "name": "DUP2", + "source": 2 + }, + { + "begin": 3561, + "end": 3588, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 3561, + "end": 3588, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 3561, + "end": 3588, + "name": "ADD", + "source": 2 + }, + { + "begin": 3561, + "end": 3588, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 3561, + "end": 3588, + "name": "KECCAK256", + "source": 2 + }, + { + "begin": 3561, + "end": 3588, + "name": "SLOAD", + "source": 2 + }, + { + "begin": 3554, + "end": 3588, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3554, + "end": 3588, + "name": "POP", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "SWAP3", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "POP", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "name": "POP", + "source": 2 + }, + { + "begin": 3455, + "end": 3595, + "jumpType": "[out]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 656, + "end": 752, + "name": "tag", + "source": 6, + "value": "72" + }, + { + "begin": 656, + "end": 752, + "name": "JUMPDEST", + "source": 6 + }, + { + "begin": 709, + "end": 716, + "name": "PUSH", + "source": 6, + "value": "0" + }, + { + "begin": 735, + "end": 745, + "name": "CALLER", + "source": 6 + }, + { + "begin": 728, + "end": 745, + "name": "SWAP1", + "source": 6 + }, + { + "begin": 728, + "end": 745, + "name": "POP", + "source": 6 + }, + { + "begin": 656, + "end": 752, + "name": "SWAP1", + "source": 6 + }, + { + "begin": 656, + "end": 752, + "jumpType": "[out]", + "name": "JUMP", + "source": 6 + }, + { + "begin": 8630, + "end": 8758, + "name": "tag", + "source": 2, + "value": "74" + }, + { + "begin": 8630, + "end": 8758, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 8714, + "end": 8751, + "name": "PUSH [tag]", + "source": 2, + "value": "105" + }, + { + "begin": 8723, + "end": 8728, + "name": "DUP4", + "source": 2 + }, + { + "begin": 8730, + "end": 8737, + "name": "DUP4", + "source": 2 + }, + { + "begin": 8739, + "end": 8744, + "name": "DUP4", + "source": 2 + }, + { + "begin": 8746, + "end": 8750, + "name": "PUSH", + "source": 2, + "value": "1" + }, + { + "begin": 8714, + "end": 8722, + "name": "PUSH [tag]", + "source": 2, + "value": "106" + }, + { + "begin": 8714, + "end": 8751, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 8714, + "end": 8751, + "name": "tag", + "source": 2, + "value": "105" + }, + { + "begin": 8714, + "end": 8751, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 8630, + "end": 8758, + "name": "POP", + "source": 2 + }, + { + "begin": 8630, + "end": 8758, + "name": "POP", + "source": 2 + }, + { + "begin": 8630, + "end": 8758, + "name": "POP", + "source": 2 + }, + { + "begin": 8630, + "end": 8758, + "jumpType": "[out]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 10319, + "end": 10795, + "name": "tag", + "source": 2, + "value": "79" + }, + { + "begin": 10319, + "end": 10795, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 10418, + "end": 10442, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 10445, + "end": 10470, + "name": "PUSH [tag]", + "source": 2, + "value": "108" + }, + { + "begin": 10455, + "end": 10460, + "name": "DUP5", + "source": 2 + }, + { + "begin": 10462, + "end": 10469, + "name": "DUP5", + "source": 2 + }, + { + "begin": 10445, + "end": 10454, + "name": "PUSH [tag]", + "source": 2, + "value": "61" + }, + { + "begin": 10445, + "end": 10470, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 10445, + "end": 10470, + "name": "tag", + "source": 2, + "value": "108" + }, + { + "begin": 10445, + "end": 10470, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 10418, + "end": 10470, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 10418, + "end": 10470, + "name": "POP", + "source": 2 + }, + { + "begin": 10503, + "end": 10520, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 10484, + "end": 10500, + "name": "DUP2", + "source": 2 + }, + { + "begin": 10484, + "end": 10520, + "name": "LT", + "source": 2 + }, + { + "begin": 10480, + "end": 10789, + "name": "ISZERO", + "source": 2 + }, + { + "begin": 10480, + "end": 10789, + "name": "PUSH [tag]", + "source": 2, + "value": "109" + }, + { + "begin": 10480, + "end": 10789, + "name": "JUMPI", + "source": 2 + }, + { + "begin": 10559, + "end": 10564, + "name": "DUP2", + "source": 2 + }, + { + "begin": 10540, + "end": 10556, + "name": "DUP2", + "source": 2 + }, + { + "begin": 10540, + "end": 10564, + "name": "LT", + "source": 2 + }, + { + "begin": 10536, + "end": 10666, + "name": "ISZERO", + "source": 2 + }, + { + "begin": 10536, + "end": 10666, + "name": "PUSH [tag]", + "source": 2, + "value": "110" + }, + { + "begin": 10536, + "end": 10666, + "name": "JUMPI", + "source": 2 + }, + { + "begin": 10618, + "end": 10625, + "name": "DUP3", + "source": 2 + }, + { + "begin": 10627, + "end": 10643, + "name": "DUP2", + "source": 2 + }, + { + "begin": 10645, + "end": 10650, + "name": "DUP4", + "source": 2 + }, + { + "begin": 10591, + "end": 10651, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 10591, + "end": 10651, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 10591, + "end": 10651, + "name": "PUSH", + "source": 2, + "value": "FB8F41B200000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 10591, + "end": 10651, + "name": "DUP2", + "source": 2 + }, + { + "begin": 10591, + "end": 10651, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 10591, + "end": 10651, + "name": "PUSH", + "source": 2, + "value": "4" + }, + { + "begin": 10591, + "end": 10651, + "name": "ADD", + "source": 2 + }, + { + "begin": 10591, + "end": 10651, + "name": "PUSH [tag]", + "source": 2, + "value": "111" + }, + { + "begin": 10591, + "end": 10651, + "name": "SWAP4", + "source": 2 + }, + { + "begin": 10591, + "end": 10651, + "name": "SWAP3", + "source": 2 + }, + { + "begin": 10591, + "end": 10651, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 10591, + "end": 10651, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 10591, + "end": 10651, + "name": "PUSH [tag]", + "source": 2, + "value": "112" + }, + { + "begin": 10591, + "end": 10651, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 10591, + "end": 10651, + "name": "tag", + "source": 2, + "value": "111" + }, + { + "begin": 10591, + "end": 10651, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 10591, + "end": 10651, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 10591, + "end": 10651, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 10591, + "end": 10651, + "name": "DUP1", + "source": 2 + }, + { + "begin": 10591, + "end": 10651, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 10591, + "end": 10651, + "name": "SUB", + "source": 2 + }, + { + "begin": 10591, + "end": 10651, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 10591, + "end": 10651, + "name": "REVERT", + "source": 2 + }, + { + "begin": 10536, + "end": 10666, + "name": "tag", + "source": 2, + "value": "110" + }, + { + "begin": 10536, + "end": 10666, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 10707, + "end": 10764, + "name": "PUSH [tag]", + "source": 2, + "value": "113" + }, + { + "begin": 10716, + "end": 10721, + "name": "DUP5", + "source": 2 + }, + { + "begin": 10723, + "end": 10730, + "name": "DUP5", + "source": 2 + }, + { + "begin": 10751, + "end": 10756, + "name": "DUP5", + "source": 2 + }, + { + "begin": 10732, + "end": 10748, + "name": "DUP5", + "source": 2 + }, + { + "begin": 10732, + "end": 10756, + "name": "SUB", + "source": 2 + }, + { + "begin": 10758, + "end": 10763, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 10707, + "end": 10715, + "name": "PUSH [tag]", + "source": 2, + "value": "106" + }, + { + "begin": 10707, + "end": 10764, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 10707, + "end": 10764, + "name": "tag", + "source": 2, + "value": "113" + }, + { + "begin": 10707, + "end": 10764, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 10480, + "end": 10789, + "name": "tag", + "source": 2, + "value": "109" + }, + { + "begin": 10480, + "end": 10789, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 10408, + "end": 10795, + "name": "POP", + "source": 2 + }, + { + "begin": 10319, + "end": 10795, + "name": "POP", + "source": 2 + }, + { + "begin": 10319, + "end": 10795, + "name": "POP", + "source": 2 + }, + { + "begin": 10319, + "end": 10795, + "name": "POP", + "source": 2 + }, + { + "begin": 10319, + "end": 10795, + "jumpType": "[out]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 5297, + "end": 5597, + "name": "tag", + "source": 2, + "value": "81" + }, + { + "begin": 5297, + "end": 5597, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 5396, + "end": 5397, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 5380, + "end": 5398, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 5380, + "end": 5398, + "name": "AND", + "source": 2 + }, + { + "begin": 5380, + "end": 5384, + "name": "DUP4", + "source": 2 + }, + { + "begin": 5380, + "end": 5398, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 5380, + "end": 5398, + "name": "AND", + "source": 2 + }, + { + "begin": 5380, + "end": 5398, + "name": "SUB", + "source": 2 + }, + { + "begin": 5376, + "end": 5462, + "name": "PUSH [tag]", + "source": 2, + "value": "115" + }, + { + "begin": 5376, + "end": 5462, + "name": "JUMPI", + "source": 2 + }, + { + "begin": 5448, + "end": 5449, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 5421, + "end": 5451, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 5421, + "end": 5451, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 5421, + "end": 5451, + "name": "PUSH", + "source": 2, + "value": "96C6FD1E00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 5421, + "end": 5451, + "name": "DUP2", + "source": 2 + }, + { + "begin": 5421, + "end": 5451, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 5421, + "end": 5451, + "name": "PUSH", + "source": 2, + "value": "4" + }, + { + "begin": 5421, + "end": 5451, + "name": "ADD", + "source": 2 + }, + { + "begin": 5421, + "end": 5451, + "name": "PUSH [tag]", + "source": 2, + "value": "116" + }, + { + "begin": 5421, + "end": 5451, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 5421, + "end": 5451, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 5421, + "end": 5451, + "name": "PUSH [tag]", + "source": 2, + "value": "117" + }, + { + "begin": 5421, + "end": 5451, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 5421, + "end": 5451, + "name": "tag", + "source": 2, + "value": "116" + }, + { + "begin": 5421, + "end": 5451, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 5421, + "end": 5451, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 5421, + "end": 5451, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 5421, + "end": 5451, + "name": "DUP1", + "source": 2 + }, + { + "begin": 5421, + "end": 5451, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 5421, + "end": 5451, + "name": "SUB", + "source": 2 + }, + { + "begin": 5421, + "end": 5451, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 5421, + "end": 5451, + "name": "REVERT", + "source": 2 + }, + { + "begin": 5376, + "end": 5462, + "name": "tag", + "source": 2, + "value": "115" + }, + { + "begin": 5376, + "end": 5462, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 5489, + "end": 5490, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 5475, + "end": 5491, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 5475, + "end": 5491, + "name": "AND", + "source": 2 + }, + { + "begin": 5475, + "end": 5477, + "name": "DUP3", + "source": 2 + }, + { + "begin": 5475, + "end": 5491, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 5475, + "end": 5491, + "name": "AND", + "source": 2 + }, + { + "begin": 5475, + "end": 5491, + "name": "SUB", + "source": 2 + }, + { + "begin": 5471, + "end": 5557, + "name": "PUSH [tag]", + "source": 2, + "value": "118" + }, + { + "begin": 5471, + "end": 5557, + "name": "JUMPI", + "source": 2 + }, + { + "begin": 5543, + "end": 5544, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 5514, + "end": 5546, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 5514, + "end": 5546, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 5514, + "end": 5546, + "name": "PUSH", + "source": 2, + "value": "EC442F0500000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 5514, + "end": 5546, + "name": "DUP2", + "source": 2 + }, + { + "begin": 5514, + "end": 5546, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 5514, + "end": 5546, + "name": "PUSH", + "source": 2, + "value": "4" + }, + { + "begin": 5514, + "end": 5546, + "name": "ADD", + "source": 2 + }, + { + "begin": 5514, + "end": 5546, + "name": "PUSH [tag]", + "source": 2, + "value": "119" + }, + { + "begin": 5514, + "end": 5546, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 5514, + "end": 5546, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 5514, + "end": 5546, + "name": "PUSH [tag]", + "source": 2, + "value": "117" + }, + { + "begin": 5514, + "end": 5546, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 5514, + "end": 5546, + "name": "tag", + "source": 2, + "value": "119" + }, + { + "begin": 5514, + "end": 5546, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 5514, + "end": 5546, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 5514, + "end": 5546, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 5514, + "end": 5546, + "name": "DUP1", + "source": 2 + }, + { + "begin": 5514, + "end": 5546, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 5514, + "end": 5546, + "name": "SUB", + "source": 2 + }, + { + "begin": 5514, + "end": 5546, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 5514, + "end": 5546, + "name": "REVERT", + "source": 2 + }, + { + "begin": 5471, + "end": 5557, + "name": "tag", + "source": 2, + "value": "118" + }, + { + "begin": 5471, + "end": 5557, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 5566, + "end": 5590, + "name": "PUSH [tag]", + "source": 2, + "value": "120" + }, + { + "begin": 5574, + "end": 5578, + "name": "DUP4", + "source": 2 + }, + { + "begin": 5580, + "end": 5582, + "name": "DUP4", + "source": 2 + }, + { + "begin": 5584, + "end": 5589, + "name": "DUP4", + "source": 2 + }, + { + "begin": 5566, + "end": 5573, + "name": "PUSH [tag]", + "source": 2, + "value": "121" + }, + { + "begin": 5566, + "end": 5590, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 5566, + "end": 5590, + "name": "tag", + "source": 2, + "value": "120" + }, + { + "begin": 5566, + "end": 5590, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 5297, + "end": 5597, + "name": "POP", + "source": 2 + }, + { + "begin": 5297, + "end": 5597, + "name": "POP", + "source": 2 + }, + { + "begin": 5297, + "end": 5597, + "name": "POP", + "source": 2 + }, + { + "begin": 5297, + "end": 5597, + "jumpType": "[out]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2606, + "end": 2719, + "name": "tag", + "source": 7, + "value": "85" + }, + { + "begin": 2606, + "end": 2719, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1600, + "end": 1616, + "name": "PUSH [tag]", + "source": 7, + "value": "123" + }, + { + "begin": 1600, + "end": 1614, + "name": "PUSH [tag]", + "source": 7, + "value": "124" + }, + { + "begin": 1600, + "end": 1616, + "jumpType": "[in]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 1600, + "end": 1616, + "name": "tag", + "source": 7, + "value": "123" + }, + { + "begin": 1600, + "end": 1616, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 2674, + "end": 2675, + "modifierDepth": 1, + "name": "PUSH", + "source": 7, + "value": "1" + }, + { + "begin": 2664, + "end": 2671, + "modifierDepth": 1, + "name": "PUSH", + "source": 7, + "value": "5" + }, + { + "begin": 2664, + "end": 2675, + "modifierDepth": 1, + "name": "DUP2", + "source": 7 + }, + { + "begin": 2664, + "end": 2675, + "modifierDepth": 1, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 2664, + "end": 2675, + "modifierDepth": 1, + "name": "SSTORE", + "source": 7 + }, + { + "begin": 2664, + "end": 2675, + "modifierDepth": 1, + "name": "POP", + "source": 7 + }, + { + "begin": 2690, + "end": 2712, + "modifierDepth": 1, + "name": "PUSH", + "source": 7, + "value": "5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA" + }, + { + "begin": 2699, + "end": 2711, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 7, + "value": "126" + }, + { + "begin": 2699, + "end": 2709, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 7, + "value": "72" + }, + { + "begin": 2699, + "end": 2711, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 7 + }, + { + "begin": 2699, + "end": 2711, + "modifierDepth": 1, + "name": "tag", + "source": 7, + "value": "126" + }, + { + "begin": 2699, + "end": 2711, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 2690, + "end": 2712, + "modifierDepth": 1, + "name": "PUSH", + "source": 7, + "value": "40" + }, + { + "begin": 2690, + "end": 2712, + "modifierDepth": 1, + "name": "MLOAD", + "source": 7 + }, + { + "begin": 2690, + "end": 2712, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 7, + "value": "127" + }, + { + "begin": 2690, + "end": 2712, + "modifierDepth": 1, + "name": "SWAP2", + "source": 7 + }, + { + "begin": 2690, + "end": 2712, + "modifierDepth": 1, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 2690, + "end": 2712, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 7, + "value": "117" + }, + { + "begin": 2690, + "end": 2712, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 7 + }, + { + "begin": 2690, + "end": 2712, + "modifierDepth": 1, + "name": "tag", + "source": 7, + "value": "127" + }, + { + "begin": 2690, + "end": 2712, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 2690, + "end": 2712, + "modifierDepth": 1, + "name": "PUSH", + "source": 7, + "value": "40" + }, + { + "begin": 2690, + "end": 2712, + "modifierDepth": 1, + "name": "MLOAD", + "source": 7 + }, + { + "begin": 2690, + "end": 2712, + "modifierDepth": 1, + "name": "DUP1", + "source": 7 + }, + { + "begin": 2690, + "end": 2712, + "modifierDepth": 1, + "name": "SWAP2", + "source": 7 + }, + { + "begin": 2690, + "end": 2712, + "modifierDepth": 1, + "name": "SUB", + "source": 7 + }, + { + "begin": 2690, + "end": 2712, + "modifierDepth": 1, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 2690, + "end": 2712, + "modifierDepth": 1, + "name": "LOG1", + "source": 7 + }, + { + "begin": 2606, + "end": 2719, + "jumpType": "[out]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 2362, + "end": 2474, + "name": "tag", + "source": 7, + "value": "92" + }, + { + "begin": 2362, + "end": 2474, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1353, + "end": 1372, + "name": "PUSH [tag]", + "source": 7, + "value": "129" + }, + { + "begin": 1353, + "end": 1370, + "name": "PUSH [tag]", + "source": 7, + "value": "130" + }, + { + "begin": 1353, + "end": 1372, + "jumpType": "[in]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 1353, + "end": 1372, + "name": "tag", + "source": 7, + "value": "129" + }, + { + "begin": 1353, + "end": 1372, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 2431, + "end": 2432, + "modifierDepth": 1, + "name": "PUSH", + "source": 7, + "value": "2" + }, + { + "begin": 2421, + "end": 2428, + "modifierDepth": 1, + "name": "PUSH", + "source": 7, + "value": "5" + }, + { + "begin": 2421, + "end": 2432, + "modifierDepth": 1, + "name": "DUP2", + "source": 7 + }, + { + "begin": 2421, + "end": 2432, + "modifierDepth": 1, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 2421, + "end": 2432, + "modifierDepth": 1, + "name": "SSTORE", + "source": 7 + }, + { + "begin": 2421, + "end": 2432, + "modifierDepth": 1, + "name": "POP", + "source": 7 + }, + { + "begin": 2447, + "end": 2467, + "modifierDepth": 1, + "name": "PUSH", + "source": 7, + "value": "62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258" + }, + { + "begin": 2454, + "end": 2466, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 7, + "value": "132" + }, + { + "begin": 2454, + "end": 2464, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 7, + "value": "72" + }, + { + "begin": 2454, + "end": 2466, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 7 + }, + { + "begin": 2454, + "end": 2466, + "modifierDepth": 1, + "name": "tag", + "source": 7, + "value": "132" + }, + { + "begin": 2454, + "end": 2466, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 2447, + "end": 2467, + "modifierDepth": 1, + "name": "PUSH", + "source": 7, + "value": "40" + }, + { + "begin": 2447, + "end": 2467, + "modifierDepth": 1, + "name": "MLOAD", + "source": 7 + }, + { + "begin": 2447, + "end": 2467, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 7, + "value": "133" + }, + { + "begin": 2447, + "end": 2467, + "modifierDepth": 1, + "name": "SWAP2", + "source": 7 + }, + { + "begin": 2447, + "end": 2467, + "modifierDepth": 1, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 2447, + "end": 2467, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 7, + "value": "117" + }, + { + "begin": 2447, + "end": 2467, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 7 + }, + { + "begin": 2447, + "end": 2467, + "modifierDepth": 1, + "name": "tag", + "source": 7, + "value": "133" + }, + { + "begin": 2447, + "end": 2467, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 2447, + "end": 2467, + "modifierDepth": 1, + "name": "PUSH", + "source": 7, + "value": "40" + }, + { + "begin": 2447, + "end": 2467, + "modifierDepth": 1, + "name": "MLOAD", + "source": 7 + }, + { + "begin": 2447, + "end": 2467, + "modifierDepth": 1, + "name": "DUP1", + "source": 7 + }, + { + "begin": 2447, + "end": 2467, + "modifierDepth": 1, + "name": "SWAP2", + "source": 7 + }, + { + "begin": 2447, + "end": 2467, + "modifierDepth": 1, + "name": "SUB", + "source": 7 + }, + { + "begin": 2447, + "end": 2467, + "modifierDepth": 1, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 2447, + "end": 2467, + "modifierDepth": 1, + "name": "LOG1", + "source": 7 + }, + { + "begin": 2362, + "end": 2474, + "jumpType": "[out]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 9605, + "end": 10037, + "name": "tag", + "source": 2, + "value": "106" + }, + { + "begin": 9605, + "end": 10037, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 9734, + "end": 9735, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 9717, + "end": 9736, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 9717, + "end": 9736, + "name": "AND", + "source": 2 + }, + { + "begin": 9717, + "end": 9722, + "name": "DUP5", + "source": 2 + }, + { + "begin": 9717, + "end": 9736, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 9717, + "end": 9736, + "name": "AND", + "source": 2 + }, + { + "begin": 9717, + "end": 9736, + "name": "SUB", + "source": 2 + }, + { + "begin": 9713, + "end": 9802, + "name": "PUSH [tag]", + "source": 2, + "value": "135" + }, + { + "begin": 9713, + "end": 9802, + "name": "JUMPI", + "source": 2 + }, + { + "begin": 9788, + "end": 9789, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 9759, + "end": 9791, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 9759, + "end": 9791, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 9759, + "end": 9791, + "name": "PUSH", + "source": 2, + "value": "E602DF0500000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 9759, + "end": 9791, + "name": "DUP2", + "source": 2 + }, + { + "begin": 9759, + "end": 9791, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 9759, + "end": 9791, + "name": "PUSH", + "source": 2, + "value": "4" + }, + { + "begin": 9759, + "end": 9791, + "name": "ADD", + "source": 2 + }, + { + "begin": 9759, + "end": 9791, + "name": "PUSH [tag]", + "source": 2, + "value": "136" + }, + { + "begin": 9759, + "end": 9791, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 9759, + "end": 9791, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 9759, + "end": 9791, + "name": "PUSH [tag]", + "source": 2, + "value": "117" + }, + { + "begin": 9759, + "end": 9791, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 9759, + "end": 9791, + "name": "tag", + "source": 2, + "value": "136" + }, + { + "begin": 9759, + "end": 9791, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 9759, + "end": 9791, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 9759, + "end": 9791, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 9759, + "end": 9791, + "name": "DUP1", + "source": 2 + }, + { + "begin": 9759, + "end": 9791, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 9759, + "end": 9791, + "name": "SUB", + "source": 2 + }, + { + "begin": 9759, + "end": 9791, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 9759, + "end": 9791, + "name": "REVERT", + "source": 2 + }, + { + "begin": 9713, + "end": 9802, + "name": "tag", + "source": 2, + "value": "135" + }, + { + "begin": 9713, + "end": 9802, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 9834, + "end": 9835, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 9815, + "end": 9836, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 9815, + "end": 9836, + "name": "AND", + "source": 2 + }, + { + "begin": 9815, + "end": 9822, + "name": "DUP4", + "source": 2 + }, + { + "begin": 9815, + "end": 9836, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 9815, + "end": 9836, + "name": "AND", + "source": 2 + }, + { + "begin": 9815, + "end": 9836, + "name": "SUB", + "source": 2 + }, + { + "begin": 9811, + "end": 9901, + "name": "PUSH [tag]", + "source": 2, + "value": "137" + }, + { + "begin": 9811, + "end": 9901, + "name": "JUMPI", + "source": 2 + }, + { + "begin": 9887, + "end": 9888, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 9859, + "end": 9890, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 9859, + "end": 9890, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 9859, + "end": 9890, + "name": "PUSH", + "source": 2, + "value": "94280D6200000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 9859, + "end": 9890, + "name": "DUP2", + "source": 2 + }, + { + "begin": 9859, + "end": 9890, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 9859, + "end": 9890, + "name": "PUSH", + "source": 2, + "value": "4" + }, + { + "begin": 9859, + "end": 9890, + "name": "ADD", + "source": 2 + }, + { + "begin": 9859, + "end": 9890, + "name": "PUSH [tag]", + "source": 2, + "value": "138" + }, + { + "begin": 9859, + "end": 9890, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 9859, + "end": 9890, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 9859, + "end": 9890, + "name": "PUSH [tag]", + "source": 2, + "value": "117" + }, + { + "begin": 9859, + "end": 9890, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 9859, + "end": 9890, + "name": "tag", + "source": 2, + "value": "138" + }, + { + "begin": 9859, + "end": 9890, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 9859, + "end": 9890, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 9859, + "end": 9890, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 9859, + "end": 9890, + "name": "DUP1", + "source": 2 + }, + { + "begin": 9859, + "end": 9890, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 9859, + "end": 9890, + "name": "SUB", + "source": 2 + }, + { + "begin": 9859, + "end": 9890, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 9859, + "end": 9890, + "name": "REVERT", + "source": 2 + }, + { + "begin": 9811, + "end": 9901, + "name": "tag", + "source": 2, + "value": "137" + }, + { + "begin": 9811, + "end": 9901, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 9940, + "end": 9945, + "name": "DUP2", + "source": 2 + }, + { + "begin": 9910, + "end": 9921, + "name": "PUSH", + "source": 2, + "value": "1" + }, + { + "begin": 9910, + "end": 9928, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 9922, + "end": 9927, + "name": "DUP7", + "source": 2 + }, + { + "begin": 9910, + "end": 9928, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 9910, + "end": 9928, + "name": "AND", + "source": 2 + }, + { + "begin": 9910, + "end": 9928, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 9910, + "end": 9928, + "name": "AND", + "source": 2 + }, + { + "begin": 9910, + "end": 9928, + "name": "DUP2", + "source": 2 + }, + { + "begin": 9910, + "end": 9928, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 9910, + "end": 9928, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 9910, + "end": 9928, + "name": "ADD", + "source": 2 + }, + { + "begin": 9910, + "end": 9928, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 9910, + "end": 9928, + "name": "DUP2", + "source": 2 + }, + { + "begin": 9910, + "end": 9928, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 9910, + "end": 9928, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 9910, + "end": 9928, + "name": "ADD", + "source": 2 + }, + { + "begin": 9910, + "end": 9928, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 9910, + "end": 9928, + "name": "KECCAK256", + "source": 2 + }, + { + "begin": 9910, + "end": 9937, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 9929, + "end": 9936, + "name": "DUP6", + "source": 2 + }, + { + "begin": 9910, + "end": 9937, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 9910, + "end": 9937, + "name": "AND", + "source": 2 + }, + { + "begin": 9910, + "end": 9937, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 9910, + "end": 9937, + "name": "AND", + "source": 2 + }, + { + "begin": 9910, + "end": 9937, + "name": "DUP2", + "source": 2 + }, + { + "begin": 9910, + "end": 9937, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 9910, + "end": 9937, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 9910, + "end": 9937, + "name": "ADD", + "source": 2 + }, + { + "begin": 9910, + "end": 9937, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 9910, + "end": 9937, + "name": "DUP2", + "source": 2 + }, + { + "begin": 9910, + "end": 9937, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 9910, + "end": 9937, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 9910, + "end": 9937, + "name": "ADD", + "source": 2 + }, + { + "begin": 9910, + "end": 9937, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 9910, + "end": 9937, + "name": "KECCAK256", + "source": 2 + }, + { + "begin": 9910, + "end": 9945, + "name": "DUP2", + "source": 2 + }, + { + "begin": 9910, + "end": 9945, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 9910, + "end": 9945, + "name": "SSTORE", + "source": 2 + }, + { + "begin": 9910, + "end": 9945, + "name": "POP", + "source": 2 + }, + { + "begin": 9959, + "end": 9968, + "name": "DUP1", + "source": 2 + }, + { + "begin": 9955, + "end": 10031, + "name": "ISZERO", + "source": 2 + }, + { + "begin": 9955, + "end": 10031, + "name": "PUSH [tag]", + "source": 2, + "value": "139" + }, + { + "begin": 9955, + "end": 10031, + "name": "JUMPI", + "source": 2 + }, + { + "begin": 10005, + "end": 10012, + "name": "DUP3", + "source": 2 + }, + { + "begin": 9989, + "end": 10020, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 9989, + "end": 10020, + "name": "AND", + "source": 2 + }, + { + "begin": 9998, + "end": 10003, + "name": "DUP5", + "source": 2 + }, + { + "begin": 9989, + "end": 10020, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 9989, + "end": 10020, + "name": "AND", + "source": 2 + }, + { + "begin": 9989, + "end": 10020, + "name": "PUSH", + "source": 2, + "value": "8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925" + }, + { + "begin": 10014, + "end": 10019, + "name": "DUP5", + "source": 2 + }, + { + "begin": 9989, + "end": 10020, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 9989, + "end": 10020, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 9989, + "end": 10020, + "name": "PUSH [tag]", + "source": 2, + "value": "140" + }, + { + "begin": 9989, + "end": 10020, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 9989, + "end": 10020, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 9989, + "end": 10020, + "name": "PUSH [tag]", + "source": 2, + "value": "29" + }, + { + "begin": 9989, + "end": 10020, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 9989, + "end": 10020, + "name": "tag", + "source": 2, + "value": "140" + }, + { + "begin": 9989, + "end": 10020, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 9989, + "end": 10020, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 9989, + "end": 10020, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 9989, + "end": 10020, + "name": "DUP1", + "source": 2 + }, + { + "begin": 9989, + "end": 10020, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 9989, + "end": 10020, + "name": "SUB", + "source": 2 + }, + { + "begin": 9989, + "end": 10020, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 9989, + "end": 10020, + "name": "LOG3", + "source": 2 + }, + { + "begin": 9955, + "end": 10031, + "name": "tag", + "source": 2, + "value": "139" + }, + { + "begin": 9955, + "end": 10031, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 9605, + "end": 10037, + "name": "POP", + "source": 2 + }, + { + "begin": 9605, + "end": 10037, + "name": "POP", + "source": 2 + }, + { + "begin": 9605, + "end": 10037, + "name": "POP", + "source": 2 + }, + { + "begin": 9605, + "end": 10037, + "name": "POP", + "source": 2 + }, + { + "begin": 9605, + "end": 10037, + "jumpType": "[out]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 1113, + "end": 1258, + "name": "tag", + "source": 4, + "value": "121" + }, + { + "begin": 1113, + "end": 1258, + "name": "JUMPDEST", + "source": 4 + }, + { + "begin": 1353, + "end": 1372, + "name": "PUSH [tag]", + "source": 7, + "value": "142" + }, + { + "begin": 1353, + "end": 1370, + "name": "PUSH [tag]", + "source": 7, + "value": "130" + }, + { + "begin": 1353, + "end": 1372, + "jumpType": "[in]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 1353, + "end": 1372, + "name": "tag", + "source": 7, + "value": "142" + }, + { + "begin": 1353, + "end": 1372, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1221, + "end": 1251, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 4, + "value": "144" + }, + { + "begin": 1235, + "end": 1239, + "modifierDepth": 1, + "name": "DUP4", + "source": 4 + }, + { + "begin": 1241, + "end": 1243, + "modifierDepth": 1, + "name": "DUP4", + "source": 4 + }, + { + "begin": 1245, + "end": 1250, + "modifierDepth": 1, + "name": "DUP4", + "source": 4 + }, + { + "begin": 1221, + "end": 1234, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 4, + "value": "145" + }, + { + "begin": 1221, + "end": 1251, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 4 + }, + { + "begin": 1221, + "end": 1251, + "modifierDepth": 1, + "name": "tag", + "source": 4, + "value": "144" + }, + { + "begin": 1221, + "end": 1251, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 4 + }, + { + "begin": 1113, + "end": 1258, + "name": "POP", + "source": 4 + }, + { + "begin": 1113, + "end": 1258, + "name": "POP", + "source": 4 + }, + { + "begin": 1113, + "end": 1258, + "name": "POP", + "source": 4 + }, + { + "begin": 1113, + "end": 1258, + "jumpType": "[out]", + "name": "JUMP", + "source": 4 + }, + { + "begin": 2101, + "end": 2227, + "name": "tag", + "source": 7, + "value": "124" + }, + { + "begin": 2101, + "end": 2227, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 2164, + "end": 2172, + "name": "PUSH [tag]", + "source": 7, + "value": "147" + }, + { + "begin": 2164, + "end": 2170, + "name": "PUSH [tag]", + "source": 7, + "value": "42" + }, + { + "begin": 2164, + "end": 2172, + "jumpType": "[in]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 2164, + "end": 2172, + "name": "tag", + "source": 7, + "value": "147" + }, + { + "begin": 2164, + "end": 2172, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 2159, + "end": 2221, + "name": "PUSH [tag]", + "source": 7, + "value": "148" + }, + { + "begin": 2159, + "end": 2221, + "name": "JUMPI", + "source": 7 + }, + { + "begin": 2195, + "end": 2210, + "name": "PUSH", + "source": 7, + "value": "40" + }, + { + "begin": 2195, + "end": 2210, + "name": "MLOAD", + "source": 7 + }, + { + "begin": 2195, + "end": 2210, + "name": "PUSH", + "source": 7, + "value": "8DFC202B00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2195, + "end": 2210, + "name": "DUP2", + "source": 7 + }, + { + "begin": 2195, + "end": 2210, + "name": "MSTORE", + "source": 7 + }, + { + "begin": 2195, + "end": 2210, + "name": "PUSH", + "source": 7, + "value": "4" + }, + { + "begin": 2195, + "end": 2210, + "name": "ADD", + "source": 7 + }, + { + "begin": 2195, + "end": 2210, + "name": "PUSH", + "source": 7, + "value": "40" + }, + { + "begin": 2195, + "end": 2210, + "name": "MLOAD", + "source": 7 + }, + { + "begin": 2195, + "end": 2210, + "name": "DUP1", + "source": 7 + }, + { + "begin": 2195, + "end": 2210, + "name": "SWAP2", + "source": 7 + }, + { + "begin": 2195, + "end": 2210, + "name": "SUB", + "source": 7 + }, + { + "begin": 2195, + "end": 2210, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 2195, + "end": 2210, + "name": "REVERT", + "source": 7 + }, + { + "begin": 2159, + "end": 2221, + "name": "tag", + "source": 7, + "value": "148" + }, + { + "begin": 2159, + "end": 2221, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 2101, + "end": 2227, + "jumpType": "[out]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 1901, + "end": 2029, + "name": "tag", + "source": 7, + "value": "130" + }, + { + "begin": 1901, + "end": 2029, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1966, + "end": 1974, + "name": "PUSH [tag]", + "source": 7, + "value": "150" + }, + { + "begin": 1966, + "end": 1972, + "name": "PUSH [tag]", + "source": 7, + "value": "42" + }, + { + "begin": 1966, + "end": 1974, + "jumpType": "[in]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 1966, + "end": 1974, + "name": "tag", + "source": 7, + "value": "150" + }, + { + "begin": 1966, + "end": 1974, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1962, + "end": 2023, + "name": "ISZERO", + "source": 7 + }, + { + "begin": 1962, + "end": 2023, + "name": "PUSH [tag]", + "source": 7, + "value": "151" + }, + { + "begin": 1962, + "end": 2023, + "name": "JUMPI", + "source": 7 + }, + { + "begin": 1997, + "end": 2012, + "name": "PUSH", + "source": 7, + "value": "40" + }, + { + "begin": 1997, + "end": 2012, + "name": "MLOAD", + "source": 7 + }, + { + "begin": 1997, + "end": 2012, + "name": "PUSH", + "source": 7, + "value": "D93C066500000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1997, + "end": 2012, + "name": "DUP2", + "source": 7 + }, + { + "begin": 1997, + "end": 2012, + "name": "MSTORE", + "source": 7 + }, + { + "begin": 1997, + "end": 2012, + "name": "PUSH", + "source": 7, + "value": "4" + }, + { + "begin": 1997, + "end": 2012, + "name": "ADD", + "source": 7 + }, + { + "begin": 1997, + "end": 2012, + "name": "PUSH", + "source": 7, + "value": "40" + }, + { + "begin": 1997, + "end": 2012, + "name": "MLOAD", + "source": 7 + }, + { + "begin": 1997, + "end": 2012, + "name": "DUP1", + "source": 7 + }, + { + "begin": 1997, + "end": 2012, + "name": "SWAP2", + "source": 7 + }, + { + "begin": 1997, + "end": 2012, + "name": "SUB", + "source": 7 + }, + { + "begin": 1997, + "end": 2012, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 1997, + "end": 2012, + "name": "REVERT", + "source": 7 + }, + { + "begin": 1962, + "end": 2023, + "name": "tag", + "source": 7, + "value": "151" + }, + { + "begin": 1962, + "end": 2023, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1901, + "end": 2029, + "jumpType": "[out]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 5912, + "end": 7019, + "name": "tag", + "source": 2, + "value": "145" + }, + { + "begin": 5912, + "end": 7019, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 6017, + "end": 6018, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 6001, + "end": 6019, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 6001, + "end": 6019, + "name": "AND", + "source": 2 + }, + { + "begin": 6001, + "end": 6005, + "name": "DUP4", + "source": 2 + }, + { + "begin": 6001, + "end": 6019, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 6001, + "end": 6019, + "name": "AND", + "source": 2 + }, + { + "begin": 6001, + "end": 6019, + "name": "SUB", + "source": 2 + }, + { + "begin": 5997, + "end": 6537, + "name": "PUSH [tag]", + "source": 2, + "value": "153" + }, + { + "begin": 5997, + "end": 6537, + "name": "JUMPI", + "source": 2 + }, + { + "begin": 6153, + "end": 6158, + "name": "DUP1", + "source": 2 + }, + { + "begin": 6137, + "end": 6149, + "name": "PUSH", + "source": 2, + "value": "2" + }, + { + "begin": 6137, + "end": 6149, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 6137, + "end": 6158, + "name": "DUP3", + "source": 2 + }, + { + "begin": 6137, + "end": 6158, + "name": "DUP3", + "source": 2 + }, + { + "begin": 6137, + "end": 6158, + "name": "SLOAD", + "source": 2 + }, + { + "begin": 6137, + "end": 6158, + "name": "PUSH [tag]", + "source": 2, + "value": "154" + }, + { + "begin": 6137, + "end": 6158, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 6137, + "end": 6158, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 6137, + "end": 6158, + "name": "PUSH [tag]", + "source": 2, + "value": "155" + }, + { + "begin": 6137, + "end": 6158, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 6137, + "end": 6158, + "name": "tag", + "source": 2, + "value": "154" + }, + { + "begin": 6137, + "end": 6158, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 6137, + "end": 6158, + "name": "SWAP3", + "source": 2 + }, + { + "begin": 6137, + "end": 6158, + "name": "POP", + "source": 2 + }, + { + "begin": 6137, + "end": 6158, + "name": "POP", + "source": 2 + }, + { + "begin": 6137, + "end": 6158, + "name": "DUP2", + "source": 2 + }, + { + "begin": 6137, + "end": 6158, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 6137, + "end": 6158, + "name": "SSTORE", + "source": 2 + }, + { + "begin": 6137, + "end": 6158, + "name": "POP", + "source": 2 + }, + { + "begin": 5997, + "end": 6537, + "name": "PUSH [tag]", + "source": 2, + "value": "156" + }, + { + "begin": 5997, + "end": 6537, + "name": "JUMP", + "source": 2 + }, + { + "begin": 5997, + "end": 6537, + "name": "tag", + "source": 2, + "value": "153" + }, + { + "begin": 5997, + "end": 6537, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 6189, + "end": 6208, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 6211, + "end": 6220, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 6211, + "end": 6226, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 6221, + "end": 6225, + "name": "DUP6", + "source": 2 + }, + { + "begin": 6211, + "end": 6226, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 6211, + "end": 6226, + "name": "AND", + "source": 2 + }, + { + "begin": 6211, + "end": 6226, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 6211, + "end": 6226, + "name": "AND", + "source": 2 + }, + { + "begin": 6211, + "end": 6226, + "name": "DUP2", + "source": 2 + }, + { + "begin": 6211, + "end": 6226, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 6211, + "end": 6226, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 6211, + "end": 6226, + "name": "ADD", + "source": 2 + }, + { + "begin": 6211, + "end": 6226, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 6211, + "end": 6226, + "name": "DUP2", + "source": 2 + }, + { + "begin": 6211, + "end": 6226, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 6211, + "end": 6226, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 6211, + "end": 6226, + "name": "ADD", + "source": 2 + }, + { + "begin": 6211, + "end": 6226, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 6211, + "end": 6226, + "name": "KECCAK256", + "source": 2 + }, + { + "begin": 6211, + "end": 6226, + "name": "SLOAD", + "source": 2 + }, + { + "begin": 6189, + "end": 6226, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 6189, + "end": 6226, + "name": "POP", + "source": 2 + }, + { + "begin": 6258, + "end": 6263, + "name": "DUP2", + "source": 2 + }, + { + "begin": 6244, + "end": 6255, + "name": "DUP2", + "source": 2 + }, + { + "begin": 6244, + "end": 6263, + "name": "LT", + "source": 2 + }, + { + "begin": 6240, + "end": 6355, + "name": "ISZERO", + "source": 2 + }, + { + "begin": 6240, + "end": 6355, + "name": "PUSH [tag]", + "source": 2, + "value": "157" + }, + { + "begin": 6240, + "end": 6355, + "name": "JUMPI", + "source": 2 + }, + { + "begin": 6315, + "end": 6319, + "name": "DUP4", + "source": 2 + }, + { + "begin": 6321, + "end": 6332, + "name": "DUP2", + "source": 2 + }, + { + "begin": 6334, + "end": 6339, + "name": "DUP4", + "source": 2 + }, + { + "begin": 6290, + "end": 6340, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 6290, + "end": 6340, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 6290, + "end": 6340, + "name": "PUSH", + "source": 2, + "value": "E450D38C00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 6290, + "end": 6340, + "name": "DUP2", + "source": 2 + }, + { + "begin": 6290, + "end": 6340, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 6290, + "end": 6340, + "name": "PUSH", + "source": 2, + "value": "4" + }, + { + "begin": 6290, + "end": 6340, + "name": "ADD", + "source": 2 + }, + { + "begin": 6290, + "end": 6340, + "name": "PUSH [tag]", + "source": 2, + "value": "158" + }, + { + "begin": 6290, + "end": 6340, + "name": "SWAP4", + "source": 2 + }, + { + "begin": 6290, + "end": 6340, + "name": "SWAP3", + "source": 2 + }, + { + "begin": 6290, + "end": 6340, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 6290, + "end": 6340, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 6290, + "end": 6340, + "name": "PUSH [tag]", + "source": 2, + "value": "112" + }, + { + "begin": 6290, + "end": 6340, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 6290, + "end": 6340, + "name": "tag", + "source": 2, + "value": "158" + }, + { + "begin": 6290, + "end": 6340, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 6290, + "end": 6340, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 6290, + "end": 6340, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 6290, + "end": 6340, + "name": "DUP1", + "source": 2 + }, + { + "begin": 6290, + "end": 6340, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 6290, + "end": 6340, + "name": "SUB", + "source": 2 + }, + { + "begin": 6290, + "end": 6340, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 6290, + "end": 6340, + "name": "REVERT", + "source": 2 + }, + { + "begin": 6240, + "end": 6355, + "name": "tag", + "source": 2, + "value": "157" + }, + { + "begin": 6240, + "end": 6355, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 6507, + "end": 6512, + "name": "DUP2", + "source": 2 + }, + { + "begin": 6493, + "end": 6504, + "name": "DUP2", + "source": 2 + }, + { + "begin": 6493, + "end": 6512, + "name": "SUB", + "source": 2 + }, + { + "begin": 6475, + "end": 6484, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 6475, + "end": 6490, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 6485, + "end": 6489, + "name": "DUP7", + "source": 2 + }, + { + "begin": 6475, + "end": 6490, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 6475, + "end": 6490, + "name": "AND", + "source": 2 + }, + { + "begin": 6475, + "end": 6490, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 6475, + "end": 6490, + "name": "AND", + "source": 2 + }, + { + "begin": 6475, + "end": 6490, + "name": "DUP2", + "source": 2 + }, + { + "begin": 6475, + "end": 6490, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 6475, + "end": 6490, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 6475, + "end": 6490, + "name": "ADD", + "source": 2 + }, + { + "begin": 6475, + "end": 6490, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 6475, + "end": 6490, + "name": "DUP2", + "source": 2 + }, + { + "begin": 6475, + "end": 6490, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 6475, + "end": 6490, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 6475, + "end": 6490, + "name": "ADD", + "source": 2 + }, + { + "begin": 6475, + "end": 6490, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 6475, + "end": 6490, + "name": "KECCAK256", + "source": 2 + }, + { + "begin": 6475, + "end": 6512, + "name": "DUP2", + "source": 2 + }, + { + "begin": 6475, + "end": 6512, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 6475, + "end": 6512, + "name": "SSTORE", + "source": 2 + }, + { + "begin": 6475, + "end": 6512, + "name": "POP", + "source": 2 + }, + { + "begin": 6175, + "end": 6537, + "name": "POP", + "source": 2 + }, + { + "begin": 5997, + "end": 6537, + "name": "tag", + "source": 2, + "value": "156" + }, + { + "begin": 5997, + "end": 6537, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 6565, + "end": 6566, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 6551, + "end": 6567, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 6551, + "end": 6567, + "name": "AND", + "source": 2 + }, + { + "begin": 6551, + "end": 6553, + "name": "DUP3", + "source": 2 + }, + { + "begin": 6551, + "end": 6567, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 6551, + "end": 6567, + "name": "AND", + "source": 2 + }, + { + "begin": 6551, + "end": 6567, + "name": "SUB", + "source": 2 + }, + { + "begin": 6547, + "end": 6972, + "name": "PUSH [tag]", + "source": 2, + "value": "159" + }, + { + "begin": 6547, + "end": 6972, + "name": "JUMPI", + "source": 2 + }, + { + "begin": 6730, + "end": 6735, + "name": "DUP1", + "source": 2 + }, + { + "begin": 6714, + "end": 6726, + "name": "PUSH", + "source": 2, + "value": "2" + }, + { + "begin": 6714, + "end": 6726, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 6714, + "end": 6735, + "name": "DUP3", + "source": 2 + }, + { + "begin": 6714, + "end": 6735, + "name": "DUP3", + "source": 2 + }, + { + "begin": 6714, + "end": 6735, + "name": "SLOAD", + "source": 2 + }, + { + "begin": 6714, + "end": 6735, + "name": "SUB", + "source": 2 + }, + { + "begin": 6714, + "end": 6735, + "name": "SWAP3", + "source": 2 + }, + { + "begin": 6714, + "end": 6735, + "name": "POP", + "source": 2 + }, + { + "begin": 6714, + "end": 6735, + "name": "POP", + "source": 2 + }, + { + "begin": 6714, + "end": 6735, + "name": "DUP2", + "source": 2 + }, + { + "begin": 6714, + "end": 6735, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 6714, + "end": 6735, + "name": "SSTORE", + "source": 2 + }, + { + "begin": 6714, + "end": 6735, + "name": "POP", + "source": 2 + }, + { + "begin": 6547, + "end": 6972, + "name": "PUSH [tag]", + "source": 2, + "value": "160" + }, + { + "begin": 6547, + "end": 6972, + "name": "JUMP", + "source": 2 + }, + { + "begin": 6547, + "end": 6972, + "name": "tag", + "source": 2, + "value": "159" + }, + { + "begin": 6547, + "end": 6972, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 6942, + "end": 6947, + "name": "DUP1", + "source": 2 + }, + { + "begin": 6925, + "end": 6934, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 6925, + "end": 6938, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 6935, + "end": 6937, + "name": "DUP5", + "source": 2 + }, + { + "begin": 6925, + "end": 6938, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 6925, + "end": 6938, + "name": "AND", + "source": 2 + }, + { + "begin": 6925, + "end": 6938, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 6925, + "end": 6938, + "name": "AND", + "source": 2 + }, + { + "begin": 6925, + "end": 6938, + "name": "DUP2", + "source": 2 + }, + { + "begin": 6925, + "end": 6938, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 6925, + "end": 6938, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 6925, + "end": 6938, + "name": "ADD", + "source": 2 + }, + { + "begin": 6925, + "end": 6938, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 6925, + "end": 6938, + "name": "DUP2", + "source": 2 + }, + { + "begin": 6925, + "end": 6938, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 6925, + "end": 6938, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 6925, + "end": 6938, + "name": "ADD", + "source": 2 + }, + { + "begin": 6925, + "end": 6938, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 6925, + "end": 6938, + "name": "KECCAK256", + "source": 2 + }, + { + "begin": 6925, + "end": 6938, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 6925, + "end": 6947, + "name": "DUP3", + "source": 2 + }, + { + "begin": 6925, + "end": 6947, + "name": "DUP3", + "source": 2 + }, + { + "begin": 6925, + "end": 6947, + "name": "SLOAD", + "source": 2 + }, + { + "begin": 6925, + "end": 6947, + "name": "ADD", + "source": 2 + }, + { + "begin": 6925, + "end": 6947, + "name": "SWAP3", + "source": 2 + }, + { + "begin": 6925, + "end": 6947, + "name": "POP", + "source": 2 + }, + { + "begin": 6925, + "end": 6947, + "name": "POP", + "source": 2 + }, + { + "begin": 6925, + "end": 6947, + "name": "DUP2", + "source": 2 + }, + { + "begin": 6925, + "end": 6947, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 6925, + "end": 6947, + "name": "SSTORE", + "source": 2 + }, + { + "begin": 6925, + "end": 6947, + "name": "POP", + "source": 2 + }, + { + "begin": 6547, + "end": 6972, + "name": "tag", + "source": 2, + "value": "160" + }, + { + "begin": 6547, + "end": 6972, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 7002, + "end": 7004, + "name": "DUP2", + "source": 2 + }, + { + "begin": 6987, + "end": 7012, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 6987, + "end": 7012, + "name": "AND", + "source": 2 + }, + { + "begin": 6996, + "end": 7000, + "name": "DUP4", + "source": 2 + }, + { + "begin": 6987, + "end": 7012, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 6987, + "end": 7012, + "name": "AND", + "source": 2 + }, + { + "begin": 6987, + "end": 7012, + "name": "PUSH", + "source": 2, + "value": "DDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF" + }, + { + "begin": 7006, + "end": 7011, + "name": "DUP4", + "source": 2 + }, + { + "begin": 6987, + "end": 7012, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 6987, + "end": 7012, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 6987, + "end": 7012, + "name": "PUSH [tag]", + "source": 2, + "value": "161" + }, + { + "begin": 6987, + "end": 7012, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 6987, + "end": 7012, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 6987, + "end": 7012, + "name": "PUSH [tag]", + "source": 2, + "value": "29" + }, + { + "begin": 6987, + "end": 7012, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 6987, + "end": 7012, + "name": "tag", + "source": 2, + "value": "161" + }, + { + "begin": 6987, + "end": 7012, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 6987, + "end": 7012, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 6987, + "end": 7012, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 6987, + "end": 7012, + "name": "DUP1", + "source": 2 + }, + { + "begin": 6987, + "end": 7012, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 6987, + "end": 7012, + "name": "SUB", + "source": 2 + }, + { + "begin": 6987, + "end": 7012, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 6987, + "end": 7012, + "name": "LOG3", + "source": 2 + }, + { + "begin": 5912, + "end": 7019, + "name": "POP", + "source": 2 + }, + { + "begin": 5912, + "end": 7019, + "name": "POP", + "source": 2 + }, + { + "begin": 5912, + "end": 7019, + "name": "POP", + "source": 2 + }, + { + "begin": 5912, + "end": 7019, + "jumpType": "[out]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 7, + "end": 106, + "name": "tag", + "source": 8, + "value": "162" + }, + { + "begin": 7, + "end": 106, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 59, + "end": 65, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 93, + "end": 98, + "name": "DUP2", + "source": 8 + }, + { + "begin": 87, + "end": 99, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 77, + "end": 99, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 77, + "end": 99, + "name": "POP", + "source": 8 + }, + { + "begin": 7, + "end": 106, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 7, + "end": 106, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 7, + "end": 106, + "name": "POP", + "source": 8 + }, + { + "begin": 7, + "end": 106, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 112, + "end": 281, + "name": "tag", + "source": 8, + "value": "163" + }, + { + "begin": 112, + "end": 281, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 196, + "end": 207, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 230, + "end": 236, + "name": "DUP3", + "source": 8 + }, + { + "begin": 225, + "end": 228, + "name": "DUP3", + "source": 8 + }, + { + "begin": 218, + "end": 237, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 270, + "end": 274, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 265, + "end": 268, + "name": "DUP3", + "source": 8 + }, + { + "begin": 261, + "end": 275, + "name": "ADD", + "source": 8 + }, + { + "begin": 246, + "end": 275, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 246, + "end": 275, + "name": "POP", + "source": 8 + }, + { + "begin": 112, + "end": 281, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 112, + "end": 281, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 112, + "end": 281, + "name": "POP", + "source": 8 + }, + { + "begin": 112, + "end": 281, + "name": "POP", + "source": 8 + }, + { + "begin": 112, + "end": 281, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 287, + "end": 426, + "name": "tag", + "source": 8, + "value": "164" + }, + { + "begin": 287, + "end": 426, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 376, + "end": 382, + "name": "DUP3", + "source": 8 + }, + { + "begin": 371, + "end": 374, + "name": "DUP2", + "source": 8 + }, + { + "begin": 366, + "end": 369, + "name": "DUP4", + "source": 8 + }, + { + "begin": 360, + "end": 383, + "name": "MCOPY", + "source": 8 + }, + { + "begin": 417, + "end": 418, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 408, + "end": 414, + "name": "DUP4", + "source": 8 + }, + { + "begin": 403, + "end": 406, + "name": "DUP4", + "source": 8 + }, + { + "begin": 399, + "end": 415, + "name": "ADD", + "source": 8 + }, + { + "begin": 392, + "end": 419, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 287, + "end": 426, + "name": "POP", + "source": 8 + }, + { + "begin": 287, + "end": 426, + "name": "POP", + "source": 8 + }, + { + "begin": 287, + "end": 426, + "name": "POP", + "source": 8 + }, + { + "begin": 287, + "end": 426, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 432, + "end": 534, + "name": "tag", + "source": 8, + "value": "165" + }, + { + "begin": 432, + "end": 534, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 473, + "end": 479, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 524, + "end": 526, + "name": "PUSH", + "source": 8, + "value": "1F" + }, + { + "begin": 520, + "end": 527, + "name": "NOT", + "source": 8 + }, + { + "begin": 515, + "end": 517, + "name": "PUSH", + "source": 8, + "value": "1F" + }, + { + "begin": 508, + "end": 513, + "name": "DUP4", + "source": 8 + }, + { + "begin": 504, + "end": 518, + "name": "ADD", + "source": 8 + }, + { + "begin": 500, + "end": 528, + "name": "AND", + "source": 8 + }, + { + "begin": 490, + "end": 528, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 490, + "end": 528, + "name": "POP", + "source": 8 + }, + { + "begin": 432, + "end": 534, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 432, + "end": 534, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 432, + "end": 534, + "name": "POP", + "source": 8 + }, + { + "begin": 432, + "end": 534, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 540, + "end": 917, + "name": "tag", + "source": 8, + "value": "166" + }, + { + "begin": 540, + "end": 917, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 628, + "end": 631, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 656, + "end": 695, + "name": "PUSH [tag]", + "source": 8, + "value": "191" + }, + { + "begin": 689, + "end": 694, + "name": "DUP3", + "source": 8 + }, + { + "begin": 656, + "end": 695, + "name": "PUSH [tag]", + "source": 8, + "value": "162" + }, + { + "begin": 656, + "end": 695, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 656, + "end": 695, + "name": "tag", + "source": 8, + "value": "191" + }, + { + "begin": 656, + "end": 695, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 711, + "end": 782, + "name": "PUSH [tag]", + "source": 8, + "value": "192" + }, + { + "begin": 775, + "end": 781, + "name": "DUP2", + "source": 8 + }, + { + "begin": 770, + "end": 773, + "name": "DUP6", + "source": 8 + }, + { + "begin": 711, + "end": 782, + "name": "PUSH [tag]", + "source": 8, + "value": "163" + }, + { + "begin": 711, + "end": 782, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 711, + "end": 782, + "name": "tag", + "source": 8, + "value": "192" + }, + { + "begin": 711, + "end": 782, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 704, + "end": 782, + "name": "SWAP4", + "source": 8 + }, + { + "begin": 704, + "end": 782, + "name": "POP", + "source": 8 + }, + { + "begin": 791, + "end": 856, + "name": "PUSH [tag]", + "source": 8, + "value": "193" + }, + { + "begin": 849, + "end": 855, + "name": "DUP2", + "source": 8 + }, + { + "begin": 844, + "end": 847, + "name": "DUP6", + "source": 8 + }, + { + "begin": 837, + "end": 841, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 830, + "end": 835, + "name": "DUP7", + "source": 8 + }, + { + "begin": 826, + "end": 842, + "name": "ADD", + "source": 8 + }, + { + "begin": 791, + "end": 856, + "name": "PUSH [tag]", + "source": 8, + "value": "164" + }, + { + "begin": 791, + "end": 856, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 791, + "end": 856, + "name": "tag", + "source": 8, + "value": "193" + }, + { + "begin": 791, + "end": 856, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 881, + "end": 910, + "name": "PUSH [tag]", + "source": 8, + "value": "194" + }, + { + "begin": 903, + "end": 909, + "name": "DUP2", + "source": 8 + }, + { + "begin": 881, + "end": 910, + "name": "PUSH [tag]", + "source": 8, + "value": "165" + }, + { + "begin": 881, + "end": 910, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 881, + "end": 910, + "name": "tag", + "source": 8, + "value": "194" + }, + { + "begin": 881, + "end": 910, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 876, + "end": 879, + "name": "DUP5", + "source": 8 + }, + { + "begin": 872, + "end": 911, + "name": "ADD", + "source": 8 + }, + { + "begin": 865, + "end": 911, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 865, + "end": 911, + "name": "POP", + "source": 8 + }, + { + "begin": 632, + "end": 917, + "name": "POP", + "source": 8 + }, + { + "begin": 540, + "end": 917, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 540, + "end": 917, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 540, + "end": 917, + "name": "POP", + "source": 8 + }, + { + "begin": 540, + "end": 917, + "name": "POP", + "source": 8 + }, + { + "begin": 540, + "end": 917, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 923, + "end": 1236, + "name": "tag", + "source": 8, + "value": "19" + }, + { + "begin": 923, + "end": 1236, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 1036, + "end": 1040, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 1074, + "end": 1076, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 1063, + "end": 1072, + "name": "DUP3", + "source": 8 + }, + { + "begin": 1059, + "end": 1077, + "name": "ADD", + "source": 8 + }, + { + "begin": 1051, + "end": 1077, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 1051, + "end": 1077, + "name": "POP", + "source": 8 + }, + { + "begin": 1123, + "end": 1132, + "name": "DUP2", + "source": 8 + }, + { + "begin": 1117, + "end": 1121, + "name": "DUP2", + "source": 8 + }, + { + "begin": 1113, + "end": 1133, + "name": "SUB", + "source": 8 + }, + { + "begin": 1109, + "end": 1110, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 1098, + "end": 1107, + "name": "DUP4", + "source": 8 + }, + { + "begin": 1094, + "end": 1111, + "name": "ADD", + "source": 8 + }, + { + "begin": 1087, + "end": 1134, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 1151, + "end": 1229, + "name": "PUSH [tag]", + "source": 8, + "value": "196" + }, + { + "begin": 1224, + "end": 1228, + "name": "DUP2", + "source": 8 + }, + { + "begin": 1215, + "end": 1221, + "name": "DUP5", + "source": 8 + }, + { + "begin": 1151, + "end": 1229, + "name": "PUSH [tag]", + "source": 8, + "value": "166" + }, + { + "begin": 1151, + "end": 1229, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 1151, + "end": 1229, + "name": "tag", + "source": 8, + "value": "196" + }, + { + "begin": 1151, + "end": 1229, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 1143, + "end": 1229, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 1143, + "end": 1229, + "name": "POP", + "source": 8 + }, + { + "begin": 923, + "end": 1236, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 923, + "end": 1236, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 923, + "end": 1236, + "name": "POP", + "source": 8 + }, + { + "begin": 923, + "end": 1236, + "name": "POP", + "source": 8 + }, + { + "begin": 923, + "end": 1236, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 1323, + "end": 1440, + "name": "tag", + "source": 8, + "value": "168" + }, + { + "begin": 1323, + "end": 1440, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 1432, + "end": 1433, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 1429, + "end": 1430, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 1422, + "end": 1434, + "name": "REVERT", + "source": 8 + }, + { + "begin": 1569, + "end": 1695, + "name": "tag", + "source": 8, + "value": "170" + }, + { + "begin": 1569, + "end": 1695, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 1606, + "end": 1613, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 1646, + "end": 1688, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1639, + "end": 1644, + "name": "DUP3", + "source": 8 + }, + { + "begin": 1635, + "end": 1689, + "name": "AND", + "source": 8 + }, + { + "begin": 1624, + "end": 1689, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 1624, + "end": 1689, + "name": "POP", + "source": 8 + }, + { + "begin": 1569, + "end": 1695, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 1569, + "end": 1695, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 1569, + "end": 1695, + "name": "POP", + "source": 8 + }, + { + "begin": 1569, + "end": 1695, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 1701, + "end": 1797, + "name": "tag", + "source": 8, + "value": "171" + }, + { + "begin": 1701, + "end": 1797, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 1738, + "end": 1745, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 1767, + "end": 1791, + "name": "PUSH [tag]", + "source": 8, + "value": "202" + }, + { + "begin": 1785, + "end": 1790, + "name": "DUP3", + "source": 8 + }, + { + "begin": 1767, + "end": 1791, + "name": "PUSH [tag]", + "source": 8, + "value": "170" + }, + { + "begin": 1767, + "end": 1791, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 1767, + "end": 1791, + "name": "tag", + "source": 8, + "value": "202" + }, + { + "begin": 1767, + "end": 1791, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 1756, + "end": 1791, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 1756, + "end": 1791, + "name": "POP", + "source": 8 + }, + { + "begin": 1701, + "end": 1797, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 1701, + "end": 1797, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 1701, + "end": 1797, + "name": "POP", + "source": 8 + }, + { + "begin": 1701, + "end": 1797, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 1803, + "end": 1925, + "name": "tag", + "source": 8, + "value": "172" + }, + { + "begin": 1803, + "end": 1925, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 1876, + "end": 1900, + "name": "PUSH [tag]", + "source": 8, + "value": "204" + }, + { + "begin": 1894, + "end": 1899, + "name": "DUP2", + "source": 8 + }, + { + "begin": 1876, + "end": 1900, + "name": "PUSH [tag]", + "source": 8, + "value": "171" + }, + { + "begin": 1876, + "end": 1900, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 1876, + "end": 1900, + "name": "tag", + "source": 8, + "value": "204" + }, + { + "begin": 1876, + "end": 1900, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 1869, + "end": 1874, + "name": "DUP2", + "source": 8 + }, + { + "begin": 1866, + "end": 1901, + "name": "EQ", + "source": 8 + }, + { + "begin": 1856, + "end": 1919, + "name": "PUSH [tag]", + "source": 8, + "value": "205" + }, + { + "begin": 1856, + "end": 1919, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 1915, + "end": 1916, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 1912, + "end": 1913, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 1905, + "end": 1917, + "name": "REVERT", + "source": 8 + }, + { + "begin": 1856, + "end": 1919, + "name": "tag", + "source": 8, + "value": "205" + }, + { + "begin": 1856, + "end": 1919, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 1803, + "end": 1925, + "name": "POP", + "source": 8 + }, + { + "begin": 1803, + "end": 1925, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 1931, + "end": 2070, + "name": "tag", + "source": 8, + "value": "173" + }, + { + "begin": 1931, + "end": 2070, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 1977, + "end": 1982, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 2015, + "end": 2021, + "name": "DUP2", + "source": 8 + }, + { + "begin": 2002, + "end": 2022, + "name": "CALLDATALOAD", + "source": 8 + }, + { + "begin": 1993, + "end": 2022, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 1993, + "end": 2022, + "name": "POP", + "source": 8 + }, + { + "begin": 2031, + "end": 2064, + "name": "PUSH [tag]", + "source": 8, + "value": "207" + }, + { + "begin": 2058, + "end": 2063, + "name": "DUP2", + "source": 8 + }, + { + "begin": 2031, + "end": 2064, + "name": "PUSH [tag]", + "source": 8, + "value": "172" + }, + { + "begin": 2031, + "end": 2064, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 2031, + "end": 2064, + "name": "tag", + "source": 8, + "value": "207" + }, + { + "begin": 2031, + "end": 2064, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 1931, + "end": 2070, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 1931, + "end": 2070, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 1931, + "end": 2070, + "name": "POP", + "source": 8 + }, + { + "begin": 1931, + "end": 2070, + "name": "POP", + "source": 8 + }, + { + "begin": 1931, + "end": 2070, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 2076, + "end": 2153, + "name": "tag", + "source": 8, + "value": "174" + }, + { + "begin": 2076, + "end": 2153, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2113, + "end": 2120, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 2142, + "end": 2147, + "name": "DUP2", + "source": 8 + }, + { + "begin": 2131, + "end": 2147, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 2131, + "end": 2147, + "name": "POP", + "source": 8 + }, + { + "begin": 2076, + "end": 2153, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 2076, + "end": 2153, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 2076, + "end": 2153, + "name": "POP", + "source": 8 + }, + { + "begin": 2076, + "end": 2153, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 2159, + "end": 2281, + "name": "tag", + "source": 8, + "value": "175" + }, + { + "begin": 2159, + "end": 2281, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2232, + "end": 2256, + "name": "PUSH [tag]", + "source": 8, + "value": "210" + }, + { + "begin": 2250, + "end": 2255, + "name": "DUP2", + "source": 8 + }, + { + "begin": 2232, + "end": 2256, + "name": "PUSH [tag]", + "source": 8, + "value": "174" + }, + { + "begin": 2232, + "end": 2256, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 2232, + "end": 2256, + "name": "tag", + "source": 8, + "value": "210" + }, + { + "begin": 2232, + "end": 2256, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2225, + "end": 2230, + "name": "DUP2", + "source": 8 + }, + { + "begin": 2222, + "end": 2257, + "name": "EQ", + "source": 8 + }, + { + "begin": 2212, + "end": 2275, + "name": "PUSH [tag]", + "source": 8, + "value": "211" + }, + { + "begin": 2212, + "end": 2275, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 2271, + "end": 2272, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 2268, + "end": 2269, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 2261, + "end": 2273, + "name": "REVERT", + "source": 8 + }, + { + "begin": 2212, + "end": 2275, + "name": "tag", + "source": 8, + "value": "211" + }, + { + "begin": 2212, + "end": 2275, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2159, + "end": 2281, + "name": "POP", + "source": 8 + }, + { + "begin": 2159, + "end": 2281, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 2287, + "end": 2426, + "name": "tag", + "source": 8, + "value": "176" + }, + { + "begin": 2287, + "end": 2426, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2333, + "end": 2338, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 2371, + "end": 2377, + "name": "DUP2", + "source": 8 + }, + { + "begin": 2358, + "end": 2378, + "name": "CALLDATALOAD", + "source": 8 + }, + { + "begin": 2349, + "end": 2378, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 2349, + "end": 2378, + "name": "POP", + "source": 8 + }, + { + "begin": 2387, + "end": 2420, + "name": "PUSH [tag]", + "source": 8, + "value": "213" + }, + { + "begin": 2414, + "end": 2419, + "name": "DUP2", + "source": 8 + }, + { + "begin": 2387, + "end": 2420, + "name": "PUSH [tag]", + "source": 8, + "value": "175" + }, + { + "begin": 2387, + "end": 2420, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 2387, + "end": 2420, + "name": "tag", + "source": 8, + "value": "213" + }, + { + "begin": 2387, + "end": 2420, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2287, + "end": 2426, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 2287, + "end": 2426, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 2287, + "end": 2426, + "name": "POP", + "source": 8 + }, + { + "begin": 2287, + "end": 2426, + "name": "POP", + "source": 8 + }, + { + "begin": 2287, + "end": 2426, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 2432, + "end": 2906, + "name": "tag", + "source": 8, + "value": "22" + }, + { + "begin": 2432, + "end": 2906, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2500, + "end": 2506, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 2508, + "end": 2514, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 2557, + "end": 2559, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 2545, + "end": 2554, + "name": "DUP4", + "source": 8 + }, + { + "begin": 2536, + "end": 2543, + "name": "DUP6", + "source": 8 + }, + { + "begin": 2532, + "end": 2555, + "name": "SUB", + "source": 8 + }, + { + "begin": 2528, + "end": 2560, + "name": "SLT", + "source": 8 + }, + { + "begin": 2525, + "end": 2644, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 2525, + "end": 2644, + "name": "PUSH [tag]", + "source": 8, + "value": "215" + }, + { + "begin": 2525, + "end": 2644, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 2563, + "end": 2642, + "name": "PUSH [tag]", + "source": 8, + "value": "216" + }, + { + "begin": 2563, + "end": 2642, + "name": "PUSH [tag]", + "source": 8, + "value": "168" + }, + { + "begin": 2563, + "end": 2642, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 2563, + "end": 2642, + "name": "tag", + "source": 8, + "value": "216" + }, + { + "begin": 2563, + "end": 2642, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2525, + "end": 2644, + "name": "tag", + "source": 8, + "value": "215" + }, + { + "begin": 2525, + "end": 2644, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2683, + "end": 2684, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 2708, + "end": 2761, + "name": "PUSH [tag]", + "source": 8, + "value": "217" + }, + { + "begin": 2753, + "end": 2760, + "name": "DUP6", + "source": 8 + }, + { + "begin": 2744, + "end": 2750, + "name": "DUP3", + "source": 8 + }, + { + "begin": 2733, + "end": 2742, + "name": "DUP7", + "source": 8 + }, + { + "begin": 2729, + "end": 2751, + "name": "ADD", + "source": 8 + }, + { + "begin": 2708, + "end": 2761, + "name": "PUSH [tag]", + "source": 8, + "value": "173" + }, + { + "begin": 2708, + "end": 2761, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 2708, + "end": 2761, + "name": "tag", + "source": 8, + "value": "217" + }, + { + "begin": 2708, + "end": 2761, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2698, + "end": 2761, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 2698, + "end": 2761, + "name": "POP", + "source": 8 + }, + { + "begin": 2654, + "end": 2771, + "name": "POP", + "source": 8 + }, + { + "begin": 2810, + "end": 2812, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 2836, + "end": 2889, + "name": "PUSH [tag]", + "source": 8, + "value": "218" + }, + { + "begin": 2881, + "end": 2888, + "name": "DUP6", + "source": 8 + }, + { + "begin": 2872, + "end": 2878, + "name": "DUP3", + "source": 8 + }, + { + "begin": 2861, + "end": 2870, + "name": "DUP7", + "source": 8 + }, + { + "begin": 2857, + "end": 2879, + "name": "ADD", + "source": 8 + }, + { + "begin": 2836, + "end": 2889, + "name": "PUSH [tag]", + "source": 8, + "value": "176" + }, + { + "begin": 2836, + "end": 2889, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 2836, + "end": 2889, + "name": "tag", + "source": 8, + "value": "218" + }, + { + "begin": 2836, + "end": 2889, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2826, + "end": 2889, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 2826, + "end": 2889, + "name": "POP", + "source": 8 + }, + { + "begin": 2781, + "end": 2899, + "name": "POP", + "source": 8 + }, + { + "begin": 2432, + "end": 2906, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 2432, + "end": 2906, + "name": "POP", + "source": 8 + }, + { + "begin": 2432, + "end": 2906, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 2432, + "end": 2906, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 2432, + "end": 2906, + "name": "POP", + "source": 8 + }, + { + "begin": 2432, + "end": 2906, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 2912, + "end": 3002, + "name": "tag", + "source": 8, + "value": "177" + }, + { + "begin": 2912, + "end": 3002, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 2946, + "end": 2953, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 2989, + "end": 2994, + "name": "DUP2", + "source": 8 + }, + { + "begin": 2982, + "end": 2995, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 2975, + "end": 2996, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 2964, + "end": 2996, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 2964, + "end": 2996, + "name": "POP", + "source": 8 + }, + { + "begin": 2912, + "end": 3002, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 2912, + "end": 3002, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 2912, + "end": 3002, + "name": "POP", + "source": 8 + }, + { + "begin": 2912, + "end": 3002, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 3008, + "end": 3117, + "name": "tag", + "source": 8, + "value": "178" + }, + { + "begin": 3008, + "end": 3117, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 3089, + "end": 3110, + "name": "PUSH [tag]", + "source": 8, + "value": "221" + }, + { + "begin": 3104, + "end": 3109, + "name": "DUP2", + "source": 8 + }, + { + "begin": 3089, + "end": 3110, + "name": "PUSH [tag]", + "source": 8, + "value": "177" + }, + { + "begin": 3089, + "end": 3110, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 3089, + "end": 3110, + "name": "tag", + "source": 8, + "value": "221" + }, + { + "begin": 3089, + "end": 3110, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 3084, + "end": 3087, + "name": "DUP3", + "source": 8 + }, + { + "begin": 3077, + "end": 3111, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 3008, + "end": 3117, + "name": "POP", + "source": 8 + }, + { + "begin": 3008, + "end": 3117, + "name": "POP", + "source": 8 + }, + { + "begin": 3008, + "end": 3117, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 3123, + "end": 3333, + "name": "tag", + "source": 8, + "value": "25" + }, + { + "begin": 3123, + "end": 3333, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 3210, + "end": 3214, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 3248, + "end": 3250, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 3237, + "end": 3246, + "name": "DUP3", + "source": 8 + }, + { + "begin": 3233, + "end": 3251, + "name": "ADD", + "source": 8 + }, + { + "begin": 3225, + "end": 3251, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 3225, + "end": 3251, + "name": "POP", + "source": 8 + }, + { + "begin": 3261, + "end": 3326, + "name": "PUSH [tag]", + "source": 8, + "value": "223" + }, + { + "begin": 3323, + "end": 3324, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 3312, + "end": 3321, + "name": "DUP4", + "source": 8 + }, + { + "begin": 3308, + "end": 3325, + "name": "ADD", + "source": 8 + }, + { + "begin": 3299, + "end": 3305, + "name": "DUP5", + "source": 8 + }, + { + "begin": 3261, + "end": 3326, + "name": "PUSH [tag]", + "source": 8, + "value": "178" + }, + { + "begin": 3261, + "end": 3326, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 3261, + "end": 3326, + "name": "tag", + "source": 8, + "value": "223" + }, + { + "begin": 3261, + "end": 3326, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 3123, + "end": 3333, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 3123, + "end": 3333, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 3123, + "end": 3333, + "name": "POP", + "source": 8 + }, + { + "begin": 3123, + "end": 3333, + "name": "POP", + "source": 8 + }, + { + "begin": 3123, + "end": 3333, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 3339, + "end": 3457, + "name": "tag", + "source": 8, + "value": "179" + }, + { + "begin": 3339, + "end": 3457, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 3426, + "end": 3450, + "name": "PUSH [tag]", + "source": 8, + "value": "225" + }, + { + "begin": 3444, + "end": 3449, + "name": "DUP2", + "source": 8 + }, + { + "begin": 3426, + "end": 3450, + "name": "PUSH [tag]", + "source": 8, + "value": "174" + }, + { + "begin": 3426, + "end": 3450, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 3426, + "end": 3450, + "name": "tag", + "source": 8, + "value": "225" + }, + { + "begin": 3426, + "end": 3450, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 3421, + "end": 3424, + "name": "DUP3", + "source": 8 + }, + { + "begin": 3414, + "end": 3451, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 3339, + "end": 3457, + "name": "POP", + "source": 8 + }, + { + "begin": 3339, + "end": 3457, + "name": "POP", + "source": 8 + }, + { + "begin": 3339, + "end": 3457, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 3463, + "end": 3685, + "name": "tag", + "source": 8, + "value": "29" + }, + { + "begin": 3463, + "end": 3685, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 3556, + "end": 3560, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 3594, + "end": 3596, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 3583, + "end": 3592, + "name": "DUP3", + "source": 8 + }, + { + "begin": 3579, + "end": 3597, + "name": "ADD", + "source": 8 + }, + { + "begin": 3571, + "end": 3597, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 3571, + "end": 3597, + "name": "POP", + "source": 8 + }, + { + "begin": 3607, + "end": 3678, + "name": "PUSH [tag]", + "source": 8, + "value": "227" + }, + { + "begin": 3675, + "end": 3676, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 3664, + "end": 3673, + "name": "DUP4", + "source": 8 + }, + { + "begin": 3660, + "end": 3677, + "name": "ADD", + "source": 8 + }, + { + "begin": 3651, + "end": 3657, + "name": "DUP5", + "source": 8 + }, + { + "begin": 3607, + "end": 3678, + "name": "PUSH [tag]", + "source": 8, + "value": "179" + }, + { + "begin": 3607, + "end": 3678, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 3607, + "end": 3678, + "name": "tag", + "source": 8, + "value": "227" + }, + { + "begin": 3607, + "end": 3678, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 3463, + "end": 3685, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 3463, + "end": 3685, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 3463, + "end": 3685, + "name": "POP", + "source": 8 + }, + { + "begin": 3463, + "end": 3685, + "name": "POP", + "source": 8 + }, + { + "begin": 3463, + "end": 3685, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 3691, + "end": 4310, + "name": "tag", + "source": 8, + "value": "32" + }, + { + "begin": 3691, + "end": 4310, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 3768, + "end": 3774, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 3776, + "end": 3782, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 3784, + "end": 3790, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 3833, + "end": 3835, + "name": "PUSH", + "source": 8, + "value": "60" + }, + { + "begin": 3821, + "end": 3830, + "name": "DUP5", + "source": 8 + }, + { + "begin": 3812, + "end": 3819, + "name": "DUP7", + "source": 8 + }, + { + "begin": 3808, + "end": 3831, + "name": "SUB", + "source": 8 + }, + { + "begin": 3804, + "end": 3836, + "name": "SLT", + "source": 8 + }, + { + "begin": 3801, + "end": 3920, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 3801, + "end": 3920, + "name": "PUSH [tag]", + "source": 8, + "value": "229" + }, + { + "begin": 3801, + "end": 3920, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 3839, + "end": 3918, + "name": "PUSH [tag]", + "source": 8, + "value": "230" + }, + { + "begin": 3839, + "end": 3918, + "name": "PUSH [tag]", + "source": 8, + "value": "168" + }, + { + "begin": 3839, + "end": 3918, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 3839, + "end": 3918, + "name": "tag", + "source": 8, + "value": "230" + }, + { + "begin": 3839, + "end": 3918, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 3801, + "end": 3920, + "name": "tag", + "source": 8, + "value": "229" + }, + { + "begin": 3801, + "end": 3920, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 3959, + "end": 3960, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 3984, + "end": 4037, + "name": "PUSH [tag]", + "source": 8, + "value": "231" + }, + { + "begin": 4029, + "end": 4036, + "name": "DUP7", + "source": 8 + }, + { + "begin": 4020, + "end": 4026, + "name": "DUP3", + "source": 8 + }, + { + "begin": 4009, + "end": 4018, + "name": "DUP8", + "source": 8 + }, + { + "begin": 4005, + "end": 4027, + "name": "ADD", + "source": 8 + }, + { + "begin": 3984, + "end": 4037, + "name": "PUSH [tag]", + "source": 8, + "value": "173" + }, + { + "begin": 3984, + "end": 4037, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 3984, + "end": 4037, + "name": "tag", + "source": 8, + "value": "231" + }, + { + "begin": 3984, + "end": 4037, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 3974, + "end": 4037, + "name": "SWAP4", + "source": 8 + }, + { + "begin": 3974, + "end": 4037, + "name": "POP", + "source": 8 + }, + { + "begin": 3930, + "end": 4047, + "name": "POP", + "source": 8 + }, + { + "begin": 4086, + "end": 4088, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 4112, + "end": 4165, + "name": "PUSH [tag]", + "source": 8, + "value": "232" + }, + { + "begin": 4157, + "end": 4164, + "name": "DUP7", + "source": 8 + }, + { + "begin": 4148, + "end": 4154, + "name": "DUP3", + "source": 8 + }, + { + "begin": 4137, + "end": 4146, + "name": "DUP8", + "source": 8 + }, + { + "begin": 4133, + "end": 4155, + "name": "ADD", + "source": 8 + }, + { + "begin": 4112, + "end": 4165, + "name": "PUSH [tag]", + "source": 8, + "value": "173" + }, + { + "begin": 4112, + "end": 4165, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 4112, + "end": 4165, + "name": "tag", + "source": 8, + "value": "232" + }, + { + "begin": 4112, + "end": 4165, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 4102, + "end": 4165, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 4102, + "end": 4165, + "name": "POP", + "source": 8 + }, + { + "begin": 4057, + "end": 4175, + "name": "POP", + "source": 8 + }, + { + "begin": 4214, + "end": 4216, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 4240, + "end": 4293, + "name": "PUSH [tag]", + "source": 8, + "value": "233" + }, + { + "begin": 4285, + "end": 4292, + "name": "DUP7", + "source": 8 + }, + { + "begin": 4276, + "end": 4282, + "name": "DUP3", + "source": 8 + }, + { + "begin": 4265, + "end": 4274, + "name": "DUP8", + "source": 8 + }, + { + "begin": 4261, + "end": 4283, + "name": "ADD", + "source": 8 + }, + { + "begin": 4240, + "end": 4293, + "name": "PUSH [tag]", + "source": 8, + "value": "176" + }, + { + "begin": 4240, + "end": 4293, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 4240, + "end": 4293, + "name": "tag", + "source": 8, + "value": "233" + }, + { + "begin": 4240, + "end": 4293, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 4230, + "end": 4293, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 4230, + "end": 4293, + "name": "POP", + "source": 8 + }, + { + "begin": 4185, + "end": 4303, + "name": "POP", + "source": 8 + }, + { + "begin": 3691, + "end": 4310, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 3691, + "end": 4310, + "name": "POP", + "source": 8 + }, + { + "begin": 3691, + "end": 4310, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 3691, + "end": 4310, + "name": "POP", + "source": 8 + }, + { + "begin": 3691, + "end": 4310, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 3691, + "end": 4310, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 4316, + "end": 4402, + "name": "tag", + "source": 8, + "value": "180" + }, + { + "begin": 4316, + "end": 4402, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 4351, + "end": 4358, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 4391, + "end": 4395, + "name": "PUSH", + "source": 8, + "value": "FF" + }, + { + "begin": 4384, + "end": 4389, + "name": "DUP3", + "source": 8 + }, + { + "begin": 4380, + "end": 4396, + "name": "AND", + "source": 8 + }, + { + "begin": 4369, + "end": 4396, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 4369, + "end": 4396, + "name": "POP", + "source": 8 + }, + { + "begin": 4316, + "end": 4402, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 4316, + "end": 4402, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 4316, + "end": 4402, + "name": "POP", + "source": 8 + }, + { + "begin": 4316, + "end": 4402, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 4408, + "end": 4520, + "name": "tag", + "source": 8, + "value": "181" + }, + { + "begin": 4408, + "end": 4520, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 4491, + "end": 4513, + "name": "PUSH [tag]", + "source": 8, + "value": "236" + }, + { + "begin": 4507, + "end": 4512, + "name": "DUP2", + "source": 8 + }, + { + "begin": 4491, + "end": 4513, + "name": "PUSH [tag]", + "source": 8, + "value": "180" + }, + { + "begin": 4491, + "end": 4513, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 4491, + "end": 4513, + "name": "tag", + "source": 8, + "value": "236" + }, + { + "begin": 4491, + "end": 4513, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 4486, + "end": 4489, + "name": "DUP3", + "source": 8 + }, + { + "begin": 4479, + "end": 4514, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 4408, + "end": 4520, + "name": "POP", + "source": 8 + }, + { + "begin": 4408, + "end": 4520, + "name": "POP", + "source": 8 + }, + { + "begin": 4408, + "end": 4520, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 4526, + "end": 4740, + "name": "tag", + "source": 8, + "value": "38" + }, + { + "begin": 4526, + "end": 4740, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 4615, + "end": 4619, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 4653, + "end": 4655, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 4642, + "end": 4651, + "name": "DUP3", + "source": 8 + }, + { + "begin": 4638, + "end": 4656, + "name": "ADD", + "source": 8 + }, + { + "begin": 4630, + "end": 4656, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 4630, + "end": 4656, + "name": "POP", + "source": 8 + }, + { + "begin": 4666, + "end": 4733, + "name": "PUSH [tag]", + "source": 8, + "value": "238" + }, + { + "begin": 4730, + "end": 4731, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 4719, + "end": 4728, + "name": "DUP4", + "source": 8 + }, + { + "begin": 4715, + "end": 4732, + "name": "ADD", + "source": 8 + }, + { + "begin": 4706, + "end": 4712, + "name": "DUP5", + "source": 8 + }, + { + "begin": 4666, + "end": 4733, + "name": "PUSH [tag]", + "source": 8, + "value": "181" + }, + { + "begin": 4666, + "end": 4733, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 4666, + "end": 4733, + "name": "tag", + "source": 8, + "value": "238" + }, + { + "begin": 4666, + "end": 4733, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 4526, + "end": 4740, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 4526, + "end": 4740, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 4526, + "end": 4740, + "name": "POP", + "source": 8 + }, + { + "begin": 4526, + "end": 4740, + "name": "POP", + "source": 8 + }, + { + "begin": 4526, + "end": 4740, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 4746, + "end": 5075, + "name": "tag", + "source": 8, + "value": "46" + }, + { + "begin": 4746, + "end": 5075, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 4805, + "end": 4811, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 4854, + "end": 4856, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 4842, + "end": 4851, + "name": "DUP3", + "source": 8 + }, + { + "begin": 4833, + "end": 4840, + "name": "DUP5", + "source": 8 + }, + { + "begin": 4829, + "end": 4852, + "name": "SUB", + "source": 8 + }, + { + "begin": 4825, + "end": 4857, + "name": "SLT", + "source": 8 + }, + { + "begin": 4822, + "end": 4941, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 4822, + "end": 4941, + "name": "PUSH [tag]", + "source": 8, + "value": "240" + }, + { + "begin": 4822, + "end": 4941, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 4860, + "end": 4939, + "name": "PUSH [tag]", + "source": 8, + "value": "241" + }, + { + "begin": 4860, + "end": 4939, + "name": "PUSH [tag]", + "source": 8, + "value": "168" + }, + { + "begin": 4860, + "end": 4939, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 4860, + "end": 4939, + "name": "tag", + "source": 8, + "value": "241" + }, + { + "begin": 4860, + "end": 4939, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 4822, + "end": 4941, + "name": "tag", + "source": 8, + "value": "240" + }, + { + "begin": 4822, + "end": 4941, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 4980, + "end": 4981, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5005, + "end": 5058, + "name": "PUSH [tag]", + "source": 8, + "value": "242" + }, + { + "begin": 5050, + "end": 5057, + "name": "DUP5", + "source": 8 + }, + { + "begin": 5041, + "end": 5047, + "name": "DUP3", + "source": 8 + }, + { + "begin": 5030, + "end": 5039, + "name": "DUP6", + "source": 8 + }, + { + "begin": 5026, + "end": 5048, + "name": "ADD", + "source": 8 + }, + { + "begin": 5005, + "end": 5058, + "name": "PUSH [tag]", + "source": 8, + "value": "173" + }, + { + "begin": 5005, + "end": 5058, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 5005, + "end": 5058, + "name": "tag", + "source": 8, + "value": "242" + }, + { + "begin": 5005, + "end": 5058, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 4995, + "end": 5058, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 4995, + "end": 5058, + "name": "POP", + "source": 8 + }, + { + "begin": 4951, + "end": 5068, + "name": "POP", + "source": 8 + }, + { + "begin": 4746, + "end": 5075, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 4746, + "end": 5075, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 4746, + "end": 5075, + "name": "POP", + "source": 8 + }, + { + "begin": 4746, + "end": 5075, + "name": "POP", + "source": 8 + }, + { + "begin": 4746, + "end": 5075, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 5081, + "end": 5555, + "name": "tag", + "source": 8, + "value": "60" + }, + { + "begin": 5081, + "end": 5555, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5149, + "end": 5155, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5157, + "end": 5163, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5206, + "end": 5208, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 5194, + "end": 5203, + "name": "DUP4", + "source": 8 + }, + { + "begin": 5185, + "end": 5192, + "name": "DUP6", + "source": 8 + }, + { + "begin": 5181, + "end": 5204, + "name": "SUB", + "source": 8 + }, + { + "begin": 5177, + "end": 5209, + "name": "SLT", + "source": 8 + }, + { + "begin": 5174, + "end": 5293, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 5174, + "end": 5293, + "name": "PUSH [tag]", + "source": 8, + "value": "244" + }, + { + "begin": 5174, + "end": 5293, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 5212, + "end": 5291, + "name": "PUSH [tag]", + "source": 8, + "value": "245" + }, + { + "begin": 5212, + "end": 5291, + "name": "PUSH [tag]", + "source": 8, + "value": "168" + }, + { + "begin": 5212, + "end": 5291, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 5212, + "end": 5291, + "name": "tag", + "source": 8, + "value": "245" + }, + { + "begin": 5212, + "end": 5291, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5174, + "end": 5293, + "name": "tag", + "source": 8, + "value": "244" + }, + { + "begin": 5174, + "end": 5293, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5332, + "end": 5333, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5357, + "end": 5410, + "name": "PUSH [tag]", + "source": 8, + "value": "246" + }, + { + "begin": 5402, + "end": 5409, + "name": "DUP6", + "source": 8 + }, + { + "begin": 5393, + "end": 5399, + "name": "DUP3", + "source": 8 + }, + { + "begin": 5382, + "end": 5391, + "name": "DUP7", + "source": 8 + }, + { + "begin": 5378, + "end": 5400, + "name": "ADD", + "source": 8 + }, + { + "begin": 5357, + "end": 5410, + "name": "PUSH [tag]", + "source": 8, + "value": "173" + }, + { + "begin": 5357, + "end": 5410, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 5357, + "end": 5410, + "name": "tag", + "source": 8, + "value": "246" + }, + { + "begin": 5357, + "end": 5410, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5347, + "end": 5410, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 5347, + "end": 5410, + "name": "POP", + "source": 8 + }, + { + "begin": 5303, + "end": 5420, + "name": "POP", + "source": 8 + }, + { + "begin": 5459, + "end": 5461, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 5485, + "end": 5538, + "name": "PUSH [tag]", + "source": 8, + "value": "247" + }, + { + "begin": 5530, + "end": 5537, + "name": "DUP6", + "source": 8 + }, + { + "begin": 5521, + "end": 5527, + "name": "DUP3", + "source": 8 + }, + { + "begin": 5510, + "end": 5519, + "name": "DUP7", + "source": 8 + }, + { + "begin": 5506, + "end": 5528, + "name": "ADD", + "source": 8 + }, + { + "begin": 5485, + "end": 5538, + "name": "PUSH [tag]", + "source": 8, + "value": "173" + }, + { + "begin": 5485, + "end": 5538, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 5485, + "end": 5538, + "name": "tag", + "source": 8, + "value": "247" + }, + { + "begin": 5485, + "end": 5538, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5475, + "end": 5538, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 5475, + "end": 5538, + "name": "POP", + "source": 8 + }, + { + "begin": 5430, + "end": 5548, + "name": "POP", + "source": 8 + }, + { + "begin": 5081, + "end": 5555, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 5081, + "end": 5555, + "name": "POP", + "source": 8 + }, + { + "begin": 5081, + "end": 5555, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 5081, + "end": 5555, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5081, + "end": 5555, + "name": "POP", + "source": 8 + }, + { + "begin": 5081, + "end": 5555, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 5561, + "end": 5741, + "name": "tag", + "source": 8, + "value": "182" + }, + { + "begin": 5561, + "end": 5741, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5609, + "end": 5686, + "name": "PUSH", + "source": 8, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 5606, + "end": 5607, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5599, + "end": 5687, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 5706, + "end": 5710, + "name": "PUSH", + "source": 8, + "value": "22" + }, + { + "begin": 5703, + "end": 5704, + "name": "PUSH", + "source": 8, + "value": "4" + }, + { + "begin": 5696, + "end": 5711, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 5730, + "end": 5734, + "name": "PUSH", + "source": 8, + "value": "24" + }, + { + "begin": 5727, + "end": 5728, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5720, + "end": 5735, + "name": "REVERT", + "source": 8 + }, + { + "begin": 5747, + "end": 6067, + "name": "tag", + "source": 8, + "value": "65" + }, + { + "begin": 5747, + "end": 6067, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5791, + "end": 5797, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5828, + "end": 5829, + "name": "PUSH", + "source": 8, + "value": "2" + }, + { + "begin": 5822, + "end": 5826, + "name": "DUP3", + "source": 8 + }, + { + "begin": 5818, + "end": 5830, + "name": "DIV", + "source": 8 + }, + { + "begin": 5808, + "end": 5830, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5808, + "end": 5830, + "name": "POP", + "source": 8 + }, + { + "begin": 5875, + "end": 5876, + "name": "PUSH", + "source": 8, + "value": "1" + }, + { + "begin": 5869, + "end": 5873, + "name": "DUP3", + "source": 8 + }, + { + "begin": 5865, + "end": 5877, + "name": "AND", + "source": 8 + }, + { + "begin": 5896, + "end": 5914, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5886, + "end": 5967, + "name": "PUSH [tag]", + "source": 8, + "value": "250" + }, + { + "begin": 5886, + "end": 5967, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 5952, + "end": 5956, + "name": "PUSH", + "source": 8, + "value": "7F" + }, + { + "begin": 5944, + "end": 5950, + "name": "DUP3", + "source": 8 + }, + { + "begin": 5940, + "end": 5957, + "name": "AND", + "source": 8 + }, + { + "begin": 5930, + "end": 5957, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 5930, + "end": 5957, + "name": "POP", + "source": 8 + }, + { + "begin": 5886, + "end": 5967, + "name": "tag", + "source": 8, + "value": "250" + }, + { + "begin": 5886, + "end": 5967, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6014, + "end": 6016, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 6006, + "end": 6012, + "name": "DUP3", + "source": 8 + }, + { + "begin": 6003, + "end": 6017, + "name": "LT", + "source": 8 + }, + { + "begin": 5983, + "end": 6001, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5980, + "end": 6018, + "name": "SUB", + "source": 8 + }, + { + "begin": 5977, + "end": 6061, + "name": "PUSH [tag]", + "source": 8, + "value": "251" + }, + { + "begin": 5977, + "end": 6061, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 6033, + "end": 6051, + "name": "PUSH [tag]", + "source": 8, + "value": "252" + }, + { + "begin": 6033, + "end": 6051, + "name": "PUSH [tag]", + "source": 8, + "value": "182" + }, + { + "begin": 6033, + "end": 6051, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 6033, + "end": 6051, + "name": "tag", + "source": 8, + "value": "252" + }, + { + "begin": 6033, + "end": 6051, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5977, + "end": 6061, + "name": "tag", + "source": 8, + "value": "251" + }, + { + "begin": 5977, + "end": 6061, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5798, + "end": 6067, + "name": "POP", + "source": 8 + }, + { + "begin": 5747, + "end": 6067, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 5747, + "end": 6067, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5747, + "end": 6067, + "name": "POP", + "source": 8 + }, + { + "begin": 5747, + "end": 6067, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 6073, + "end": 6191, + "name": "tag", + "source": 8, + "value": "183" + }, + { + "begin": 6073, + "end": 6191, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6160, + "end": 6184, + "name": "PUSH [tag]", + "source": 8, + "value": "254" + }, + { + "begin": 6178, + "end": 6183, + "name": "DUP2", + "source": 8 + }, + { + "begin": 6160, + "end": 6184, + "name": "PUSH [tag]", + "source": 8, + "value": "171" + }, + { + "begin": 6160, + "end": 6184, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 6160, + "end": 6184, + "name": "tag", + "source": 8, + "value": "254" + }, + { + "begin": 6160, + "end": 6184, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6155, + "end": 6158, + "name": "DUP3", + "source": 8 + }, + { + "begin": 6148, + "end": 6185, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 6073, + "end": 6191, + "name": "POP", + "source": 8 + }, + { + "begin": 6073, + "end": 6191, + "name": "POP", + "source": 8 + }, + { + "begin": 6073, + "end": 6191, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 6197, + "end": 6639, + "name": "tag", + "source": 8, + "value": "112" + }, + { + "begin": 6197, + "end": 6639, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6346, + "end": 6350, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 6384, + "end": 6386, + "name": "PUSH", + "source": 8, + "value": "60" + }, + { + "begin": 6373, + "end": 6382, + "name": "DUP3", + "source": 8 + }, + { + "begin": 6369, + "end": 6387, + "name": "ADD", + "source": 8 + }, + { + "begin": 6361, + "end": 6387, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 6361, + "end": 6387, + "name": "POP", + "source": 8 + }, + { + "begin": 6397, + "end": 6468, + "name": "PUSH [tag]", + "source": 8, + "value": "256" + }, + { + "begin": 6465, + "end": 6466, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 6454, + "end": 6463, + "name": "DUP4", + "source": 8 + }, + { + "begin": 6450, + "end": 6467, + "name": "ADD", + "source": 8 + }, + { + "begin": 6441, + "end": 6447, + "name": "DUP7", + "source": 8 + }, + { + "begin": 6397, + "end": 6468, + "name": "PUSH [tag]", + "source": 8, + "value": "183" + }, + { + "begin": 6397, + "end": 6468, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 6397, + "end": 6468, + "name": "tag", + "source": 8, + "value": "256" + }, + { + "begin": 6397, + "end": 6468, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6478, + "end": 6550, + "name": "PUSH [tag]", + "source": 8, + "value": "257" + }, + { + "begin": 6546, + "end": 6548, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 6535, + "end": 6544, + "name": "DUP4", + "source": 8 + }, + { + "begin": 6531, + "end": 6549, + "name": "ADD", + "source": 8 + }, + { + "begin": 6522, + "end": 6528, + "name": "DUP6", + "source": 8 + }, + { + "begin": 6478, + "end": 6550, + "name": "PUSH [tag]", + "source": 8, + "value": "179" + }, + { + "begin": 6478, + "end": 6550, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 6478, + "end": 6550, + "name": "tag", + "source": 8, + "value": "257" + }, + { + "begin": 6478, + "end": 6550, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6560, + "end": 6632, + "name": "PUSH [tag]", + "source": 8, + "value": "258" + }, + { + "begin": 6628, + "end": 6630, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 6617, + "end": 6626, + "name": "DUP4", + "source": 8 + }, + { + "begin": 6613, + "end": 6631, + "name": "ADD", + "source": 8 + }, + { + "begin": 6604, + "end": 6610, + "name": "DUP5", + "source": 8 + }, + { + "begin": 6560, + "end": 6632, + "name": "PUSH [tag]", + "source": 8, + "value": "179" + }, + { + "begin": 6560, + "end": 6632, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 6560, + "end": 6632, + "name": "tag", + "source": 8, + "value": "258" + }, + { + "begin": 6560, + "end": 6632, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6197, + "end": 6639, + "name": "SWAP5", + "source": 8 + }, + { + "begin": 6197, + "end": 6639, + "name": "SWAP4", + "source": 8 + }, + { + "begin": 6197, + "end": 6639, + "name": "POP", + "source": 8 + }, + { + "begin": 6197, + "end": 6639, + "name": "POP", + "source": 8 + }, + { + "begin": 6197, + "end": 6639, + "name": "POP", + "source": 8 + }, + { + "begin": 6197, + "end": 6639, + "name": "POP", + "source": 8 + }, + { + "begin": 6197, + "end": 6639, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 6645, + "end": 6867, + "name": "tag", + "source": 8, + "value": "117" + }, + { + "begin": 6645, + "end": 6867, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6738, + "end": 6742, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 6776, + "end": 6778, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 6765, + "end": 6774, + "name": "DUP3", + "source": 8 + }, + { + "begin": 6761, + "end": 6779, + "name": "ADD", + "source": 8 + }, + { + "begin": 6753, + "end": 6779, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 6753, + "end": 6779, + "name": "POP", + "source": 8 + }, + { + "begin": 6789, + "end": 6860, + "name": "PUSH [tag]", + "source": 8, + "value": "260" + }, + { + "begin": 6857, + "end": 6858, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 6846, + "end": 6855, + "name": "DUP4", + "source": 8 + }, + { + "begin": 6842, + "end": 6859, + "name": "ADD", + "source": 8 + }, + { + "begin": 6833, + "end": 6839, + "name": "DUP5", + "source": 8 + }, + { + "begin": 6789, + "end": 6860, + "name": "PUSH [tag]", + "source": 8, + "value": "183" + }, + { + "begin": 6789, + "end": 6860, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 6789, + "end": 6860, + "name": "tag", + "source": 8, + "value": "260" + }, + { + "begin": 6789, + "end": 6860, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6645, + "end": 6867, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 6645, + "end": 6867, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 6645, + "end": 6867, + "name": "POP", + "source": 8 + }, + { + "begin": 6645, + "end": 6867, + "name": "POP", + "source": 8 + }, + { + "begin": 6645, + "end": 6867, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 6873, + "end": 7053, + "name": "tag", + "source": 8, + "value": "184" + }, + { + "begin": 6873, + "end": 7053, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6921, + "end": 6998, + "name": "PUSH", + "source": 8, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 6918, + "end": 6919, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 6911, + "end": 6999, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 7018, + "end": 7022, + "name": "PUSH", + "source": 8, + "value": "11" + }, + { + "begin": 7015, + "end": 7016, + "name": "PUSH", + "source": 8, + "value": "4" + }, + { + "begin": 7008, + "end": 7023, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 7042, + "end": 7046, + "name": "PUSH", + "source": 8, + "value": "24" + }, + { + "begin": 7039, + "end": 7040, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 7032, + "end": 7047, + "name": "REVERT", + "source": 8 + }, + { + "begin": 7059, + "end": 7250, + "name": "tag", + "source": 8, + "value": "155" + }, + { + "begin": 7059, + "end": 7250, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 7099, + "end": 7102, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 7118, + "end": 7138, + "name": "PUSH [tag]", + "source": 8, + "value": "263" + }, + { + "begin": 7136, + "end": 7137, + "name": "DUP3", + "source": 8 + }, + { + "begin": 7118, + "end": 7138, + "name": "PUSH [tag]", + "source": 8, + "value": "174" + }, + { + "begin": 7118, + "end": 7138, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 7118, + "end": 7138, + "name": "tag", + "source": 8, + "value": "263" + }, + { + "begin": 7118, + "end": 7138, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 7113, + "end": 7138, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 7113, + "end": 7138, + "name": "POP", + "source": 8 + }, + { + "begin": 7152, + "end": 7172, + "name": "PUSH [tag]", + "source": 8, + "value": "264" + }, + { + "begin": 7170, + "end": 7171, + "name": "DUP4", + "source": 8 + }, + { + "begin": 7152, + "end": 7172, + "name": "PUSH [tag]", + "source": 8, + "value": "174" + }, + { + "begin": 7152, + "end": 7172, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 7152, + "end": 7172, + "name": "tag", + "source": 8, + "value": "264" + }, + { + "begin": 7152, + "end": 7172, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 7147, + "end": 7172, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 7147, + "end": 7172, + "name": "POP", + "source": 8 + }, + { + "begin": 7195, + "end": 7196, + "name": "DUP3", + "source": 8 + }, + { + "begin": 7192, + "end": 7193, + "name": "DUP3", + "source": 8 + }, + { + "begin": 7188, + "end": 7197, + "name": "ADD", + "source": 8 + }, + { + "begin": 7181, + "end": 7197, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 7181, + "end": 7197, + "name": "POP", + "source": 8 + }, + { + "begin": 7216, + "end": 7219, + "name": "DUP1", + "source": 8 + }, + { + "begin": 7213, + "end": 7214, + "name": "DUP3", + "source": 8 + }, + { + "begin": 7210, + "end": 7220, + "name": "GT", + "source": 8 + }, + { + "begin": 7207, + "end": 7243, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 7207, + "end": 7243, + "name": "PUSH [tag]", + "source": 8, + "value": "265" + }, + { + "begin": 7207, + "end": 7243, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 7223, + "end": 7241, + "name": "PUSH [tag]", + "source": 8, + "value": "266" + }, + { + "begin": 7223, + "end": 7241, + "name": "PUSH [tag]", + "source": 8, + "value": "184" + }, + { + "begin": 7223, + "end": 7241, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 7223, + "end": 7241, + "name": "tag", + "source": 8, + "value": "266" + }, + { + "begin": 7223, + "end": 7241, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 7207, + "end": 7243, + "name": "tag", + "source": 8, + "value": "265" + }, + { + "begin": 7207, + "end": 7243, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 7059, + "end": 7250, + "name": "SWAP3", + "source": 8 + }, + { + "begin": 7059, + "end": 7250, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 7059, + "end": 7250, + "name": "POP", + "source": 8 + }, + { + "begin": 7059, + "end": 7250, + "name": "POP", + "source": 8 + }, + { + "begin": 7059, + "end": 7250, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + } + ] + } + }, + "sourceList": [ + "contracts/MyERC20.sol", + "contracts/interfaces/draft-IERC6093.sol", + "contracts/token/ERC20/ERC20.sol", + "contracts/token/ERC20/IERC20.sol", + "contracts/token/ERC20/extensions/ERC20Pausable.sol", + "contracts/token/ERC20/extensions/IERC20Metadata.sol", + "contracts/utils/Context.sol", + "contracts/utils/Pausable.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "name()": "06fdde03", + "pause()": "8456cb59", + "paused()": "5c975abb", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd", + "unpause()": "3f4ba83a" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/MyERC20.sol\":\"MyERC\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=contracts/\"]},\"sources\":{\"contracts/MyERC20.sol\":{\"keccak256\":\"0xa54d74d422ddd7cc144f9bea920e40dcf192e6744212ddcc9b516fcb0b5be92a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2f53fbc28c35883c9d7ac571652bd0446508dbd5bee1b35f8b0ca8a8d370fe5\",\"dweb:/ipfs/QmPhWuJ68KkK9JyA1n5BTVtjDxRvwC23vNDkG9UePTE8n2\"]},\"contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0xa667ad942f67a3a72830ba2db2556b22c94a0d0e7b934cb1af19dbb52c701011\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a04504e81403d9f3c45593e0e29f928ff93fbcd11ea961aa8cbd96b05f80aa6e\",\"dweb:/ipfs/QmZtHcvctLMa4Ap1ayqq1kyKt8EN5Ni2851daEdjNNYacG\"]},\"contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c\",\"dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu\"]},\"contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"contracts/token/ERC20/extensions/ERC20Pausable.sol\":{\"keccak256\":\"0x756aee61d83960d324973de3a64920a02b480efe662b611fb05ea506d844aa55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dfb71ab2f5fcc530226a25bba4d808f4d22a7f383cae4a3be3629ec057b276c\",\"dweb:/ipfs/QmRzyetUjbr9Gx1pcXYSsE5rz4XypfEbZgmBvZKUNUJQLR\"]},\"contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"contracts/utils/Pausable.sol\":{\"keccak256\":\"0xdf8d9228aca6cb87ae8bec08c3ecd84de7897a3d7b3b15ddd157dc6689986ad1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b419e49007752dba7a1ad5e4f2a8b16d8477cc5ec3ad82c84cbe2231bdfb6ad\",\"dweb:/ipfs/Qme2RFtT8s6Wwid5rQDEPWNCZSsXGXqzvMtz2LT9hMMf2e\"]}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 187, + "contract": "contracts/MyERC20.sol:MyERC", + "label": "_balances", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 193, + "contract": "contracts/MyERC20.sol:MyERC", + "label": "_allowances", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))" + }, + { + "astId": 195, + "contract": "contracts/MyERC20.sol:MyERC", + "label": "_totalSupply", + "offset": 0, + "slot": "2", + "type": "t_uint256" + }, + { + "astId": 197, + "contract": "contracts/MyERC20.sol:MyERC", + "label": "_name", + "offset": 0, + "slot": "3", + "type": "t_string_storage" + }, + { + "astId": 199, + "contract": "contracts/MyERC20.sol:MyERC", + "label": "_symbol", + "offset": 0, + "slot": "4", + "type": "t_string_storage" + }, + { + "astId": 856, + "contract": "contracts/MyERC20.sol:MyERC", + "label": "_paused", + "offset": 0, + "slot": "5", + "type": "t_uint256" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32", + "value": "t_mapping(t_address,t_uint256)" + }, + "t_mapping(t_address,t_uint256)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_string_storage": { + "encoding": "bytes", + "label": "string", + "numberOfBytes": "32" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/interfaces/draft-IERC6093.sol": { + "IERC1155Errors": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC1155InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC1155InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "idsLength", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "valuesLength", + "type": "uint256" + } + ], + "name": "ERC1155InvalidArrayLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC1155InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC1155InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC1155InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC1155MissingApprovalForAll", + "type": "error" + } + ], + "devdoc": { + "details": "Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.", + "errors": { + "ERC1155InsufficientBalance(address,uint256,uint256,uint256)": [ + { + "details": "Indicates an error related to the current `balance` of a `sender`. Used in transfers.", + "params": { + "balance": "Current balance for the interacting account.", + "needed": "Minimum amount required to perform a transfer.", + "sender": "Address whose tokens are being transferred.", + "tokenId": "Identifier number of a token." + } + } + ], + "ERC1155InvalidApprover(address)": [ + { + "details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.", + "params": { + "approver": "Address initiating an approval operation." + } + } + ], + "ERC1155InvalidArrayLength(uint256,uint256)": [ + { + "details": "Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.", + "params": { + "idsLength": "Length of the array of token identifiers", + "valuesLength": "Length of the array of token amounts" + } + } + ], + "ERC1155InvalidOperator(address)": [ + { + "details": "Indicates a failure with the `operator` to be approved. Used in approvals.", + "params": { + "operator": "Address that may be allowed to operate on tokens without being their owner." + } + } + ], + "ERC1155InvalidReceiver(address)": [ + { + "details": "Indicates a failure with the token `receiver`. Used in transfers.", + "params": { + "receiver": "Address to which tokens are being transferred." + } + } + ], + "ERC1155InvalidSender(address)": [ + { + "details": "Indicates a failure with the token `sender`. Used in transfers.", + "params": { + "sender": "Address whose tokens are being transferred." + } + } + ], + "ERC1155MissingApprovalForAll(address,address)": [ + { + "details": "Indicates a failure with the `operator`’s approval. Used in transfers.", + "params": { + "operator": "Address that may be allowed to operate on tokens without being their owner.", + "owner": "Address of the current owner of a token." + } + } + ] + }, + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=contracts/\"]},\"sources\":{\"contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0xa667ad942f67a3a72830ba2db2556b22c94a0d0e7b934cb1af19dbb52c701011\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a04504e81403d9f3c45593e0e29f928ff93fbcd11ea961aa8cbd96b05f80aa6e\",\"dweb:/ipfs/QmZtHcvctLMa4Ap1ayqq1kyKt8EN5Ni2851daEdjNNYacG\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "IERC20Errors": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + } + ], + "devdoc": { + "details": "Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.", + "errors": { + "ERC20InsufficientAllowance(address,uint256,uint256)": [ + { + "details": "Indicates a failure with the `spender`’s `allowance`. Used in transfers.", + "params": { + "allowance": "Amount of tokens a `spender` is allowed to operate with.", + "needed": "Minimum amount required to perform a transfer.", + "spender": "Address that may be allowed to operate on tokens without being their owner." + } + } + ], + "ERC20InsufficientBalance(address,uint256,uint256)": [ + { + "details": "Indicates an error related to the current `balance` of a `sender`. Used in transfers.", + "params": { + "balance": "Current balance for the interacting account.", + "needed": "Minimum amount required to perform a transfer.", + "sender": "Address whose tokens are being transferred." + } + } + ], + "ERC20InvalidApprover(address)": [ + { + "details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.", + "params": { + "approver": "Address initiating an approval operation." + } + } + ], + "ERC20InvalidReceiver(address)": [ + { + "details": "Indicates a failure with the token `receiver`. Used in transfers.", + "params": { + "receiver": "Address to which tokens are being transferred." + } + } + ], + "ERC20InvalidSender(address)": [ + { + "details": "Indicates a failure with the token `sender`. Used in transfers.", + "params": { + "sender": "Address whose tokens are being transferred." + } + } + ], + "ERC20InvalidSpender(address)": [ + { + "details": "Indicates a failure with the `spender` to be approved. Used in approvals.", + "params": { + "spender": "Address that may be allowed to operate on tokens without being their owner." + } + } + ] + }, + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=contracts/\"]},\"sources\":{\"contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0xa667ad942f67a3a72830ba2db2556b22c94a0d0e7b934cb1af19dbb52c701011\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a04504e81403d9f3c45593e0e29f928ff93fbcd11ea961aa8cbd96b05f80aa6e\",\"dweb:/ipfs/QmZtHcvctLMa4Ap1ayqq1kyKt8EN5Ni2851daEdjNNYacG\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "IERC721Errors": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721IncorrectOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721InsufficientApproval", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC721InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC721InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721InvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC721InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC721InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721NonexistentToken", + "type": "error" + } + ], + "devdoc": { + "details": "Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.", + "errors": { + "ERC721IncorrectOwner(address,uint256,address)": [ + { + "details": "Indicates an error related to the ownership over a particular token. Used in transfers.", + "params": { + "owner": "Address of the current owner of a token.", + "sender": "Address whose tokens are being transferred.", + "tokenId": "Identifier number of a token." + } + } + ], + "ERC721InsufficientApproval(address,uint256)": [ + { + "details": "Indicates a failure with the `operator`’s approval. Used in transfers.", + "params": { + "operator": "Address that may be allowed to operate on tokens without being their owner.", + "tokenId": "Identifier number of a token." + } + } + ], + "ERC721InvalidApprover(address)": [ + { + "details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.", + "params": { + "approver": "Address initiating an approval operation." + } + } + ], + "ERC721InvalidOperator(address)": [ + { + "details": "Indicates a failure with the `operator` to be approved. Used in approvals.", + "params": { + "operator": "Address that may be allowed to operate on tokens without being their owner." + } + } + ], + "ERC721InvalidOwner(address)": [ + { + "details": "Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.", + "params": { + "owner": "Address of the current owner of a token." + } + } + ], + "ERC721InvalidReceiver(address)": [ + { + "details": "Indicates a failure with the token `receiver`. Used in transfers.", + "params": { + "receiver": "Address to which tokens are being transferred." + } + } + ], + "ERC721InvalidSender(address)": [ + { + "details": "Indicates a failure with the token `sender`. Used in transfers.", + "params": { + "sender": "Address whose tokens are being transferred." + } + } + ], + "ERC721NonexistentToken(uint256)": [ + { + "details": "Indicates a `tokenId` whose `owner` is the zero address.", + "params": { + "tokenId": "Identifier number of a token." + } + } + ] + }, + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=contracts/\"]},\"sources\":{\"contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0xa667ad942f67a3a72830ba2db2556b22c94a0d0e7b934cb1af19dbb52c701011\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a04504e81403d9f3c45593e0e29f928ff93fbcd11ea961aa8cbd96b05f80aa6e\",\"dweb:/ipfs/QmZtHcvctLMa4Ap1ayqq1kyKt8EN5Ni2851daEdjNNYacG\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/token/ERC20/ERC20.sol": { + "ERC20": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "details": "Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.", + "errors": { + "ERC20InsufficientAllowance(address,uint256,uint256)": [ + { + "details": "Indicates a failure with the `spender`’s `allowance`. Used in transfers.", + "params": { + "allowance": "Amount of tokens a `spender` is allowed to operate with.", + "needed": "Minimum amount required to perform a transfer.", + "spender": "Address that may be allowed to operate on tokens without being their owner." + } + } + ], + "ERC20InsufficientBalance(address,uint256,uint256)": [ + { + "details": "Indicates an error related to the current `balance` of a `sender`. Used in transfers.", + "params": { + "balance": "Current balance for the interacting account.", + "needed": "Minimum amount required to perform a transfer.", + "sender": "Address whose tokens are being transferred." + } + } + ], + "ERC20InvalidApprover(address)": [ + { + "details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.", + "params": { + "approver": "Address initiating an approval operation." + } + } + ], + "ERC20InvalidReceiver(address)": [ + { + "details": "Indicates a failure with the token `receiver`. Used in transfers.", + "params": { + "receiver": "Address to which tokens are being transferred." + } + } + ], + "ERC20InvalidSender(address)": [ + { + "details": "Indicates a failure with the token `sender`. Used in transfers.", + "params": { + "sender": "Address whose tokens are being transferred." + } + } + ], + "ERC20InvalidSpender(address)": [ + { + "details": "Indicates a failure with the `spender` to be approved. Used in approvals.", + "params": { + "spender": "Address that may be allowed to operate on tokens without being their owner." + } + } + ] + }, + "events": { + "Approval(address,address,uint256)": { + "details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance." + }, + "Transfer(address,address,uint256)": { + "details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero." + } + }, + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called." + }, + "approve(address,uint256)": { + "details": "See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address." + }, + "balanceOf(address)": { + "details": "Returns the value of tokens owned by `account`." + }, + "constructor": { + "details": "Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction." + }, + "decimals()": { + "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}." + }, + "name()": { + "details": "Returns the name of the token." + }, + "symbol()": { + "details": "Returns the symbol of the token, usually a shorter version of the name." + }, + "totalSupply()": { + "details": "Returns the value of tokens in existence." + }, + "transfer(address,uint256)": { + "details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`." + }, + "transferFrom(address,address,uint256)": { + "details": "See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`." + } + }, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "name()": "06fdde03", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=contracts/\"]},\"sources\":{\"contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0xa667ad942f67a3a72830ba2db2556b22c94a0d0e7b934cb1af19dbb52c701011\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a04504e81403d9f3c45593e0e29f928ff93fbcd11ea961aa8cbd96b05f80aa6e\",\"dweb:/ipfs/QmZtHcvctLMa4Ap1ayqq1kyKt8EN5Ni2851daEdjNNYacG\"]},\"contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c\",\"dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu\"]},\"contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 187, + "contract": "contracts/token/ERC20/ERC20.sol:ERC20", + "label": "_balances", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 193, + "contract": "contracts/token/ERC20/ERC20.sol:ERC20", + "label": "_allowances", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))" + }, + { + "astId": 195, + "contract": "contracts/token/ERC20/ERC20.sol:ERC20", + "label": "_totalSupply", + "offset": 0, + "slot": "2", + "type": "t_uint256" + }, + { + "astId": 197, + "contract": "contracts/token/ERC20/ERC20.sol:ERC20", + "label": "_name", + "offset": 0, + "slot": "3", + "type": "t_string_storage" + }, + { + "astId": 199, + "contract": "contracts/token/ERC20/ERC20.sol:ERC20", + "label": "_symbol", + "offset": 0, + "slot": "4", + "type": "t_string_storage" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32", + "value": "t_mapping(t_address,t_uint256)" + }, + "t_mapping(t_address,t_uint256)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_string_storage": { + "encoding": "bytes", + "label": "string", + "numberOfBytes": "32" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/token/ERC20/IERC20.sol": { + "IERC20": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "details": "Interface of the ERC-20 standard as defined in the ERC.", + "events": { + "Approval(address,address,uint256)": { + "details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance." + }, + "Transfer(address,address,uint256)": { + "details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero." + } + }, + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called." + }, + "approve(address,uint256)": { + "details": "Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event." + }, + "balanceOf(address)": { + "details": "Returns the value of tokens owned by `account`." + }, + "totalSupply()": { + "details": "Returns the value of tokens in existence." + }, + "transfer(address,uint256)": { + "details": "Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." + }, + "transferFrom(address,address,uint256)": { + "details": "Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." + } + }, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=contracts/\"]},\"sources\":{\"contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/token/ERC20/extensions/ERC20Pausable.sol": { + "ERC20Pausable": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + }, + { + "inputs": [], + "name": "EnforcedPause", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedPause", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "details": "ERC-20 token with pausable token transfers, minting and burning. Useful for scenarios such as preventing trades until the end of an evaluation period, or having an emergency switch for freezing all token transfers in the event of a large bug. IMPORTANT: This contract does not include public pause and unpause functions. In addition to inheriting this contract, you must define both functions, invoking the {Pausable-_pause} and {Pausable-_unpause} internal functions, with appropriate access control, e.g. using {AccessControl} or {Ownable}. Not doing so will make the contract pause mechanism of the contract unreachable, and thus unusable.", + "errors": { + "ERC20InsufficientAllowance(address,uint256,uint256)": [ + { + "details": "Indicates a failure with the `spender`’s `allowance`. Used in transfers.", + "params": { + "allowance": "Amount of tokens a `spender` is allowed to operate with.", + "needed": "Minimum amount required to perform a transfer.", + "spender": "Address that may be allowed to operate on tokens without being their owner." + } + } + ], + "ERC20InsufficientBalance(address,uint256,uint256)": [ + { + "details": "Indicates an error related to the current `balance` of a `sender`. Used in transfers.", + "params": { + "balance": "Current balance for the interacting account.", + "needed": "Minimum amount required to perform a transfer.", + "sender": "Address whose tokens are being transferred." + } + } + ], + "ERC20InvalidApprover(address)": [ + { + "details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.", + "params": { + "approver": "Address initiating an approval operation." + } + } + ], + "ERC20InvalidReceiver(address)": [ + { + "details": "Indicates a failure with the token `receiver`. Used in transfers.", + "params": { + "receiver": "Address to which tokens are being transferred." + } + } + ], + "ERC20InvalidSender(address)": [ + { + "details": "Indicates a failure with the token `sender`. Used in transfers.", + "params": { + "sender": "Address whose tokens are being transferred." + } + } + ], + "ERC20InvalidSpender(address)": [ + { + "details": "Indicates a failure with the `spender` to be approved. Used in approvals.", + "params": { + "spender": "Address that may be allowed to operate on tokens without being their owner." + } + } + ], + "EnforcedPause()": [ + { + "details": "The operation failed because the contract is paused." + } + ], + "ExpectedPause()": [ + { + "details": "The operation failed because the contract is not paused." + } + ] + }, + "events": { + "Approval(address,address,uint256)": { + "details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance." + }, + "Paused(address)": { + "details": "Emitted when the pause is triggered by `account`." + }, + "Transfer(address,address,uint256)": { + "details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero." + }, + "Unpaused(address)": { + "details": "Emitted when the pause is lifted by `account`." + } + }, + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called." + }, + "approve(address,uint256)": { + "details": "See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address." + }, + "balanceOf(address)": { + "details": "Returns the value of tokens owned by `account`." + }, + "decimals()": { + "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}." + }, + "name()": { + "details": "Returns the name of the token." + }, + "paused()": { + "details": "Returns true if the contract is paused, and false otherwise." + }, + "symbol()": { + "details": "Returns the symbol of the token, usually a shorter version of the name." + }, + "totalSupply()": { + "details": "Returns the value of tokens in existence." + }, + "transfer(address,uint256)": { + "details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`." + }, + "transferFrom(address,address,uint256)": { + "details": "See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`." + } + }, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "name()": "06fdde03", + "paused()": "5c975abb", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC-20 token with pausable token transfers, minting and burning. Useful for scenarios such as preventing trades until the end of an evaluation period, or having an emergency switch for freezing all token transfers in the event of a large bug. IMPORTANT: This contract does not include public pause and unpause functions. In addition to inheriting this contract, you must define both functions, invoking the {Pausable-_pause} and {Pausable-_unpause} internal functions, with appropriate access control, e.g. using {AccessControl} or {Ownable}. Not doing so will make the contract pause mechanism of the contract unreachable, and thus unusable.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/token/ERC20/extensions/ERC20Pausable.sol\":\"ERC20Pausable\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=contracts/\"]},\"sources\":{\"contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0xa667ad942f67a3a72830ba2db2556b22c94a0d0e7b934cb1af19dbb52c701011\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a04504e81403d9f3c45593e0e29f928ff93fbcd11ea961aa8cbd96b05f80aa6e\",\"dweb:/ipfs/QmZtHcvctLMa4Ap1ayqq1kyKt8EN5Ni2851daEdjNNYacG\"]},\"contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c\",\"dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu\"]},\"contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"contracts/token/ERC20/extensions/ERC20Pausable.sol\":{\"keccak256\":\"0x756aee61d83960d324973de3a64920a02b480efe662b611fb05ea506d844aa55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dfb71ab2f5fcc530226a25bba4d808f4d22a7f383cae4a3be3629ec057b276c\",\"dweb:/ipfs/QmRzyetUjbr9Gx1pcXYSsE5rz4XypfEbZgmBvZKUNUJQLR\"]},\"contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"contracts/utils/Pausable.sol\":{\"keccak256\":\"0xdf8d9228aca6cb87ae8bec08c3ecd84de7897a3d7b3b15ddd157dc6689986ad1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b419e49007752dba7a1ad5e4f2a8b16d8477cc5ec3ad82c84cbe2231bdfb6ad\",\"dweb:/ipfs/Qme2RFtT8s6Wwid5rQDEPWNCZSsXGXqzvMtz2LT9hMMf2e\"]}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 187, + "contract": "contracts/token/ERC20/extensions/ERC20Pausable.sol:ERC20Pausable", + "label": "_balances", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 193, + "contract": "contracts/token/ERC20/extensions/ERC20Pausable.sol:ERC20Pausable", + "label": "_allowances", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))" + }, + { + "astId": 195, + "contract": "contracts/token/ERC20/extensions/ERC20Pausable.sol:ERC20Pausable", + "label": "_totalSupply", + "offset": 0, + "slot": "2", + "type": "t_uint256" + }, + { + "astId": 197, + "contract": "contracts/token/ERC20/extensions/ERC20Pausable.sol:ERC20Pausable", + "label": "_name", + "offset": 0, + "slot": "3", + "type": "t_string_storage" + }, + { + "astId": 199, + "contract": "contracts/token/ERC20/extensions/ERC20Pausable.sol:ERC20Pausable", + "label": "_symbol", + "offset": 0, + "slot": "4", + "type": "t_string_storage" + }, + { + "astId": 856, + "contract": "contracts/token/ERC20/extensions/ERC20Pausable.sol:ERC20Pausable", + "label": "_paused", + "offset": 0, + "slot": "5", + "type": "t_uint256" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32", + "value": "t_mapping(t_address,t_uint256)" + }, + "t_mapping(t_address,t_uint256)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_string_storage": { + "encoding": "bytes", + "label": "string", + "numberOfBytes": "32" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "IERC20Metadata": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "details": "Interface for the optional metadata functions from the ERC-20 standard.", + "events": { + "Approval(address,address,uint256)": { + "details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance." + }, + "Transfer(address,address,uint256)": { + "details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero." + } + }, + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called." + }, + "approve(address,uint256)": { + "details": "Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event." + }, + "balanceOf(address)": { + "details": "Returns the value of tokens owned by `account`." + }, + "decimals()": { + "details": "Returns the decimals places of the token." + }, + "name()": { + "details": "Returns the name of the token." + }, + "symbol()": { + "details": "Returns the symbol of the token." + }, + "totalSupply()": { + "details": "Returns the value of tokens in existence." + }, + "transfer(address,uint256)": { + "details": "Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." + }, + "transferFrom(address,address,uint256)": { + "details": "Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." + } + }, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "name()": "06fdde03", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC-20 standard.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=contracts/\"]},\"sources\":{\"contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/utils/Context.sol": { + "Context": { + "abi": [], + "devdoc": { + "details": "Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.", + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=contracts/\"]},\"sources\":{\"contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/utils/Pausable.sol": { + "Pausable": { + "abi": [ + { + "inputs": [], + "name": "EnforcedPause", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedPause", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "details": "Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.", + "errors": { + "EnforcedPause()": [ + { + "details": "The operation failed because the contract is paused." + } + ], + "ExpectedPause()": [ + { + "details": "The operation failed because the contract is not paused." + } + ] + }, + "events": { + "Paused(address)": { + "details": "Emitted when the pause is triggered by `account`." + }, + "Unpaused(address)": { + "details": "Emitted when the pause is lifted by `account`." + } + }, + "kind": "dev", + "methods": { + "paused()": { + "details": "Returns true if the contract is paused, and false otherwise." + } + }, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "paused()": "5c975abb" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.\",\"errors\":{\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}]},\"events\":{\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/utils/Pausable.sol\":\"Pausable\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=contracts/\"]},\"sources\":{\"contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"contracts/utils/Pausable.sol\":{\"keccak256\":\"0xdf8d9228aca6cb87ae8bec08c3ecd84de7897a3d7b3b15ddd157dc6689986ad1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b419e49007752dba7a1ad5e4f2a8b16d8477cc5ec3ad82c84cbe2231bdfb6ad\",\"dweb:/ipfs/Qme2RFtT8s6Wwid5rQDEPWNCZSsXGXqzvMtz2LT9hMMf2e\"]}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 856, + "contract": "contracts/utils/Pausable.sol:Pausable", + "label": "_paused", + "offset": 0, + "slot": "0", + "type": "t_uint256" + } + ], + "types": { + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + } + }, + "sources": { + "contracts/MyERC20.sol": { + "ast": { + "absolutePath": "contracts/MyERC20.sol", + "exportedSymbols": { + "ERC20": [ + 679 + ], + "ERC20Pausable": [ + 791 + ], + "MyERC": [ + 27 + ], + "Pausable": [ + 960 + ] + }, + "id": 28, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.8", + ".28" + ], + "nodeType": "PragmaDirective", + "src": "33:24:0" + }, + { + "absolutePath": "contracts/token/ERC20/extensions/ERC20Pausable.sol", + "file": "./token/ERC20/extensions/ERC20Pausable.sol", + "id": 2, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 28, + "sourceUnit": 792, + "src": "59:52:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 3, + "name": "ERC20Pausable", + "nameLocations": [ + "131:13:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 791, + "src": "131:13:0" + }, + "id": 4, + "nodeType": "InheritanceSpecifier", + "src": "131:13:0" + } + ], + "canonicalName": "MyERC", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 27, + "linearizedBaseContracts": [ + 27, + 791, + 960, + 679, + 69, + 817, + 757, + 847 + ], + "name": "MyERC", + "nameLocation": "122:5:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 11, + "nodeType": "Block", + "src": "185:2:0", + "statements": [] + }, + "id": 12, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "hexValue": "4c4f4c", + "id": 7, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "171:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_edc65b5a112a78a16cfcfb0d433c6a42037117ac89ed29ddf6e8ac7c56ced9ab", + "typeString": "literal_string \"LOL\"" + }, + "value": "LOL" + }, + { + "hexValue": "4c4f4c", + "id": 8, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "178:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_edc65b5a112a78a16cfcfb0d433c6a42037117ac89ed29ddf6e8ac7c56ced9ab", + "typeString": "literal_string \"LOL\"" + }, + "value": "LOL" + } + ], + "id": 9, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 6, + "name": "ERC20", + "nameLocations": [ + "165:5:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 679, + "src": "165:5:0" + }, + "nodeType": "ModifierInvocation", + "src": "165:19:0" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5, + "nodeType": "ParameterList", + "parameters": [], + "src": "162:2:0" + }, + "returnParameters": { + "id": 10, + "nodeType": "ParameterList", + "parameters": [], + "src": "185:0:0" + }, + "scope": 27, + "src": "151:36:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 18, + "nodeType": "Block", + "src": "217:25:0", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 15, + "name": "_pause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 943, + "src": "227:6:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 16, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "227:8:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17, + "nodeType": "ExpressionStatement", + "src": "227:8:0" + } + ] + }, + "functionSelector": "8456cb59", + "id": 19, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "pause", + "nameLocation": "202:5:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13, + "nodeType": "ParameterList", + "parameters": [], + "src": "207:2:0" + }, + "returnParameters": { + "id": 14, + "nodeType": "ParameterList", + "parameters": [], + "src": "217:0:0" + }, + "scope": 27, + "src": "193:49:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 25, + "nodeType": "Block", + "src": "274:27:0", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 22, + "name": "_unpause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 959, + "src": "284:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 23, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "284:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 24, + "nodeType": "ExpressionStatement", + "src": "284:10:0" + } + ] + }, + "functionSelector": "3f4ba83a", + "id": 26, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpause", + "nameLocation": "257:7:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 20, + "nodeType": "ParameterList", + "parameters": [], + "src": "264:2:0" + }, + "returnParameters": { + "id": 21, + "nodeType": "ParameterList", + "parameters": [], + "src": "274:0:0" + }, + "scope": 27, + "src": "248:53:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 28, + "src": "113:190:0", + "usedErrors": [ + 39, + 44, + 49, + 58, + 63, + 68, + 869, + 872 + ], + "usedEvents": [ + 691, + 700, + 861, + 866 + ] + } + ], + "src": "33:270:0" + }, + "id": 0 + }, + "contracts/interfaces/draft-IERC6093.sol": { + "ast": { + "absolutePath": "contracts/interfaces/draft-IERC6093.sol", + "exportedSymbols": { + "IERC1155Errors": [ + 164 + ], + "IERC20Errors": [ + 69 + ], + "IERC721Errors": [ + 117 + ] + }, + "id": 165, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 29, + "literals": [ + "solidity", + ">=", + "0.8", + ".4" + ], + "nodeType": "PragmaDirective", + "src": "113:24:1" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC20Errors", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 30, + "nodeType": "StructuredDocumentation", + "src": "139:141:1", + "text": " @dev Standard ERC-20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens." + }, + "fullyImplemented": true, + "id": 69, + "linearizedBaseContracts": [ + 69 + ], + "name": "IERC20Errors", + "nameLocation": "291:12:1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 31, + "nodeType": "StructuredDocumentation", + "src": "310:309:1", + "text": " @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer." + }, + "errorSelector": "e450d38c", + "id": 39, + "name": "ERC20InsufficientBalance", + "nameLocation": "630:24:1", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 38, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33, + "mutability": "mutable", + "name": "sender", + "nameLocation": "663:6:1", + "nodeType": "VariableDeclaration", + "scope": 39, + "src": "655:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "655:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 35, + "mutability": "mutable", + "name": "balance", + "nameLocation": "679:7:1", + "nodeType": "VariableDeclaration", + "scope": 39, + "src": "671:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 34, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "671:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 37, + "mutability": "mutable", + "name": "needed", + "nameLocation": "696:6:1", + "nodeType": "VariableDeclaration", + "scope": 39, + "src": "688:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 36, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "688:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "654:49:1" + }, + "src": "624:80:1" + }, + { + "documentation": { + "id": 40, + "nodeType": "StructuredDocumentation", + "src": "710:152:1", + "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred." + }, + "errorSelector": "96c6fd1e", + "id": 44, + "name": "ERC20InvalidSender", + "nameLocation": "873:18:1", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 43, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 42, + "mutability": "mutable", + "name": "sender", + "nameLocation": "900:6:1", + "nodeType": "VariableDeclaration", + "scope": 44, + "src": "892:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 41, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "892:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "891:16:1" + }, + "src": "867:41:1" + }, + { + "documentation": { + "id": 45, + "nodeType": "StructuredDocumentation", + "src": "914:159:1", + "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred." + }, + "errorSelector": "ec442f05", + "id": 49, + "name": "ERC20InvalidReceiver", + "nameLocation": "1084:20:1", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 48, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 47, + "mutability": "mutable", + "name": "receiver", + "nameLocation": "1113:8:1", + "nodeType": "VariableDeclaration", + "scope": 49, + "src": "1105:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 46, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1105:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1104:18:1" + }, + "src": "1078:45:1" + }, + { + "documentation": { + "id": 50, + "nodeType": "StructuredDocumentation", + "src": "1129:345:1", + "text": " @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer." + }, + "errorSelector": "fb8f41b2", + "id": 58, + "name": "ERC20InsufficientAllowance", + "nameLocation": "1485:26:1", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 57, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 52, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1520:7:1", + "nodeType": "VariableDeclaration", + "scope": 58, + "src": "1512:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 51, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1512:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 54, + "mutability": "mutable", + "name": "allowance", + "nameLocation": "1537:9:1", + "nodeType": "VariableDeclaration", + "scope": 58, + "src": "1529:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 53, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1529:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 56, + "mutability": "mutable", + "name": "needed", + "nameLocation": "1556:6:1", + "nodeType": "VariableDeclaration", + "scope": 58, + "src": "1548:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 55, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1548:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1511:52:1" + }, + "src": "1479:85:1" + }, + { + "documentation": { + "id": 59, + "nodeType": "StructuredDocumentation", + "src": "1570:174:1", + "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation." + }, + "errorSelector": "e602df05", + "id": 63, + "name": "ERC20InvalidApprover", + "nameLocation": "1755:20:1", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 62, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 61, + "mutability": "mutable", + "name": "approver", + "nameLocation": "1784:8:1", + "nodeType": "VariableDeclaration", + "scope": 63, + "src": "1776:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 60, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1776:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1775:18:1" + }, + "src": "1749:45:1" + }, + { + "documentation": { + "id": 64, + "nodeType": "StructuredDocumentation", + "src": "1800:195:1", + "text": " @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner." + }, + "errorSelector": "94280d62", + "id": 68, + "name": "ERC20InvalidSpender", + "nameLocation": "2006:19:1", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 67, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 66, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2034:7:1", + "nodeType": "VariableDeclaration", + "scope": 68, + "src": "2026:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 65, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2026:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2025:17:1" + }, + "src": "2000:43:1" + } + ], + "scope": 165, + "src": "281:1764:1", + "usedErrors": [ + 39, + 44, + 49, + 58, + 63, + 68 + ], + "usedEvents": [] + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC721Errors", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 70, + "nodeType": "StructuredDocumentation", + "src": "2047:143:1", + "text": " @dev Standard ERC-721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens." + }, + "fullyImplemented": true, + "id": 117, + "linearizedBaseContracts": [ + 117 + ], + "name": "IERC721Errors", + "nameLocation": "2201:13:1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 71, + "nodeType": "StructuredDocumentation", + "src": "2221:219:1", + "text": " @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n Used in balance queries.\n @param owner Address of the current owner of a token." + }, + "errorSelector": "89c62b64", + "id": 75, + "name": "ERC721InvalidOwner", + "nameLocation": "2451:18:1", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 74, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 73, + "mutability": "mutable", + "name": "owner", + "nameLocation": "2478:5:1", + "nodeType": "VariableDeclaration", + "scope": 75, + "src": "2470:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 72, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2470:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2469:15:1" + }, + "src": "2445:40:1" + }, + { + "documentation": { + "id": 76, + "nodeType": "StructuredDocumentation", + "src": "2491:132:1", + "text": " @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token." + }, + "errorSelector": "7e273289", + "id": 80, + "name": "ERC721NonexistentToken", + "nameLocation": "2634:22:1", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 79, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 78, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "2665:7:1", + "nodeType": "VariableDeclaration", + "scope": 80, + "src": "2657:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 77, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2657:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2656:17:1" + }, + "src": "2628:46:1" + }, + { + "documentation": { + "id": 81, + "nodeType": "StructuredDocumentation", + "src": "2680:289:1", + "text": " @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token." + }, + "errorSelector": "64283d7b", + "id": 89, + "name": "ERC721IncorrectOwner", + "nameLocation": "2980:20:1", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 88, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 83, + "mutability": "mutable", + "name": "sender", + "nameLocation": "3009:6:1", + "nodeType": "VariableDeclaration", + "scope": 89, + "src": "3001:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 82, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3001:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 85, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3025:7:1", + "nodeType": "VariableDeclaration", + "scope": 89, + "src": "3017:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 84, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3017:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 87, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3042:5:1", + "nodeType": "VariableDeclaration", + "scope": 89, + "src": "3034:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 86, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3034:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3000:48:1" + }, + "src": "2974:75:1" + }, + { + "documentation": { + "id": 90, + "nodeType": "StructuredDocumentation", + "src": "3055:152:1", + "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred." + }, + "errorSelector": "73c6ac6e", + "id": 94, + "name": "ERC721InvalidSender", + "nameLocation": "3218:19:1", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 93, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 92, + "mutability": "mutable", + "name": "sender", + "nameLocation": "3246:6:1", + "nodeType": "VariableDeclaration", + "scope": 94, + "src": "3238:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 91, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3238:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3237:16:1" + }, + "src": "3212:42:1" + }, + { + "documentation": { + "id": 95, + "nodeType": "StructuredDocumentation", + "src": "3260:159:1", + "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred." + }, + "errorSelector": "64a0ae92", + "id": 99, + "name": "ERC721InvalidReceiver", + "nameLocation": "3430:21:1", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 98, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 97, + "mutability": "mutable", + "name": "receiver", + "nameLocation": "3460:8:1", + "nodeType": "VariableDeclaration", + "scope": 99, + "src": "3452:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 96, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3452:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3451:18:1" + }, + "src": "3424:46:1" + }, + { + "documentation": { + "id": 100, + "nodeType": "StructuredDocumentation", + "src": "3476:247:1", + "text": " @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token." + }, + "errorSelector": "177e802f", + "id": 106, + "name": "ERC721InsufficientApproval", + "nameLocation": "3734:26:1", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 105, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 102, + "mutability": "mutable", + "name": "operator", + "nameLocation": "3769:8:1", + "nodeType": "VariableDeclaration", + "scope": 106, + "src": "3761:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 101, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3761:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 104, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3787:7:1", + "nodeType": "VariableDeclaration", + "scope": 106, + "src": "3779:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 103, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3779:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3760:35:1" + }, + "src": "3728:68:1" + }, + { + "documentation": { + "id": 107, + "nodeType": "StructuredDocumentation", + "src": "3802:174:1", + "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation." + }, + "errorSelector": "a9fbf51f", + "id": 111, + "name": "ERC721InvalidApprover", + "nameLocation": "3987:21:1", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 110, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 109, + "mutability": "mutable", + "name": "approver", + "nameLocation": "4017:8:1", + "nodeType": "VariableDeclaration", + "scope": 111, + "src": "4009:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 108, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4009:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4008:18:1" + }, + "src": "3981:46:1" + }, + { + "documentation": { + "id": 112, + "nodeType": "StructuredDocumentation", + "src": "4033:197:1", + "text": " @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner." + }, + "errorSelector": "5b08ba18", + "id": 116, + "name": "ERC721InvalidOperator", + "nameLocation": "4241:21:1", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 115, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 114, + "mutability": "mutable", + "name": "operator", + "nameLocation": "4271:8:1", + "nodeType": "VariableDeclaration", + "scope": 116, + "src": "4263:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 113, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4263:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4262:18:1" + }, + "src": "4235:46:1" + } + ], + "scope": 165, + "src": "2191:2092:1", + "usedErrors": [ + 75, + 80, + 89, + 94, + 99, + 106, + 111, + 116 + ], + "usedEvents": [] + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC1155Errors", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 118, + "nodeType": "StructuredDocumentation", + "src": "4285:145:1", + "text": " @dev Standard ERC-1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens." + }, + "fullyImplemented": true, + "id": 164, + "linearizedBaseContracts": [ + 164 + ], + "name": "IERC1155Errors", + "nameLocation": "4441:14:1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 119, + "nodeType": "StructuredDocumentation", + "src": "4462:361:1", + "text": " @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token." + }, + "errorSelector": "03dee4c5", + "id": 129, + "name": "ERC1155InsufficientBalance", + "nameLocation": "4834:26:1", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 128, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 121, + "mutability": "mutable", + "name": "sender", + "nameLocation": "4869:6:1", + "nodeType": "VariableDeclaration", + "scope": 129, + "src": "4861:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 120, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4861:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 123, + "mutability": "mutable", + "name": "balance", + "nameLocation": "4885:7:1", + "nodeType": "VariableDeclaration", + "scope": 129, + "src": "4877:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 122, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4877:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 125, + "mutability": "mutable", + "name": "needed", + "nameLocation": "4902:6:1", + "nodeType": "VariableDeclaration", + "scope": 129, + "src": "4894:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 124, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4894:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 127, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "4918:7:1", + "nodeType": "VariableDeclaration", + "scope": 129, + "src": "4910:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 126, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4910:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4860:66:1" + }, + "src": "4828:99:1" + }, + { + "documentation": { + "id": 130, + "nodeType": "StructuredDocumentation", + "src": "4933:152:1", + "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred." + }, + "errorSelector": "01a83514", + "id": 134, + "name": "ERC1155InvalidSender", + "nameLocation": "5096:20:1", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 133, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 132, + "mutability": "mutable", + "name": "sender", + "nameLocation": "5125:6:1", + "nodeType": "VariableDeclaration", + "scope": 134, + "src": "5117:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 131, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5117:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5116:16:1" + }, + "src": "5090:43:1" + }, + { + "documentation": { + "id": 135, + "nodeType": "StructuredDocumentation", + "src": "5139:159:1", + "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred." + }, + "errorSelector": "57f447ce", + "id": 139, + "name": "ERC1155InvalidReceiver", + "nameLocation": "5309:22:1", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 138, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 137, + "mutability": "mutable", + "name": "receiver", + "nameLocation": "5340:8:1", + "nodeType": "VariableDeclaration", + "scope": 139, + "src": "5332:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 136, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5332:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5331:18:1" + }, + "src": "5303:47:1" + }, + { + "documentation": { + "id": 140, + "nodeType": "StructuredDocumentation", + "src": "5356:256:1", + "text": " @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token." + }, + "errorSelector": "e237d922", + "id": 146, + "name": "ERC1155MissingApprovalForAll", + "nameLocation": "5623:28:1", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 145, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 142, + "mutability": "mutable", + "name": "operator", + "nameLocation": "5660:8:1", + "nodeType": "VariableDeclaration", + "scope": 146, + "src": "5652:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 141, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5652:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 144, + "mutability": "mutable", + "name": "owner", + "nameLocation": "5678:5:1", + "nodeType": "VariableDeclaration", + "scope": 146, + "src": "5670:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 143, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5670:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5651:33:1" + }, + "src": "5617:68:1" + }, + { + "documentation": { + "id": 147, + "nodeType": "StructuredDocumentation", + "src": "5691:174:1", + "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation." + }, + "errorSelector": "3e31884e", + "id": 151, + "name": "ERC1155InvalidApprover", + "nameLocation": "5876:22:1", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 150, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 149, + "mutability": "mutable", + "name": "approver", + "nameLocation": "5907:8:1", + "nodeType": "VariableDeclaration", + "scope": 151, + "src": "5899:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 148, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5899:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5898:18:1" + }, + "src": "5870:47:1" + }, + { + "documentation": { + "id": 152, + "nodeType": "StructuredDocumentation", + "src": "5923:197:1", + "text": " @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner." + }, + "errorSelector": "ced3e100", + "id": 156, + "name": "ERC1155InvalidOperator", + "nameLocation": "6131:22:1", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 155, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 154, + "mutability": "mutable", + "name": "operator", + "nameLocation": "6162:8:1", + "nodeType": "VariableDeclaration", + "scope": 156, + "src": "6154:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 153, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6154:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6153:18:1" + }, + "src": "6125:47:1" + }, + { + "documentation": { + "id": 157, + "nodeType": "StructuredDocumentation", + "src": "6178:280:1", + "text": " @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts" + }, + "errorSelector": "5b059991", + "id": 163, + "name": "ERC1155InvalidArrayLength", + "nameLocation": "6469:25:1", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 162, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 159, + "mutability": "mutable", + "name": "idsLength", + "nameLocation": "6503:9:1", + "nodeType": "VariableDeclaration", + "scope": 163, + "src": "6495:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 158, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6495:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 161, + "mutability": "mutable", + "name": "valuesLength", + "nameLocation": "6522:12:1", + "nodeType": "VariableDeclaration", + "scope": 163, + "src": "6514:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 160, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6514:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6494:41:1" + }, + "src": "6463:73:1" + } + ], + "scope": 165, + "src": "4431:2107:1", + "usedErrors": [ + 129, + 134, + 139, + 146, + 151, + 156, + 163 + ], + "usedEvents": [] + } + ], + "src": "113:6426:1" + }, + "id": 1 + }, + "contracts/token/ERC20/ERC20.sol": { + "ast": { + "absolutePath": "contracts/token/ERC20/ERC20.sol", + "exportedSymbols": { + "Context": [ + 847 + ], + "ERC20": [ + 679 + ], + "IERC20": [ + 757 + ], + "IERC20Errors": [ + 69 + ], + "IERC20Metadata": [ + 817 + ] + }, + "id": 680, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 166, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "105:24:2" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 168, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 680, + "sourceUnit": 758, + "src": "131:36:2", + "symbolAliases": [ + { + "foreign": { + "id": 167, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 757, + "src": "139:6:2", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/extensions/IERC20Metadata.sol", + "file": "./extensions/IERC20Metadata.sol", + "id": 170, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 680, + "sourceUnit": 818, + "src": "168:63:2", + "symbolAliases": [ + { + "foreign": { + "id": 169, + "name": "IERC20Metadata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "176:14:2", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/utils/Context.sol", + "file": "../../utils/Context.sol", + "id": 172, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 680, + "sourceUnit": 848, + "src": "232:48:2", + "symbolAliases": [ + { + "foreign": { + "id": 171, + "name": "Context", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 847, + "src": "240:7:2", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/interfaces/draft-IERC6093.sol", + "file": "../../interfaces/draft-IERC6093.sol", + "id": 174, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 680, + "sourceUnit": 165, + "src": "281:65:2", + "symbolAliases": [ + { + "foreign": { + "id": 173, + "name": "IERC20Errors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "289:12:2", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 176, + "name": "Context", + "nameLocations": [ + "1133:7:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 847, + "src": "1133:7:2" + }, + "id": 177, + "nodeType": "InheritanceSpecifier", + "src": "1133:7:2" + }, + { + "baseName": { + "id": 178, + "name": "IERC20", + "nameLocations": [ + "1142:6:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 757, + "src": "1142:6:2" + }, + "id": 179, + "nodeType": "InheritanceSpecifier", + "src": "1142:6:2" + }, + { + "baseName": { + "id": 180, + "name": "IERC20Metadata", + "nameLocations": [ + "1150:14:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 817, + "src": "1150:14:2" + }, + "id": 181, + "nodeType": "InheritanceSpecifier", + "src": "1150:14:2" + }, + { + "baseName": { + "id": 182, + "name": "IERC20Errors", + "nameLocations": [ + "1166:12:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 69, + "src": "1166:12:2" + }, + "id": 183, + "nodeType": "InheritanceSpecifier", + "src": "1166:12:2" + } + ], + "canonicalName": "ERC20", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 175, + "nodeType": "StructuredDocumentation", + "src": "348:757:2", + "text": " @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC-20\n applications." + }, + "fullyImplemented": true, + "id": 679, + "linearizedBaseContracts": [ + 679, + 69, + 817, + 757, + 847 + ], + "name": "ERC20", + "nameLocation": "1124:5:2", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 187, + "mutability": "mutable", + "name": "_balances", + "nameLocation": "1229:9:2", + "nodeType": "VariableDeclaration", + "scope": 679, + "src": "1185:53:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 186, + "keyName": "account", + "keyNameLocation": "1201:7:2", + "keyType": { + "id": 184, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1193:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1185:35:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 185, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1212:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 193, + "mutability": "mutable", + "name": "_allowances", + "nameLocation": "1317:11:2", + "nodeType": "VariableDeclaration", + "scope": 679, + "src": "1245:83:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 192, + "keyName": "account", + "keyNameLocation": "1261:7:2", + "keyType": { + "id": 188, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1253:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1245:63:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 191, + "keyName": "spender", + "keyNameLocation": "1288:7:2", + "keyType": { + "id": 189, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1280:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1272:35:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 190, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1299:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 195, + "mutability": "mutable", + "name": "_totalSupply", + "nameLocation": "1351:12:2", + "nodeType": "VariableDeclaration", + "scope": 679, + "src": "1335:28:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 194, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1335:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 197, + "mutability": "mutable", + "name": "_name", + "nameLocation": "1385:5:2", + "nodeType": "VariableDeclaration", + "scope": 679, + "src": "1370:20:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 196, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1370:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 199, + "mutability": "mutable", + "name": "_symbol", + "nameLocation": "1411:7:2", + "nodeType": "VariableDeclaration", + "scope": 679, + "src": "1396:22:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 198, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1396:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 215, + "nodeType": "Block", + "src": "1638:57:2", + "statements": [ + { + "expression": { + "id": 209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 207, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 197, + "src": "1648:5:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 208, + "name": "name_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "1656:5:2", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "1648:13:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 210, + "nodeType": "ExpressionStatement", + "src": "1648:13:2" + }, + { + "expression": { + "id": 213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 211, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 199, + "src": "1671:7:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 212, + "name": "symbol_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 204, + "src": "1681:7:2", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "1671:17:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 214, + "nodeType": "ExpressionStatement", + "src": "1671:17:2" + } + ] + }, + "documentation": { + "id": 200, + "nodeType": "StructuredDocumentation", + "src": "1425:152:2", + "text": " @dev Sets the values for {name} and {symbol}.\n Both values are immutable: they can only be set once during construction." + }, + "id": 216, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 205, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 202, + "mutability": "mutable", + "name": "name_", + "nameLocation": "1608:5:2", + "nodeType": "VariableDeclaration", + "scope": 216, + "src": "1594:19:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 201, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1594:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 204, + "mutability": "mutable", + "name": "symbol_", + "nameLocation": "1629:7:2", + "nodeType": "VariableDeclaration", + "scope": 216, + "src": "1615:21:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 203, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1615:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1593:44:2" + }, + "returnParameters": { + "id": 206, + "nodeType": "ParameterList", + "parameters": [], + "src": "1638:0:2" + }, + "scope": 679, + "src": "1582:113:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 804 + ], + "body": { + "id": 224, + "nodeType": "Block", + "src": "1820:29:2", + "statements": [ + { + "expression": { + "id": 222, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 197, + "src": "1837:5:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 221, + "id": 223, + "nodeType": "Return", + "src": "1830:12:2" + } + ] + }, + "documentation": { + "id": 217, + "nodeType": "StructuredDocumentation", + "src": "1701:54:2", + "text": " @dev Returns the name of the token." + }, + "functionSelector": "06fdde03", + "id": 225, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "1769:4:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 218, + "nodeType": "ParameterList", + "parameters": [], + "src": "1773:2:2" + }, + "returnParameters": { + "id": 221, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 220, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 225, + "src": "1805:13:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 219, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1805:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1804:15:2" + }, + "scope": 679, + "src": "1760:89:2", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 810 + ], + "body": { + "id": 233, + "nodeType": "Block", + "src": "2024:31:2", + "statements": [ + { + "expression": { + "id": 231, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 199, + "src": "2041:7:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 230, + "id": 232, + "nodeType": "Return", + "src": "2034:14:2" + } + ] + }, + "documentation": { + "id": 226, + "nodeType": "StructuredDocumentation", + "src": "1855:102:2", + "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name." + }, + "functionSelector": "95d89b41", + "id": 234, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "1971:6:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 227, + "nodeType": "ParameterList", + "parameters": [], + "src": "1977:2:2" + }, + "returnParameters": { + "id": 230, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 229, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 234, + "src": "2009:13:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 228, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2009:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2008:15:2" + }, + "scope": 679, + "src": "1962:93:2", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 816 + ], + "body": { + "id": 242, + "nodeType": "Block", + "src": "2744:26:2", + "statements": [ + { + "expression": { + "hexValue": "3138", + "id": 240, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2761:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "functionReturnParameters": 239, + "id": 241, + "nodeType": "Return", + "src": "2754:9:2" + } + ] + }, + "documentation": { + "id": 235, + "nodeType": "StructuredDocumentation", + "src": "2061:622:2", + "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the default value returned by this function, unless\n it's overridden.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}." + }, + "functionSelector": "313ce567", + "id": 243, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nameLocation": "2697:8:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 236, + "nodeType": "ParameterList", + "parameters": [], + "src": "2705:2:2" + }, + "returnParameters": { + "id": 239, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 238, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 243, + "src": "2737:5:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 237, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2737:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "2736:7:2" + }, + "scope": 679, + "src": "2688:82:2", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 706 + ], + "body": { + "id": 251, + "nodeType": "Block", + "src": "2864:36:2", + "statements": [ + { + "expression": { + "id": 249, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 195, + "src": "2881:12:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 248, + "id": 250, + "nodeType": "Return", + "src": "2874:19:2" + } + ] + }, + "documentation": { + "id": 244, + "nodeType": "StructuredDocumentation", + "src": "2776:22:2", + "text": "@inheritdoc IERC20" + }, + "functionSelector": "18160ddd", + "id": 252, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "2812:11:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 245, + "nodeType": "ParameterList", + "parameters": [], + "src": "2823:2:2" + }, + "returnParameters": { + "id": 248, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 247, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 252, + "src": "2855:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 246, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2855:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2854:9:2" + }, + "scope": 679, + "src": "2803:97:2", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 714 + ], + "body": { + "id": 264, + "nodeType": "Block", + "src": "3007:42:2", + "statements": [ + { + "expression": { + "baseExpression": { + "id": 260, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "3024:9:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 262, + "indexExpression": { + "id": 261, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "3034:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3024:18:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 259, + "id": 263, + "nodeType": "Return", + "src": "3017:25:2" + } + ] + }, + "documentation": { + "id": 253, + "nodeType": "StructuredDocumentation", + "src": "2906:22:2", + "text": "@inheritdoc IERC20" + }, + "functionSelector": "70a08231", + "id": 265, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "2942:9:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 256, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 255, + "mutability": "mutable", + "name": "account", + "nameLocation": "2960:7:2", + "nodeType": "VariableDeclaration", + "scope": 265, + "src": "2952:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 254, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2952:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2951:17:2" + }, + "returnParameters": { + "id": 259, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 258, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 265, + "src": "2998:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 257, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2998:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2997:9:2" + }, + "scope": 679, + "src": "2933:116:2", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 724 + ], + "body": { + "id": 288, + "nodeType": "Block", + "src": "3319:103:2", + "statements": [ + { + "assignments": [ + 276 + ], + "declarations": [ + { + "constant": false, + "id": 276, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3337:5:2", + "nodeType": "VariableDeclaration", + "scope": 288, + "src": "3329:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 275, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3329:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 279, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 277, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 829, + "src": "3345:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3345:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3329:28:2" + }, + { + "expression": { + "arguments": [ + { + "id": 281, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 276, + "src": "3377:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 282, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 268, + "src": "3384:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 283, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 270, + "src": "3388:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 280, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 409, + "src": "3367:9:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3367:27:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 285, + "nodeType": "ExpressionStatement", + "src": "3367:27:2" + }, + { + "expression": { + "hexValue": "74727565", + "id": 286, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3411:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 274, + "id": 287, + "nodeType": "Return", + "src": "3404:11:2" + } + ] + }, + "documentation": { + "id": 266, + "nodeType": "StructuredDocumentation", + "src": "3055:184:2", + "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `value`." + }, + "functionSelector": "a9059cbb", + "id": 289, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "3253:8:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 271, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 268, + "mutability": "mutable", + "name": "to", + "nameLocation": "3270:2:2", + "nodeType": "VariableDeclaration", + "scope": 289, + "src": "3262:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 267, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3262:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 270, + "mutability": "mutable", + "name": "value", + "nameLocation": "3282:5:2", + "nodeType": "VariableDeclaration", + "scope": 289, + "src": "3274:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 269, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3274:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3261:27:2" + }, + "returnParameters": { + "id": 274, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 273, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 289, + "src": "3313:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 272, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3313:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3312:6:2" + }, + "scope": 679, + "src": "3244:178:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 734 + ], + "body": { + "id": 305, + "nodeType": "Block", + "src": "3544:51:2", + "statements": [ + { + "expression": { + "baseExpression": { + "baseExpression": { + "id": 299, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 193, + "src": "3561:11:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 301, + "indexExpression": { + "id": 300, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 292, + "src": "3573:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3561:18:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 303, + "indexExpression": { + "id": 302, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 294, + "src": "3580:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3561:27:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 298, + "id": 304, + "nodeType": "Return", + "src": "3554:34:2" + } + ] + }, + "documentation": { + "id": 290, + "nodeType": "StructuredDocumentation", + "src": "3428:22:2", + "text": "@inheritdoc IERC20" + }, + "functionSelector": "dd62ed3e", + "id": 306, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nameLocation": "3464:9:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 295, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 292, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3482:5:2", + "nodeType": "VariableDeclaration", + "scope": 306, + "src": "3474:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 291, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3474:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 294, + "mutability": "mutable", + "name": "spender", + "nameLocation": "3497:7:2", + "nodeType": "VariableDeclaration", + "scope": 306, + "src": "3489:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 293, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3489:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3473:32:2" + }, + "returnParameters": { + "id": 298, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 297, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 306, + "src": "3535:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 296, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3535:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3534:9:2" + }, + "scope": 679, + "src": "3455:140:2", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 744 + ], + "body": { + "id": 329, + "nodeType": "Block", + "src": "3981:107:2", + "statements": [ + { + "assignments": [ + 317 + ], + "declarations": [ + { + "constant": false, + "id": 317, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3999:5:2", + "nodeType": "VariableDeclaration", + "scope": 329, + "src": "3991:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 316, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3991:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 320, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 318, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 829, + "src": "4007:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4007:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3991:28:2" + }, + { + "expression": { + "arguments": [ + { + "id": 322, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 317, + "src": "4038:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 323, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 309, + "src": "4045:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 324, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 311, + "src": "4054:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 321, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 570, + 630 + ], + "referencedDeclaration": 570, + "src": "4029:8:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4029:31:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 326, + "nodeType": "ExpressionStatement", + "src": "4029:31:2" + }, + { + "expression": { + "hexValue": "74727565", + "id": 327, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4077:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 315, + "id": 328, + "nodeType": "Return", + "src": "4070:11:2" + } + ] + }, + "documentation": { + "id": 307, + "nodeType": "StructuredDocumentation", + "src": "3601:296:2", + "text": " @dev See {IERC20-approve}.\n NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address." + }, + "functionSelector": "095ea7b3", + "id": 330, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "3911:7:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 312, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 309, + "mutability": "mutable", + "name": "spender", + "nameLocation": "3927:7:2", + "nodeType": "VariableDeclaration", + "scope": 330, + "src": "3919:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 308, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3919:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 311, + "mutability": "mutable", + "name": "value", + "nameLocation": "3944:5:2", + "nodeType": "VariableDeclaration", + "scope": 330, + "src": "3936:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 310, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3936:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3918:32:2" + }, + "returnParameters": { + "id": 315, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 314, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 330, + "src": "3975:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 313, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3975:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3974:6:2" + }, + "scope": 679, + "src": "3902:186:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 756 + ], + "body": { + "id": 361, + "nodeType": "Block", + "src": "4773:151:2", + "statements": [ + { + "assignments": [ + 343 + ], + "declarations": [ + { + "constant": false, + "id": 343, + "mutability": "mutable", + "name": "spender", + "nameLocation": "4791:7:2", + "nodeType": "VariableDeclaration", + "scope": 361, + "src": "4783:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 342, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4783:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 346, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 344, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 829, + "src": "4801:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4801:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4783:30:2" + }, + { + "expression": { + "arguments": [ + { + "id": 348, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 333, + "src": "4839:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 349, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 343, + "src": "4845:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 350, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 337, + "src": "4854:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 347, + "name": "_spendAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 678, + "src": "4823:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4823:37:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 352, + "nodeType": "ExpressionStatement", + "src": "4823:37:2" + }, + { + "expression": { + "arguments": [ + { + "id": 354, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 333, + "src": "4880:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 355, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 335, + "src": "4886:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 356, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 337, + "src": "4890:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 353, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 409, + "src": "4870:9:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4870:26:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 358, + "nodeType": "ExpressionStatement", + "src": "4870:26:2" + }, + { + "expression": { + "hexValue": "74727565", + "id": 359, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4913:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 341, + "id": 360, + "nodeType": "Return", + "src": "4906:11:2" + } + ] + }, + "documentation": { + "id": 331, + "nodeType": "StructuredDocumentation", + "src": "4094:581:2", + "text": " @dev See {IERC20-transferFrom}.\n Skips emitting an {Approval} event indicating an allowance update. This is not\n required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `value`.\n - the caller must have allowance for ``from``'s tokens of at least\n `value`." + }, + "functionSelector": "23b872dd", + "id": 362, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "4689:12:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 338, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 333, + "mutability": "mutable", + "name": "from", + "nameLocation": "4710:4:2", + "nodeType": "VariableDeclaration", + "scope": 362, + "src": "4702:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 332, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4702:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 335, + "mutability": "mutable", + "name": "to", + "nameLocation": "4724:2:2", + "nodeType": "VariableDeclaration", + "scope": 362, + "src": "4716:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 334, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4716:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 337, + "mutability": "mutable", + "name": "value", + "nameLocation": "4736:5:2", + "nodeType": "VariableDeclaration", + "scope": 362, + "src": "4728:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 336, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4728:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4701:41:2" + }, + "returnParameters": { + "id": 341, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 340, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 362, + "src": "4767:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 339, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4767:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4766:6:2" + }, + "scope": 679, + "src": "4680:244:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 408, + "nodeType": "Block", + "src": "5366:231:2", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 372, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "5380:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 375, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5396:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 374, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5388:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 373, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5388:7:2", + "typeDescriptions": {} + } + }, + "id": 376, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5388:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5380:18:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 386, + "nodeType": "IfStatement", + "src": "5376:86:2", + "trueBody": { + "id": 385, + "nodeType": "Block", + "src": "5400:62:2", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 381, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5448:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 380, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5440:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 379, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5440:7:2", + "typeDescriptions": {} + } + }, + "id": 382, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5440:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 378, + "name": "ERC20InvalidSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44, + "src": "5421:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$", + "typeString": "function (address) pure returns (error)" + } + }, + "id": 383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5421:30:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 384, + "nodeType": "RevertStatement", + "src": "5414:37:2" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 387, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 367, + "src": "5475:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 390, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5489:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 389, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5481:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 388, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5481:7:2", + "typeDescriptions": {} + } + }, + "id": 391, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5481:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5475:16:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 401, + "nodeType": "IfStatement", + "src": "5471:86:2", + "trueBody": { + "id": 400, + "nodeType": "Block", + "src": "5493:64:2", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 396, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5543:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 395, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5535:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 394, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5535:7:2", + "typeDescriptions": {} + } + }, + "id": 397, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5535:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 393, + "name": "ERC20InvalidReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49, + "src": "5514:20:2", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$", + "typeString": "function (address) pure returns (error)" + } + }, + "id": 398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5514:32:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 399, + "nodeType": "RevertStatement", + "src": "5507:39:2" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 403, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "5574:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 404, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 367, + "src": "5580:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 405, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "5584:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 402, + "name": "_update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 486, + "src": "5566:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5566:24:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 407, + "nodeType": "ExpressionStatement", + "src": "5566:24:2" + } + ] + }, + "documentation": { + "id": 363, + "nodeType": "StructuredDocumentation", + "src": "4930:362:2", + "text": " @dev Moves a `value` amount of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n NOTE: This function is not virtual, {_update} should be overridden instead." + }, + "id": 409, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nameLocation": "5306:9:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 370, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 365, + "mutability": "mutable", + "name": "from", + "nameLocation": "5324:4:2", + "nodeType": "VariableDeclaration", + "scope": 409, + "src": "5316:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 364, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5316:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 367, + "mutability": "mutable", + "name": "to", + "nameLocation": "5338:2:2", + "nodeType": "VariableDeclaration", + "scope": 409, + "src": "5330:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 366, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5330:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 369, + "mutability": "mutable", + "name": "value", + "nameLocation": "5350:5:2", + "nodeType": "VariableDeclaration", + "scope": 409, + "src": "5342:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 368, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5342:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5315:41:2" + }, + "returnParameters": { + "id": 371, + "nodeType": "ParameterList", + "parameters": [], + "src": "5366:0:2" + }, + "scope": 679, + "src": "5297:300:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 485, + "nodeType": "Block", + "src": "5987:1032:2", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 419, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "6001:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 422, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6017:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 421, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6009:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 420, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6009:7:2", + "typeDescriptions": {} + } + }, + "id": 423, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6009:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6001:18:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 456, + "nodeType": "Block", + "src": "6175:362:2", + "statements": [ + { + "assignments": [ + 431 + ], + "declarations": [ + { + "constant": false, + "id": 431, + "mutability": "mutable", + "name": "fromBalance", + "nameLocation": "6197:11:2", + "nodeType": "VariableDeclaration", + "scope": 456, + "src": "6189:19:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 430, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6189:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 435, + "initialValue": { + "baseExpression": { + "id": 432, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "6211:9:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 434, + "indexExpression": { + "id": 433, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "6221:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6211:15:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6189:37:2" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 438, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 436, + "name": "fromBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 431, + "src": "6244:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 437, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "6258:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6244:19:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 446, + "nodeType": "IfStatement", + "src": "6240:115:2", + "trueBody": { + "id": 445, + "nodeType": "Block", + "src": "6265:90:2", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 440, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "6315:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 441, + "name": "fromBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 431, + "src": "6321:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 442, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "6334:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 439, + "name": "ERC20InsufficientBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 39, + "src": "6290:24:2", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$", + "typeString": "function (address,uint256,uint256) pure returns (error)" + } + }, + "id": 443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6290:50:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 444, + "nodeType": "RevertStatement", + "src": "6283:57:2" + } + ] + } + }, + { + "id": 455, + "nodeType": "UncheckedBlock", + "src": "6368:159:2", + "statements": [ + { + "expression": { + "id": 453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 447, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "6475:9:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 449, + "indexExpression": { + "id": 448, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "6485:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6475:15:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 450, + "name": "fromBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 431, + "src": "6493:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 451, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "6507:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6493:19:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6475:37:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 454, + "nodeType": "ExpressionStatement", + "src": "6475:37:2" + } + ] + } + ] + }, + "id": 457, + "nodeType": "IfStatement", + "src": "5997:540:2", + "trueBody": { + "id": 429, + "nodeType": "Block", + "src": "6021:148:2", + "statements": [ + { + "expression": { + "id": 427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 425, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 195, + "src": "6137:12:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 426, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "6153:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6137:21:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 428, + "nodeType": "ExpressionStatement", + "src": "6137:21:2" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 458, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "6551:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 461, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6565:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 460, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6557:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 459, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6557:7:2", + "typeDescriptions": {} + } + }, + "id": 462, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6557:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6551:16:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 477, + "nodeType": "Block", + "src": "6766:206:2", + "statements": [ + { + "id": 476, + "nodeType": "UncheckedBlock", + "src": "6780:182:2", + "statements": [ + { + "expression": { + "id": 474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 470, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "6925:9:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 472, + "indexExpression": { + "id": 471, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "6935:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6925:13:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 473, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "6942:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6925:22:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 475, + "nodeType": "ExpressionStatement", + "src": "6925:22:2" + } + ] + } + ] + }, + "id": 478, + "nodeType": "IfStatement", + "src": "6547:425:2", + "trueBody": { + "id": 469, + "nodeType": "Block", + "src": "6569:191:2", + "statements": [ + { + "id": 468, + "nodeType": "UncheckedBlock", + "src": "6583:167:2", + "statements": [ + { + "expression": { + "id": 466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 464, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 195, + "src": "6714:12:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "id": 465, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "6730:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6714:21:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 467, + "nodeType": "ExpressionStatement", + "src": "6714:21:2" + } + ] + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 480, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "6996:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 481, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "7002:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 482, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "7006:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 479, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 691, + "src": "6987:8:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6987:25:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 484, + "nodeType": "EmitStatement", + "src": "6982:30:2" + } + ] + }, + "documentation": { + "id": 410, + "nodeType": "StructuredDocumentation", + "src": "5603:304:2", + "text": " @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n this function.\n Emits a {Transfer} event." + }, + "id": 486, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_update", + "nameLocation": "5921:7:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 417, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 412, + "mutability": "mutable", + "name": "from", + "nameLocation": "5937:4:2", + "nodeType": "VariableDeclaration", + "scope": 486, + "src": "5929:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 411, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5929:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 414, + "mutability": "mutable", + "name": "to", + "nameLocation": "5951:2:2", + "nodeType": "VariableDeclaration", + "scope": 486, + "src": "5943:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 413, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5943:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 416, + "mutability": "mutable", + "name": "value", + "nameLocation": "5963:5:2", + "nodeType": "VariableDeclaration", + "scope": 486, + "src": "5955:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 415, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5955:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5928:41:2" + }, + "returnParameters": { + "id": 418, + "nodeType": "ParameterList", + "parameters": [], + "src": "5987:0:2" + }, + "scope": 679, + "src": "5912:1107:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 518, + "nodeType": "Block", + "src": "7418:152:2", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 494, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "7432:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 497, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7451:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7443:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 495, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7443:7:2", + "typeDescriptions": {} + } + }, + "id": 498, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7443:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7432:21:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 508, + "nodeType": "IfStatement", + "src": "7428:91:2", + "trueBody": { + "id": 507, + "nodeType": "Block", + "src": "7455:64:2", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 503, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7505:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 502, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7497:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 501, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7497:7:2", + "typeDescriptions": {} + } + }, + "id": 504, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7497:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 500, + "name": "ERC20InvalidReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49, + "src": "7476:20:2", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$", + "typeString": "function (address) pure returns (error)" + } + }, + "id": 505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7476:32:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 506, + "nodeType": "RevertStatement", + "src": "7469:39:2" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 512, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7544:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 511, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7536:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 510, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7536:7:2", + "typeDescriptions": {} + } + }, + "id": 513, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7536:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 514, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "7548:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 515, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "7557:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 509, + "name": "_update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 486, + "src": "7528:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7528:35:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 517, + "nodeType": "ExpressionStatement", + "src": "7528:35:2" + } + ] + }, + "documentation": { + "id": 487, + "nodeType": "StructuredDocumentation", + "src": "7025:332:2", + "text": " @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n Relies on the `_update` mechanism\n Emits a {Transfer} event with `from` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead." + }, + "id": 519, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nameLocation": "7371:5:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 492, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 489, + "mutability": "mutable", + "name": "account", + "nameLocation": "7385:7:2", + "nodeType": "VariableDeclaration", + "scope": 519, + "src": "7377:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 488, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7377:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 491, + "mutability": "mutable", + "name": "value", + "nameLocation": "7402:5:2", + "nodeType": "VariableDeclaration", + "scope": 519, + "src": "7394:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 490, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7394:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7376:32:2" + }, + "returnParameters": { + "id": 493, + "nodeType": "ParameterList", + "parameters": [], + "src": "7418:0:2" + }, + "scope": 679, + "src": "7362:208:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 551, + "nodeType": "Block", + "src": "7944:150:2", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 527, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 522, + "src": "7958:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 530, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7977:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 529, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7969:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 528, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7969:7:2", + "typeDescriptions": {} + } + }, + "id": 531, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7969:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7958:21:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 541, + "nodeType": "IfStatement", + "src": "7954:89:2", + "trueBody": { + "id": 540, + "nodeType": "Block", + "src": "7981:62:2", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 536, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8029:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 535, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8021:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 534, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8021:7:2", + "typeDescriptions": {} + } + }, + "id": 537, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8021:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 533, + "name": "ERC20InvalidSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44, + "src": "8002:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$", + "typeString": "function (address) pure returns (error)" + } + }, + "id": 538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8002:30:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 539, + "nodeType": "RevertStatement", + "src": "7995:37:2" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 543, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 522, + "src": "8060:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 546, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8077:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 545, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8069:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 544, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8069:7:2", + "typeDescriptions": {} + } + }, + "id": 547, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8069:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 548, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 524, + "src": "8081:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 542, + "name": "_update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 486, + "src": "8052:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8052:35:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 550, + "nodeType": "ExpressionStatement", + "src": "8052:35:2" + } + ] + }, + "documentation": { + "id": 520, + "nodeType": "StructuredDocumentation", + "src": "7576:307:2", + "text": " @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n Relies on the `_update` mechanism.\n Emits a {Transfer} event with `to` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead" + }, + "id": 552, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nameLocation": "7897:5:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 525, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 522, + "mutability": "mutable", + "name": "account", + "nameLocation": "7911:7:2", + "nodeType": "VariableDeclaration", + "scope": 552, + "src": "7903:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 521, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7903:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 524, + "mutability": "mutable", + "name": "value", + "nameLocation": "7928:5:2", + "nodeType": "VariableDeclaration", + "scope": 552, + "src": "7920:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 523, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7920:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7902:32:2" + }, + "returnParameters": { + "id": 526, + "nodeType": "ParameterList", + "parameters": [], + "src": "7944:0:2" + }, + "scope": 679, + "src": "7888:206:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 569, + "nodeType": "Block", + "src": "8704:54:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 563, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 555, + "src": "8723:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 564, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 557, + "src": "8730:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 565, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "8739:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "74727565", + "id": 566, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8746:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 562, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 570, + 630 + ], + "referencedDeclaration": 630, + "src": "8714:8:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (address,address,uint256,bool)" + } + }, + "id": 567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8714:37:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 568, + "nodeType": "ExpressionStatement", + "src": "8714:37:2" + } + ] + }, + "documentation": { + "id": 553, + "nodeType": "StructuredDocumentation", + "src": "8100:525:2", + "text": " @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument." + }, + "id": 570, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nameLocation": "8639:8:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 560, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 555, + "mutability": "mutable", + "name": "owner", + "nameLocation": "8656:5:2", + "nodeType": "VariableDeclaration", + "scope": 570, + "src": "8648:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 554, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8648:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 557, + "mutability": "mutable", + "name": "spender", + "nameLocation": "8671:7:2", + "nodeType": "VariableDeclaration", + "scope": 570, + "src": "8663:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 556, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8663:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 559, + "mutability": "mutable", + "name": "value", + "nameLocation": "8688:5:2", + "nodeType": "VariableDeclaration", + "scope": 570, + "src": "8680:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 558, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8680:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8647:47:2" + }, + "returnParameters": { + "id": 561, + "nodeType": "ParameterList", + "parameters": [], + "src": "8704:0:2" + }, + "scope": 679, + "src": "8630:128:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 629, + "nodeType": "Block", + "src": "9703:334:2", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 582, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 573, + "src": "9717:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 585, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9734:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 584, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9726:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 583, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9726:7:2", + "typeDescriptions": {} + } + }, + "id": 586, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9726:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9717:19:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 596, + "nodeType": "IfStatement", + "src": "9713:89:2", + "trueBody": { + "id": 595, + "nodeType": "Block", + "src": "9738:64:2", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 591, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9788:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 590, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9780:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 589, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9780:7:2", + "typeDescriptions": {} + } + }, + "id": 592, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9780:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 588, + "name": "ERC20InvalidApprover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 63, + "src": "9759:20:2", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$", + "typeString": "function (address) pure returns (error)" + } + }, + "id": 593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9759:32:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 594, + "nodeType": "RevertStatement", + "src": "9752:39:2" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 597, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 575, + "src": "9815:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9834:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 599, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9826:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 598, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9826:7:2", + "typeDescriptions": {} + } + }, + "id": 601, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9826:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9815:21:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 611, + "nodeType": "IfStatement", + "src": "9811:90:2", + "trueBody": { + "id": 610, + "nodeType": "Block", + "src": "9838:63:2", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 606, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9887:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 605, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9879:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 604, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9879:7:2", + "typeDescriptions": {} + } + }, + "id": 607, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9879:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 603, + "name": "ERC20InvalidSpender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "9859:19:2", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$", + "typeString": "function (address) pure returns (error)" + } + }, + "id": 608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9859:31:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 609, + "nodeType": "RevertStatement", + "src": "9852:38:2" + } + ] + } + }, + { + "expression": { + "id": 618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 612, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 193, + "src": "9910:11:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 615, + "indexExpression": { + "id": 613, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 573, + "src": "9922:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9910:18:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 616, + "indexExpression": { + "id": 614, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 575, + "src": "9929:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9910:27:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 617, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 577, + "src": "9940:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9910:35:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 619, + "nodeType": "ExpressionStatement", + "src": "9910:35:2" + }, + { + "condition": { + "id": 620, + "name": "emitEvent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 579, + "src": "9959:9:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 628, + "nodeType": "IfStatement", + "src": "9955:76:2", + "trueBody": { + "id": 627, + "nodeType": "Block", + "src": "9970:61:2", + "statements": [ + { + "eventCall": { + "arguments": [ + { + "id": 622, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 573, + "src": "9998:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 623, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 575, + "src": "10005:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 624, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 577, + "src": "10014:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 621, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 700, + "src": "9989:8:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9989:31:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 626, + "nodeType": "EmitStatement", + "src": "9984:36:2" + } + ] + } + } + ] + }, + "documentation": { + "id": 571, + "nodeType": "StructuredDocumentation", + "src": "8764:836:2", + "text": " @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n `Approval` event during `transferFrom` operations.\n Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n true using the following override:\n ```solidity\n function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n super._approve(owner, spender, value, true);\n }\n ```\n Requirements are the same as {_approve}." + }, + "id": 630, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nameLocation": "9614:8:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 580, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 573, + "mutability": "mutable", + "name": "owner", + "nameLocation": "9631:5:2", + "nodeType": "VariableDeclaration", + "scope": 630, + "src": "9623:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 572, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9623:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 575, + "mutability": "mutable", + "name": "spender", + "nameLocation": "9646:7:2", + "nodeType": "VariableDeclaration", + "scope": 630, + "src": "9638:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 574, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9638:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 577, + "mutability": "mutable", + "name": "value", + "nameLocation": "9663:5:2", + "nodeType": "VariableDeclaration", + "scope": 630, + "src": "9655:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 576, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9655:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 579, + "mutability": "mutable", + "name": "emitEvent", + "nameLocation": "9675:9:2", + "nodeType": "VariableDeclaration", + "scope": 630, + "src": "9670:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 578, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9670:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "9622:63:2" + }, + "returnParameters": { + "id": 581, + "nodeType": "ParameterList", + "parameters": [], + "src": "9703:0:2" + }, + "scope": 679, + "src": "9605:432:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 677, + "nodeType": "Block", + "src": "10408:387:2", + "statements": [ + { + "assignments": [ + 641 + ], + "declarations": [ + { + "constant": false, + "id": 641, + "mutability": "mutable", + "name": "currentAllowance", + "nameLocation": "10426:16:2", + "nodeType": "VariableDeclaration", + "scope": 677, + "src": "10418:24:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 640, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10418:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 646, + "initialValue": { + "arguments": [ + { + "id": 643, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 633, + "src": "10455:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 644, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 635, + "src": "10462:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 642, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 306, + "src": "10445:9:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view returns (uint256)" + } + }, + "id": 645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10445:25:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10418:52:2" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 647, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 641, + "src": "10484:16:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 650, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10508:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 649, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10508:7:2", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 648, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "10503:4:2", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 651, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10503:13:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 652, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10517:3:2", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "10503:17:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10484:36:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 676, + "nodeType": "IfStatement", + "src": "10480:309:2", + "trueBody": { + "id": 675, + "nodeType": "Block", + "src": "10522:267:2", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 654, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 641, + "src": "10540:16:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 655, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 637, + "src": "10559:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10540:24:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 664, + "nodeType": "IfStatement", + "src": "10536:130:2", + "trueBody": { + "id": 663, + "nodeType": "Block", + "src": "10566:100:2", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 658, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 635, + "src": "10618:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 659, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 641, + "src": "10627:16:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 660, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 637, + "src": "10645:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 657, + "name": "ERC20InsufficientAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58, + "src": "10591:26:2", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$", + "typeString": "function (address,uint256,uint256) pure returns (error)" + } + }, + "id": 661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10591:60:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 662, + "nodeType": "RevertStatement", + "src": "10584:67:2" + } + ] + } + }, + { + "id": 674, + "nodeType": "UncheckedBlock", + "src": "10679:100:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 666, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 633, + "src": "10716:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 667, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 635, + "src": "10723:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 668, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 641, + "src": "10732:16:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 669, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 637, + "src": "10751:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10732:24:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "66616c7365", + "id": 671, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10758:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 665, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 570, + 630 + ], + "referencedDeclaration": 630, + "src": "10707:8:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (address,address,uint256,bool)" + } + }, + "id": 672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10707:57:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 673, + "nodeType": "ExpressionStatement", + "src": "10707:57:2" + } + ] + } + ] + } + } + ] + }, + "documentation": { + "id": 631, + "nodeType": "StructuredDocumentation", + "src": "10043:271:2", + "text": " @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n Does not update the allowance value in case of infinite allowance.\n Revert if not enough allowance is available.\n Does not emit an {Approval} event." + }, + "id": 678, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_spendAllowance", + "nameLocation": "10328:15:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 638, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 633, + "mutability": "mutable", + "name": "owner", + "nameLocation": "10352:5:2", + "nodeType": "VariableDeclaration", + "scope": 678, + "src": "10344:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 632, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10344:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 635, + "mutability": "mutable", + "name": "spender", + "nameLocation": "10367:7:2", + "nodeType": "VariableDeclaration", + "scope": 678, + "src": "10359:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 634, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10359:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 637, + "mutability": "mutable", + "name": "value", + "nameLocation": "10384:5:2", + "nodeType": "VariableDeclaration", + "scope": 678, + "src": "10376:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 636, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10376:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10343:47:2" + }, + "returnParameters": { + "id": 639, + "nodeType": "ParameterList", + "parameters": [], + "src": "10408:0:2" + }, + "scope": 679, + "src": "10319:476:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 680, + "src": "1106:9691:2", + "usedErrors": [ + 39, + 44, + 49, + 58, + 63, + 68 + ], + "usedEvents": [ + 691, + 700 + ] + } + ], + "src": "105:10693:2" + }, + "id": 2 + }, + "contracts/token/ERC20/IERC20.sol": { + "ast": { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 757 + ] + }, + "id": 758, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 681, + "literals": [ + "solidity", + ">=", + "0.4", + ".16" + ], + "nodeType": "PragmaDirective", + "src": "106:25:3" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC20", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 682, + "nodeType": "StructuredDocumentation", + "src": "133:71:3", + "text": " @dev Interface of the ERC-20 standard as defined in the ERC." + }, + "fullyImplemented": false, + "id": 757, + "linearizedBaseContracts": [ + 757 + ], + "name": "IERC20", + "nameLocation": "215:6:3", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": { + "id": 683, + "nodeType": "StructuredDocumentation", + "src": "228:158:3", + "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero." + }, + "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "id": 691, + "name": "Transfer", + "nameLocation": "397:8:3", + "nodeType": "EventDefinition", + "parameters": { + "id": 690, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 685, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "422:4:3", + "nodeType": "VariableDeclaration", + "scope": 691, + "src": "406:20:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 684, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "406:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 687, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "444:2:3", + "nodeType": "VariableDeclaration", + "scope": 691, + "src": "428:18:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 686, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "428:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 689, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "456:5:3", + "nodeType": "VariableDeclaration", + "scope": 691, + "src": "448:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 688, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "448:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "405:57:3" + }, + "src": "391:72:3" + }, + { + "anonymous": false, + "documentation": { + "id": 692, + "nodeType": "StructuredDocumentation", + "src": "469:148:3", + "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance." + }, + "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "id": 700, + "name": "Approval", + "nameLocation": "628:8:3", + "nodeType": "EventDefinition", + "parameters": { + "id": 699, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 694, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "653:5:3", + "nodeType": "VariableDeclaration", + "scope": 700, + "src": "637:21:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 693, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "637:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 696, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nameLocation": "676:7:3", + "nodeType": "VariableDeclaration", + "scope": 700, + "src": "660:23:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 695, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "660:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 698, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "693:5:3", + "nodeType": "VariableDeclaration", + "scope": 700, + "src": "685:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 697, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "685:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "636:63:3" + }, + "src": "622:78:3" + }, + { + "documentation": { + "id": 701, + "nodeType": "StructuredDocumentation", + "src": "706:65:3", + "text": " @dev Returns the value of tokens in existence." + }, + "functionSelector": "18160ddd", + "id": 706, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "785:11:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 702, + "nodeType": "ParameterList", + "parameters": [], + "src": "796:2:3" + }, + "returnParameters": { + "id": 705, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 704, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 706, + "src": "822:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 703, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "822:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "821:9:3" + }, + "scope": 757, + "src": "776:55:3", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 707, + "nodeType": "StructuredDocumentation", + "src": "837:71:3", + "text": " @dev Returns the value of tokens owned by `account`." + }, + "functionSelector": "70a08231", + "id": 714, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "922:9:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 710, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 709, + "mutability": "mutable", + "name": "account", + "nameLocation": "940:7:3", + "nodeType": "VariableDeclaration", + "scope": 714, + "src": "932:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 708, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "932:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "931:17:3" + }, + "returnParameters": { + "id": 713, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 712, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 714, + "src": "972:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 711, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "972:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "971:9:3" + }, + "scope": 757, + "src": "913:68:3", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 715, + "nodeType": "StructuredDocumentation", + "src": "987:213:3", + "text": " @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "a9059cbb", + "id": 724, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "1214:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 720, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 717, + "mutability": "mutable", + "name": "to", + "nameLocation": "1231:2:3", + "nodeType": "VariableDeclaration", + "scope": 724, + "src": "1223:10:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 716, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1223:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 719, + "mutability": "mutable", + "name": "value", + "nameLocation": "1243:5:3", + "nodeType": "VariableDeclaration", + "scope": 724, + "src": "1235:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 718, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1235:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1222:27:3" + }, + "returnParameters": { + "id": 723, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 722, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 724, + "src": "1268:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 721, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1268:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1267:6:3" + }, + "scope": 757, + "src": "1205:69:3", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 725, + "nodeType": "StructuredDocumentation", + "src": "1280:264:3", + "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called." + }, + "functionSelector": "dd62ed3e", + "id": 734, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nameLocation": "1558:9:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 730, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 727, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1576:5:3", + "nodeType": "VariableDeclaration", + "scope": 734, + "src": "1568:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 726, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1568:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 729, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1591:7:3", + "nodeType": "VariableDeclaration", + "scope": 734, + "src": "1583:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 728, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1583:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1567:32:3" + }, + "returnParameters": { + "id": 733, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 732, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 734, + "src": "1623:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 731, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1623:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1622:9:3" + }, + "scope": 757, + "src": "1549:83:3", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 735, + "nodeType": "StructuredDocumentation", + "src": "1638:667:3", + "text": " @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event." + }, + "functionSelector": "095ea7b3", + "id": 744, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "2319:7:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 740, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 737, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2335:7:3", + "nodeType": "VariableDeclaration", + "scope": 744, + "src": "2327:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 736, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2327:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 739, + "mutability": "mutable", + "name": "value", + "nameLocation": "2352:5:3", + "nodeType": "VariableDeclaration", + "scope": 744, + "src": "2344:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 738, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2344:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2326:32:3" + }, + "returnParameters": { + "id": 743, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 742, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 744, + "src": "2377:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 741, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2377:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2376:6:3" + }, + "scope": 757, + "src": "2310:73:3", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 745, + "nodeType": "StructuredDocumentation", + "src": "2389:297:3", + "text": " @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "23b872dd", + "id": 756, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "2700:12:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 752, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 747, + "mutability": "mutable", + "name": "from", + "nameLocation": "2721:4:3", + "nodeType": "VariableDeclaration", + "scope": 756, + "src": "2713:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 746, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2713:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 749, + "mutability": "mutable", + "name": "to", + "nameLocation": "2735:2:3", + "nodeType": "VariableDeclaration", + "scope": 756, + "src": "2727:10:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 748, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2727:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 751, + "mutability": "mutable", + "name": "value", + "nameLocation": "2747:5:3", + "nodeType": "VariableDeclaration", + "scope": 756, + "src": "2739:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 750, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2739:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2712:41:3" + }, + "returnParameters": { + "id": 755, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 754, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 756, + "src": "2772:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 753, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2772:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2771:6:3" + }, + "scope": 757, + "src": "2691:87:3", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 758, + "src": "205:2575:3", + "usedErrors": [], + "usedEvents": [ + 691, + 700 + ] + } + ], + "src": "106:2675:3" + }, + "id": 3 + }, + "contracts/token/ERC20/extensions/ERC20Pausable.sol": { + "ast": { + "absolutePath": "contracts/token/ERC20/extensions/ERC20Pausable.sol", + "exportedSymbols": { + "ERC20": [ + 679 + ], + "ERC20Pausable": [ + 791 + ], + "Pausable": [ + 960 + ] + }, + "id": 792, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 759, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "124:24:4" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20.sol", + "file": "../ERC20.sol", + "id": 761, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 792, + "sourceUnit": 680, + "src": "150:35:4", + "symbolAliases": [ + { + "foreign": { + "id": 760, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 679, + "src": "158:5:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/utils/Pausable.sol", + "file": "../../../utils/Pausable.sol", + "id": 763, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 792, + "sourceUnit": 961, + "src": "186:53:4", + "symbolAliases": [ + { + "foreign": { + "id": 762, + "name": "Pausable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 960, + "src": "194:8:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 765, + "name": "ERC20", + "nameLocations": [ + "965:5:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 679, + "src": "965:5:4" + }, + "id": 766, + "nodeType": "InheritanceSpecifier", + "src": "965:5:4" + }, + { + "baseName": { + "id": 767, + "name": "Pausable", + "nameLocations": [ + "972:8:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 960, + "src": "972:8:4" + }, + "id": 768, + "nodeType": "InheritanceSpecifier", + "src": "972:8:4" + } + ], + "canonicalName": "ERC20Pausable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 764, + "nodeType": "StructuredDocumentation", + "src": "241:688:4", + "text": " @dev ERC-20 token with pausable token transfers, minting and burning.\n Useful for scenarios such as preventing trades until the end of an evaluation\n period, or having an emergency switch for freezing all token transfers in the\n event of a large bug.\n IMPORTANT: This contract does not include public pause and unpause functions. In\n addition to inheriting this contract, you must define both functions, invoking the\n {Pausable-_pause} and {Pausable-_unpause} internal functions, with appropriate\n access control, e.g. using {AccessControl} or {Ownable}. Not doing so will\n make the contract pause mechanism of the contract unreachable, and thus unusable." + }, + "fullyImplemented": true, + "id": 791, + "linearizedBaseContracts": [ + 791, + 960, + 679, + 69, + 817, + 757, + 847 + ], + "name": "ERC20Pausable", + "nameLocation": "948:13:4", + "nodeType": "ContractDefinition", + "nodes": [ + { + "baseFunctions": [ + 486 + ], + "body": { + "id": 789, + "nodeType": "Block", + "src": "1211:47:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 784, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 771, + "src": "1235:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 785, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 773, + "src": "1241:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 786, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 775, + "src": "1245:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 781, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967271, + "src": "1221:5:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_ERC20Pausable_$791_$", + "typeString": "type(contract super ERC20Pausable)" + } + }, + "id": 783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1227:7:4", + "memberName": "_update", + "nodeType": "MemberAccess", + "referencedDeclaration": 486, + "src": "1221:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1221:30:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 788, + "nodeType": "ExpressionStatement", + "src": "1221:30:4" + } + ] + }, + "documentation": { + "id": 769, + "nodeType": "StructuredDocumentation", + "src": "987:121:4", + "text": " @dev See {ERC20-_update}.\n Requirements:\n - the contract must not be paused." + }, + "id": 790, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 779, + "kind": "modifierInvocation", + "modifierName": { + "id": 778, + "name": "whenNotPaused", + "nameLocations": [ + "1197:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 880, + "src": "1197:13:4" + }, + "nodeType": "ModifierInvocation", + "src": "1197:13:4" + } + ], + "name": "_update", + "nameLocation": "1122:7:4", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 777, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1188:8:4" + }, + "parameters": { + "id": 776, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 771, + "mutability": "mutable", + "name": "from", + "nameLocation": "1138:4:4", + "nodeType": "VariableDeclaration", + "scope": 790, + "src": "1130:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 770, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1130:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 773, + "mutability": "mutable", + "name": "to", + "nameLocation": "1152:2:4", + "nodeType": "VariableDeclaration", + "scope": 790, + "src": "1144:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 772, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1144:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 775, + "mutability": "mutable", + "name": "value", + "nameLocation": "1164:5:4", + "nodeType": "VariableDeclaration", + "scope": 790, + "src": "1156:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 774, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1156:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1129:41:4" + }, + "returnParameters": { + "id": 780, + "nodeType": "ParameterList", + "parameters": [], + "src": "1211:0:4" + }, + "scope": 791, + "src": "1113:145:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 792, + "src": "930:330:4", + "usedErrors": [ + 39, + 44, + 49, + 58, + 63, + 68, + 869, + 872 + ], + "usedEvents": [ + 691, + 700, + 861, + 866 + ] + } + ], + "src": "124:1137:4" + }, + "id": 4 + }, + "contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "ast": { + "absolutePath": "contracts/token/ERC20/extensions/IERC20Metadata.sol", + "exportedSymbols": { + "IERC20": [ + 757 + ], + "IERC20Metadata": [ + 817 + ] + }, + "id": 818, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 793, + "literals": [ + "solidity", + ">=", + "0.6", + ".2" + ], + "nodeType": "PragmaDirective", + "src": "125:24:5" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "../IERC20.sol", + "id": 795, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 818, + "sourceUnit": 758, + "src": "151:37:5", + "symbolAliases": [ + { + "foreign": { + "id": 794, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 757, + "src": "159:6:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 797, + "name": "IERC20", + "nameLocations": [ + "306:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 757, + "src": "306:6:5" + }, + "id": 798, + "nodeType": "InheritanceSpecifier", + "src": "306:6:5" + } + ], + "canonicalName": "IERC20Metadata", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 796, + "nodeType": "StructuredDocumentation", + "src": "190:87:5", + "text": " @dev Interface for the optional metadata functions from the ERC-20 standard." + }, + "fullyImplemented": false, + "id": 817, + "linearizedBaseContracts": [ + 817, + 757 + ], + "name": "IERC20Metadata", + "nameLocation": "288:14:5", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 799, + "nodeType": "StructuredDocumentation", + "src": "319:54:5", + "text": " @dev Returns the name of the token." + }, + "functionSelector": "06fdde03", + "id": 804, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "387:4:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 800, + "nodeType": "ParameterList", + "parameters": [], + "src": "391:2:5" + }, + "returnParameters": { + "id": 803, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 802, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 804, + "src": "417:13:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 801, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "417:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "416:15:5" + }, + "scope": 817, + "src": "378:54:5", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 805, + "nodeType": "StructuredDocumentation", + "src": "438:56:5", + "text": " @dev Returns the symbol of the token." + }, + "functionSelector": "95d89b41", + "id": 810, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "508:6:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 806, + "nodeType": "ParameterList", + "parameters": [], + "src": "514:2:5" + }, + "returnParameters": { + "id": 809, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 808, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 810, + "src": "540:13:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 807, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "540:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "539:15:5" + }, + "scope": 817, + "src": "499:56:5", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 811, + "nodeType": "StructuredDocumentation", + "src": "561:65:5", + "text": " @dev Returns the decimals places of the token." + }, + "functionSelector": "313ce567", + "id": 816, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nameLocation": "640:8:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 812, + "nodeType": "ParameterList", + "parameters": [], + "src": "648:2:5" + }, + "returnParameters": { + "id": 815, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 814, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 816, + "src": "674:5:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 813, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "674:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "673:7:5" + }, + "scope": 817, + "src": "631:50:5", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 818, + "src": "278:405:5", + "usedErrors": [], + "usedEvents": [ + 691, + 700 + ] + } + ], + "src": "125:559:5" + }, + "id": 5 + }, + "contracts/utils/Context.sol": { + "ast": { + "absolutePath": "contracts/utils/Context.sol", + "exportedSymbols": { + "Context": [ + 847 + ] + }, + "id": 848, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 819, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "101:24:6" + }, + { + "abstract": true, + "baseContracts": [], + "canonicalName": "Context", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 820, + "nodeType": "StructuredDocumentation", + "src": "127:496:6", + "text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts." + }, + "fullyImplemented": true, + "id": 847, + "linearizedBaseContracts": [ + 847 + ], + "name": "Context", + "nameLocation": "642:7:6", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 828, + "nodeType": "Block", + "src": "718:34:6", + "statements": [ + { + "expression": { + "expression": { + "id": 825, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "735:3:6", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "739:6:6", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "735:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 824, + "id": 827, + "nodeType": "Return", + "src": "728:17:6" + } + ] + }, + "id": 829, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nameLocation": "665:10:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 821, + "nodeType": "ParameterList", + "parameters": [], + "src": "675:2:6" + }, + "returnParameters": { + "id": 824, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 823, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 829, + "src": "709:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 822, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "709:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "708:9:6" + }, + "scope": 847, + "src": "656:96:6", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 837, + "nodeType": "Block", + "src": "825:32:6", + "statements": [ + { + "expression": { + "expression": { + "id": 834, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "842:3:6", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "846:4:6", + "memberName": "data", + "nodeType": "MemberAccess", + "src": "842:8:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "functionReturnParameters": 833, + "id": 836, + "nodeType": "Return", + "src": "835:15:6" + } + ] + }, + "id": 838, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgData", + "nameLocation": "767:8:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 830, + "nodeType": "ParameterList", + "parameters": [], + "src": "775:2:6" + }, + "returnParameters": { + "id": 833, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 832, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 838, + "src": "809:14:6", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 831, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "809:5:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "808:16:6" + }, + "scope": 847, + "src": "758:99:6", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 845, + "nodeType": "Block", + "src": "935:25:6", + "statements": [ + { + "expression": { + "hexValue": "30", + "id": 843, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "952:1:6", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 842, + "id": 844, + "nodeType": "Return", + "src": "945:8:6" + } + ] + }, + "id": 846, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_contextSuffixLength", + "nameLocation": "872:20:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 839, + "nodeType": "ParameterList", + "parameters": [], + "src": "892:2:6" + }, + "returnParameters": { + "id": 842, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 841, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 846, + "src": "926:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 840, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "926:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "925:9:6" + }, + "scope": 847, + "src": "863:97:6", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 848, + "src": "624:338:6", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "101:862:6" + }, + "id": 6 + }, + "contracts/utils/Pausable.sol": { + "ast": { + "absolutePath": "contracts/utils/Pausable.sol", + "exportedSymbols": { + "Context": [ + 847 + ], + "Pausable": [ + 960 + ] + }, + "id": 961, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 849, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "102:24:7" + }, + { + "absolutePath": "contracts/utils/Context.sol", + "file": "../utils/Context.sol", + "id": 851, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 961, + "sourceUnit": 848, + "src": "128:45:7", + "symbolAliases": [ + { + "foreign": { + "id": 850, + "name": "Context", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 847, + "src": "136:7:7", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 853, + "name": "Context", + "nameLocations": [ + "645:7:7" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 847, + "src": "645:7:7" + }, + "id": 854, + "nodeType": "InheritanceSpecifier", + "src": "645:7:7" + } + ], + "canonicalName": "Pausable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 852, + "nodeType": "StructuredDocumentation", + "src": "175:439:7", + "text": " @dev Contract module which allows children to implement an emergency stop\n mechanism that can be triggered by an authorized account.\n This module is used through inheritance. It will make available the\n modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n the functions of your contract. Note that they will not be pausable by\n simply including this module, only once the modifiers are put in place." + }, + "fullyImplemented": true, + "id": 960, + "linearizedBaseContracts": [ + 960, + 847 + ], + "name": "Pausable", + "nameLocation": "633:8:7", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 856, + "mutability": "mutable", + "name": "_paused", + "nameLocation": "675:7:7", + "nodeType": "VariableDeclaration", + "scope": 960, + "src": "659:23:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 855, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "659:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": { + "id": 857, + "nodeType": "StructuredDocumentation", + "src": "689:73:7", + "text": " @dev Emitted when the pause is triggered by `account`." + }, + "eventSelector": "62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258", + "id": 861, + "name": "Paused", + "nameLocation": "773:6:7", + "nodeType": "EventDefinition", + "parameters": { + "id": 860, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 859, + "indexed": false, + "mutability": "mutable", + "name": "account", + "nameLocation": "788:7:7", + "nodeType": "VariableDeclaration", + "scope": 861, + "src": "780:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 858, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "780:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "779:17:7" + }, + "src": "767:30:7" + }, + { + "anonymous": false, + "documentation": { + "id": 862, + "nodeType": "StructuredDocumentation", + "src": "803:70:7", + "text": " @dev Emitted when the pause is lifted by `account`." + }, + "eventSelector": "5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa", + "id": 866, + "name": "Unpaused", + "nameLocation": "884:8:7", + "nodeType": "EventDefinition", + "parameters": { + "id": 865, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 864, + "indexed": false, + "mutability": "mutable", + "name": "account", + "nameLocation": "901:7:7", + "nodeType": "VariableDeclaration", + "scope": 866, + "src": "893:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 863, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "893:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "892:17:7" + }, + "src": "878:32:7" + }, + { + "documentation": { + "id": 867, + "nodeType": "StructuredDocumentation", + "src": "916:76:7", + "text": " @dev The operation failed because the contract is paused." + }, + "errorSelector": "d93c0665", + "id": 869, + "name": "EnforcedPause", + "nameLocation": "1003:13:7", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 868, + "nodeType": "ParameterList", + "parameters": [], + "src": "1016:2:7" + }, + "src": "997:22:7" + }, + { + "documentation": { + "id": 870, + "nodeType": "StructuredDocumentation", + "src": "1025:80:7", + "text": " @dev The operation failed because the contract is not paused." + }, + "errorSelector": "8dfc202b", + "id": 872, + "name": "ExpectedPause", + "nameLocation": "1116:13:7", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 871, + "nodeType": "ParameterList", + "parameters": [], + "src": "1129:2:7" + }, + "src": "1110:22:7" + }, + { + "body": { + "id": 879, + "nodeType": "Block", + "src": "1343:47:7", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 875, + "name": "_requireNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 914, + "src": "1353:17:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1353:19:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 877, + "nodeType": "ExpressionStatement", + "src": "1353:19:7" + }, + { + "id": 878, + "nodeType": "PlaceholderStatement", + "src": "1382:1:7" + } + ] + }, + "documentation": { + "id": 873, + "nodeType": "StructuredDocumentation", + "src": "1138:175:7", + "text": " @dev Modifier to make a function callable only when the contract is not paused.\n Requirements:\n - The contract must not be paused." + }, + "id": 880, + "name": "whenNotPaused", + "nameLocation": "1327:13:7", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 874, + "nodeType": "ParameterList", + "parameters": [], + "src": "1340:2:7" + }, + "src": "1318:72:7", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 887, + "nodeType": "Block", + "src": "1590:44:7", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 883, + "name": "_requirePaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 927, + "src": "1600:14:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1600:16:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 885, + "nodeType": "ExpressionStatement", + "src": "1600:16:7" + }, + { + "id": 886, + "nodeType": "PlaceholderStatement", + "src": "1626:1:7" + } + ] + }, + "documentation": { + "id": 881, + "nodeType": "StructuredDocumentation", + "src": "1396:167:7", + "text": " @dev Modifier to make a function callable only when the contract is paused.\n Requirements:\n - The contract must be paused." + }, + "id": 888, + "name": "whenPaused", + "nameLocation": "1577:10:7", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 882, + "nodeType": "ParameterList", + "parameters": [], + "src": "1587:2:7" + }, + "src": "1568:66:7", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 901, + "nodeType": "Block", + "src": "1782:51:7", + "statements": [ + { + "expression": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 896, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 894, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 856, + "src": "1799:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "32", + "id": 895, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1810:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "1799:12:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "hexValue": "66616c7365", + "id": 898, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1821:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "id": 899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "1799:27:7", + "trueExpression": { + "hexValue": "74727565", + "id": 897, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1814:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 893, + "id": 900, + "nodeType": "Return", + "src": "1792:34:7" + } + ] + }, + "documentation": { + "id": 889, + "nodeType": "StructuredDocumentation", + "src": "1640:84:7", + "text": " @dev Returns true if the contract is paused, and false otherwise." + }, + "functionSelector": "5c975abb", + "id": 902, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "paused", + "nameLocation": "1738:6:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 890, + "nodeType": "ParameterList", + "parameters": [], + "src": "1744:2:7" + }, + "returnParameters": { + "id": 893, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 892, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 902, + "src": "1776:4:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 891, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1776:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1775:6:7" + }, + "scope": 960, + "src": "1729:104:7", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 913, + "nodeType": "Block", + "src": "1952:77:7", + "statements": [ + { + "condition": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 906, + "name": "paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 902, + "src": "1966:6:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1966:8:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 912, + "nodeType": "IfStatement", + "src": "1962:61:7", + "trueBody": { + "id": 911, + "nodeType": "Block", + "src": "1976:47:7", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 908, + "name": "EnforcedPause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 869, + "src": "1997:13:7", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1997:15:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 910, + "nodeType": "RevertStatement", + "src": "1990:22:7" + } + ] + } + } + ] + }, + "documentation": { + "id": 903, + "nodeType": "StructuredDocumentation", + "src": "1839:57:7", + "text": " @dev Throws if the contract is paused." + }, + "id": 914, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_requireNotPaused", + "nameLocation": "1910:17:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 904, + "nodeType": "ParameterList", + "parameters": [], + "src": "1927:2:7" + }, + "returnParameters": { + "id": 905, + "nodeType": "ParameterList", + "parameters": [], + "src": "1952:0:7" + }, + "scope": 960, + "src": "1901:128:7", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 926, + "nodeType": "Block", + "src": "2149:78:7", + "statements": [ + { + "condition": { + "id": 920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2163:9:7", + "subExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 918, + "name": "paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 902, + "src": "2164:6:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2164:8:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 925, + "nodeType": "IfStatement", + "src": "2159:62:7", + "trueBody": { + "id": 924, + "nodeType": "Block", + "src": "2174:47:7", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 921, + "name": "ExpectedPause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 872, + "src": "2195:13:7", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2195:15:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 923, + "nodeType": "RevertStatement", + "src": "2188:22:7" + } + ] + } + } + ] + }, + "documentation": { + "id": 915, + "nodeType": "StructuredDocumentation", + "src": "2035:61:7", + "text": " @dev Throws if the contract is not paused." + }, + "id": 927, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_requirePaused", + "nameLocation": "2110:14:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 916, + "nodeType": "ParameterList", + "parameters": [], + "src": "2124:2:7" + }, + "returnParameters": { + "id": 917, + "nodeType": "ParameterList", + "parameters": [], + "src": "2149:0:7" + }, + "scope": 960, + "src": "2101:126:7", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 942, + "nodeType": "Block", + "src": "2411:63:7", + "statements": [ + { + "expression": { + "id": 935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 933, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 856, + "src": "2421:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "32", + "id": 934, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2431:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "2421:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 936, + "nodeType": "ExpressionStatement", + "src": "2421:11:7" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 938, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 829, + "src": "2454:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2454:12:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 937, + "name": "Paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 861, + "src": "2447:6:7", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 940, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2447:20:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 941, + "nodeType": "EmitStatement", + "src": "2442:25:7" + } + ] + }, + "documentation": { + "id": 928, + "nodeType": "StructuredDocumentation", + "src": "2233:124:7", + "text": " @dev Triggers stopped state.\n Requirements:\n - The contract must not be paused." + }, + "id": 943, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 931, + "kind": "modifierInvocation", + "modifierName": { + "id": 930, + "name": "whenNotPaused", + "nameLocations": [ + "2397:13:7" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 880, + "src": "2397:13:7" + }, + "nodeType": "ModifierInvocation", + "src": "2397:13:7" + } + ], + "name": "_pause", + "nameLocation": "2371:6:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 929, + "nodeType": "ParameterList", + "parameters": [], + "src": "2377:2:7" + }, + "returnParameters": { + "id": 932, + "nodeType": "ParameterList", + "parameters": [], + "src": "2411:0:7" + }, + "scope": 960, + "src": "2362:112:7", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 958, + "nodeType": "Block", + "src": "2654:65:7", + "statements": [ + { + "expression": { + "id": 951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 949, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 856, + "src": "2664:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "31", + "id": 950, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2674:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2664:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 952, + "nodeType": "ExpressionStatement", + "src": "2664:11:7" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 954, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 829, + "src": "2699:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2699:12:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 953, + "name": "Unpaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 866, + "src": "2690:8:7", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 956, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2690:22:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 957, + "nodeType": "EmitStatement", + "src": "2685:27:7" + } + ] + }, + "documentation": { + "id": 944, + "nodeType": "StructuredDocumentation", + "src": "2480:121:7", + "text": " @dev Returns to normal state.\n Requirements:\n - The contract must be paused." + }, + "id": 959, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 947, + "kind": "modifierInvocation", + "modifierName": { + "id": 946, + "name": "whenPaused", + "nameLocations": [ + "2643:10:7" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 888, + "src": "2643:10:7" + }, + "nodeType": "ModifierInvocation", + "src": "2643:10:7" + } + ], + "name": "_unpause", + "nameLocation": "2615:8:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 945, + "nodeType": "ParameterList", + "parameters": [], + "src": "2623:2:7" + }, + "returnParameters": { + "id": 948, + "nodeType": "ParameterList", + "parameters": [], + "src": "2654:0:7" + }, + "scope": 960, + "src": "2606:113:7", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 961, + "src": "615:2106:7", + "usedErrors": [ + 869, + 872 + ], + "usedEvents": [ + 861, + 866 + ] + } + ], + "src": "102:2620:7" + }, + "id": 7 + } + } + } +} \ No newline at end of file diff --git a/contracts/token/ERC20/extensions/artifacts/ERC20Pausable.json b/contracts/token/ERC20/extensions/artifacts/ERC20Pausable.json new file mode 100644 index 00000000000..55ef00341ae --- /dev/null +++ b/contracts/token/ERC20/extensions/artifacts/ERC20Pausable.json @@ -0,0 +1,423 @@ +{ + "deploy": { + "VM:-": { + "linkReferences": {}, + "autoDeployLib": true + }, + "main:1": { + "linkReferences": {}, + "autoDeployLib": true + }, + "ropsten:3": { + "linkReferences": {}, + "autoDeployLib": true + }, + "rinkeby:4": { + "linkReferences": {}, + "autoDeployLib": true + }, + "kovan:42": { + "linkReferences": {}, + "autoDeployLib": true + }, + "goerli:5": { + "linkReferences": {}, + "autoDeployLib": true + }, + "Custom": { + "linkReferences": {}, + "autoDeployLib": true + } + }, + "data": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "name()": "06fdde03", + "paused()": "5c975abb", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + }, + { + "inputs": [], + "name": "EnforcedPause", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedPause", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} \ No newline at end of file diff --git a/contracts/token/ERC20/extensions/artifacts/ERC20Pausable_metadata.json b/contracts/token/ERC20/extensions/artifacts/ERC20Pausable_metadata.json new file mode 100644 index 00000000000..5d4e03f62ee --- /dev/null +++ b/contracts/token/ERC20/extensions/artifacts/ERC20Pausable_metadata.json @@ -0,0 +1,563 @@ +{ + "compiler": { + "version": "0.8.30+commit.73712a01" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + }, + { + "inputs": [], + "name": "EnforcedPause", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedPause", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "details": "ERC-20 token with pausable token transfers, minting and burning. Useful for scenarios such as preventing trades until the end of an evaluation period, or having an emergency switch for freezing all token transfers in the event of a large bug. IMPORTANT: This contract does not include public pause and unpause functions. In addition to inheriting this contract, you must define both functions, invoking the {Pausable-_pause} and {Pausable-_unpause} internal functions, with appropriate access control, e.g. using {AccessControl} or {Ownable}. Not doing so will make the contract pause mechanism of the contract unreachable, and thus unusable.", + "errors": { + "ERC20InsufficientAllowance(address,uint256,uint256)": [ + { + "details": "Indicates a failure with the `spender`’s `allowance`. Used in transfers.", + "params": { + "allowance": "Amount of tokens a `spender` is allowed to operate with.", + "needed": "Minimum amount required to perform a transfer.", + "spender": "Address that may be allowed to operate on tokens without being their owner." + } + } + ], + "ERC20InsufficientBalance(address,uint256,uint256)": [ + { + "details": "Indicates an error related to the current `balance` of a `sender`. Used in transfers.", + "params": { + "balance": "Current balance for the interacting account.", + "needed": "Minimum amount required to perform a transfer.", + "sender": "Address whose tokens are being transferred." + } + } + ], + "ERC20InvalidApprover(address)": [ + { + "details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.", + "params": { + "approver": "Address initiating an approval operation." + } + } + ], + "ERC20InvalidReceiver(address)": [ + { + "details": "Indicates a failure with the token `receiver`. Used in transfers.", + "params": { + "receiver": "Address to which tokens are being transferred." + } + } + ], + "ERC20InvalidSender(address)": [ + { + "details": "Indicates a failure with the token `sender`. Used in transfers.", + "params": { + "sender": "Address whose tokens are being transferred." + } + } + ], + "ERC20InvalidSpender(address)": [ + { + "details": "Indicates a failure with the `spender` to be approved. Used in approvals.", + "params": { + "spender": "Address that may be allowed to operate on tokens without being their owner." + } + } + ], + "EnforcedPause()": [ + { + "details": "The operation failed because the contract is paused." + } + ], + "ExpectedPause()": [ + { + "details": "The operation failed because the contract is not paused." + } + ] + }, + "events": { + "Approval(address,address,uint256)": { + "details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance." + }, + "Paused(address)": { + "details": "Emitted when the pause is triggered by `account`." + }, + "Transfer(address,address,uint256)": { + "details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero." + }, + "Unpaused(address)": { + "details": "Emitted when the pause is lifted by `account`." + } + }, + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called." + }, + "approve(address,uint256)": { + "details": "See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address." + }, + "balanceOf(address)": { + "details": "Returns the value of tokens owned by `account`." + }, + "decimals()": { + "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}." + }, + "name()": { + "details": "Returns the name of the token." + }, + "paused()": { + "details": "Returns true if the contract is paused, and false otherwise." + }, + "symbol()": { + "details": "Returns the symbol of the token, usually a shorter version of the name." + }, + "totalSupply()": { + "details": "Returns the value of tokens in existence." + }, + "transfer(address,uint256)": { + "details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`." + }, + "transferFrom(address,address,uint256)": { + "details": "See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`." + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "settings": { + "compilationTarget": { + "contracts/token/ERC20/extensions/ERC20Pausable.sol": "ERC20Pausable" + }, + "evmVersion": "prague", + "libraries": {}, + "metadata": { + "bytecodeHash": "ipfs" + }, + "optimizer": { + "enabled": false, + "runs": 200 + }, + "remappings": [ + ":@openzeppelin/contracts/=contracts/" + ] + }, + "sources": { + "contracts/interfaces/draft-IERC6093.sol": { + "keccak256": "0xa667ad942f67a3a72830ba2db2556b22c94a0d0e7b934cb1af19dbb52c701011", + "license": "MIT", + "urls": [ + "bzz-raw://a04504e81403d9f3c45593e0e29f928ff93fbcd11ea961aa8cbd96b05f80aa6e", + "dweb:/ipfs/QmZtHcvctLMa4Ap1ayqq1kyKt8EN5Ni2851daEdjNNYacG" + ] + }, + "contracts/token/ERC20/ERC20.sol": { + "keccak256": "0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994", + "license": "MIT", + "urls": [ + "bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c", + "dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu" + ] + }, + "contracts/token/ERC20/IERC20.sol": { + "keccak256": "0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2", + "license": "MIT", + "urls": [ + "bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303", + "dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV" + ] + }, + "contracts/token/ERC20/extensions/ERC20Pausable.sol": { + "keccak256": "0x756aee61d83960d324973de3a64920a02b480efe662b611fb05ea506d844aa55", + "license": "MIT", + "urls": [ + "bzz-raw://4dfb71ab2f5fcc530226a25bba4d808f4d22a7f383cae4a3be3629ec057b276c", + "dweb:/ipfs/QmRzyetUjbr9Gx1pcXYSsE5rz4XypfEbZgmBvZKUNUJQLR" + ] + }, + "contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "keccak256": "0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f", + "license": "MIT", + "urls": [ + "bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e", + "dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR" + ] + }, + "contracts/utils/Context.sol": { + "keccak256": "0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2", + "license": "MIT", + "urls": [ + "bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12", + "dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF" + ] + }, + "contracts/utils/Pausable.sol": { + "keccak256": "0xf11f182b233f92a2c7169c0a58e9b79d68e4fb16487210e4620349f8c60072ca", + "license": "MIT", + "urls": [ + "bzz-raw://15184450e50c0795f97be002c004abf72d7dc2f49ac9a5ac278ac0efb54e2a63", + "dweb:/ipfs/QmeuEsznhKAB3ENZpuYka6iuvWey3hNXNV8DrpXK5FZacG" + ] + } + }, + "version": 1 +} \ No newline at end of file diff --git a/contracts/token/ERC20/extensions/artifacts/build-info/049fd1c0bd1f762625c9147bf7494fe0.json b/contracts/token/ERC20/extensions/artifacts/build-info/049fd1c0bd1f762625c9147bf7494fe0.json new file mode 100644 index 00000000000..57d7f182703 --- /dev/null +++ b/contracts/token/ERC20/extensions/artifacts/build-info/049fd1c0bd1f762625c9147bf7494fe0.json @@ -0,0 +1,14849 @@ +{ + "id": "049fd1c0bd1f762625c9147bf7494fe0", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.30", + "solcLongVersion": "0.8.30+commit.73712a01", + "input": { + "language": "Solidity", + "sources": { + "contracts/token/ERC20/extensions/ERC20Pausable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/ERC20Pausable.sol)\n\npragma solidity ^0.8.20;\n\nimport {ERC20} from \"../ERC20.sol\";\nimport {Pausable} from \"../../../utils/Pausable.sol\";\n\n/**\n * @dev ERC-20 token with pausable token transfers, minting and burning.\n *\n * Useful for scenarios such as preventing trades until the end of an evaluation\n * period, or having an emergency switch for freezing all token transfers in the\n * event of a large bug.\n *\n * IMPORTANT: This contract does not include public pause and unpause functions. In\n * addition to inheriting this contract, you must define both functions, invoking the\n * {Pausable-_pause} and {Pausable-_unpause} internal functions, with appropriate\n * access control, e.g. using {AccessControl} or {Ownable}. Not doing so will\n * make the contract pause mechanism of the contract unreachable, and thus unusable.\n */\nabstract contract ERC20Pausable is ERC20, Pausable {\n /**\n * @dev See {ERC20-_update}.\n *\n * Requirements:\n *\n * - the contract must not be paused.\n */\n function _update(address from, address to, uint256 value) internal virtual override whenNotPaused {\n super._update(from, to, value);\n }\n}\n" + }, + "contracts/utils/Pausable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/Pausable.sol)\n\npragma solidity ^0.8.20;\n\nimport {Context} from \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which allows children to implement an emergency stop\n * mechanism that can be triggered by an authorized account.\n *\n * This module is used through inheritance. It will make available the\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n * the functions of your contract. Note that they will not be pausable by\n * simply including this module, only once the modifiers are put in place.\n */\ncontract Pausable is Context {\n uint256 private _paused;\n\n /**\n * @dev Emitted when the pause is triggered by `account`.\n */\n event Paused(address account);\n\n /**\n * @dev Emitted when the pause is lifted by `account`.\n */\n event Unpaused(address account);\n\n /**\n * @dev The operation failed because the contract is paused.\n */\n error EnforcedPause();\n\n /**\n * @dev The operation failed because the contract is not paused.\n */\n error ExpectedPause();\n\n /**\n * @dev Modifier to make a function callable only when the contract is not paused.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n modifier whenNotPaused() {\n _requireNotPaused();\n _;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is paused.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n modifier whenPaused() {\n _requirePaused();\n _;\n }\n\n /**\n * @dev Returns true if the contract is paused, and false otherwise.\n */\n function paused() public view virtual returns (bool) {\n return _paused < 2 ? false : true;\n }\n\n /**\n * @dev Throws if the contract is paused.\n */\n function _requireNotPaused() internal view virtual {\n if (paused()) {\n revert EnforcedPause();\n }\n }\n\n /**\n * @dev Throws if the contract is not paused.\n */\n function _requirePaused() internal view virtual {\n if (!paused()) {\n revert ExpectedPause();\n }\n }\n\n /**\n * @dev Triggers stopped state.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n function _pause() internal virtual whenNotPaused {\n _paused = 2;\n emit Paused(_msgSender());\n }\n\n /**\n * @dev Returns to normal state.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n function _unpause() internal virtual whenPaused {\n _paused = 1;\n emit Unpaused(_msgSender());\n }\n}\n" + }, + "contracts/token/ERC20/ERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC20Metadata} from \"./extensions/IERC20Metadata.sol\";\nimport {Context} from \"../../utils/Context.sol\";\nimport {IERC20Errors} from \"../../interfaces/draft-IERC6093.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC-20\n * applications.\n */\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\n mapping(address account => uint256) private _balances;\n\n mapping(address account => mapping(address spender => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n\n /**\n * @dev Sets the values for {name} and {symbol}.\n *\n * Both values are immutable: they can only be set once during construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual returns (uint8) {\n return 18;\n }\n\n /// @inheritdoc IERC20\n function totalSupply() public view virtual returns (uint256) {\n return _totalSupply;\n }\n\n /// @inheritdoc IERC20\n function balanceOf(address account) public view virtual returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `value`.\n */\n function transfer(address to, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _transfer(owner, to, value);\n return true;\n }\n\n /// @inheritdoc IERC20\n function allowance(address owner, address spender) public view virtual returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, value);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Skips emitting an {Approval} event indicating an allowance update. This is not\n * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `value`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `value`.\n */\n function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\n address spender = _msgSender();\n _spendAllowance(from, spender, value);\n _transfer(from, to, value);\n return true;\n }\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _transfer(address from, address to, uint256 value) internal {\n if (from == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n if (to == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(from, to, value);\n }\n\n /**\n * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n * this function.\n *\n * Emits a {Transfer} event.\n */\n function _update(address from, address to, uint256 value) internal virtual {\n if (from == address(0)) {\n // Overflow check required: The rest of the code assumes that totalSupply never overflows\n _totalSupply += value;\n } else {\n uint256 fromBalance = _balances[from];\n if (fromBalance < value) {\n revert ERC20InsufficientBalance(from, fromBalance, value);\n }\n unchecked {\n // Overflow not possible: value <= fromBalance <= totalSupply.\n _balances[from] = fromBalance - value;\n }\n }\n\n if (to == address(0)) {\n unchecked {\n // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\n _totalSupply -= value;\n }\n } else {\n unchecked {\n // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\n _balances[to] += value;\n }\n }\n\n emit Transfer(from, to, value);\n }\n\n /**\n * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n * Relies on the `_update` mechanism\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _mint(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(address(0), account, value);\n }\n\n /**\n * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n * Relies on the `_update` mechanism.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead\n */\n function _burn(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n _update(account, address(0), value);\n }\n\n /**\n * @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n *\n * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n */\n function _approve(address owner, address spender, uint256 value) internal {\n _approve(owner, spender, value, true);\n }\n\n /**\n * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n *\n * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n * `Approval` event during `transferFrom` operations.\n *\n * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n * true using the following override:\n *\n * ```solidity\n * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n * super._approve(owner, spender, value, true);\n * }\n * ```\n *\n * Requirements are the same as {_approve}.\n */\n function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\n if (owner == address(0)) {\n revert ERC20InvalidApprover(address(0));\n }\n if (spender == address(0)) {\n revert ERC20InvalidSpender(address(0));\n }\n _allowances[owner][spender] = value;\n if (emitEvent) {\n emit Approval(owner, spender, value);\n }\n }\n\n /**\n * @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n *\n * Does not update the allowance value in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Does not emit an {Approval} event.\n */\n function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\n uint256 currentAllowance = allowance(owner, spender);\n if (currentAllowance < type(uint256).max) {\n if (currentAllowance < value) {\n revert ERC20InsufficientAllowance(spender, currentAllowance, value);\n }\n unchecked {\n _approve(owner, spender, currentAllowance - value, false);\n }\n }\n }\n}\n" + }, + "contracts/utils/Context.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n" + }, + "contracts/interfaces/draft-IERC6093.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/draft-IERC6093.sol)\n\npragma solidity >=0.8.4;\n\n/**\n * @dev Standard ERC-20 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\n */\ninterface IERC20Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC20InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC20InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n * @param allowance Amount of tokens a `spender` is allowed to operate with.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC20InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC20InvalidSpender(address spender);\n}\n\n/**\n * @dev Standard ERC-721 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\n */\ninterface IERC721Errors {\n /**\n * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n * Used in balance queries.\n * @param owner Address of the current owner of a token.\n */\n error ERC721InvalidOwner(address owner);\n\n /**\n * @dev Indicates a `tokenId` whose `owner` is the zero address.\n * @param tokenId Identifier number of a token.\n */\n error ERC721NonexistentToken(uint256 tokenId);\n\n /**\n * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param tokenId Identifier number of a token.\n * @param owner Address of the current owner of a token.\n */\n error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC721InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC721InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param tokenId Identifier number of a token.\n */\n error ERC721InsufficientApproval(address operator, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC721InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC721InvalidOperator(address operator);\n}\n\n/**\n * @dev Standard ERC-1155 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\n */\ninterface IERC1155Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n * @param tokenId Identifier number of a token.\n */\n error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC1155InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC1155InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param owner Address of the current owner of a token.\n */\n error ERC1155MissingApprovalForAll(address operator, address owner);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC1155InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC1155InvalidOperator(address operator);\n\n /**\n * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n * Used in batch transfers.\n * @param idsLength Length of the array of token identifiers\n * @param valuesLength Length of the array of token amounts\n */\n error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\n}\n" + }, + "contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity >=0.6.2;\n\nimport {IERC20} from \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n" + }, + "contracts/token/ERC20/IERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/IERC20.sol)\n\npragma solidity >=0.4.16;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the value of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the value of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the\n * allowance mechanism. `value` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.legacyAssembly", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "evm.gasEstimates", + "evm.assembly" + ] + } + }, + "remappings": [ + "@openzeppelin/contracts/=contracts/" + ] + } + }, + "output": { + "contracts": { + "contracts/interfaces/draft-IERC6093.sol": { + "IERC1155Errors": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC1155InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC1155InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "idsLength", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "valuesLength", + "type": "uint256" + } + ], + "name": "ERC1155InvalidArrayLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC1155InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC1155InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC1155InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC1155MissingApprovalForAll", + "type": "error" + } + ], + "devdoc": { + "details": "Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.", + "errors": { + "ERC1155InsufficientBalance(address,uint256,uint256,uint256)": [ + { + "details": "Indicates an error related to the current `balance` of a `sender`. Used in transfers.", + "params": { + "balance": "Current balance for the interacting account.", + "needed": "Minimum amount required to perform a transfer.", + "sender": "Address whose tokens are being transferred.", + "tokenId": "Identifier number of a token." + } + } + ], + "ERC1155InvalidApprover(address)": [ + { + "details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.", + "params": { + "approver": "Address initiating an approval operation." + } + } + ], + "ERC1155InvalidArrayLength(uint256,uint256)": [ + { + "details": "Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.", + "params": { + "idsLength": "Length of the array of token identifiers", + "valuesLength": "Length of the array of token amounts" + } + } + ], + "ERC1155InvalidOperator(address)": [ + { + "details": "Indicates a failure with the `operator` to be approved. Used in approvals.", + "params": { + "operator": "Address that may be allowed to operate on tokens without being their owner." + } + } + ], + "ERC1155InvalidReceiver(address)": [ + { + "details": "Indicates a failure with the token `receiver`. Used in transfers.", + "params": { + "receiver": "Address to which tokens are being transferred." + } + } + ], + "ERC1155InvalidSender(address)": [ + { + "details": "Indicates a failure with the token `sender`. Used in transfers.", + "params": { + "sender": "Address whose tokens are being transferred." + } + } + ], + "ERC1155MissingApprovalForAll(address,address)": [ + { + "details": "Indicates a failure with the `operator`’s approval. Used in transfers.", + "params": { + "operator": "Address that may be allowed to operate on tokens without being their owner.", + "owner": "Address of the current owner of a token." + } + } + ] + }, + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=contracts/\"]},\"sources\":{\"contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0xa667ad942f67a3a72830ba2db2556b22c94a0d0e7b934cb1af19dbb52c701011\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a04504e81403d9f3c45593e0e29f928ff93fbcd11ea961aa8cbd96b05f80aa6e\",\"dweb:/ipfs/QmZtHcvctLMa4Ap1ayqq1kyKt8EN5Ni2851daEdjNNYacG\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "IERC20Errors": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + } + ], + "devdoc": { + "details": "Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.", + "errors": { + "ERC20InsufficientAllowance(address,uint256,uint256)": [ + { + "details": "Indicates a failure with the `spender`’s `allowance`. Used in transfers.", + "params": { + "allowance": "Amount of tokens a `spender` is allowed to operate with.", + "needed": "Minimum amount required to perform a transfer.", + "spender": "Address that may be allowed to operate on tokens without being their owner." + } + } + ], + "ERC20InsufficientBalance(address,uint256,uint256)": [ + { + "details": "Indicates an error related to the current `balance` of a `sender`. Used in transfers.", + "params": { + "balance": "Current balance for the interacting account.", + "needed": "Minimum amount required to perform a transfer.", + "sender": "Address whose tokens are being transferred." + } + } + ], + "ERC20InvalidApprover(address)": [ + { + "details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.", + "params": { + "approver": "Address initiating an approval operation." + } + } + ], + "ERC20InvalidReceiver(address)": [ + { + "details": "Indicates a failure with the token `receiver`. Used in transfers.", + "params": { + "receiver": "Address to which tokens are being transferred." + } + } + ], + "ERC20InvalidSender(address)": [ + { + "details": "Indicates a failure with the token `sender`. Used in transfers.", + "params": { + "sender": "Address whose tokens are being transferred." + } + } + ], + "ERC20InvalidSpender(address)": [ + { + "details": "Indicates a failure with the `spender` to be approved. Used in approvals.", + "params": { + "spender": "Address that may be allowed to operate on tokens without being their owner." + } + } + ] + }, + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=contracts/\"]},\"sources\":{\"contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0xa667ad942f67a3a72830ba2db2556b22c94a0d0e7b934cb1af19dbb52c701011\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a04504e81403d9f3c45593e0e29f928ff93fbcd11ea961aa8cbd96b05f80aa6e\",\"dweb:/ipfs/QmZtHcvctLMa4Ap1ayqq1kyKt8EN5Ni2851daEdjNNYacG\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "IERC721Errors": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721IncorrectOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721InsufficientApproval", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC721InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC721InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721InvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC721InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC721InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721NonexistentToken", + "type": "error" + } + ], + "devdoc": { + "details": "Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.", + "errors": { + "ERC721IncorrectOwner(address,uint256,address)": [ + { + "details": "Indicates an error related to the ownership over a particular token. Used in transfers.", + "params": { + "owner": "Address of the current owner of a token.", + "sender": "Address whose tokens are being transferred.", + "tokenId": "Identifier number of a token." + } + } + ], + "ERC721InsufficientApproval(address,uint256)": [ + { + "details": "Indicates a failure with the `operator`’s approval. Used in transfers.", + "params": { + "operator": "Address that may be allowed to operate on tokens without being their owner.", + "tokenId": "Identifier number of a token." + } + } + ], + "ERC721InvalidApprover(address)": [ + { + "details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.", + "params": { + "approver": "Address initiating an approval operation." + } + } + ], + "ERC721InvalidOperator(address)": [ + { + "details": "Indicates a failure with the `operator` to be approved. Used in approvals.", + "params": { + "operator": "Address that may be allowed to operate on tokens without being their owner." + } + } + ], + "ERC721InvalidOwner(address)": [ + { + "details": "Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.", + "params": { + "owner": "Address of the current owner of a token." + } + } + ], + "ERC721InvalidReceiver(address)": [ + { + "details": "Indicates a failure with the token `receiver`. Used in transfers.", + "params": { + "receiver": "Address to which tokens are being transferred." + } + } + ], + "ERC721InvalidSender(address)": [ + { + "details": "Indicates a failure with the token `sender`. Used in transfers.", + "params": { + "sender": "Address whose tokens are being transferred." + } + } + ], + "ERC721NonexistentToken(uint256)": [ + { + "details": "Indicates a `tokenId` whose `owner` is the zero address.", + "params": { + "tokenId": "Identifier number of a token." + } + } + ] + }, + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=contracts/\"]},\"sources\":{\"contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0xa667ad942f67a3a72830ba2db2556b22c94a0d0e7b934cb1af19dbb52c701011\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a04504e81403d9f3c45593e0e29f928ff93fbcd11ea961aa8cbd96b05f80aa6e\",\"dweb:/ipfs/QmZtHcvctLMa4Ap1ayqq1kyKt8EN5Ni2851daEdjNNYacG\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/token/ERC20/ERC20.sol": { + "ERC20": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "details": "Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.", + "errors": { + "ERC20InsufficientAllowance(address,uint256,uint256)": [ + { + "details": "Indicates a failure with the `spender`’s `allowance`. Used in transfers.", + "params": { + "allowance": "Amount of tokens a `spender` is allowed to operate with.", + "needed": "Minimum amount required to perform a transfer.", + "spender": "Address that may be allowed to operate on tokens without being their owner." + } + } + ], + "ERC20InsufficientBalance(address,uint256,uint256)": [ + { + "details": "Indicates an error related to the current `balance` of a `sender`. Used in transfers.", + "params": { + "balance": "Current balance for the interacting account.", + "needed": "Minimum amount required to perform a transfer.", + "sender": "Address whose tokens are being transferred." + } + } + ], + "ERC20InvalidApprover(address)": [ + { + "details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.", + "params": { + "approver": "Address initiating an approval operation." + } + } + ], + "ERC20InvalidReceiver(address)": [ + { + "details": "Indicates a failure with the token `receiver`. Used in transfers.", + "params": { + "receiver": "Address to which tokens are being transferred." + } + } + ], + "ERC20InvalidSender(address)": [ + { + "details": "Indicates a failure with the token `sender`. Used in transfers.", + "params": { + "sender": "Address whose tokens are being transferred." + } + } + ], + "ERC20InvalidSpender(address)": [ + { + "details": "Indicates a failure with the `spender` to be approved. Used in approvals.", + "params": { + "spender": "Address that may be allowed to operate on tokens without being their owner." + } + } + ] + }, + "events": { + "Approval(address,address,uint256)": { + "details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance." + }, + "Transfer(address,address,uint256)": { + "details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero." + } + }, + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called." + }, + "approve(address,uint256)": { + "details": "See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address." + }, + "balanceOf(address)": { + "details": "Returns the value of tokens owned by `account`." + }, + "constructor": { + "details": "Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction." + }, + "decimals()": { + "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}." + }, + "name()": { + "details": "Returns the name of the token." + }, + "symbol()": { + "details": "Returns the symbol of the token, usually a shorter version of the name." + }, + "totalSupply()": { + "details": "Returns the value of tokens in existence." + }, + "transfer(address,uint256)": { + "details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`." + }, + "transferFrom(address,address,uint256)": { + "details": "See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`." + } + }, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "name()": "06fdde03", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=contracts/\"]},\"sources\":{\"contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0xa667ad942f67a3a72830ba2db2556b22c94a0d0e7b934cb1af19dbb52c701011\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a04504e81403d9f3c45593e0e29f928ff93fbcd11ea961aa8cbd96b05f80aa6e\",\"dweb:/ipfs/QmZtHcvctLMa4Ap1ayqq1kyKt8EN5Ni2851daEdjNNYacG\"]},\"contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c\",\"dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu\"]},\"contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 159, + "contract": "contracts/token/ERC20/ERC20.sol:ERC20", + "label": "_balances", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 165, + "contract": "contracts/token/ERC20/ERC20.sol:ERC20", + "label": "_allowances", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))" + }, + { + "astId": 167, + "contract": "contracts/token/ERC20/ERC20.sol:ERC20", + "label": "_totalSupply", + "offset": 0, + "slot": "2", + "type": "t_uint256" + }, + { + "astId": 169, + "contract": "contracts/token/ERC20/ERC20.sol:ERC20", + "label": "_name", + "offset": 0, + "slot": "3", + "type": "t_string_storage" + }, + { + "astId": 171, + "contract": "contracts/token/ERC20/ERC20.sol:ERC20", + "label": "_symbol", + "offset": 0, + "slot": "4", + "type": "t_string_storage" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32", + "value": "t_mapping(t_address,t_uint256)" + }, + "t_mapping(t_address,t_uint256)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_string_storage": { + "encoding": "bytes", + "label": "string", + "numberOfBytes": "32" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/token/ERC20/IERC20.sol": { + "IERC20": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "details": "Interface of the ERC-20 standard as defined in the ERC.", + "events": { + "Approval(address,address,uint256)": { + "details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance." + }, + "Transfer(address,address,uint256)": { + "details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero." + } + }, + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called." + }, + "approve(address,uint256)": { + "details": "Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event." + }, + "balanceOf(address)": { + "details": "Returns the value of tokens owned by `account`." + }, + "totalSupply()": { + "details": "Returns the value of tokens in existence." + }, + "transfer(address,uint256)": { + "details": "Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." + }, + "transferFrom(address,address,uint256)": { + "details": "Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." + } + }, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=contracts/\"]},\"sources\":{\"contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/token/ERC20/extensions/ERC20Pausable.sol": { + "ERC20Pausable": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + }, + { + "inputs": [], + "name": "EnforcedPause", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedPause", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "details": "ERC-20 token with pausable token transfers, minting and burning. Useful for scenarios such as preventing trades until the end of an evaluation period, or having an emergency switch for freezing all token transfers in the event of a large bug. IMPORTANT: This contract does not include public pause and unpause functions. In addition to inheriting this contract, you must define both functions, invoking the {Pausable-_pause} and {Pausable-_unpause} internal functions, with appropriate access control, e.g. using {AccessControl} or {Ownable}. Not doing so will make the contract pause mechanism of the contract unreachable, and thus unusable.", + "errors": { + "ERC20InsufficientAllowance(address,uint256,uint256)": [ + { + "details": "Indicates a failure with the `spender`’s `allowance`. Used in transfers.", + "params": { + "allowance": "Amount of tokens a `spender` is allowed to operate with.", + "needed": "Minimum amount required to perform a transfer.", + "spender": "Address that may be allowed to operate on tokens without being their owner." + } + } + ], + "ERC20InsufficientBalance(address,uint256,uint256)": [ + { + "details": "Indicates an error related to the current `balance` of a `sender`. Used in transfers.", + "params": { + "balance": "Current balance for the interacting account.", + "needed": "Minimum amount required to perform a transfer.", + "sender": "Address whose tokens are being transferred." + } + } + ], + "ERC20InvalidApprover(address)": [ + { + "details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.", + "params": { + "approver": "Address initiating an approval operation." + } + } + ], + "ERC20InvalidReceiver(address)": [ + { + "details": "Indicates a failure with the token `receiver`. Used in transfers.", + "params": { + "receiver": "Address to which tokens are being transferred." + } + } + ], + "ERC20InvalidSender(address)": [ + { + "details": "Indicates a failure with the token `sender`. Used in transfers.", + "params": { + "sender": "Address whose tokens are being transferred." + } + } + ], + "ERC20InvalidSpender(address)": [ + { + "details": "Indicates a failure with the `spender` to be approved. Used in approvals.", + "params": { + "spender": "Address that may be allowed to operate on tokens without being their owner." + } + } + ], + "EnforcedPause()": [ + { + "details": "The operation failed because the contract is paused." + } + ], + "ExpectedPause()": [ + { + "details": "The operation failed because the contract is not paused." + } + ] + }, + "events": { + "Approval(address,address,uint256)": { + "details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance." + }, + "Paused(address)": { + "details": "Emitted when the pause is triggered by `account`." + }, + "Transfer(address,address,uint256)": { + "details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero." + }, + "Unpaused(address)": { + "details": "Emitted when the pause is lifted by `account`." + } + }, + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called." + }, + "approve(address,uint256)": { + "details": "See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address." + }, + "balanceOf(address)": { + "details": "Returns the value of tokens owned by `account`." + }, + "decimals()": { + "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}." + }, + "name()": { + "details": "Returns the name of the token." + }, + "paused()": { + "details": "Returns true if the contract is paused, and false otherwise." + }, + "symbol()": { + "details": "Returns the symbol of the token, usually a shorter version of the name." + }, + "totalSupply()": { + "details": "Returns the value of tokens in existence." + }, + "transfer(address,uint256)": { + "details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`." + }, + "transferFrom(address,address,uint256)": { + "details": "See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`." + } + }, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "name()": "06fdde03", + "paused()": "5c975abb", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC-20 token with pausable token transfers, minting and burning. Useful for scenarios such as preventing trades until the end of an evaluation period, or having an emergency switch for freezing all token transfers in the event of a large bug. IMPORTANT: This contract does not include public pause and unpause functions. In addition to inheriting this contract, you must define both functions, invoking the {Pausable-_pause} and {Pausable-_unpause} internal functions, with appropriate access control, e.g. using {AccessControl} or {Ownable}. Not doing so will make the contract pause mechanism of the contract unreachable, and thus unusable.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/token/ERC20/extensions/ERC20Pausable.sol\":\"ERC20Pausable\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=contracts/\"]},\"sources\":{\"contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0xa667ad942f67a3a72830ba2db2556b22c94a0d0e7b934cb1af19dbb52c701011\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a04504e81403d9f3c45593e0e29f928ff93fbcd11ea961aa8cbd96b05f80aa6e\",\"dweb:/ipfs/QmZtHcvctLMa4Ap1ayqq1kyKt8EN5Ni2851daEdjNNYacG\"]},\"contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c\",\"dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu\"]},\"contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"contracts/token/ERC20/extensions/ERC20Pausable.sol\":{\"keccak256\":\"0x756aee61d83960d324973de3a64920a02b480efe662b611fb05ea506d844aa55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dfb71ab2f5fcc530226a25bba4d808f4d22a7f383cae4a3be3629ec057b276c\",\"dweb:/ipfs/QmRzyetUjbr9Gx1pcXYSsE5rz4XypfEbZgmBvZKUNUJQLR\"]},\"contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"contracts/utils/Pausable.sol\":{\"keccak256\":\"0xf11f182b233f92a2c7169c0a58e9b79d68e4fb16487210e4620349f8c60072ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15184450e50c0795f97be002c004abf72d7dc2f49ac9a5ac278ac0efb54e2a63\",\"dweb:/ipfs/QmeuEsznhKAB3ENZpuYka6iuvWey3hNXNV8DrpXK5FZacG\"]}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 159, + "contract": "contracts/token/ERC20/extensions/ERC20Pausable.sol:ERC20Pausable", + "label": "_balances", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 165, + "contract": "contracts/token/ERC20/extensions/ERC20Pausable.sol:ERC20Pausable", + "label": "_allowances", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))" + }, + { + "astId": 167, + "contract": "contracts/token/ERC20/extensions/ERC20Pausable.sol:ERC20Pausable", + "label": "_totalSupply", + "offset": 0, + "slot": "2", + "type": "t_uint256" + }, + { + "astId": 169, + "contract": "contracts/token/ERC20/extensions/ERC20Pausable.sol:ERC20Pausable", + "label": "_name", + "offset": 0, + "slot": "3", + "type": "t_string_storage" + }, + { + "astId": 171, + "contract": "contracts/token/ERC20/extensions/ERC20Pausable.sol:ERC20Pausable", + "label": "_symbol", + "offset": 0, + "slot": "4", + "type": "t_string_storage" + }, + { + "astId": 828, + "contract": "contracts/token/ERC20/extensions/ERC20Pausable.sol:ERC20Pausable", + "label": "_paused", + "offset": 0, + "slot": "5", + "type": "t_uint256" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32", + "value": "t_mapping(t_address,t_uint256)" + }, + "t_mapping(t_address,t_uint256)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_string_storage": { + "encoding": "bytes", + "label": "string", + "numberOfBytes": "32" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "IERC20Metadata": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "details": "Interface for the optional metadata functions from the ERC-20 standard.", + "events": { + "Approval(address,address,uint256)": { + "details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance." + }, + "Transfer(address,address,uint256)": { + "details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero." + } + }, + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called." + }, + "approve(address,uint256)": { + "details": "Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event." + }, + "balanceOf(address)": { + "details": "Returns the value of tokens owned by `account`." + }, + "decimals()": { + "details": "Returns the decimals places of the token." + }, + "name()": { + "details": "Returns the name of the token." + }, + "symbol()": { + "details": "Returns the symbol of the token." + }, + "totalSupply()": { + "details": "Returns the value of tokens in existence." + }, + "transfer(address,uint256)": { + "details": "Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." + }, + "transferFrom(address,address,uint256)": { + "details": "Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." + } + }, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "name()": "06fdde03", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC-20 standard.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=contracts/\"]},\"sources\":{\"contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/utils/Context.sol": { + "Context": { + "abi": [], + "devdoc": { + "details": "Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.", + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=contracts/\"]},\"sources\":{\"contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/utils/Pausable.sol": { + "Pausable": { + "abi": [ + { + "inputs": [], + "name": "EnforcedPause", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedPause", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "details": "Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.", + "errors": { + "EnforcedPause()": [ + { + "details": "The operation failed because the contract is paused." + } + ], + "ExpectedPause()": [ + { + "details": "The operation failed because the contract is not paused." + } + ] + }, + "events": { + "Paused(address)": { + "details": "Emitted when the pause is triggered by `account`." + }, + "Unpaused(address)": { + "details": "Emitted when the pause is lifted by `account`." + } + }, + "kind": "dev", + "methods": { + "paused()": { + "details": "Returns true if the contract is paused, and false otherwise." + } + }, + "version": 1 + }, + "evm": { + "assembly": " /* \"contracts/utils/Pausable.sol\":615:2711 contract Pausable is Context {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n revert(0x00, 0x00)\ntag_1:\n pop\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/utils/Pausable.sol\":615:2711 contract Pausable is Context {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n revert(0x00, 0x00)\n tag_1:\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x5c975abb\n eq\n tag_3\n jumpi\n tag_2:\n revert(0x00, 0x00)\n /* \"contracts/utils/Pausable.sol\":1720:1823 function paused() public view virtual returns (bool) {... */\n tag_3:\n tag_4\n tag_5\n jump\t// in\n tag_4:\n mload(0x40)\n tag_6\n swap2\n swap1\n tag_7\n jump\t// in\n tag_6:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n tag_5:\n /* \"contracts/utils/Pausable.sol\":1767:1771 bool */\n 0x00\n /* \"contracts/utils/Pausable.sol\":1800:1801 2 */\n 0x02\n /* \"contracts/utils/Pausable.sol\":1790:1797 _paused */\n sload(0x00)\n /* \"contracts/utils/Pausable.sol\":1790:1801 _paused < 2 */\n lt\n /* \"contracts/utils/Pausable.sol\":1790:1816 _paused < 2 ? false : true */\n tag_9\n jumpi\n /* \"contracts/utils/Pausable.sol\":1812:1816 true */\n 0x01\n /* \"contracts/utils/Pausable.sol\":1790:1816 _paused < 2 ? false : true */\n jump(tag_10)\n tag_9:\n /* \"contracts/utils/Pausable.sol\":1804:1809 false */\n 0x00\n /* \"contracts/utils/Pausable.sol\":1790:1816 _paused < 2 ? false : true */\n tag_10:\n /* \"contracts/utils/Pausable.sol\":1783:1816 return _paused < 2 ? false : true */\n swap1\n pop\n /* \"contracts/utils/Pausable.sol\":1720:1823 function paused() public view virtual returns (bool) {... */\n swap1\n jump\t// out\n /* \"#utility.yul\":7:97 */\n tag_11:\n /* \"#utility.yul\":41:48 */\n 0x00\n /* \"#utility.yul\":84:89 */\n dup2\n /* \"#utility.yul\":77:90 */\n iszero\n /* \"#utility.yul\":70:91 */\n iszero\n /* \"#utility.yul\":59:91 */\n swap1\n pop\n /* \"#utility.yul\":7:97 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":103:212 */\n tag_12:\n /* \"#utility.yul\":184:205 */\n tag_16\n /* \"#utility.yul\":199:204 */\n dup2\n /* \"#utility.yul\":184:205 */\n tag_11\n jump\t// in\n tag_16:\n /* \"#utility.yul\":179:182 */\n dup3\n /* \"#utility.yul\":172:206 */\n mstore\n /* \"#utility.yul\":103:212 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":218:428 */\n tag_7:\n /* \"#utility.yul\":305:309 */\n 0x00\n /* \"#utility.yul\":343:345 */\n 0x20\n /* \"#utility.yul\":332:341 */\n dup3\n /* \"#utility.yul\":328:346 */\n add\n /* \"#utility.yul\":320:346 */\n swap1\n pop\n /* \"#utility.yul\":356:421 */\n tag_18\n /* \"#utility.yul\":418:419 */\n 0x00\n /* \"#utility.yul\":407:416 */\n dup4\n /* \"#utility.yul\":403:420 */\n add\n /* \"#utility.yul\":394:400 */\n dup5\n /* \"#utility.yul\":356:421 */\n tag_12\n jump\t// in\n tag_18:\n /* \"#utility.yul\":218:428 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n\n auxdata: 0xa2646970667358221220ca7b3f6e587c648561e5f5c61ddeca3ff5492aef521cbc3b7a370ca320761a7764736f6c634300081e0033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6080604052348015600e575f5ffd5b5060bf80601a5f395ff3fe6080604052348015600e575f5ffd5b50600436106026575f3560e01c80635c975abb14602a575b5f5ffd5b60306044565b604051603b91906072565b60405180910390f35b5f60025f541060535760016055565b5f5b905090565b5f8115159050919050565b606c81605a565b82525050565b5f60208201905060835f8301846065565b9291505056fea2646970667358221220ca7b3f6e587c648561e5f5c61ddeca3ff5492aef521cbc3b7a370ca320761a7764736f6c634300081e0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0xBF DUP1 PUSH1 0x1A PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x26 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5C975ABB EQ PUSH1 0x2A JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x30 PUSH1 0x44 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3B SWAP2 SWAP1 PUSH1 0x72 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH0 PUSH1 0x2 PUSH0 SLOAD LT PUSH1 0x53 JUMPI PUSH1 0x1 PUSH1 0x55 JUMP JUMPDEST PUSH0 JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x6C DUP2 PUSH1 0x5A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x83 PUSH0 DUP4 ADD DUP5 PUSH1 0x65 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCA PUSH28 0x3F6E587C648561E5F5C61DDECA3FF5492AEF521CBC3B7A370CA32076 BYTE PUSH24 0x64736F6C634300081E003300000000000000000000000000 ", + "sourceMap": "615:2096:6:-:0;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@paused_874": { + "entryPoint": 68, + "id": 874, + "parameterSlots": 0, + "returnSlots": 1 + }, + "abi_encode_t_bool_to_t_bool_fromStack": { + "entryPoint": 101, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": 114, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "cleanup_t_bool": { + "entryPoint": 90, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:431:7", + "nodeType": "YulBlock", + "src": "0:431:7", + "statements": [ + { + "body": { + "nativeSrc": "49:48:7", + "nodeType": "YulBlock", + "src": "49:48:7", + "statements": [ + { + "nativeSrc": "59:32:7", + "nodeType": "YulAssignment", + "src": "59:32:7", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "84:5:7", + "nodeType": "YulIdentifier", + "src": "84:5:7" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "77:6:7", + "nodeType": "YulIdentifier", + "src": "77:6:7" + }, + "nativeSrc": "77:13:7", + "nodeType": "YulFunctionCall", + "src": "77:13:7" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "70:6:7", + "nodeType": "YulIdentifier", + "src": "70:6:7" + }, + "nativeSrc": "70:21:7", + "nodeType": "YulFunctionCall", + "src": "70:21:7" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "59:7:7", + "nodeType": "YulIdentifier", + "src": "59:7:7" + } + ] + } + ] + }, + "name": "cleanup_t_bool", + "nativeSrc": "7:90:7", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "31:5:7", + "nodeType": "YulTypedName", + "src": "31:5:7", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "41:7:7", + "nodeType": "YulTypedName", + "src": "41:7:7", + "type": "" + } + ], + "src": "7:90:7" + }, + { + "body": { + "nativeSrc": "162:50:7", + "nodeType": "YulBlock", + "src": "162:50:7", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "179:3:7", + "nodeType": "YulIdentifier", + "src": "179:3:7" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "199:5:7", + "nodeType": "YulIdentifier", + "src": "199:5:7" + } + ], + "functionName": { + "name": "cleanup_t_bool", + "nativeSrc": "184:14:7", + "nodeType": "YulIdentifier", + "src": "184:14:7" + }, + "nativeSrc": "184:21:7", + "nodeType": "YulFunctionCall", + "src": "184:21:7" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "172:6:7", + "nodeType": "YulIdentifier", + "src": "172:6:7" + }, + "nativeSrc": "172:34:7", + "nodeType": "YulFunctionCall", + "src": "172:34:7" + }, + "nativeSrc": "172:34:7", + "nodeType": "YulExpressionStatement", + "src": "172:34:7" + } + ] + }, + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nativeSrc": "103:109:7", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "150:5:7", + "nodeType": "YulTypedName", + "src": "150:5:7", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "157:3:7", + "nodeType": "YulTypedName", + "src": "157:3:7", + "type": "" + } + ], + "src": "103:109:7" + }, + { + "body": { + "nativeSrc": "310:118:7", + "nodeType": "YulBlock", + "src": "310:118:7", + "statements": [ + { + "nativeSrc": "320:26:7", + "nodeType": "YulAssignment", + "src": "320:26:7", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "332:9:7", + "nodeType": "YulIdentifier", + "src": "332:9:7" + }, + { + "kind": "number", + "nativeSrc": "343:2:7", + "nodeType": "YulLiteral", + "src": "343:2:7", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "328:3:7", + "nodeType": "YulIdentifier", + "src": "328:3:7" + }, + "nativeSrc": "328:18:7", + "nodeType": "YulFunctionCall", + "src": "328:18:7" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "320:4:7", + "nodeType": "YulIdentifier", + "src": "320:4:7" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "394:6:7", + "nodeType": "YulIdentifier", + "src": "394:6:7" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "407:9:7", + "nodeType": "YulIdentifier", + "src": "407:9:7" + }, + { + "kind": "number", + "nativeSrc": "418:1:7", + "nodeType": "YulLiteral", + "src": "418:1:7", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "403:3:7", + "nodeType": "YulIdentifier", + "src": "403:3:7" + }, + "nativeSrc": "403:17:7", + "nodeType": "YulFunctionCall", + "src": "403:17:7" + } + ], + "functionName": { + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nativeSrc": "356:37:7", + "nodeType": "YulIdentifier", + "src": "356:37:7" + }, + "nativeSrc": "356:65:7", + "nodeType": "YulFunctionCall", + "src": "356:65:7" + }, + "nativeSrc": "356:65:7", + "nodeType": "YulExpressionStatement", + "src": "356:65:7" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nativeSrc": "218:210:7", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "282:9:7", + "nodeType": "YulTypedName", + "src": "282:9:7", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "294:6:7", + "nodeType": "YulTypedName", + "src": "294:6:7", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "305:4:7", + "nodeType": "YulTypedName", + "src": "305:4:7", + "type": "" + } + ], + "src": "218:210:7" + } + ] + }, + "contents": "{\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n}\n", + "id": 7, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "6080604052348015600e575f5ffd5b50600436106026575f3560e01c80635c975abb14602a575b5f5ffd5b60306044565b604051603b91906072565b60405180910390f35b5f60025f541060535760016055565b5f5b905090565b5f8115159050919050565b606c81605a565b82525050565b5f60208201905060835f8301846065565b9291505056fea2646970667358221220ca7b3f6e587c648561e5f5c61ddeca3ff5492aef521cbc3b7a370ca320761a7764736f6c634300081e0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x26 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5C975ABB EQ PUSH1 0x2A JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x30 PUSH1 0x44 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3B SWAP2 SWAP1 PUSH1 0x72 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH0 PUSH1 0x2 PUSH0 SLOAD LT PUSH1 0x53 JUMPI PUSH1 0x1 PUSH1 0x55 JUMP JUMPDEST PUSH0 JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x6C DUP2 PUSH1 0x5A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x83 PUSH0 DUP4 ADD DUP5 PUSH1 0x65 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCA PUSH28 0x3F6E587C648561E5F5C61DDECA3FF5492AEF521CBC3B7A370CA32076 BYTE PUSH24 0x64736F6C634300081E003300000000000000000000000000 ", + "sourceMap": "615:2096:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1720:103;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;1767:4;1800:1;1790:7;;:11;:26;;1812:4;1790:26;;;1804:5;1790:26;1783:33;;1720:103;:::o;7:90:7:-;41:7;84:5;77:13;70:21;59:32;;7:90;;;:::o;103:109::-;184:21;199:5;184:21;:::i;:::-;179:3;172:34;103:109;;:::o;218:210::-;305:4;343:2;332:9;328:18;320:26;;356:65;418:1;407:9;403:17;394:6;356:65;:::i;:::-;218:210;;;;:::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "38200", + "executionCost": "85", + "totalCost": "38285" + }, + "external": { + "paused()": "2449" + }, + "internal": { + "_pause()": "infinite", + "_requireNotPaused()": "infinite", + "_requirePaused()": "infinite", + "_unpause()": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 615, + "end": 2711, + "name": "PUSH", + "source": 6, + "value": "80" + }, + { + "begin": 615, + "end": 2711, + "name": "PUSH", + "source": 6, + "value": "40" + }, + { + "begin": 615, + "end": 2711, + "name": "MSTORE", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "CALLVALUE", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "DUP1", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "ISZERO", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "PUSH [tag]", + "source": 6, + "value": "1" + }, + { + "begin": 615, + "end": 2711, + "name": "JUMPI", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "PUSH", + "source": 6, + "value": "0" + }, + { + "begin": 615, + "end": 2711, + "name": "PUSH", + "source": 6, + "value": "0" + }, + { + "begin": 615, + "end": 2711, + "name": "REVERT", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "tag", + "source": 6, + "value": "1" + }, + { + "begin": 615, + "end": 2711, + "name": "JUMPDEST", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "POP", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "PUSH #[$]", + "source": 6, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 615, + "end": 2711, + "name": "DUP1", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "PUSH [$]", + "source": 6, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 615, + "end": 2711, + "name": "PUSH", + "source": 6, + "value": "0" + }, + { + "begin": 615, + "end": 2711, + "name": "CODECOPY", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "PUSH", + "source": 6, + "value": "0" + }, + { + "begin": 615, + "end": 2711, + "name": "RETURN", + "source": 6 + } + ], + ".data": { + "0": { + ".auxdata": "a2646970667358221220ca7b3f6e587c648561e5f5c61ddeca3ff5492aef521cbc3b7a370ca320761a7764736f6c634300081e0033", + ".code": [ + { + "begin": 615, + "end": 2711, + "name": "PUSH", + "source": 6, + "value": "80" + }, + { + "begin": 615, + "end": 2711, + "name": "PUSH", + "source": 6, + "value": "40" + }, + { + "begin": 615, + "end": 2711, + "name": "MSTORE", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "CALLVALUE", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "DUP1", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "ISZERO", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "PUSH [tag]", + "source": 6, + "value": "1" + }, + { + "begin": 615, + "end": 2711, + "name": "JUMPI", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "PUSH", + "source": 6, + "value": "0" + }, + { + "begin": 615, + "end": 2711, + "name": "PUSH", + "source": 6, + "value": "0" + }, + { + "begin": 615, + "end": 2711, + "name": "REVERT", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "tag", + "source": 6, + "value": "1" + }, + { + "begin": 615, + "end": 2711, + "name": "JUMPDEST", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "POP", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "PUSH", + "source": 6, + "value": "4" + }, + { + "begin": 615, + "end": 2711, + "name": "CALLDATASIZE", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "LT", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "PUSH [tag]", + "source": 6, + "value": "2" + }, + { + "begin": 615, + "end": 2711, + "name": "JUMPI", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "PUSH", + "source": 6, + "value": "0" + }, + { + "begin": 615, + "end": 2711, + "name": "CALLDATALOAD", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "PUSH", + "source": 6, + "value": "E0" + }, + { + "begin": 615, + "end": 2711, + "name": "SHR", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "DUP1", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "PUSH", + "source": 6, + "value": "5C975ABB" + }, + { + "begin": 615, + "end": 2711, + "name": "EQ", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "PUSH [tag]", + "source": 6, + "value": "3" + }, + { + "begin": 615, + "end": 2711, + "name": "JUMPI", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "tag", + "source": 6, + "value": "2" + }, + { + "begin": 615, + "end": 2711, + "name": "JUMPDEST", + "source": 6 + }, + { + "begin": 615, + "end": 2711, + "name": "PUSH", + "source": 6, + "value": "0" + }, + { + "begin": 615, + "end": 2711, + "name": "PUSH", + "source": 6, + "value": "0" + }, + { + "begin": 615, + "end": 2711, + "name": "REVERT", + "source": 6 + }, + { + "begin": 1720, + "end": 1823, + "name": "tag", + "source": 6, + "value": "3" + }, + { + "begin": 1720, + "end": 1823, + "name": "JUMPDEST", + "source": 6 + }, + { + "begin": 1720, + "end": 1823, + "name": "PUSH [tag]", + "source": 6, + "value": "4" + }, + { + "begin": 1720, + "end": 1823, + "name": "PUSH [tag]", + "source": 6, + "value": "5" + }, + { + "begin": 1720, + "end": 1823, + "jumpType": "[in]", + "name": "JUMP", + "source": 6 + }, + { + "begin": 1720, + "end": 1823, + "name": "tag", + "source": 6, + "value": "4" + }, + { + "begin": 1720, + "end": 1823, + "name": "JUMPDEST", + "source": 6 + }, + { + "begin": 1720, + "end": 1823, + "name": "PUSH", + "source": 6, + "value": "40" + }, + { + "begin": 1720, + "end": 1823, + "name": "MLOAD", + "source": 6 + }, + { + "begin": 1720, + "end": 1823, + "name": "PUSH [tag]", + "source": 6, + "value": "6" + }, + { + "begin": 1720, + "end": 1823, + "name": "SWAP2", + "source": 6 + }, + { + "begin": 1720, + "end": 1823, + "name": "SWAP1", + "source": 6 + }, + { + "begin": 1720, + "end": 1823, + "name": "PUSH [tag]", + "source": 6, + "value": "7" + }, + { + "begin": 1720, + "end": 1823, + "jumpType": "[in]", + "name": "JUMP", + "source": 6 + }, + { + "begin": 1720, + "end": 1823, + "name": "tag", + "source": 6, + "value": "6" + }, + { + "begin": 1720, + "end": 1823, + "name": "JUMPDEST", + "source": 6 + }, + { + "begin": 1720, + "end": 1823, + "name": "PUSH", + "source": 6, + "value": "40" + }, + { + "begin": 1720, + "end": 1823, + "name": "MLOAD", + "source": 6 + }, + { + "begin": 1720, + "end": 1823, + "name": "DUP1", + "source": 6 + }, + { + "begin": 1720, + "end": 1823, + "name": "SWAP2", + "source": 6 + }, + { + "begin": 1720, + "end": 1823, + "name": "SUB", + "source": 6 + }, + { + "begin": 1720, + "end": 1823, + "name": "SWAP1", + "source": 6 + }, + { + "begin": 1720, + "end": 1823, + "name": "RETURN", + "source": 6 + }, + { + "begin": 1720, + "end": 1823, + "name": "tag", + "source": 6, + "value": "5" + }, + { + "begin": 1720, + "end": 1823, + "name": "JUMPDEST", + "source": 6 + }, + { + "begin": 1767, + "end": 1771, + "name": "PUSH", + "source": 6, + "value": "0" + }, + { + "begin": 1800, + "end": 1801, + "name": "PUSH", + "source": 6, + "value": "2" + }, + { + "begin": 1790, + "end": 1797, + "name": "PUSH", + "source": 6, + "value": "0" + }, + { + "begin": 1790, + "end": 1797, + "name": "SLOAD", + "source": 6 + }, + { + "begin": 1790, + "end": 1801, + "name": "LT", + "source": 6 + }, + { + "begin": 1790, + "end": 1816, + "name": "PUSH [tag]", + "source": 6, + "value": "9" + }, + { + "begin": 1790, + "end": 1816, + "name": "JUMPI", + "source": 6 + }, + { + "begin": 1812, + "end": 1816, + "name": "PUSH", + "source": 6, + "value": "1" + }, + { + "begin": 1790, + "end": 1816, + "name": "PUSH [tag]", + "source": 6, + "value": "10" + }, + { + "begin": 1790, + "end": 1816, + "name": "JUMP", + "source": 6 + }, + { + "begin": 1790, + "end": 1816, + "name": "tag", + "source": 6, + "value": "9" + }, + { + "begin": 1790, + "end": 1816, + "name": "JUMPDEST", + "source": 6 + }, + { + "begin": 1804, + "end": 1809, + "name": "PUSH", + "source": 6, + "value": "0" + }, + { + "begin": 1790, + "end": 1816, + "name": "tag", + "source": 6, + "value": "10" + }, + { + "begin": 1790, + "end": 1816, + "name": "JUMPDEST", + "source": 6 + }, + { + "begin": 1783, + "end": 1816, + "name": "SWAP1", + "source": 6 + }, + { + "begin": 1783, + "end": 1816, + "name": "POP", + "source": 6 + }, + { + "begin": 1720, + "end": 1823, + "name": "SWAP1", + "source": 6 + }, + { + "begin": 1720, + "end": 1823, + "jumpType": "[out]", + "name": "JUMP", + "source": 6 + }, + { + "begin": 7, + "end": 97, + "name": "tag", + "source": 7, + "value": "11" + }, + { + "begin": 7, + "end": 97, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 41, + "end": 48, + "name": "PUSH", + "source": 7, + "value": "0" + }, + { + "begin": 84, + "end": 89, + "name": "DUP2", + "source": 7 + }, + { + "begin": 77, + "end": 90, + "name": "ISZERO", + "source": 7 + }, + { + "begin": 70, + "end": 91, + "name": "ISZERO", + "source": 7 + }, + { + "begin": 59, + "end": 91, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 59, + "end": 91, + "name": "POP", + "source": 7 + }, + { + "begin": 7, + "end": 97, + "name": "SWAP2", + "source": 7 + }, + { + "begin": 7, + "end": 97, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 7, + "end": 97, + "name": "POP", + "source": 7 + }, + { + "begin": 7, + "end": 97, + "jumpType": "[out]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 103, + "end": 212, + "name": "tag", + "source": 7, + "value": "12" + }, + { + "begin": 103, + "end": 212, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 184, + "end": 205, + "name": "PUSH [tag]", + "source": 7, + "value": "16" + }, + { + "begin": 199, + "end": 204, + "name": "DUP2", + "source": 7 + }, + { + "begin": 184, + "end": 205, + "name": "PUSH [tag]", + "source": 7, + "value": "11" + }, + { + "begin": 184, + "end": 205, + "jumpType": "[in]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 184, + "end": 205, + "name": "tag", + "source": 7, + "value": "16" + }, + { + "begin": 184, + "end": 205, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 179, + "end": 182, + "name": "DUP3", + "source": 7 + }, + { + "begin": 172, + "end": 206, + "name": "MSTORE", + "source": 7 + }, + { + "begin": 103, + "end": 212, + "name": "POP", + "source": 7 + }, + { + "begin": 103, + "end": 212, + "name": "POP", + "source": 7 + }, + { + "begin": 103, + "end": 212, + "jumpType": "[out]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 218, + "end": 428, + "name": "tag", + "source": 7, + "value": "7" + }, + { + "begin": 218, + "end": 428, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 305, + "end": 309, + "name": "PUSH", + "source": 7, + "value": "0" + }, + { + "begin": 343, + "end": 345, + "name": "PUSH", + "source": 7, + "value": "20" + }, + { + "begin": 332, + "end": 341, + "name": "DUP3", + "source": 7 + }, + { + "begin": 328, + "end": 346, + "name": "ADD", + "source": 7 + }, + { + "begin": 320, + "end": 346, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 320, + "end": 346, + "name": "POP", + "source": 7 + }, + { + "begin": 356, + "end": 421, + "name": "PUSH [tag]", + "source": 7, + "value": "18" + }, + { + "begin": 418, + "end": 419, + "name": "PUSH", + "source": 7, + "value": "0" + }, + { + "begin": 407, + "end": 416, + "name": "DUP4", + "source": 7 + }, + { + "begin": 403, + "end": 420, + "name": "ADD", + "source": 7 + }, + { + "begin": 394, + "end": 400, + "name": "DUP5", + "source": 7 + }, + { + "begin": 356, + "end": 421, + "name": "PUSH [tag]", + "source": 7, + "value": "12" + }, + { + "begin": 356, + "end": 421, + "jumpType": "[in]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 356, + "end": 421, + "name": "tag", + "source": 7, + "value": "18" + }, + { + "begin": 356, + "end": 421, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 218, + "end": 428, + "name": "SWAP3", + "source": 7 + }, + { + "begin": 218, + "end": 428, + "name": "SWAP2", + "source": 7 + }, + { + "begin": 218, + "end": 428, + "name": "POP", + "source": 7 + }, + { + "begin": 218, + "end": 428, + "name": "POP", + "source": 7 + }, + { + "begin": 218, + "end": 428, + "jumpType": "[out]", + "name": "JUMP", + "source": 7 + } + ] + } + }, + "sourceList": [ + "contracts/interfaces/draft-IERC6093.sol", + "contracts/token/ERC20/ERC20.sol", + "contracts/token/ERC20/IERC20.sol", + "contracts/token/ERC20/extensions/ERC20Pausable.sol", + "contracts/token/ERC20/extensions/IERC20Metadata.sol", + "contracts/utils/Context.sol", + "contracts/utils/Pausable.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": { + "paused()": "5c975abb" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.\",\"errors\":{\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}]},\"events\":{\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/utils/Pausable.sol\":\"Pausable\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=contracts/\"]},\"sources\":{\"contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"contracts/utils/Pausable.sol\":{\"keccak256\":\"0xf11f182b233f92a2c7169c0a58e9b79d68e4fb16487210e4620349f8c60072ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15184450e50c0795f97be002c004abf72d7dc2f49ac9a5ac278ac0efb54e2a63\",\"dweb:/ipfs/QmeuEsznhKAB3ENZpuYka6iuvWey3hNXNV8DrpXK5FZacG\"]}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 828, + "contract": "contracts/utils/Pausable.sol:Pausable", + "label": "_paused", + "offset": 0, + "slot": "0", + "type": "t_uint256" + } + ], + "types": { + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + } + }, + "sources": { + "contracts/interfaces/draft-IERC6093.sol": { + "ast": { + "absolutePath": "contracts/interfaces/draft-IERC6093.sol", + "exportedSymbols": { + "IERC1155Errors": [ + 136 + ], + "IERC20Errors": [ + 41 + ], + "IERC721Errors": [ + 89 + ] + }, + "id": 137, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + ">=", + "0.8", + ".4" + ], + "nodeType": "PragmaDirective", + "src": "113:24:0" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC20Errors", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 2, + "nodeType": "StructuredDocumentation", + "src": "139:141:0", + "text": " @dev Standard ERC-20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens." + }, + "fullyImplemented": true, + "id": 41, + "linearizedBaseContracts": [ + 41 + ], + "name": "IERC20Errors", + "nameLocation": "291:12:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 3, + "nodeType": "StructuredDocumentation", + "src": "310:309:0", + "text": " @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer." + }, + "errorSelector": "e450d38c", + "id": 11, + "name": "ERC20InsufficientBalance", + "nameLocation": "630:24:0", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5, + "mutability": "mutable", + "name": "sender", + "nameLocation": "663:6:0", + "nodeType": "VariableDeclaration", + "scope": 11, + "src": "655:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "655:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7, + "mutability": "mutable", + "name": "balance", + "nameLocation": "679:7:0", + "nodeType": "VariableDeclaration", + "scope": 11, + "src": "671:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "671:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9, + "mutability": "mutable", + "name": "needed", + "nameLocation": "696:6:0", + "nodeType": "VariableDeclaration", + "scope": 11, + "src": "688:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "688:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "654:49:0" + }, + "src": "624:80:0" + }, + { + "documentation": { + "id": 12, + "nodeType": "StructuredDocumentation", + "src": "710:152:0", + "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred." + }, + "errorSelector": "96c6fd1e", + "id": 16, + "name": "ERC20InvalidSender", + "nameLocation": "873:18:0", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 15, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14, + "mutability": "mutable", + "name": "sender", + "nameLocation": "900:6:0", + "nodeType": "VariableDeclaration", + "scope": 16, + "src": "892:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "892:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "891:16:0" + }, + "src": "867:41:0" + }, + { + "documentation": { + "id": 17, + "nodeType": "StructuredDocumentation", + "src": "914:159:0", + "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred." + }, + "errorSelector": "ec442f05", + "id": 21, + "name": "ERC20InvalidReceiver", + "nameLocation": "1084:20:0", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 20, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 19, + "mutability": "mutable", + "name": "receiver", + "nameLocation": "1113:8:0", + "nodeType": "VariableDeclaration", + "scope": 21, + "src": "1105:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 18, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1105:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1104:18:0" + }, + "src": "1078:45:0" + }, + { + "documentation": { + "id": 22, + "nodeType": "StructuredDocumentation", + "src": "1129:345:0", + "text": " @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer." + }, + "errorSelector": "fb8f41b2", + "id": 30, + "name": "ERC20InsufficientAllowance", + "nameLocation": "1485:26:0", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 29, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 24, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1520:7:0", + "nodeType": "VariableDeclaration", + "scope": 30, + "src": "1512:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 23, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1512:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 26, + "mutability": "mutable", + "name": "allowance", + "nameLocation": "1537:9:0", + "nodeType": "VariableDeclaration", + "scope": 30, + "src": "1529:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 25, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1529:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 28, + "mutability": "mutable", + "name": "needed", + "nameLocation": "1556:6:0", + "nodeType": "VariableDeclaration", + "scope": 30, + "src": "1548:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 27, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1548:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1511:52:0" + }, + "src": "1479:85:0" + }, + { + "documentation": { + "id": 31, + "nodeType": "StructuredDocumentation", + "src": "1570:174:0", + "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation." + }, + "errorSelector": "e602df05", + "id": 35, + "name": "ERC20InvalidApprover", + "nameLocation": "1755:20:0", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 34, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33, + "mutability": "mutable", + "name": "approver", + "nameLocation": "1784:8:0", + "nodeType": "VariableDeclaration", + "scope": 35, + "src": "1776:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1776:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1775:18:0" + }, + "src": "1749:45:0" + }, + { + "documentation": { + "id": 36, + "nodeType": "StructuredDocumentation", + "src": "1800:195:0", + "text": " @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner." + }, + "errorSelector": "94280d62", + "id": 40, + "name": "ERC20InvalidSpender", + "nameLocation": "2006:19:0", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 39, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 38, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2034:7:0", + "nodeType": "VariableDeclaration", + "scope": 40, + "src": "2026:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 37, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2026:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2025:17:0" + }, + "src": "2000:43:0" + } + ], + "scope": 137, + "src": "281:1764:0", + "usedErrors": [ + 11, + 16, + 21, + 30, + 35, + 40 + ], + "usedEvents": [] + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC721Errors", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 42, + "nodeType": "StructuredDocumentation", + "src": "2047:143:0", + "text": " @dev Standard ERC-721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens." + }, + "fullyImplemented": true, + "id": 89, + "linearizedBaseContracts": [ + 89 + ], + "name": "IERC721Errors", + "nameLocation": "2201:13:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 43, + "nodeType": "StructuredDocumentation", + "src": "2221:219:0", + "text": " @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n Used in balance queries.\n @param owner Address of the current owner of a token." + }, + "errorSelector": "89c62b64", + "id": 47, + "name": "ERC721InvalidOwner", + "nameLocation": "2451:18:0", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 46, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 45, + "mutability": "mutable", + "name": "owner", + "nameLocation": "2478:5:0", + "nodeType": "VariableDeclaration", + "scope": 47, + "src": "2470:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2470:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2469:15:0" + }, + "src": "2445:40:0" + }, + { + "documentation": { + "id": 48, + "nodeType": "StructuredDocumentation", + "src": "2491:132:0", + "text": " @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token." + }, + "errorSelector": "7e273289", + "id": 52, + "name": "ERC721NonexistentToken", + "nameLocation": "2634:22:0", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 51, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "2665:7:0", + "nodeType": "VariableDeclaration", + "scope": 52, + "src": "2657:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 49, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2657:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2656:17:0" + }, + "src": "2628:46:0" + }, + { + "documentation": { + "id": 53, + "nodeType": "StructuredDocumentation", + "src": "2680:289:0", + "text": " @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token." + }, + "errorSelector": "64283d7b", + "id": 61, + "name": "ERC721IncorrectOwner", + "nameLocation": "2980:20:0", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 60, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 55, + "mutability": "mutable", + "name": "sender", + "nameLocation": "3009:6:0", + "nodeType": "VariableDeclaration", + "scope": 61, + "src": "3001:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 54, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3001:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3025:7:0", + "nodeType": "VariableDeclaration", + "scope": 61, + "src": "3017:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 56, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3017:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 59, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3042:5:0", + "nodeType": "VariableDeclaration", + "scope": 61, + "src": "3034:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 58, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3034:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3000:48:0" + }, + "src": "2974:75:0" + }, + { + "documentation": { + "id": 62, + "nodeType": "StructuredDocumentation", + "src": "3055:152:0", + "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred." + }, + "errorSelector": "73c6ac6e", + "id": 66, + "name": "ERC721InvalidSender", + "nameLocation": "3218:19:0", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 65, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 64, + "mutability": "mutable", + "name": "sender", + "nameLocation": "3246:6:0", + "nodeType": "VariableDeclaration", + "scope": 66, + "src": "3238:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 63, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3238:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3237:16:0" + }, + "src": "3212:42:0" + }, + { + "documentation": { + "id": 67, + "nodeType": "StructuredDocumentation", + "src": "3260:159:0", + "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred." + }, + "errorSelector": "64a0ae92", + "id": 71, + "name": "ERC721InvalidReceiver", + "nameLocation": "3430:21:0", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 70, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 69, + "mutability": "mutable", + "name": "receiver", + "nameLocation": "3460:8:0", + "nodeType": "VariableDeclaration", + "scope": 71, + "src": "3452:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 68, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3452:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3451:18:0" + }, + "src": "3424:46:0" + }, + { + "documentation": { + "id": 72, + "nodeType": "StructuredDocumentation", + "src": "3476:247:0", + "text": " @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token." + }, + "errorSelector": "177e802f", + "id": 78, + "name": "ERC721InsufficientApproval", + "nameLocation": "3734:26:0", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 77, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 74, + "mutability": "mutable", + "name": "operator", + "nameLocation": "3769:8:0", + "nodeType": "VariableDeclaration", + "scope": 78, + "src": "3761:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 73, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3761:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 76, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3787:7:0", + "nodeType": "VariableDeclaration", + "scope": 78, + "src": "3779:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 75, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3779:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3760:35:0" + }, + "src": "3728:68:0" + }, + { + "documentation": { + "id": 79, + "nodeType": "StructuredDocumentation", + "src": "3802:174:0", + "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation." + }, + "errorSelector": "a9fbf51f", + "id": 83, + "name": "ERC721InvalidApprover", + "nameLocation": "3987:21:0", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 82, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 81, + "mutability": "mutable", + "name": "approver", + "nameLocation": "4017:8:0", + "nodeType": "VariableDeclaration", + "scope": 83, + "src": "4009:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 80, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4009:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4008:18:0" + }, + "src": "3981:46:0" + }, + { + "documentation": { + "id": 84, + "nodeType": "StructuredDocumentation", + "src": "4033:197:0", + "text": " @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner." + }, + "errorSelector": "5b08ba18", + "id": 88, + "name": "ERC721InvalidOperator", + "nameLocation": "4241:21:0", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 87, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 86, + "mutability": "mutable", + "name": "operator", + "nameLocation": "4271:8:0", + "nodeType": "VariableDeclaration", + "scope": 88, + "src": "4263:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 85, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4263:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4262:18:0" + }, + "src": "4235:46:0" + } + ], + "scope": 137, + "src": "2191:2092:0", + "usedErrors": [ + 47, + 52, + 61, + 66, + 71, + 78, + 83, + 88 + ], + "usedEvents": [] + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC1155Errors", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 90, + "nodeType": "StructuredDocumentation", + "src": "4285:145:0", + "text": " @dev Standard ERC-1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens." + }, + "fullyImplemented": true, + "id": 136, + "linearizedBaseContracts": [ + 136 + ], + "name": "IERC1155Errors", + "nameLocation": "4441:14:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 91, + "nodeType": "StructuredDocumentation", + "src": "4462:361:0", + "text": " @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token." + }, + "errorSelector": "03dee4c5", + "id": 101, + "name": "ERC1155InsufficientBalance", + "nameLocation": "4834:26:0", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 100, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 93, + "mutability": "mutable", + "name": "sender", + "nameLocation": "4869:6:0", + "nodeType": "VariableDeclaration", + "scope": 101, + "src": "4861:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 92, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4861:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 95, + "mutability": "mutable", + "name": "balance", + "nameLocation": "4885:7:0", + "nodeType": "VariableDeclaration", + "scope": 101, + "src": "4877:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 94, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4877:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 97, + "mutability": "mutable", + "name": "needed", + "nameLocation": "4902:6:0", + "nodeType": "VariableDeclaration", + "scope": 101, + "src": "4894:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 96, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4894:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 99, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "4918:7:0", + "nodeType": "VariableDeclaration", + "scope": 101, + "src": "4910:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 98, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4910:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4860:66:0" + }, + "src": "4828:99:0" + }, + { + "documentation": { + "id": 102, + "nodeType": "StructuredDocumentation", + "src": "4933:152:0", + "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred." + }, + "errorSelector": "01a83514", + "id": 106, + "name": "ERC1155InvalidSender", + "nameLocation": "5096:20:0", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 105, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 104, + "mutability": "mutable", + "name": "sender", + "nameLocation": "5125:6:0", + "nodeType": "VariableDeclaration", + "scope": 106, + "src": "5117:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 103, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5117:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5116:16:0" + }, + "src": "5090:43:0" + }, + { + "documentation": { + "id": 107, + "nodeType": "StructuredDocumentation", + "src": "5139:159:0", + "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred." + }, + "errorSelector": "57f447ce", + "id": 111, + "name": "ERC1155InvalidReceiver", + "nameLocation": "5309:22:0", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 110, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 109, + "mutability": "mutable", + "name": "receiver", + "nameLocation": "5340:8:0", + "nodeType": "VariableDeclaration", + "scope": 111, + "src": "5332:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 108, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5332:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5331:18:0" + }, + "src": "5303:47:0" + }, + { + "documentation": { + "id": 112, + "nodeType": "StructuredDocumentation", + "src": "5356:256:0", + "text": " @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token." + }, + "errorSelector": "e237d922", + "id": 118, + "name": "ERC1155MissingApprovalForAll", + "nameLocation": "5623:28:0", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 117, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 114, + "mutability": "mutable", + "name": "operator", + "nameLocation": "5660:8:0", + "nodeType": "VariableDeclaration", + "scope": 118, + "src": "5652:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 113, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5652:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 116, + "mutability": "mutable", + "name": "owner", + "nameLocation": "5678:5:0", + "nodeType": "VariableDeclaration", + "scope": 118, + "src": "5670:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 115, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5670:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5651:33:0" + }, + "src": "5617:68:0" + }, + { + "documentation": { + "id": 119, + "nodeType": "StructuredDocumentation", + "src": "5691:174:0", + "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation." + }, + "errorSelector": "3e31884e", + "id": 123, + "name": "ERC1155InvalidApprover", + "nameLocation": "5876:22:0", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 122, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 121, + "mutability": "mutable", + "name": "approver", + "nameLocation": "5907:8:0", + "nodeType": "VariableDeclaration", + "scope": 123, + "src": "5899:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 120, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5899:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5898:18:0" + }, + "src": "5870:47:0" + }, + { + "documentation": { + "id": 124, + "nodeType": "StructuredDocumentation", + "src": "5923:197:0", + "text": " @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner." + }, + "errorSelector": "ced3e100", + "id": 128, + "name": "ERC1155InvalidOperator", + "nameLocation": "6131:22:0", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 127, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 126, + "mutability": "mutable", + "name": "operator", + "nameLocation": "6162:8:0", + "nodeType": "VariableDeclaration", + "scope": 128, + "src": "6154:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 125, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6154:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6153:18:0" + }, + "src": "6125:47:0" + }, + { + "documentation": { + "id": 129, + "nodeType": "StructuredDocumentation", + "src": "6178:280:0", + "text": " @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts" + }, + "errorSelector": "5b059991", + "id": 135, + "name": "ERC1155InvalidArrayLength", + "nameLocation": "6469:25:0", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 134, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 131, + "mutability": "mutable", + "name": "idsLength", + "nameLocation": "6503:9:0", + "nodeType": "VariableDeclaration", + "scope": 135, + "src": "6495:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 130, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6495:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 133, + "mutability": "mutable", + "name": "valuesLength", + "nameLocation": "6522:12:0", + "nodeType": "VariableDeclaration", + "scope": 135, + "src": "6514:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 132, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6514:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6494:41:0" + }, + "src": "6463:73:0" + } + ], + "scope": 137, + "src": "4431:2107:0", + "usedErrors": [ + 101, + 106, + 111, + 118, + 123, + 128, + 135 + ], + "usedEvents": [] + } + ], + "src": "113:6426:0" + }, + "id": 0 + }, + "contracts/token/ERC20/ERC20.sol": { + "ast": { + "absolutePath": "contracts/token/ERC20/ERC20.sol", + "exportedSymbols": { + "Context": [ + 819 + ], + "ERC20": [ + 651 + ], + "IERC20": [ + 729 + ], + "IERC20Errors": [ + 41 + ], + "IERC20Metadata": [ + 789 + ] + }, + "id": 652, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 138, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "105:24:1" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 140, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 652, + "sourceUnit": 730, + "src": "131:36:1", + "symbolAliases": [ + { + "foreign": { + "id": 139, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 729, + "src": "139:6:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/extensions/IERC20Metadata.sol", + "file": "./extensions/IERC20Metadata.sol", + "id": 142, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 652, + "sourceUnit": 790, + "src": "168:63:1", + "symbolAliases": [ + { + "foreign": { + "id": 141, + "name": "IERC20Metadata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 789, + "src": "176:14:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/utils/Context.sol", + "file": "../../utils/Context.sol", + "id": 144, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 652, + "sourceUnit": 820, + "src": "232:48:1", + "symbolAliases": [ + { + "foreign": { + "id": 143, + "name": "Context", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 819, + "src": "240:7:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/interfaces/draft-IERC6093.sol", + "file": "../../interfaces/draft-IERC6093.sol", + "id": 146, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 652, + "sourceUnit": 137, + "src": "281:65:1", + "symbolAliases": [ + { + "foreign": { + "id": 145, + "name": "IERC20Errors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41, + "src": "289:12:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 148, + "name": "Context", + "nameLocations": [ + "1133:7:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 819, + "src": "1133:7:1" + }, + "id": 149, + "nodeType": "InheritanceSpecifier", + "src": "1133:7:1" + }, + { + "baseName": { + "id": 150, + "name": "IERC20", + "nameLocations": [ + "1142:6:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 729, + "src": "1142:6:1" + }, + "id": 151, + "nodeType": "InheritanceSpecifier", + "src": "1142:6:1" + }, + { + "baseName": { + "id": 152, + "name": "IERC20Metadata", + "nameLocations": [ + "1150:14:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 789, + "src": "1150:14:1" + }, + "id": 153, + "nodeType": "InheritanceSpecifier", + "src": "1150:14:1" + }, + { + "baseName": { + "id": 154, + "name": "IERC20Errors", + "nameLocations": [ + "1166:12:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 41, + "src": "1166:12:1" + }, + "id": 155, + "nodeType": "InheritanceSpecifier", + "src": "1166:12:1" + } + ], + "canonicalName": "ERC20", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 147, + "nodeType": "StructuredDocumentation", + "src": "348:757:1", + "text": " @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC-20\n applications." + }, + "fullyImplemented": true, + "id": 651, + "linearizedBaseContracts": [ + 651, + 41, + 789, + 729, + 819 + ], + "name": "ERC20", + "nameLocation": "1124:5:1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 159, + "mutability": "mutable", + "name": "_balances", + "nameLocation": "1229:9:1", + "nodeType": "VariableDeclaration", + "scope": 651, + "src": "1185:53:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 158, + "keyName": "account", + "keyNameLocation": "1201:7:1", + "keyType": { + "id": 156, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1193:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1185:35:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 157, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1212:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 165, + "mutability": "mutable", + "name": "_allowances", + "nameLocation": "1317:11:1", + "nodeType": "VariableDeclaration", + "scope": 651, + "src": "1245:83:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 164, + "keyName": "account", + "keyNameLocation": "1261:7:1", + "keyType": { + "id": 160, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1253:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1245:63:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 163, + "keyName": "spender", + "keyNameLocation": "1288:7:1", + "keyType": { + "id": 161, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1280:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1272:35:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 162, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1299:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 167, + "mutability": "mutable", + "name": "_totalSupply", + "nameLocation": "1351:12:1", + "nodeType": "VariableDeclaration", + "scope": 651, + "src": "1335:28:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 166, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1335:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 169, + "mutability": "mutable", + "name": "_name", + "nameLocation": "1385:5:1", + "nodeType": "VariableDeclaration", + "scope": 651, + "src": "1370:20:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 168, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1370:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 171, + "mutability": "mutable", + "name": "_symbol", + "nameLocation": "1411:7:1", + "nodeType": "VariableDeclaration", + "scope": 651, + "src": "1396:22:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 170, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1396:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 187, + "nodeType": "Block", + "src": "1638:57:1", + "statements": [ + { + "expression": { + "id": 181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 179, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "1648:5:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 180, + "name": "name_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 174, + "src": "1656:5:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "1648:13:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 182, + "nodeType": "ExpressionStatement", + "src": "1648:13:1" + }, + { + "expression": { + "id": 185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 183, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 171, + "src": "1671:7:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 184, + "name": "symbol_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 176, + "src": "1681:7:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "1671:17:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 186, + "nodeType": "ExpressionStatement", + "src": "1671:17:1" + } + ] + }, + "documentation": { + "id": 172, + "nodeType": "StructuredDocumentation", + "src": "1425:152:1", + "text": " @dev Sets the values for {name} and {symbol}.\n Both values are immutable: they can only be set once during construction." + }, + "id": 188, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 177, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 174, + "mutability": "mutable", + "name": "name_", + "nameLocation": "1608:5:1", + "nodeType": "VariableDeclaration", + "scope": 188, + "src": "1594:19:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 173, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1594:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 176, + "mutability": "mutable", + "name": "symbol_", + "nameLocation": "1629:7:1", + "nodeType": "VariableDeclaration", + "scope": 188, + "src": "1615:21:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 175, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1615:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1593:44:1" + }, + "returnParameters": { + "id": 178, + "nodeType": "ParameterList", + "parameters": [], + "src": "1638:0:1" + }, + "scope": 651, + "src": "1582:113:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 776 + ], + "body": { + "id": 196, + "nodeType": "Block", + "src": "1820:29:1", + "statements": [ + { + "expression": { + "id": 194, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "1837:5:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 193, + "id": 195, + "nodeType": "Return", + "src": "1830:12:1" + } + ] + }, + "documentation": { + "id": 189, + "nodeType": "StructuredDocumentation", + "src": "1701:54:1", + "text": " @dev Returns the name of the token." + }, + "functionSelector": "06fdde03", + "id": 197, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "1769:4:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 190, + "nodeType": "ParameterList", + "parameters": [], + "src": "1773:2:1" + }, + "returnParameters": { + "id": 193, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 192, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 197, + "src": "1805:13:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 191, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1805:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1804:15:1" + }, + "scope": 651, + "src": "1760:89:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 782 + ], + "body": { + "id": 205, + "nodeType": "Block", + "src": "2024:31:1", + "statements": [ + { + "expression": { + "id": 203, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 171, + "src": "2041:7:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 202, + "id": 204, + "nodeType": "Return", + "src": "2034:14:1" + } + ] + }, + "documentation": { + "id": 198, + "nodeType": "StructuredDocumentation", + "src": "1855:102:1", + "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name." + }, + "functionSelector": "95d89b41", + "id": 206, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "1971:6:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 199, + "nodeType": "ParameterList", + "parameters": [], + "src": "1977:2:1" + }, + "returnParameters": { + "id": 202, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 201, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 206, + "src": "2009:13:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 200, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2009:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2008:15:1" + }, + "scope": 651, + "src": "1962:93:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 788 + ], + "body": { + "id": 214, + "nodeType": "Block", + "src": "2744:26:1", + "statements": [ + { + "expression": { + "hexValue": "3138", + "id": 212, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2761:2:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "functionReturnParameters": 211, + "id": 213, + "nodeType": "Return", + "src": "2754:9:1" + } + ] + }, + "documentation": { + "id": 207, + "nodeType": "StructuredDocumentation", + "src": "2061:622:1", + "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the default value returned by this function, unless\n it's overridden.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}." + }, + "functionSelector": "313ce567", + "id": 215, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nameLocation": "2697:8:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 208, + "nodeType": "ParameterList", + "parameters": [], + "src": "2705:2:1" + }, + "returnParameters": { + "id": 211, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 210, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 215, + "src": "2737:5:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 209, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2737:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "2736:7:1" + }, + "scope": 651, + "src": "2688:82:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 678 + ], + "body": { + "id": 223, + "nodeType": "Block", + "src": "2864:36:1", + "statements": [ + { + "expression": { + "id": 221, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "2881:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 220, + "id": 222, + "nodeType": "Return", + "src": "2874:19:1" + } + ] + }, + "documentation": { + "id": 216, + "nodeType": "StructuredDocumentation", + "src": "2776:22:1", + "text": "@inheritdoc IERC20" + }, + "functionSelector": "18160ddd", + "id": 224, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "2812:11:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 217, + "nodeType": "ParameterList", + "parameters": [], + "src": "2823:2:1" + }, + "returnParameters": { + "id": 220, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 219, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 224, + "src": "2855:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 218, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2855:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2854:9:1" + }, + "scope": 651, + "src": "2803:97:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 686 + ], + "body": { + "id": 236, + "nodeType": "Block", + "src": "3007:42:1", + "statements": [ + { + "expression": { + "baseExpression": { + "id": 232, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 159, + "src": "3024:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 234, + "indexExpression": { + "id": 233, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 227, + "src": "3034:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3024:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 231, + "id": 235, + "nodeType": "Return", + "src": "3017:25:1" + } + ] + }, + "documentation": { + "id": 225, + "nodeType": "StructuredDocumentation", + "src": "2906:22:1", + "text": "@inheritdoc IERC20" + }, + "functionSelector": "70a08231", + "id": 237, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "2942:9:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 228, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 227, + "mutability": "mutable", + "name": "account", + "nameLocation": "2960:7:1", + "nodeType": "VariableDeclaration", + "scope": 237, + "src": "2952:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 226, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2952:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2951:17:1" + }, + "returnParameters": { + "id": 231, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 230, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 237, + "src": "2998:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 229, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2998:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2997:9:1" + }, + "scope": 651, + "src": "2933:116:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 696 + ], + "body": { + "id": 260, + "nodeType": "Block", + "src": "3319:103:1", + "statements": [ + { + "assignments": [ + 248 + ], + "declarations": [ + { + "constant": false, + "id": 248, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3337:5:1", + "nodeType": "VariableDeclaration", + "scope": 260, + "src": "3329:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 247, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3329:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 251, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 249, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "3345:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3345:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3329:28:1" + }, + { + "expression": { + "arguments": [ + { + "id": 253, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 248, + "src": "3377:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 254, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 240, + "src": "3384:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 255, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 242, + "src": "3388:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 252, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 381, + "src": "3367:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3367:27:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 257, + "nodeType": "ExpressionStatement", + "src": "3367:27:1" + }, + { + "expression": { + "hexValue": "74727565", + "id": 258, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3411:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 246, + "id": 259, + "nodeType": "Return", + "src": "3404:11:1" + } + ] + }, + "documentation": { + "id": 238, + "nodeType": "StructuredDocumentation", + "src": "3055:184:1", + "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `value`." + }, + "functionSelector": "a9059cbb", + "id": 261, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "3253:8:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 243, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 240, + "mutability": "mutable", + "name": "to", + "nameLocation": "3270:2:1", + "nodeType": "VariableDeclaration", + "scope": 261, + "src": "3262:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 239, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3262:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 242, + "mutability": "mutable", + "name": "value", + "nameLocation": "3282:5:1", + "nodeType": "VariableDeclaration", + "scope": 261, + "src": "3274:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 241, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3274:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3261:27:1" + }, + "returnParameters": { + "id": 246, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 245, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 261, + "src": "3313:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 244, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3313:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3312:6:1" + }, + "scope": 651, + "src": "3244:178:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 706 + ], + "body": { + "id": 277, + "nodeType": "Block", + "src": "3544:51:1", + "statements": [ + { + "expression": { + "baseExpression": { + "baseExpression": { + "id": 271, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "3561:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 273, + "indexExpression": { + "id": 272, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 264, + "src": "3573:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3561:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 275, + "indexExpression": { + "id": 274, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 266, + "src": "3580:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3561:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 270, + "id": 276, + "nodeType": "Return", + "src": "3554:34:1" + } + ] + }, + "documentation": { + "id": 262, + "nodeType": "StructuredDocumentation", + "src": "3428:22:1", + "text": "@inheritdoc IERC20" + }, + "functionSelector": "dd62ed3e", + "id": 278, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nameLocation": "3464:9:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 267, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 264, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3482:5:1", + "nodeType": "VariableDeclaration", + "scope": 278, + "src": "3474:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 263, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3474:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 266, + "mutability": "mutable", + "name": "spender", + "nameLocation": "3497:7:1", + "nodeType": "VariableDeclaration", + "scope": 278, + "src": "3489:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 265, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3489:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3473:32:1" + }, + "returnParameters": { + "id": 270, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 269, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 278, + "src": "3535:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 268, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3535:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3534:9:1" + }, + "scope": 651, + "src": "3455:140:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 716 + ], + "body": { + "id": 301, + "nodeType": "Block", + "src": "3981:107:1", + "statements": [ + { + "assignments": [ + 289 + ], + "declarations": [ + { + "constant": false, + "id": 289, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3999:5:1", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "3991:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 288, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3991:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 292, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 290, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "4007:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4007:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3991:28:1" + }, + { + "expression": { + "arguments": [ + { + "id": 294, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 289, + "src": "4038:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 295, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 281, + "src": "4045:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 296, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 283, + "src": "4054:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 293, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 542, + 602 + ], + "referencedDeclaration": 542, + "src": "4029:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 297, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4029:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 298, + "nodeType": "ExpressionStatement", + "src": "4029:31:1" + }, + { + "expression": { + "hexValue": "74727565", + "id": 299, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4077:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 287, + "id": 300, + "nodeType": "Return", + "src": "4070:11:1" + } + ] + }, + "documentation": { + "id": 279, + "nodeType": "StructuredDocumentation", + "src": "3601:296:1", + "text": " @dev See {IERC20-approve}.\n NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address." + }, + "functionSelector": "095ea7b3", + "id": 302, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "3911:7:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 284, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 281, + "mutability": "mutable", + "name": "spender", + "nameLocation": "3927:7:1", + "nodeType": "VariableDeclaration", + "scope": 302, + "src": "3919:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 280, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3919:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 283, + "mutability": "mutable", + "name": "value", + "nameLocation": "3944:5:1", + "nodeType": "VariableDeclaration", + "scope": 302, + "src": "3936:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 282, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3936:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3918:32:1" + }, + "returnParameters": { + "id": 287, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 286, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 302, + "src": "3975:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 285, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3975:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3974:6:1" + }, + "scope": 651, + "src": "3902:186:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 728 + ], + "body": { + "id": 333, + "nodeType": "Block", + "src": "4773:151:1", + "statements": [ + { + "assignments": [ + 315 + ], + "declarations": [ + { + "constant": false, + "id": 315, + "mutability": "mutable", + "name": "spender", + "nameLocation": "4791:7:1", + "nodeType": "VariableDeclaration", + "scope": 333, + "src": "4783:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 314, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4783:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 318, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 316, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "4801:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 317, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4801:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4783:30:1" + }, + { + "expression": { + "arguments": [ + { + "id": 320, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 305, + "src": "4839:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 321, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "4845:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 322, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 309, + "src": "4854:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 319, + "name": "_spendAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 650, + "src": "4823:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4823:37:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 324, + "nodeType": "ExpressionStatement", + "src": "4823:37:1" + }, + { + "expression": { + "arguments": [ + { + "id": 326, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 305, + "src": "4880:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 327, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 307, + "src": "4886:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 328, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 309, + "src": "4890:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 325, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 381, + "src": "4870:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4870:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 330, + "nodeType": "ExpressionStatement", + "src": "4870:26:1" + }, + { + "expression": { + "hexValue": "74727565", + "id": 331, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4913:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 313, + "id": 332, + "nodeType": "Return", + "src": "4906:11:1" + } + ] + }, + "documentation": { + "id": 303, + "nodeType": "StructuredDocumentation", + "src": "4094:581:1", + "text": " @dev See {IERC20-transferFrom}.\n Skips emitting an {Approval} event indicating an allowance update. This is not\n required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `value`.\n - the caller must have allowance for ``from``'s tokens of at least\n `value`." + }, + "functionSelector": "23b872dd", + "id": 334, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "4689:12:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 310, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 305, + "mutability": "mutable", + "name": "from", + "nameLocation": "4710:4:1", + "nodeType": "VariableDeclaration", + "scope": 334, + "src": "4702:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 304, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4702:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 307, + "mutability": "mutable", + "name": "to", + "nameLocation": "4724:2:1", + "nodeType": "VariableDeclaration", + "scope": 334, + "src": "4716:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 306, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4716:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 309, + "mutability": "mutable", + "name": "value", + "nameLocation": "4736:5:1", + "nodeType": "VariableDeclaration", + "scope": 334, + "src": "4728:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 308, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4728:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4701:41:1" + }, + "returnParameters": { + "id": 313, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 312, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 334, + "src": "4767:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 311, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4767:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4766:6:1" + }, + "scope": 651, + "src": "4680:244:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 380, + "nodeType": "Block", + "src": "5366:231:1", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 344, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 337, + "src": "5380:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 347, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5396:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 346, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5388:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 345, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5388:7:1", + "typeDescriptions": {} + } + }, + "id": 348, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5388:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5380:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 358, + "nodeType": "IfStatement", + "src": "5376:86:1", + "trueBody": { + "id": 357, + "nodeType": "Block", + "src": "5400:62:1", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5448:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 352, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5440:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 351, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5440:7:1", + "typeDescriptions": {} + } + }, + "id": 354, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5440:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 350, + "name": "ERC20InvalidSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16, + "src": "5421:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$", + "typeString": "function (address) pure returns (error)" + } + }, + "id": 355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5421:30:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 356, + "nodeType": "RevertStatement", + "src": "5414:37:1" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 359, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 339, + "src": "5475:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 362, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5489:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 361, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5481:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 360, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5481:7:1", + "typeDescriptions": {} + } + }, + "id": 363, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5481:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5475:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 373, + "nodeType": "IfStatement", + "src": "5471:86:1", + "trueBody": { + "id": 372, + "nodeType": "Block", + "src": "5493:64:1", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 368, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5543:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 367, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5535:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 366, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5535:7:1", + "typeDescriptions": {} + } + }, + "id": 369, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5535:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 365, + "name": "ERC20InvalidReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 21, + "src": "5514:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$", + "typeString": "function (address) pure returns (error)" + } + }, + "id": 370, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5514:32:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 371, + "nodeType": "RevertStatement", + "src": "5507:39:1" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 375, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 337, + "src": "5574:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 376, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 339, + "src": "5580:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 377, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 341, + "src": "5584:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 374, + "name": "_update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "5566:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5566:24:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 379, + "nodeType": "ExpressionStatement", + "src": "5566:24:1" + } + ] + }, + "documentation": { + "id": 335, + "nodeType": "StructuredDocumentation", + "src": "4930:362:1", + "text": " @dev Moves a `value` amount of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n NOTE: This function is not virtual, {_update} should be overridden instead." + }, + "id": 381, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nameLocation": "5306:9:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 342, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 337, + "mutability": "mutable", + "name": "from", + "nameLocation": "5324:4:1", + "nodeType": "VariableDeclaration", + "scope": 381, + "src": "5316:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 336, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5316:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 339, + "mutability": "mutable", + "name": "to", + "nameLocation": "5338:2:1", + "nodeType": "VariableDeclaration", + "scope": 381, + "src": "5330:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 338, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5330:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 341, + "mutability": "mutable", + "name": "value", + "nameLocation": "5350:5:1", + "nodeType": "VariableDeclaration", + "scope": 381, + "src": "5342:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 340, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5342:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5315:41:1" + }, + "returnParameters": { + "id": 343, + "nodeType": "ParameterList", + "parameters": [], + "src": "5366:0:1" + }, + "scope": 651, + "src": "5297:300:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 457, + "nodeType": "Block", + "src": "5987:1032:1", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 391, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 384, + "src": "6001:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 394, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6017:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 393, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6009:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 392, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6009:7:1", + "typeDescriptions": {} + } + }, + "id": 395, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6009:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6001:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 428, + "nodeType": "Block", + "src": "6175:362:1", + "statements": [ + { + "assignments": [ + 403 + ], + "declarations": [ + { + "constant": false, + "id": 403, + "mutability": "mutable", + "name": "fromBalance", + "nameLocation": "6197:11:1", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "6189:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 402, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6189:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 407, + "initialValue": { + "baseExpression": { + "id": 404, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 159, + "src": "6211:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 406, + "indexExpression": { + "id": 405, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 384, + "src": "6221:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6211:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6189:37:1" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 408, + "name": "fromBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 403, + "src": "6244:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 409, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 388, + "src": "6258:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6244:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 418, + "nodeType": "IfStatement", + "src": "6240:115:1", + "trueBody": { + "id": 417, + "nodeType": "Block", + "src": "6265:90:1", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 412, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 384, + "src": "6315:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 413, + "name": "fromBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 403, + "src": "6321:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 414, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 388, + "src": "6334:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 411, + "name": "ERC20InsufficientBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11, + "src": "6290:24:1", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$", + "typeString": "function (address,uint256,uint256) pure returns (error)" + } + }, + "id": 415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6290:50:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 416, + "nodeType": "RevertStatement", + "src": "6283:57:1" + } + ] + } + }, + { + "id": 427, + "nodeType": "UncheckedBlock", + "src": "6368:159:1", + "statements": [ + { + "expression": { + "id": 425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 419, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 159, + "src": "6475:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 421, + "indexExpression": { + "id": 420, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 384, + "src": "6485:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6475:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 422, + "name": "fromBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 403, + "src": "6493:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 423, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 388, + "src": "6507:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6493:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6475:37:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 426, + "nodeType": "ExpressionStatement", + "src": "6475:37:1" + } + ] + } + ] + }, + "id": 429, + "nodeType": "IfStatement", + "src": "5997:540:1", + "trueBody": { + "id": 401, + "nodeType": "Block", + "src": "6021:148:1", + "statements": [ + { + "expression": { + "id": 399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 397, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "6137:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 398, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 388, + "src": "6153:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6137:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 400, + "nodeType": "ExpressionStatement", + "src": "6137:21:1" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 430, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 386, + "src": "6551:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 433, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6565:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 432, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6557:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 431, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6557:7:1", + "typeDescriptions": {} + } + }, + "id": 434, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6557:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6551:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 449, + "nodeType": "Block", + "src": "6766:206:1", + "statements": [ + { + "id": 448, + "nodeType": "UncheckedBlock", + "src": "6780:182:1", + "statements": [ + { + "expression": { + "id": 446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 442, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 159, + "src": "6925:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 444, + "indexExpression": { + "id": 443, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 386, + "src": "6935:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6925:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 445, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 388, + "src": "6942:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6925:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 447, + "nodeType": "ExpressionStatement", + "src": "6925:22:1" + } + ] + } + ] + }, + "id": 450, + "nodeType": "IfStatement", + "src": "6547:425:1", + "trueBody": { + "id": 441, + "nodeType": "Block", + "src": "6569:191:1", + "statements": [ + { + "id": 440, + "nodeType": "UncheckedBlock", + "src": "6583:167:1", + "statements": [ + { + "expression": { + "id": 438, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 436, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "6714:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "id": 437, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 388, + "src": "6730:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6714:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 439, + "nodeType": "ExpressionStatement", + "src": "6714:21:1" + } + ] + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 452, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 384, + "src": "6996:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 453, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 386, + "src": "7002:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 454, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 388, + "src": "7006:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 451, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 663, + "src": "6987:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6987:25:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 456, + "nodeType": "EmitStatement", + "src": "6982:30:1" + } + ] + }, + "documentation": { + "id": 382, + "nodeType": "StructuredDocumentation", + "src": "5603:304:1", + "text": " @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n this function.\n Emits a {Transfer} event." + }, + "id": 458, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_update", + "nameLocation": "5921:7:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 389, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 384, + "mutability": "mutable", + "name": "from", + "nameLocation": "5937:4:1", + "nodeType": "VariableDeclaration", + "scope": 458, + "src": "5929:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 383, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5929:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 386, + "mutability": "mutable", + "name": "to", + "nameLocation": "5951:2:1", + "nodeType": "VariableDeclaration", + "scope": 458, + "src": "5943:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 385, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5943:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 388, + "mutability": "mutable", + "name": "value", + "nameLocation": "5963:5:1", + "nodeType": "VariableDeclaration", + "scope": 458, + "src": "5955:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 387, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5955:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5928:41:1" + }, + "returnParameters": { + "id": 390, + "nodeType": "ParameterList", + "parameters": [], + "src": "5987:0:1" + }, + "scope": 651, + "src": "5912:1107:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 490, + "nodeType": "Block", + "src": "7418:152:1", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 466, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 461, + "src": "7432:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 469, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7451:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 468, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7443:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 467, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7443:7:1", + "typeDescriptions": {} + } + }, + "id": 470, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7443:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7432:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 480, + "nodeType": "IfStatement", + "src": "7428:91:1", + "trueBody": { + "id": 479, + "nodeType": "Block", + "src": "7455:64:1", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 475, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7505:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 474, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7497:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 473, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7497:7:1", + "typeDescriptions": {} + } + }, + "id": 476, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7497:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 472, + "name": "ERC20InvalidReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 21, + "src": "7476:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$", + "typeString": "function (address) pure returns (error)" + } + }, + "id": 477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7476:32:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 478, + "nodeType": "RevertStatement", + "src": "7469:39:1" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 484, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7544:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 483, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7536:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 482, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7536:7:1", + "typeDescriptions": {} + } + }, + "id": 485, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7536:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 486, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 461, + "src": "7548:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 487, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 463, + "src": "7557:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 481, + "name": "_update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "7528:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7528:35:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 489, + "nodeType": "ExpressionStatement", + "src": "7528:35:1" + } + ] + }, + "documentation": { + "id": 459, + "nodeType": "StructuredDocumentation", + "src": "7025:332:1", + "text": " @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n Relies on the `_update` mechanism\n Emits a {Transfer} event with `from` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead." + }, + "id": 491, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nameLocation": "7371:5:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 464, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 461, + "mutability": "mutable", + "name": "account", + "nameLocation": "7385:7:1", + "nodeType": "VariableDeclaration", + "scope": 491, + "src": "7377:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 460, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7377:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 463, + "mutability": "mutable", + "name": "value", + "nameLocation": "7402:5:1", + "nodeType": "VariableDeclaration", + "scope": 491, + "src": "7394:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 462, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7394:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7376:32:1" + }, + "returnParameters": { + "id": 465, + "nodeType": "ParameterList", + "parameters": [], + "src": "7418:0:1" + }, + "scope": 651, + "src": "7362:208:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 523, + "nodeType": "Block", + "src": "7944:150:1", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 499, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 494, + "src": "7958:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 502, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7977:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 501, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7969:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 500, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7969:7:1", + "typeDescriptions": {} + } + }, + "id": 503, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7969:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7958:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 513, + "nodeType": "IfStatement", + "src": "7954:89:1", + "trueBody": { + "id": 512, + "nodeType": "Block", + "src": "7981:62:1", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 508, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8029:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 507, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8021:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 506, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8021:7:1", + "typeDescriptions": {} + } + }, + "id": 509, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8021:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 505, + "name": "ERC20InvalidSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16, + "src": "8002:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$", + "typeString": "function (address) pure returns (error)" + } + }, + "id": 510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8002:30:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 511, + "nodeType": "RevertStatement", + "src": "7995:37:1" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 515, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 494, + "src": "8060:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 518, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8077:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 517, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8069:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 516, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8069:7:1", + "typeDescriptions": {} + } + }, + "id": 519, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8069:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 520, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 496, + "src": "8081:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 514, + "name": "_update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "8052:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8052:35:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 522, + "nodeType": "ExpressionStatement", + "src": "8052:35:1" + } + ] + }, + "documentation": { + "id": 492, + "nodeType": "StructuredDocumentation", + "src": "7576:307:1", + "text": " @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n Relies on the `_update` mechanism.\n Emits a {Transfer} event with `to` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead" + }, + "id": 524, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nameLocation": "7897:5:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 497, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 494, + "mutability": "mutable", + "name": "account", + "nameLocation": "7911:7:1", + "nodeType": "VariableDeclaration", + "scope": 524, + "src": "7903:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 493, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7903:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 496, + "mutability": "mutable", + "name": "value", + "nameLocation": "7928:5:1", + "nodeType": "VariableDeclaration", + "scope": 524, + "src": "7920:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 495, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7920:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7902:32:1" + }, + "returnParameters": { + "id": 498, + "nodeType": "ParameterList", + "parameters": [], + "src": "7944:0:1" + }, + "scope": 651, + "src": "7888:206:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 541, + "nodeType": "Block", + "src": "8704:54:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 535, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 527, + "src": "8723:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 536, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 529, + "src": "8730:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 537, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 531, + "src": "8739:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "74727565", + "id": 538, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8746:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 534, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 542, + 602 + ], + "referencedDeclaration": 602, + "src": "8714:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (address,address,uint256,bool)" + } + }, + "id": 539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8714:37:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 540, + "nodeType": "ExpressionStatement", + "src": "8714:37:1" + } + ] + }, + "documentation": { + "id": 525, + "nodeType": "StructuredDocumentation", + "src": "8100:525:1", + "text": " @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument." + }, + "id": 542, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nameLocation": "8639:8:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 532, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 527, + "mutability": "mutable", + "name": "owner", + "nameLocation": "8656:5:1", + "nodeType": "VariableDeclaration", + "scope": 542, + "src": "8648:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 526, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8648:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 529, + "mutability": "mutable", + "name": "spender", + "nameLocation": "8671:7:1", + "nodeType": "VariableDeclaration", + "scope": 542, + "src": "8663:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 528, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8663:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 531, + "mutability": "mutable", + "name": "value", + "nameLocation": "8688:5:1", + "nodeType": "VariableDeclaration", + "scope": 542, + "src": "8680:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 530, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8680:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8647:47:1" + }, + "returnParameters": { + "id": 533, + "nodeType": "ParameterList", + "parameters": [], + "src": "8704:0:1" + }, + "scope": 651, + "src": "8630:128:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 601, + "nodeType": "Block", + "src": "9703:334:1", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 559, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 554, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 545, + "src": "9717:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 557, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9734:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 556, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9726:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 555, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9726:7:1", + "typeDescriptions": {} + } + }, + "id": 558, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9726:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9717:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 568, + "nodeType": "IfStatement", + "src": "9713:89:1", + "trueBody": { + "id": 567, + "nodeType": "Block", + "src": "9738:64:1", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 563, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9788:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 562, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9780:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 561, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9780:7:1", + "typeDescriptions": {} + } + }, + "id": 564, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9780:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 560, + "name": "ERC20InvalidApprover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "9759:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$", + "typeString": "function (address) pure returns (error)" + } + }, + "id": 565, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9759:32:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 566, + "nodeType": "RevertStatement", + "src": "9752:39:1" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 569, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "9815:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 572, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9834:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 571, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9826:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 570, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9826:7:1", + "typeDescriptions": {} + } + }, + "id": 573, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9826:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9815:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 583, + "nodeType": "IfStatement", + "src": "9811:90:1", + "trueBody": { + "id": 582, + "nodeType": "Block", + "src": "9838:63:1", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 578, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9887:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9879:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 576, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9879:7:1", + "typeDescriptions": {} + } + }, + "id": 579, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9879:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 575, + "name": "ERC20InvalidSpender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "9859:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$", + "typeString": "function (address) pure returns (error)" + } + }, + "id": 580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9859:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 581, + "nodeType": "RevertStatement", + "src": "9852:38:1" + } + ] + } + }, + { + "expression": { + "id": 590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 584, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "9910:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 587, + "indexExpression": { + "id": 585, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 545, + "src": "9922:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9910:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 588, + "indexExpression": { + "id": 586, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "9929:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9910:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 589, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 549, + "src": "9940:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9910:35:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 591, + "nodeType": "ExpressionStatement", + "src": "9910:35:1" + }, + { + "condition": { + "id": 592, + "name": "emitEvent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 551, + "src": "9959:9:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 600, + "nodeType": "IfStatement", + "src": "9955:76:1", + "trueBody": { + "id": 599, + "nodeType": "Block", + "src": "9970:61:1", + "statements": [ + { + "eventCall": { + "arguments": [ + { + "id": 594, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 545, + "src": "9998:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 595, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10005:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 596, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 549, + "src": "10014:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 593, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 672, + "src": "9989:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9989:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 598, + "nodeType": "EmitStatement", + "src": "9984:36:1" + } + ] + } + } + ] + }, + "documentation": { + "id": 543, + "nodeType": "StructuredDocumentation", + "src": "8764:836:1", + "text": " @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n `Approval` event during `transferFrom` operations.\n Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n true using the following override:\n ```solidity\n function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n super._approve(owner, spender, value, true);\n }\n ```\n Requirements are the same as {_approve}." + }, + "id": 602, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nameLocation": "9614:8:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 552, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 545, + "mutability": "mutable", + "name": "owner", + "nameLocation": "9631:5:1", + "nodeType": "VariableDeclaration", + "scope": 602, + "src": "9623:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 544, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9623:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 547, + "mutability": "mutable", + "name": "spender", + "nameLocation": "9646:7:1", + "nodeType": "VariableDeclaration", + "scope": 602, + "src": "9638:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 546, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9638:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 549, + "mutability": "mutable", + "name": "value", + "nameLocation": "9663:5:1", + "nodeType": "VariableDeclaration", + "scope": 602, + "src": "9655:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 548, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9655:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 551, + "mutability": "mutable", + "name": "emitEvent", + "nameLocation": "9675:9:1", + "nodeType": "VariableDeclaration", + "scope": 602, + "src": "9670:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 550, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9670:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "9622:63:1" + }, + "returnParameters": { + "id": 553, + "nodeType": "ParameterList", + "parameters": [], + "src": "9703:0:1" + }, + "scope": 651, + "src": "9605:432:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 649, + "nodeType": "Block", + "src": "10408:387:1", + "statements": [ + { + "assignments": [ + 613 + ], + "declarations": [ + { + "constant": false, + "id": 613, + "mutability": "mutable", + "name": "currentAllowance", + "nameLocation": "10426:16:1", + "nodeType": "VariableDeclaration", + "scope": 649, + "src": "10418:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 612, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10418:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 618, + "initialValue": { + "arguments": [ + { + "id": 615, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 605, + "src": "10455:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 616, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 607, + "src": "10462:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 614, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 278, + "src": "10445:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view returns (uint256)" + } + }, + "id": 617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10445:25:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10418:52:1" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 619, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 613, + "src": "10484:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 622, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10508:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 621, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10508:7:1", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 620, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "10503:4:1", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 623, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10503:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 624, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10517:3:1", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "10503:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10484:36:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 648, + "nodeType": "IfStatement", + "src": "10480:309:1", + "trueBody": { + "id": 647, + "nodeType": "Block", + "src": "10522:267:1", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 626, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 613, + "src": "10540:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 627, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 609, + "src": "10559:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10540:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 636, + "nodeType": "IfStatement", + "src": "10536:130:1", + "trueBody": { + "id": 635, + "nodeType": "Block", + "src": "10566:100:1", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 630, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 607, + "src": "10618:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 631, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 613, + "src": "10627:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 632, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 609, + "src": "10645:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 629, + "name": "ERC20InsufficientAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "10591:26:1", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$", + "typeString": "function (address,uint256,uint256) pure returns (error)" + } + }, + "id": 633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10591:60:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 634, + "nodeType": "RevertStatement", + "src": "10584:67:1" + } + ] + } + }, + { + "id": 646, + "nodeType": "UncheckedBlock", + "src": "10679:100:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 638, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 605, + "src": "10716:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 639, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 607, + "src": "10723:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 640, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 613, + "src": "10732:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 641, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 609, + "src": "10751:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10732:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "66616c7365", + "id": 643, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10758:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 637, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 542, + 602 + ], + "referencedDeclaration": 602, + "src": "10707:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (address,address,uint256,bool)" + } + }, + "id": 644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10707:57:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 645, + "nodeType": "ExpressionStatement", + "src": "10707:57:1" + } + ] + } + ] + } + } + ] + }, + "documentation": { + "id": 603, + "nodeType": "StructuredDocumentation", + "src": "10043:271:1", + "text": " @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n Does not update the allowance value in case of infinite allowance.\n Revert if not enough allowance is available.\n Does not emit an {Approval} event." + }, + "id": 650, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_spendAllowance", + "nameLocation": "10328:15:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 610, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 605, + "mutability": "mutable", + "name": "owner", + "nameLocation": "10352:5:1", + "nodeType": "VariableDeclaration", + "scope": 650, + "src": "10344:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 604, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10344:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 607, + "mutability": "mutable", + "name": "spender", + "nameLocation": "10367:7:1", + "nodeType": "VariableDeclaration", + "scope": 650, + "src": "10359:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 606, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10359:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 609, + "mutability": "mutable", + "name": "value", + "nameLocation": "10384:5:1", + "nodeType": "VariableDeclaration", + "scope": 650, + "src": "10376:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 608, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10376:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10343:47:1" + }, + "returnParameters": { + "id": 611, + "nodeType": "ParameterList", + "parameters": [], + "src": "10408:0:1" + }, + "scope": 651, + "src": "10319:476:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 652, + "src": "1106:9691:1", + "usedErrors": [ + 11, + 16, + 21, + 30, + 35, + 40 + ], + "usedEvents": [ + 663, + 672 + ] + } + ], + "src": "105:10693:1" + }, + "id": 1 + }, + "contracts/token/ERC20/IERC20.sol": { + "ast": { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 729 + ] + }, + "id": 730, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 653, + "literals": [ + "solidity", + ">=", + "0.4", + ".16" + ], + "nodeType": "PragmaDirective", + "src": "106:25:2" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC20", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 654, + "nodeType": "StructuredDocumentation", + "src": "133:71:2", + "text": " @dev Interface of the ERC-20 standard as defined in the ERC." + }, + "fullyImplemented": false, + "id": 729, + "linearizedBaseContracts": [ + 729 + ], + "name": "IERC20", + "nameLocation": "215:6:2", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": { + "id": 655, + "nodeType": "StructuredDocumentation", + "src": "228:158:2", + "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero." + }, + "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "id": 663, + "name": "Transfer", + "nameLocation": "397:8:2", + "nodeType": "EventDefinition", + "parameters": { + "id": 662, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 657, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "422:4:2", + "nodeType": "VariableDeclaration", + "scope": 663, + "src": "406:20:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 656, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "406:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 659, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "444:2:2", + "nodeType": "VariableDeclaration", + "scope": 663, + "src": "428:18:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 658, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "428:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 661, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "456:5:2", + "nodeType": "VariableDeclaration", + "scope": 663, + "src": "448:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 660, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "448:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "405:57:2" + }, + "src": "391:72:2" + }, + { + "anonymous": false, + "documentation": { + "id": 664, + "nodeType": "StructuredDocumentation", + "src": "469:148:2", + "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance." + }, + "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "id": 672, + "name": "Approval", + "nameLocation": "628:8:2", + "nodeType": "EventDefinition", + "parameters": { + "id": 671, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 666, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "653:5:2", + "nodeType": "VariableDeclaration", + "scope": 672, + "src": "637:21:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 665, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "637:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 668, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nameLocation": "676:7:2", + "nodeType": "VariableDeclaration", + "scope": 672, + "src": "660:23:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 667, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "660:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 670, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "693:5:2", + "nodeType": "VariableDeclaration", + "scope": 672, + "src": "685:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 669, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "685:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "636:63:2" + }, + "src": "622:78:2" + }, + { + "documentation": { + "id": 673, + "nodeType": "StructuredDocumentation", + "src": "706:65:2", + "text": " @dev Returns the value of tokens in existence." + }, + "functionSelector": "18160ddd", + "id": 678, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "785:11:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 674, + "nodeType": "ParameterList", + "parameters": [], + "src": "796:2:2" + }, + "returnParameters": { + "id": 677, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 676, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 678, + "src": "822:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 675, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "822:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "821:9:2" + }, + "scope": 729, + "src": "776:55:2", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 679, + "nodeType": "StructuredDocumentation", + "src": "837:71:2", + "text": " @dev Returns the value of tokens owned by `account`." + }, + "functionSelector": "70a08231", + "id": 686, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "922:9:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 682, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 681, + "mutability": "mutable", + "name": "account", + "nameLocation": "940:7:2", + "nodeType": "VariableDeclaration", + "scope": 686, + "src": "932:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 680, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "932:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "931:17:2" + }, + "returnParameters": { + "id": 685, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 684, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 686, + "src": "972:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 683, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "972:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "971:9:2" + }, + "scope": 729, + "src": "913:68:2", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 687, + "nodeType": "StructuredDocumentation", + "src": "987:213:2", + "text": " @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "a9059cbb", + "id": 696, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "1214:8:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 692, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 689, + "mutability": "mutable", + "name": "to", + "nameLocation": "1231:2:2", + "nodeType": "VariableDeclaration", + "scope": 696, + "src": "1223:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 688, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1223:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 691, + "mutability": "mutable", + "name": "value", + "nameLocation": "1243:5:2", + "nodeType": "VariableDeclaration", + "scope": 696, + "src": "1235:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 690, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1235:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1222:27:2" + }, + "returnParameters": { + "id": 695, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 694, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 696, + "src": "1268:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 693, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1268:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1267:6:2" + }, + "scope": 729, + "src": "1205:69:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 697, + "nodeType": "StructuredDocumentation", + "src": "1280:264:2", + "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called." + }, + "functionSelector": "dd62ed3e", + "id": 706, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nameLocation": "1558:9:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 702, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 699, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1576:5:2", + "nodeType": "VariableDeclaration", + "scope": 706, + "src": "1568:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 698, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1568:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 701, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1591:7:2", + "nodeType": "VariableDeclaration", + "scope": 706, + "src": "1583:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 700, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1583:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1567:32:2" + }, + "returnParameters": { + "id": 705, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 704, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 706, + "src": "1623:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 703, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1623:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1622:9:2" + }, + "scope": 729, + "src": "1549:83:2", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 707, + "nodeType": "StructuredDocumentation", + "src": "1638:667:2", + "text": " @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event." + }, + "functionSelector": "095ea7b3", + "id": 716, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "2319:7:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 712, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 709, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2335:7:2", + "nodeType": "VariableDeclaration", + "scope": 716, + "src": "2327:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 708, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2327:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 711, + "mutability": "mutable", + "name": "value", + "nameLocation": "2352:5:2", + "nodeType": "VariableDeclaration", + "scope": 716, + "src": "2344:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 710, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2344:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2326:32:2" + }, + "returnParameters": { + "id": 715, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 714, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 716, + "src": "2377:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 713, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2377:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2376:6:2" + }, + "scope": 729, + "src": "2310:73:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 717, + "nodeType": "StructuredDocumentation", + "src": "2389:297:2", + "text": " @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "23b872dd", + "id": 728, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "2700:12:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 724, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 719, + "mutability": "mutable", + "name": "from", + "nameLocation": "2721:4:2", + "nodeType": "VariableDeclaration", + "scope": 728, + "src": "2713:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 718, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2713:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 721, + "mutability": "mutable", + "name": "to", + "nameLocation": "2735:2:2", + "nodeType": "VariableDeclaration", + "scope": 728, + "src": "2727:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 720, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2727:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 723, + "mutability": "mutable", + "name": "value", + "nameLocation": "2747:5:2", + "nodeType": "VariableDeclaration", + "scope": 728, + "src": "2739:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 722, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2739:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2712:41:2" + }, + "returnParameters": { + "id": 727, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 726, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 728, + "src": "2772:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 725, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2772:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2771:6:2" + }, + "scope": 729, + "src": "2691:87:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 730, + "src": "205:2575:2", + "usedErrors": [], + "usedEvents": [ + 663, + 672 + ] + } + ], + "src": "106:2675:2" + }, + "id": 2 + }, + "contracts/token/ERC20/extensions/ERC20Pausable.sol": { + "ast": { + "absolutePath": "contracts/token/ERC20/extensions/ERC20Pausable.sol", + "exportedSymbols": { + "ERC20": [ + 651 + ], + "ERC20Pausable": [ + 763 + ], + "Pausable": [ + 932 + ] + }, + "id": 764, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 731, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "124:24:3" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20.sol", + "file": "../ERC20.sol", + "id": 733, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 764, + "sourceUnit": 652, + "src": "150:35:3", + "symbolAliases": [ + { + "foreign": { + "id": 732, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 651, + "src": "158:5:3", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/utils/Pausable.sol", + "file": "../../../utils/Pausable.sol", + "id": 735, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 764, + "sourceUnit": 933, + "src": "186:53:3", + "symbolAliases": [ + { + "foreign": { + "id": 734, + "name": "Pausable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 932, + "src": "194:8:3", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 737, + "name": "ERC20", + "nameLocations": [ + "965:5:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 651, + "src": "965:5:3" + }, + "id": 738, + "nodeType": "InheritanceSpecifier", + "src": "965:5:3" + }, + { + "baseName": { + "id": 739, + "name": "Pausable", + "nameLocations": [ + "972:8:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 932, + "src": "972:8:3" + }, + "id": 740, + "nodeType": "InheritanceSpecifier", + "src": "972:8:3" + } + ], + "canonicalName": "ERC20Pausable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 736, + "nodeType": "StructuredDocumentation", + "src": "241:688:3", + "text": " @dev ERC-20 token with pausable token transfers, minting and burning.\n Useful for scenarios such as preventing trades until the end of an evaluation\n period, or having an emergency switch for freezing all token transfers in the\n event of a large bug.\n IMPORTANT: This contract does not include public pause and unpause functions. In\n addition to inheriting this contract, you must define both functions, invoking the\n {Pausable-_pause} and {Pausable-_unpause} internal functions, with appropriate\n access control, e.g. using {AccessControl} or {Ownable}. Not doing so will\n make the contract pause mechanism of the contract unreachable, and thus unusable." + }, + "fullyImplemented": true, + "id": 763, + "linearizedBaseContracts": [ + 763, + 932, + 651, + 41, + 789, + 729, + 819 + ], + "name": "ERC20Pausable", + "nameLocation": "948:13:3", + "nodeType": "ContractDefinition", + "nodes": [ + { + "baseFunctions": [ + 458 + ], + "body": { + "id": 761, + "nodeType": "Block", + "src": "1211:47:3", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 756, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 743, + "src": "1235:4:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 757, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 745, + "src": "1241:2:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 758, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 747, + "src": "1245:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 753, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967271, + "src": "1221:5:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_ERC20Pausable_$763_$", + "typeString": "type(contract super ERC20Pausable)" + } + }, + "id": 755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1227:7:3", + "memberName": "_update", + "nodeType": "MemberAccess", + "referencedDeclaration": 458, + "src": "1221:13:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1221:30:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 760, + "nodeType": "ExpressionStatement", + "src": "1221:30:3" + } + ] + }, + "documentation": { + "id": 741, + "nodeType": "StructuredDocumentation", + "src": "987:121:3", + "text": " @dev See {ERC20-_update}.\n Requirements:\n - the contract must not be paused." + }, + "id": 762, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 751, + "kind": "modifierInvocation", + "modifierName": { + "id": 750, + "name": "whenNotPaused", + "nameLocations": [ + "1197:13:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 852, + "src": "1197:13:3" + }, + "nodeType": "ModifierInvocation", + "src": "1197:13:3" + } + ], + "name": "_update", + "nameLocation": "1122:7:3", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 749, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1188:8:3" + }, + "parameters": { + "id": 748, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 743, + "mutability": "mutable", + "name": "from", + "nameLocation": "1138:4:3", + "nodeType": "VariableDeclaration", + "scope": 762, + "src": "1130:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 742, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1130:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 745, + "mutability": "mutable", + "name": "to", + "nameLocation": "1152:2:3", + "nodeType": "VariableDeclaration", + "scope": 762, + "src": "1144:10:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 744, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1144:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 747, + "mutability": "mutable", + "name": "value", + "nameLocation": "1164:5:3", + "nodeType": "VariableDeclaration", + "scope": 762, + "src": "1156:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 746, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1156:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1129:41:3" + }, + "returnParameters": { + "id": 752, + "nodeType": "ParameterList", + "parameters": [], + "src": "1211:0:3" + }, + "scope": 763, + "src": "1113:145:3", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 764, + "src": "930:330:3", + "usedErrors": [ + 11, + 16, + 21, + 30, + 35, + 40, + 841, + 844 + ], + "usedEvents": [ + 663, + 672, + 833, + 838 + ] + } + ], + "src": "124:1137:3" + }, + "id": 3 + }, + "contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "ast": { + "absolutePath": "contracts/token/ERC20/extensions/IERC20Metadata.sol", + "exportedSymbols": { + "IERC20": [ + 729 + ], + "IERC20Metadata": [ + 789 + ] + }, + "id": 790, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 765, + "literals": [ + "solidity", + ">=", + "0.6", + ".2" + ], + "nodeType": "PragmaDirective", + "src": "125:24:4" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "../IERC20.sol", + "id": 767, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 790, + "sourceUnit": 730, + "src": "151:37:4", + "symbolAliases": [ + { + "foreign": { + "id": 766, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 729, + "src": "159:6:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 769, + "name": "IERC20", + "nameLocations": [ + "306:6:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 729, + "src": "306:6:4" + }, + "id": 770, + "nodeType": "InheritanceSpecifier", + "src": "306:6:4" + } + ], + "canonicalName": "IERC20Metadata", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 768, + "nodeType": "StructuredDocumentation", + "src": "190:87:4", + "text": " @dev Interface for the optional metadata functions from the ERC-20 standard." + }, + "fullyImplemented": false, + "id": 789, + "linearizedBaseContracts": [ + 789, + 729 + ], + "name": "IERC20Metadata", + "nameLocation": "288:14:4", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 771, + "nodeType": "StructuredDocumentation", + "src": "319:54:4", + "text": " @dev Returns the name of the token." + }, + "functionSelector": "06fdde03", + "id": 776, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "387:4:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 772, + "nodeType": "ParameterList", + "parameters": [], + "src": "391:2:4" + }, + "returnParameters": { + "id": 775, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 774, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 776, + "src": "417:13:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 773, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "417:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "416:15:4" + }, + "scope": 789, + "src": "378:54:4", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 777, + "nodeType": "StructuredDocumentation", + "src": "438:56:4", + "text": " @dev Returns the symbol of the token." + }, + "functionSelector": "95d89b41", + "id": 782, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "508:6:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 778, + "nodeType": "ParameterList", + "parameters": [], + "src": "514:2:4" + }, + "returnParameters": { + "id": 781, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 780, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 782, + "src": "540:13:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 779, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "540:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "539:15:4" + }, + "scope": 789, + "src": "499:56:4", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 783, + "nodeType": "StructuredDocumentation", + "src": "561:65:4", + "text": " @dev Returns the decimals places of the token." + }, + "functionSelector": "313ce567", + "id": 788, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nameLocation": "640:8:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 784, + "nodeType": "ParameterList", + "parameters": [], + "src": "648:2:4" + }, + "returnParameters": { + "id": 787, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 786, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 788, + "src": "674:5:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 785, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "674:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "673:7:4" + }, + "scope": 789, + "src": "631:50:4", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 790, + "src": "278:405:4", + "usedErrors": [], + "usedEvents": [ + 663, + 672 + ] + } + ], + "src": "125:559:4" + }, + "id": 4 + }, + "contracts/utils/Context.sol": { + "ast": { + "absolutePath": "contracts/utils/Context.sol", + "exportedSymbols": { + "Context": [ + 819 + ] + }, + "id": 820, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 791, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "101:24:5" + }, + { + "abstract": true, + "baseContracts": [], + "canonicalName": "Context", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 792, + "nodeType": "StructuredDocumentation", + "src": "127:496:5", + "text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts." + }, + "fullyImplemented": true, + "id": 819, + "linearizedBaseContracts": [ + 819 + ], + "name": "Context", + "nameLocation": "642:7:5", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 800, + "nodeType": "Block", + "src": "718:34:5", + "statements": [ + { + "expression": { + "expression": { + "id": 797, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "735:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "739:6:5", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "735:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 796, + "id": 799, + "nodeType": "Return", + "src": "728:17:5" + } + ] + }, + "id": 801, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nameLocation": "665:10:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 793, + "nodeType": "ParameterList", + "parameters": [], + "src": "675:2:5" + }, + "returnParameters": { + "id": 796, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 795, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 801, + "src": "709:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 794, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "709:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "708:9:5" + }, + "scope": 819, + "src": "656:96:5", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 809, + "nodeType": "Block", + "src": "825:32:5", + "statements": [ + { + "expression": { + "expression": { + "id": 806, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "842:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "846:4:5", + "memberName": "data", + "nodeType": "MemberAccess", + "src": "842:8:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "functionReturnParameters": 805, + "id": 808, + "nodeType": "Return", + "src": "835:15:5" + } + ] + }, + "id": 810, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgData", + "nameLocation": "767:8:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 802, + "nodeType": "ParameterList", + "parameters": [], + "src": "775:2:5" + }, + "returnParameters": { + "id": 805, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 804, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 810, + "src": "809:14:5", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 803, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "809:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "808:16:5" + }, + "scope": 819, + "src": "758:99:5", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 817, + "nodeType": "Block", + "src": "935:25:5", + "statements": [ + { + "expression": { + "hexValue": "30", + "id": 815, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "952:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 814, + "id": 816, + "nodeType": "Return", + "src": "945:8:5" + } + ] + }, + "id": 818, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_contextSuffixLength", + "nameLocation": "872:20:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 811, + "nodeType": "ParameterList", + "parameters": [], + "src": "892:2:5" + }, + "returnParameters": { + "id": 814, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 813, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 818, + "src": "926:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 812, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "926:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "925:9:5" + }, + "scope": 819, + "src": "863:97:5", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 820, + "src": "624:338:5", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "101:862:5" + }, + "id": 5 + }, + "contracts/utils/Pausable.sol": { + "ast": { + "absolutePath": "contracts/utils/Pausable.sol", + "exportedSymbols": { + "Context": [ + 819 + ], + "Pausable": [ + 932 + ] + }, + "id": 933, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 821, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "102:24:6" + }, + { + "absolutePath": "contracts/utils/Context.sol", + "file": "../utils/Context.sol", + "id": 823, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 933, + "sourceUnit": 820, + "src": "128:45:6", + "symbolAliases": [ + { + "foreign": { + "id": 822, + "name": "Context", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 819, + "src": "136:7:6", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 825, + "name": "Context", + "nameLocations": [ + "636:7:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 819, + "src": "636:7:6" + }, + "id": 826, + "nodeType": "InheritanceSpecifier", + "src": "636:7:6" + } + ], + "canonicalName": "Pausable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 824, + "nodeType": "StructuredDocumentation", + "src": "175:439:6", + "text": " @dev Contract module which allows children to implement an emergency stop\n mechanism that can be triggered by an authorized account.\n This module is used through inheritance. It will make available the\n modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n the functions of your contract. Note that they will not be pausable by\n simply including this module, only once the modifiers are put in place." + }, + "fullyImplemented": true, + "id": 932, + "linearizedBaseContracts": [ + 932, + 819 + ], + "name": "Pausable", + "nameLocation": "624:8:6", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 828, + "mutability": "mutable", + "name": "_paused", + "nameLocation": "666:7:6", + "nodeType": "VariableDeclaration", + "scope": 932, + "src": "650:23:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 827, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "650:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": { + "id": 829, + "nodeType": "StructuredDocumentation", + "src": "680:73:6", + "text": " @dev Emitted when the pause is triggered by `account`." + }, + "eventSelector": "62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258", + "id": 833, + "name": "Paused", + "nameLocation": "764:6:6", + "nodeType": "EventDefinition", + "parameters": { + "id": 832, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 831, + "indexed": false, + "mutability": "mutable", + "name": "account", + "nameLocation": "779:7:6", + "nodeType": "VariableDeclaration", + "scope": 833, + "src": "771:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 830, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "771:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "770:17:6" + }, + "src": "758:30:6" + }, + { + "anonymous": false, + "documentation": { + "id": 834, + "nodeType": "StructuredDocumentation", + "src": "794:70:6", + "text": " @dev Emitted when the pause is lifted by `account`." + }, + "eventSelector": "5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa", + "id": 838, + "name": "Unpaused", + "nameLocation": "875:8:6", + "nodeType": "EventDefinition", + "parameters": { + "id": 837, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 836, + "indexed": false, + "mutability": "mutable", + "name": "account", + "nameLocation": "892:7:6", + "nodeType": "VariableDeclaration", + "scope": 838, + "src": "884:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 835, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "884:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "883:17:6" + }, + "src": "869:32:6" + }, + { + "documentation": { + "id": 839, + "nodeType": "StructuredDocumentation", + "src": "907:76:6", + "text": " @dev The operation failed because the contract is paused." + }, + "errorSelector": "d93c0665", + "id": 841, + "name": "EnforcedPause", + "nameLocation": "994:13:6", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 840, + "nodeType": "ParameterList", + "parameters": [], + "src": "1007:2:6" + }, + "src": "988:22:6" + }, + { + "documentation": { + "id": 842, + "nodeType": "StructuredDocumentation", + "src": "1016:80:6", + "text": " @dev The operation failed because the contract is not paused." + }, + "errorSelector": "8dfc202b", + "id": 844, + "name": "ExpectedPause", + "nameLocation": "1107:13:6", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 843, + "nodeType": "ParameterList", + "parameters": [], + "src": "1120:2:6" + }, + "src": "1101:22:6" + }, + { + "body": { + "id": 851, + "nodeType": "Block", + "src": "1334:47:6", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 847, + "name": "_requireNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 886, + "src": "1344:17:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1344:19:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 849, + "nodeType": "ExpressionStatement", + "src": "1344:19:6" + }, + { + "id": 850, + "nodeType": "PlaceholderStatement", + "src": "1373:1:6" + } + ] + }, + "documentation": { + "id": 845, + "nodeType": "StructuredDocumentation", + "src": "1129:175:6", + "text": " @dev Modifier to make a function callable only when the contract is not paused.\n Requirements:\n - The contract must not be paused." + }, + "id": 852, + "name": "whenNotPaused", + "nameLocation": "1318:13:6", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 846, + "nodeType": "ParameterList", + "parameters": [], + "src": "1331:2:6" + }, + "src": "1309:72:6", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 859, + "nodeType": "Block", + "src": "1581:44:6", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 855, + "name": "_requirePaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 899, + "src": "1591:14:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1591:16:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 857, + "nodeType": "ExpressionStatement", + "src": "1591:16:6" + }, + { + "id": 858, + "nodeType": "PlaceholderStatement", + "src": "1617:1:6" + } + ] + }, + "documentation": { + "id": 853, + "nodeType": "StructuredDocumentation", + "src": "1387:167:6", + "text": " @dev Modifier to make a function callable only when the contract is paused.\n Requirements:\n - The contract must be paused." + }, + "id": 860, + "name": "whenPaused", + "nameLocation": "1568:10:6", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 854, + "nodeType": "ParameterList", + "parameters": [], + "src": "1578:2:6" + }, + "src": "1559:66:6", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 873, + "nodeType": "Block", + "src": "1773:50:6", + "statements": [ + { + "expression": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 866, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 828, + "src": "1790:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "hexValue": "32", + "id": 867, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1800:1:6", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "1790:11:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "hexValue": "74727565", + "id": 870, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1812:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "id": 871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "1790:26:6", + "trueExpression": { + "hexValue": "66616c7365", + "id": 869, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1804:5:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 865, + "id": 872, + "nodeType": "Return", + "src": "1783:33:6" + } + ] + }, + "documentation": { + "id": 861, + "nodeType": "StructuredDocumentation", + "src": "1631:84:6", + "text": " @dev Returns true if the contract is paused, and false otherwise." + }, + "functionSelector": "5c975abb", + "id": 874, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "paused", + "nameLocation": "1729:6:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 862, + "nodeType": "ParameterList", + "parameters": [], + "src": "1735:2:6" + }, + "returnParameters": { + "id": 865, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 864, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 874, + "src": "1767:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 863, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1767:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1766:6:6" + }, + "scope": 932, + "src": "1720:103:6", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 885, + "nodeType": "Block", + "src": "1942:77:6", + "statements": [ + { + "condition": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 878, + "name": "paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 874, + "src": "1956:6:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1956:8:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 884, + "nodeType": "IfStatement", + "src": "1952:61:6", + "trueBody": { + "id": 883, + "nodeType": "Block", + "src": "1966:47:6", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 880, + "name": "EnforcedPause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 841, + "src": "1987:13:6", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 881, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1987:15:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 882, + "nodeType": "RevertStatement", + "src": "1980:22:6" + } + ] + } + } + ] + }, + "documentation": { + "id": 875, + "nodeType": "StructuredDocumentation", + "src": "1829:57:6", + "text": " @dev Throws if the contract is paused." + }, + "id": 886, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_requireNotPaused", + "nameLocation": "1900:17:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 876, + "nodeType": "ParameterList", + "parameters": [], + "src": "1917:2:6" + }, + "returnParameters": { + "id": 877, + "nodeType": "ParameterList", + "parameters": [], + "src": "1942:0:6" + }, + "scope": 932, + "src": "1891:128:6", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 898, + "nodeType": "Block", + "src": "2139:78:6", + "statements": [ + { + "condition": { + "id": 892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2153:9:6", + "subExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 890, + "name": "paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 874, + "src": "2154:6:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2154:8:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 897, + "nodeType": "IfStatement", + "src": "2149:62:6", + "trueBody": { + "id": 896, + "nodeType": "Block", + "src": "2164:47:6", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 893, + "name": "ExpectedPause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "2185:13:6", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 894, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2185:15:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 895, + "nodeType": "RevertStatement", + "src": "2178:22:6" + } + ] + } + } + ] + }, + "documentation": { + "id": 887, + "nodeType": "StructuredDocumentation", + "src": "2025:61:6", + "text": " @dev Throws if the contract is not paused." + }, + "id": 899, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_requirePaused", + "nameLocation": "2100:14:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 888, + "nodeType": "ParameterList", + "parameters": [], + "src": "2114:2:6" + }, + "returnParameters": { + "id": 889, + "nodeType": "ParameterList", + "parameters": [], + "src": "2139:0:6" + }, + "scope": 932, + "src": "2091:126:6", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 914, + "nodeType": "Block", + "src": "2401:63:6", + "statements": [ + { + "expression": { + "id": 907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 905, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 828, + "src": "2411:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "32", + "id": 906, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2421:1:6", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "2411:11:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 908, + "nodeType": "ExpressionStatement", + "src": "2411:11:6" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 910, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "2444:10:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2444:12:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 909, + "name": "Paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 833, + "src": "2437:6:6", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2437:20:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 913, + "nodeType": "EmitStatement", + "src": "2432:25:6" + } + ] + }, + "documentation": { + "id": 900, + "nodeType": "StructuredDocumentation", + "src": "2223:124:6", + "text": " @dev Triggers stopped state.\n Requirements:\n - The contract must not be paused." + }, + "id": 915, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 903, + "kind": "modifierInvocation", + "modifierName": { + "id": 902, + "name": "whenNotPaused", + "nameLocations": [ + "2387:13:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 852, + "src": "2387:13:6" + }, + "nodeType": "ModifierInvocation", + "src": "2387:13:6" + } + ], + "name": "_pause", + "nameLocation": "2361:6:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 901, + "nodeType": "ParameterList", + "parameters": [], + "src": "2367:2:6" + }, + "returnParameters": { + "id": 904, + "nodeType": "ParameterList", + "parameters": [], + "src": "2401:0:6" + }, + "scope": 932, + "src": "2352:112:6", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 930, + "nodeType": "Block", + "src": "2644:65:6", + "statements": [ + { + "expression": { + "id": 923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 921, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 828, + "src": "2654:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "31", + "id": 922, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2664:1:6", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2654:11:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 924, + "nodeType": "ExpressionStatement", + "src": "2654:11:6" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 926, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "2689:10:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2689:12:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 925, + "name": "Unpaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 838, + "src": "2680:8:6", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 928, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2680:22:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 929, + "nodeType": "EmitStatement", + "src": "2675:27:6" + } + ] + }, + "documentation": { + "id": 916, + "nodeType": "StructuredDocumentation", + "src": "2470:121:6", + "text": " @dev Returns to normal state.\n Requirements:\n - The contract must be paused." + }, + "id": 931, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 919, + "kind": "modifierInvocation", + "modifierName": { + "id": 918, + "name": "whenPaused", + "nameLocations": [ + "2633:10:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 860, + "src": "2633:10:6" + }, + "nodeType": "ModifierInvocation", + "src": "2633:10:6" + } + ], + "name": "_unpause", + "nameLocation": "2605:8:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 917, + "nodeType": "ParameterList", + "parameters": [], + "src": "2613:2:6" + }, + "returnParameters": { + "id": 920, + "nodeType": "ParameterList", + "parameters": [], + "src": "2644:0:6" + }, + "scope": 932, + "src": "2596:113:6", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 933, + "src": "615:2096:6", + "usedErrors": [ + 841, + 844 + ], + "usedEvents": [ + 833, + 838 + ] + } + ], + "src": "102:2610:6" + }, + "id": 6 + } + } + } +} \ No newline at end of file diff --git a/contracts/utils/Pausable.sol b/contracts/utils/Pausable.sol index 68e7d2681b4..3e9250a7bc7 100644 --- a/contracts/utils/Pausable.sol +++ b/contracts/utils/Pausable.sol @@ -15,7 +15,7 @@ import {Context} from "../utils/Context.sol"; * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { - bool private _paused; + uint256 private _paused; /** * @dev Emitted when the pause is triggered by `account`. @@ -65,7 +65,7 @@ abstract contract Pausable is Context { * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { - return _paused; + return _paused == 2; } /** @@ -94,7 +94,7 @@ abstract contract Pausable is Context { * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { - _paused = true; + _paused = 2; emit Paused(_msgSender()); } @@ -106,7 +106,7 @@ abstract contract Pausable is Context { * - The contract must be paused. */ function _unpause() internal virtual whenPaused { - _paused = false; + _paused = 1; emit Unpaused(_msgSender()); } } diff --git a/contracts/utils/artifacts/Bytes.json b/contracts/utils/artifacts/Bytes.json new file mode 100644 index 00000000000..b6bd826803a --- /dev/null +++ b/contracts/utils/artifacts/Bytes.json @@ -0,0 +1,79 @@ +{ + "deploy": { + "VM:-": { + "linkReferences": {}, + "autoDeployLib": true + }, + "main:1": { + "linkReferences": {}, + "autoDeployLib": true + }, + "ropsten:3": { + "linkReferences": {}, + "autoDeployLib": true + }, + "rinkeby:4": { + "linkReferences": {}, + "autoDeployLib": true + }, + "kovan:42": { + "linkReferences": {}, + "autoDeployLib": true + }, + "goerli:5": { + "linkReferences": {}, + "autoDeployLib": true + }, + "Custom": { + "linkReferences": {}, + "autoDeployLib": true + } + }, + "data": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220bea14b5d3f32cfc824efbffb710ae2a700b7fc7954b845a818482733861cb37c64736f6c634300081e0033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBE LOG1 0x4B TSTORE EXTCODEHASH ORIGIN 0xCF 0xC8 0x24 0xEF 0xBF EXTSTATICCALL PUSH18 0xAE2A700B7FC7954B845A818482733861CB3 PUSH29 0x64736F6C634300081E0033000000000000000000000000000000000000 ", + "sourceMap": "198:10883:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220bea14b5d3f32cfc824efbffb710ae2a700b7fc7954b845a818482733861cb37c64736f6c634300081e0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBE LOG1 0x4B TSTORE EXTCODEHASH ORIGIN 0xCF 0xC8 0x24 0xEF 0xBF EXTSTATICCALL PUSH18 0xAE2A700B7FC7954B845A818482733861CB3 PUSH29 0x64736F6C634300081E0033000000000000000000000000000000000000 ", + "sourceMap": "198:10883:0:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "_unsafeReadBytesOffset(bytes memory,uint256)": "infinite", + "clz(bytes memory)": "infinite", + "concat(bytes memory[] memory)": "infinite", + "equal(bytes memory,bytes memory)": "infinite", + "indexOf(bytes memory,bytes1)": "infinite", + "indexOf(bytes memory,bytes1,uint256)": "infinite", + "lastIndexOf(bytes memory,bytes1)": "infinite", + "lastIndexOf(bytes memory,bytes1,uint256)": "infinite", + "reverseBytes16(bytes16)": "infinite", + "reverseBytes2(bytes2)": "infinite", + "reverseBytes32(bytes32)": "infinite", + "reverseBytes4(bytes4)": "infinite", + "reverseBytes8(bytes8)": "infinite", + "slice(bytes memory,uint256)": "infinite", + "slice(bytes memory,uint256,uint256)": "infinite", + "splice(bytes memory,uint256)": "infinite", + "splice(bytes memory,uint256,uint256)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "abi": [] +} \ No newline at end of file diff --git a/contracts/utils/artifacts/Bytes_metadata.json b/contracts/utils/artifacts/Bytes_metadata.json new file mode 100644 index 00000000000..691ab4dab03 --- /dev/null +++ b/contracts/utils/artifacts/Bytes_metadata.json @@ -0,0 +1,72 @@ +{ + "compiler": { + "version": "0.8.30+commit.73712a01" + }, + "language": "Solidity", + "output": { + "abi": [], + "devdoc": { + "details": "Bytes operations.", + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "settings": { + "compilationTarget": { + "contracts/utils/Bytes.sol": "Bytes" + }, + "evmVersion": "prague", + "libraries": {}, + "metadata": { + "bytecodeHash": "ipfs" + }, + "optimizer": { + "enabled": false, + "runs": 200 + }, + "remappings": [ + ":@openzeppelin/contracts/=contracts/" + ] + }, + "sources": { + "contracts/utils/Bytes.sol": { + "keccak256": "0xb363f660b3fe0d3aacceff1cab8ef825045bbd85b2f6bce0ffc87f05bb9e5708", + "license": "MIT", + "urls": [ + "bzz-raw://59d5d6d07405d49fca24017da36ea42de525ddb80541efb5dd0b9f0352c11ad7", + "dweb:/ipfs/QmR2hUnWKwhzdwYF9EZUqVVdLHMwqxZSN7haJ4mgetVcSs" + ] + }, + "contracts/utils/Panic.sol": { + "keccak256": "0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a", + "license": "MIT", + "urls": [ + "bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a", + "dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG" + ] + }, + "contracts/utils/math/Math.sol": { + "keccak256": "0x947aadb127ce0a07acc4e04c3a6fb99d5f484421e91090942e74e5ce88ac6dd2", + "license": "MIT", + "urls": [ + "bzz-raw://0ef4fb852b15ca2610e24983fa352ae70e7be9a41365427770a3be60f422ffe8", + "dweb:/ipfs/QmWhb3iVqZ7o6tD1fn58b4j5nYu4JjnvvVib2xRnUNurHs" + ] + }, + "contracts/utils/math/SafeCast.sol": { + "keccak256": "0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54", + "license": "MIT", + "urls": [ + "bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8", + "dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy" + ] + } + }, + "version": 1 +} \ No newline at end of file diff --git a/contracts/utils/artifacts/Pausable.json b/contracts/utils/artifacts/Pausable.json new file mode 100644 index 00000000000..9fe6327eb4c --- /dev/null +++ b/contracts/utils/artifacts/Pausable.json @@ -0,0 +1,106 @@ +{ + "deploy": { + "VM:-": { + "linkReferences": {}, + "autoDeployLib": true + }, + "main:1": { + "linkReferences": {}, + "autoDeployLib": true + }, + "ropsten:3": { + "linkReferences": {}, + "autoDeployLib": true + }, + "rinkeby:4": { + "linkReferences": {}, + "autoDeployLib": true + }, + "kovan:42": { + "linkReferences": {}, + "autoDeployLib": true + }, + "goerli:5": { + "linkReferences": {}, + "autoDeployLib": true + }, + "Custom": { + "linkReferences": {}, + "autoDeployLib": true + } + }, + "data": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": { + "paused()": "5c975abb" + } + }, + "abi": [ + { + "inputs": [], + "name": "EnforcedPause", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedPause", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ] +} \ No newline at end of file diff --git a/contracts/utils/artifacts/Pausable_metadata.json b/contracts/utils/artifacts/Pausable_metadata.json new file mode 100644 index 00000000000..b40d99b7b74 --- /dev/null +++ b/contracts/utils/artifacts/Pausable_metadata.json @@ -0,0 +1,130 @@ +{ + "compiler": { + "version": "0.8.30+commit.73712a01" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [], + "name": "EnforcedPause", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedPause", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "details": "Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.", + "errors": { + "EnforcedPause()": [ + { + "details": "The operation failed because the contract is paused." + } + ], + "ExpectedPause()": [ + { + "details": "The operation failed because the contract is not paused." + } + ] + }, + "events": { + "Paused(address)": { + "details": "Emitted when the pause is triggered by `account`." + }, + "Unpaused(address)": { + "details": "Emitted when the pause is lifted by `account`." + } + }, + "kind": "dev", + "methods": { + "paused()": { + "details": "Returns true if the contract is paused, and false otherwise." + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "settings": { + "compilationTarget": { + "contracts/utils/Pausable.sol": "Pausable" + }, + "evmVersion": "prague", + "libraries": {}, + "metadata": { + "bytecodeHash": "ipfs" + }, + "optimizer": { + "enabled": false, + "runs": 200 + }, + "remappings": [ + ":@openzeppelin/contracts/=contracts/" + ] + }, + "sources": { + "contracts/utils/Context.sol": { + "keccak256": "0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2", + "license": "MIT", + "urls": [ + "bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12", + "dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF" + ] + }, + "contracts/utils/Pausable.sol": { + "keccak256": "0xdf8d9228aca6cb87ae8bec08c3ecd84de7897a3d7b3b15ddd157dc6689986ad1", + "license": "MIT", + "urls": [ + "bzz-raw://2b419e49007752dba7a1ad5e4f2a8b16d8477cc5ec3ad82c84cbe2231bdfb6ad", + "dweb:/ipfs/Qme2RFtT8s6Wwid5rQDEPWNCZSsXGXqzvMtz2LT9hMMf2e" + ] + } + }, + "version": 1 +} \ No newline at end of file diff --git a/contracts/utils/artifacts/build-info/3517b2f633518377933d870ac8680580.json b/contracts/utils/artifacts/build-info/3517b2f633518377933d870ac8680580.json new file mode 100644 index 00000000000..299405a5998 --- /dev/null +++ b/contracts/utils/artifacts/build-info/3517b2f633518377933d870ac8680580.json @@ -0,0 +1,1739 @@ +{ + "id": "3517b2f633518377933d870ac8680580", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.30", + "solcLongVersion": "0.8.30+commit.73712a01", + "input": { + "language": "Solidity", + "sources": { + "contracts/utils/Pausable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/Pausable.sol)\n\npragma solidity ^0.8.20;\n\nimport {Context} from \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which allows children to implement an emergency stop\n * mechanism that can be triggered by an authorized account.\n *\n * This module is used through inheritance. It will make available the\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n * the functions of your contract. Note that they will not be pausable by\n * simply including this module, only once the modifiers are put in place.\n */\nabstract contract Pausable is Context {\n uint256 private _paused;\n\n /**\n * @dev Emitted when the pause is triggered by `account`.\n */\n event Paused(address account);\n\n /**\n * @dev Emitted when the pause is lifted by `account`.\n */\n event Unpaused(address account);\n\n /**\n * @dev The operation failed because the contract is paused.\n */\n error EnforcedPause();\n\n /**\n * @dev The operation failed because the contract is not paused.\n */\n error ExpectedPause();\n\n /**\n * @dev Modifier to make a function callable only when the contract is not paused.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n modifier whenNotPaused() {\n _requireNotPaused();\n _;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is paused.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n modifier whenPaused() {\n _requirePaused();\n _;\n }\n\n /**\n * @dev Returns true if the contract is paused, and false otherwise.\n */\n function paused() public view virtual returns (bool) {\n return _paused == 2 ? true : false;\n }\n\n /**\n * @dev Throws if the contract is paused.\n */\n function _requireNotPaused() internal view virtual {\n if (paused()) {\n revert EnforcedPause();\n }\n }\n\n /**\n * @dev Throws if the contract is not paused.\n */\n function _requirePaused() internal view virtual {\n if (!paused()) {\n revert ExpectedPause();\n }\n }\n\n /**\n * @dev Triggers stopped state.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n function _pause() internal virtual whenNotPaused {\n _paused = 2;\n emit Paused(_msgSender());\n }\n\n /**\n * @dev Returns to normal state.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n function _unpause() internal virtual whenPaused {\n _paused = 1;\n emit Unpaused(_msgSender());\n }\n}\n" + }, + "contracts/utils/Context.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.legacyAssembly", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "evm.gasEstimates", + "evm.assembly" + ] + } + }, + "remappings": [ + "@openzeppelin/contracts/=contracts/" + ] + } + }, + "output": { + "contracts": { + "contracts/utils/Context.sol": { + "Context": { + "abi": [], + "devdoc": { + "details": "Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.", + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=contracts/\"]},\"sources\":{\"contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/utils/Pausable.sol": { + "Pausable": { + "abi": [ + { + "inputs": [], + "name": "EnforcedPause", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedPause", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "details": "Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.", + "errors": { + "EnforcedPause()": [ + { + "details": "The operation failed because the contract is paused." + } + ], + "ExpectedPause()": [ + { + "details": "The operation failed because the contract is not paused." + } + ] + }, + "events": { + "Paused(address)": { + "details": "Emitted when the pause is triggered by `account`." + }, + "Unpaused(address)": { + "details": "Emitted when the pause is lifted by `account`." + } + }, + "kind": "dev", + "methods": { + "paused()": { + "details": "Returns true if the contract is paused, and false otherwise." + } + }, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "paused()": "5c975abb" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.\",\"errors\":{\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}]},\"events\":{\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/utils/Pausable.sol\":\"Pausable\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=contracts/\"]},\"sources\":{\"contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"contracts/utils/Pausable.sol\":{\"keccak256\":\"0xdf8d9228aca6cb87ae8bec08c3ecd84de7897a3d7b3b15ddd157dc6689986ad1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b419e49007752dba7a1ad5e4f2a8b16d8477cc5ec3ad82c84cbe2231bdfb6ad\",\"dweb:/ipfs/Qme2RFtT8s6Wwid5rQDEPWNCZSsXGXqzvMtz2LT9hMMf2e\"]}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 38, + "contract": "contracts/utils/Pausable.sol:Pausable", + "label": "_paused", + "offset": 0, + "slot": "0", + "type": "t_uint256" + } + ], + "types": { + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + } + }, + "sources": { + "contracts/utils/Context.sol": { + "ast": { + "absolutePath": "contracts/utils/Context.sol", + "exportedSymbols": { + "Context": [ + 29 + ] + }, + "id": 30, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "101:24:0" + }, + { + "abstract": true, + "baseContracts": [], + "canonicalName": "Context", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 2, + "nodeType": "StructuredDocumentation", + "src": "127:496:0", + "text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts." + }, + "fullyImplemented": true, + "id": 29, + "linearizedBaseContracts": [ + 29 + ], + "name": "Context", + "nameLocation": "642:7:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 10, + "nodeType": "Block", + "src": "718:34:0", + "statements": [ + { + "expression": { + "expression": { + "id": 7, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "735:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 8, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "739:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "735:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 6, + "id": 9, + "nodeType": "Return", + "src": "728:17:0" + } + ] + }, + "id": 11, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nameLocation": "665:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3, + "nodeType": "ParameterList", + "parameters": [], + "src": "675:2:0" + }, + "returnParameters": { + "id": 6, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11, + "src": "709:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "709:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "708:9:0" + }, + "scope": 29, + "src": "656:96:0", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 19, + "nodeType": "Block", + "src": "825:32:0", + "statements": [ + { + "expression": { + "expression": { + "id": 16, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "842:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 17, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "846:4:0", + "memberName": "data", + "nodeType": "MemberAccess", + "src": "842:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "functionReturnParameters": 15, + "id": 18, + "nodeType": "Return", + "src": "835:15:0" + } + ] + }, + "id": 20, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgData", + "nameLocation": "767:8:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12, + "nodeType": "ParameterList", + "parameters": [], + "src": "775:2:0" + }, + "returnParameters": { + "id": 15, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 20, + "src": "809:14:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 13, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "809:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "808:16:0" + }, + "scope": 29, + "src": "758:99:0", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 27, + "nodeType": "Block", + "src": "935:25:0", + "statements": [ + { + "expression": { + "hexValue": "30", + "id": 25, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "952:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 24, + "id": 26, + "nodeType": "Return", + "src": "945:8:0" + } + ] + }, + "id": 28, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_contextSuffixLength", + "nameLocation": "872:20:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 21, + "nodeType": "ParameterList", + "parameters": [], + "src": "892:2:0" + }, + "returnParameters": { + "id": 24, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 23, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 28, + "src": "926:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 22, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "926:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "925:9:0" + }, + "scope": 29, + "src": "863:97:0", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 30, + "src": "624:338:0", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "101:862:0" + }, + "id": 0 + }, + "contracts/utils/Pausable.sol": { + "ast": { + "absolutePath": "contracts/utils/Pausable.sol", + "exportedSymbols": { + "Context": [ + 29 + ], + "Pausable": [ + 142 + ] + }, + "id": 143, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 31, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "102:24:1" + }, + { + "absolutePath": "contracts/utils/Context.sol", + "file": "../utils/Context.sol", + "id": 33, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 143, + "sourceUnit": 30, + "src": "128:45:1", + "symbolAliases": [ + { + "foreign": { + "id": 32, + "name": "Context", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 29, + "src": "136:7:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 35, + "name": "Context", + "nameLocations": [ + "645:7:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 29, + "src": "645:7:1" + }, + "id": 36, + "nodeType": "InheritanceSpecifier", + "src": "645:7:1" + } + ], + "canonicalName": "Pausable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 34, + "nodeType": "StructuredDocumentation", + "src": "175:439:1", + "text": " @dev Contract module which allows children to implement an emergency stop\n mechanism that can be triggered by an authorized account.\n This module is used through inheritance. It will make available the\n modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n the functions of your contract. Note that they will not be pausable by\n simply including this module, only once the modifiers are put in place." + }, + "fullyImplemented": true, + "id": 142, + "linearizedBaseContracts": [ + 142, + 29 + ], + "name": "Pausable", + "nameLocation": "633:8:1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 38, + "mutability": "mutable", + "name": "_paused", + "nameLocation": "675:7:1", + "nodeType": "VariableDeclaration", + "scope": 142, + "src": "659:23:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 37, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "659:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": { + "id": 39, + "nodeType": "StructuredDocumentation", + "src": "689:73:1", + "text": " @dev Emitted when the pause is triggered by `account`." + }, + "eventSelector": "62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258", + "id": 43, + "name": "Paused", + "nameLocation": "773:6:1", + "nodeType": "EventDefinition", + "parameters": { + "id": 42, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 41, + "indexed": false, + "mutability": "mutable", + "name": "account", + "nameLocation": "788:7:1", + "nodeType": "VariableDeclaration", + "scope": 43, + "src": "780:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 40, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "780:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "779:17:1" + }, + "src": "767:30:1" + }, + { + "anonymous": false, + "documentation": { + "id": 44, + "nodeType": "StructuredDocumentation", + "src": "803:70:1", + "text": " @dev Emitted when the pause is lifted by `account`." + }, + "eventSelector": "5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa", + "id": 48, + "name": "Unpaused", + "nameLocation": "884:8:1", + "nodeType": "EventDefinition", + "parameters": { + "id": 47, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 46, + "indexed": false, + "mutability": "mutable", + "name": "account", + "nameLocation": "901:7:1", + "nodeType": "VariableDeclaration", + "scope": 48, + "src": "893:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 45, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "893:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "892:17:1" + }, + "src": "878:32:1" + }, + { + "documentation": { + "id": 49, + "nodeType": "StructuredDocumentation", + "src": "916:76:1", + "text": " @dev The operation failed because the contract is paused." + }, + "errorSelector": "d93c0665", + "id": 51, + "name": "EnforcedPause", + "nameLocation": "1003:13:1", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 50, + "nodeType": "ParameterList", + "parameters": [], + "src": "1016:2:1" + }, + "src": "997:22:1" + }, + { + "documentation": { + "id": 52, + "nodeType": "StructuredDocumentation", + "src": "1025:80:1", + "text": " @dev The operation failed because the contract is not paused." + }, + "errorSelector": "8dfc202b", + "id": 54, + "name": "ExpectedPause", + "nameLocation": "1116:13:1", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 53, + "nodeType": "ParameterList", + "parameters": [], + "src": "1129:2:1" + }, + "src": "1110:22:1" + }, + { + "body": { + "id": 61, + "nodeType": "Block", + "src": "1343:47:1", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 57, + "name": "_requireNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 96, + "src": "1353:17:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 58, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1353:19:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 59, + "nodeType": "ExpressionStatement", + "src": "1353:19:1" + }, + { + "id": 60, + "nodeType": "PlaceholderStatement", + "src": "1382:1:1" + } + ] + }, + "documentation": { + "id": 55, + "nodeType": "StructuredDocumentation", + "src": "1138:175:1", + "text": " @dev Modifier to make a function callable only when the contract is not paused.\n Requirements:\n - The contract must not be paused." + }, + "id": 62, + "name": "whenNotPaused", + "nameLocation": "1327:13:1", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 56, + "nodeType": "ParameterList", + "parameters": [], + "src": "1340:2:1" + }, + "src": "1318:72:1", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 69, + "nodeType": "Block", + "src": "1590:44:1", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 65, + "name": "_requirePaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "1600:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 66, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1600:16:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 67, + "nodeType": "ExpressionStatement", + "src": "1600:16:1" + }, + { + "id": 68, + "nodeType": "PlaceholderStatement", + "src": "1626:1:1" + } + ] + }, + "documentation": { + "id": 63, + "nodeType": "StructuredDocumentation", + "src": "1396:167:1", + "text": " @dev Modifier to make a function callable only when the contract is paused.\n Requirements:\n - The contract must be paused." + }, + "id": 70, + "name": "whenPaused", + "nameLocation": "1577:10:1", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 64, + "nodeType": "ParameterList", + "parameters": [], + "src": "1587:2:1" + }, + "src": "1568:66:1", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 83, + "nodeType": "Block", + "src": "1782:51:1", + "statements": [ + { + "expression": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 78, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 76, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38, + "src": "1799:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "32", + "id": 77, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1810:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "1799:12:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "hexValue": "66616c7365", + "id": 80, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1821:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "id": 81, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "1799:27:1", + "trueExpression": { + "hexValue": "74727565", + "id": 79, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1814:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 75, + "id": 82, + "nodeType": "Return", + "src": "1792:34:1" + } + ] + }, + "documentation": { + "id": 71, + "nodeType": "StructuredDocumentation", + "src": "1640:84:1", + "text": " @dev Returns true if the contract is paused, and false otherwise." + }, + "functionSelector": "5c975abb", + "id": 84, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "paused", + "nameLocation": "1738:6:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 72, + "nodeType": "ParameterList", + "parameters": [], + "src": "1744:2:1" + }, + "returnParameters": { + "id": 75, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 74, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 84, + "src": "1776:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 73, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1776:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1775:6:1" + }, + "scope": 142, + "src": "1729:104:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 95, + "nodeType": "Block", + "src": "1952:77:1", + "statements": [ + { + "condition": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 88, + "name": "paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 84, + "src": "1966:6:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 89, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1966:8:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 94, + "nodeType": "IfStatement", + "src": "1962:61:1", + "trueBody": { + "id": 93, + "nodeType": "Block", + "src": "1976:47:1", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 90, + "name": "EnforcedPause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51, + "src": "1997:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 91, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1997:15:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 92, + "nodeType": "RevertStatement", + "src": "1990:22:1" + } + ] + } + } + ] + }, + "documentation": { + "id": 85, + "nodeType": "StructuredDocumentation", + "src": "1839:57:1", + "text": " @dev Throws if the contract is paused." + }, + "id": 96, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_requireNotPaused", + "nameLocation": "1910:17:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 86, + "nodeType": "ParameterList", + "parameters": [], + "src": "1927:2:1" + }, + "returnParameters": { + "id": 87, + "nodeType": "ParameterList", + "parameters": [], + "src": "1952:0:1" + }, + "scope": 142, + "src": "1901:128:1", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 108, + "nodeType": "Block", + "src": "2149:78:1", + "statements": [ + { + "condition": { + "id": 102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2163:9:1", + "subExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 100, + "name": "paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 84, + "src": "2164:6:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2164:8:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 107, + "nodeType": "IfStatement", + "src": "2159:62:1", + "trueBody": { + "id": 106, + "nodeType": "Block", + "src": "2174:47:1", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 103, + "name": "ExpectedPause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 54, + "src": "2195:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2195:15:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 105, + "nodeType": "RevertStatement", + "src": "2188:22:1" + } + ] + } + } + ] + }, + "documentation": { + "id": 97, + "nodeType": "StructuredDocumentation", + "src": "2035:61:1", + "text": " @dev Throws if the contract is not paused." + }, + "id": 109, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_requirePaused", + "nameLocation": "2110:14:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 98, + "nodeType": "ParameterList", + "parameters": [], + "src": "2124:2:1" + }, + "returnParameters": { + "id": 99, + "nodeType": "ParameterList", + "parameters": [], + "src": "2149:0:1" + }, + "scope": 142, + "src": "2101:126:1", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 124, + "nodeType": "Block", + "src": "2411:63:1", + "statements": [ + { + "expression": { + "id": 117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 115, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38, + "src": "2421:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "32", + "id": 116, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2431:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "2421:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 118, + "nodeType": "ExpressionStatement", + "src": "2421:11:1" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 120, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11, + "src": "2454:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2454:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 119, + "name": "Paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "2447:6:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2447:20:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 123, + "nodeType": "EmitStatement", + "src": "2442:25:1" + } + ] + }, + "documentation": { + "id": 110, + "nodeType": "StructuredDocumentation", + "src": "2233:124:1", + "text": " @dev Triggers stopped state.\n Requirements:\n - The contract must not be paused." + }, + "id": 125, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 113, + "kind": "modifierInvocation", + "modifierName": { + "id": 112, + "name": "whenNotPaused", + "nameLocations": [ + "2397:13:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 62, + "src": "2397:13:1" + }, + "nodeType": "ModifierInvocation", + "src": "2397:13:1" + } + ], + "name": "_pause", + "nameLocation": "2371:6:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 111, + "nodeType": "ParameterList", + "parameters": [], + "src": "2377:2:1" + }, + "returnParameters": { + "id": 114, + "nodeType": "ParameterList", + "parameters": [], + "src": "2411:0:1" + }, + "scope": 142, + "src": "2362:112:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 140, + "nodeType": "Block", + "src": "2654:65:1", + "statements": [ + { + "expression": { + "id": 133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 131, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38, + "src": "2664:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "31", + "id": 132, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2674:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2664:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 134, + "nodeType": "ExpressionStatement", + "src": "2664:11:1" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 136, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11, + "src": "2699:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2699:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 135, + "name": "Unpaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "2690:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2690:22:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 139, + "nodeType": "EmitStatement", + "src": "2685:27:1" + } + ] + }, + "documentation": { + "id": 126, + "nodeType": "StructuredDocumentation", + "src": "2480:121:1", + "text": " @dev Returns to normal state.\n Requirements:\n - The contract must be paused." + }, + "id": 141, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 129, + "kind": "modifierInvocation", + "modifierName": { + "id": 128, + "name": "whenPaused", + "nameLocations": [ + "2643:10:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 70, + "src": "2643:10:1" + }, + "nodeType": "ModifierInvocation", + "src": "2643:10:1" + } + ], + "name": "_unpause", + "nameLocation": "2615:8:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 127, + "nodeType": "ParameterList", + "parameters": [], + "src": "2623:2:1" + }, + "returnParameters": { + "id": 130, + "nodeType": "ParameterList", + "parameters": [], + "src": "2654:0:1" + }, + "scope": 142, + "src": "2606:113:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 143, + "src": "615:2106:1", + "usedErrors": [ + 51, + 54 + ], + "usedEvents": [ + 43, + 48 + ] + } + ], + "src": "102:2620:1" + }, + "id": 1 + } + } + } +} \ No newline at end of file diff --git a/contracts/utils/artifacts/build-info/356acb1c2e933395056a9dc97b76d981.json b/contracts/utils/artifacts/build-info/356acb1c2e933395056a9dc97b76d981.json new file mode 100644 index 00000000000..b09aae8e8d6 --- /dev/null +++ b/contracts/utils/artifacts/build-info/356acb1c2e933395056a9dc97b76d981.json @@ -0,0 +1,57522 @@ +{ + "id": "356acb1c2e933395056a9dc97b76d981", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.30", + "solcLongVersion": "0.8.30+commit.73712a01", + "input": { + "language": "Solidity", + "sources": { + "contracts/utils/Bytes.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (utils/Bytes.sol)\n\npragma solidity ^0.8.24;\n\nimport {Math} from \"./math/Math.sol\";\n\n/**\n * @dev Bytes operations.\n */\nlibrary Bytes {\n /**\n * @dev Forward search for `s` in `buffer`\n * * If `s` is present in the buffer, returns the index of the first instance\n * * If `s` is not present in the buffer, returns type(uint256).max\n *\n * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf[Javascript's `Array.indexOf`]\n */\n function indexOf(bytes memory buffer, bytes1 s) internal pure returns (uint256) {\n return indexOf(buffer, s, 0);\n }\n\n /**\n * @dev Forward search for `s` in `buffer` starting at position `pos`\n * * If `s` is present in the buffer (at or after `pos`), returns the index of the next instance\n * * If `s` is not present in the buffer (at or after `pos`), returns type(uint256).max\n *\n * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf[Javascript's `Array.indexOf`]\n */\n function indexOf(bytes memory buffer, bytes1 s, uint256 pos) internal pure returns (uint256) {\n uint256 length = buffer.length;\n for (uint256 i = pos; i < length; ++i) {\n if (bytes1(_unsafeReadBytesOffset(buffer, i)) == s) {\n return i;\n }\n }\n return type(uint256).max;\n }\n\n /**\n * @dev Backward search for `s` in `buffer`\n * * If `s` is present in the buffer, returns the index of the last instance\n * * If `s` is not present in the buffer, returns type(uint256).max\n *\n * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf[Javascript's `Array.lastIndexOf`]\n */\n function lastIndexOf(bytes memory buffer, bytes1 s) internal pure returns (uint256) {\n return lastIndexOf(buffer, s, type(uint256).max);\n }\n\n /**\n * @dev Backward search for `s` in `buffer` starting at position `pos`\n * * If `s` is present in the buffer (at or before `pos`), returns the index of the previous instance\n * * If `s` is not present in the buffer (at or before `pos`), returns type(uint256).max\n *\n * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf[Javascript's `Array.lastIndexOf`]\n */\n function lastIndexOf(bytes memory buffer, bytes1 s, uint256 pos) internal pure returns (uint256) {\n unchecked {\n uint256 length = buffer.length;\n for (uint256 i = Math.min(Math.saturatingAdd(pos, 1), length); i > 0; --i) {\n if (bytes1(_unsafeReadBytesOffset(buffer, i - 1)) == s) {\n return i - 1;\n }\n }\n return type(uint256).max;\n }\n }\n\n /**\n * @dev Copies the content of `buffer`, from `start` (included) to the end of `buffer` into a new bytes object in\n * memory.\n *\n * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice[Javascript's `Array.slice`]\n */\n function slice(bytes memory buffer, uint256 start) internal pure returns (bytes memory) {\n return slice(buffer, start, buffer.length);\n }\n\n /**\n * @dev Copies the content of `buffer`, from `start` (included) to `end` (excluded) into a new bytes object in\n * memory. The `end` argument is truncated to the length of the `buffer`.\n *\n * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice[Javascript's `Array.slice`]\n */\n function slice(bytes memory buffer, uint256 start, uint256 end) internal pure returns (bytes memory) {\n // sanitize\n uint256 length = buffer.length;\n end = Math.min(end, length);\n start = Math.min(start, end);\n\n // allocate and copy\n bytes memory result = new bytes(end - start);\n assembly (\"memory-safe\") {\n mcopy(add(result, 0x20), add(add(buffer, 0x20), start), sub(end, start))\n }\n\n return result;\n }\n\n /**\n * @dev Moves the content of `buffer`, from `start` (included) to the end of `buffer` to the start of that buffer.\n *\n * NOTE: This function modifies the provided buffer in place. If you need to preserve the original buffer, use {slice} instead\n */\n function splice(bytes memory buffer, uint256 start) internal pure returns (bytes memory) {\n return splice(buffer, start, buffer.length);\n }\n\n /**\n * @dev Moves the content of `buffer`, from `start` (included) to end (excluded) to the start of that buffer. The\n * `end` argument is truncated to the length of the `buffer`.\n *\n * NOTE: This function modifies the provided buffer in place. If you need to preserve the original buffer, use {slice} instead\n */\n function splice(bytes memory buffer, uint256 start, uint256 end) internal pure returns (bytes memory) {\n // sanitize\n uint256 length = buffer.length;\n end = Math.min(end, length);\n start = Math.min(start, end);\n\n // allocate and copy\n assembly (\"memory-safe\") {\n mcopy(add(buffer, 0x20), add(add(buffer, 0x20), start), sub(end, start))\n mstore(buffer, sub(end, start))\n }\n\n return buffer;\n }\n\n /**\n * @dev Concatenate an array of bytes into a single bytes object.\n *\n * For fixed bytes types, we recommend using the solidity built-in `bytes.concat` or (equivalent)\n * `abi.encodePacked`.\n *\n * NOTE: this could be done in assembly with a single loop that expands starting at the FMP, but that would be\n * significantly less readable. It might be worth benchmarking the savings of the full-assembly approach.\n */\n function concat(bytes[] memory buffers) internal pure returns (bytes memory) {\n uint256 length = 0;\n for (uint256 i = 0; i < buffers.length; ++i) {\n length += buffers[i].length;\n }\n\n bytes memory result = new bytes(length);\n\n uint256 offset = 0x20;\n for (uint256 i = 0; i < buffers.length; ++i) {\n bytes memory input = buffers[i];\n assembly (\"memory-safe\") {\n mcopy(add(result, offset), add(input, 0x20), mload(input))\n }\n unchecked {\n offset += input.length;\n }\n }\n\n return result;\n }\n\n /**\n * @dev Returns true if the two byte buffers are equal.\n */\n function equal(bytes memory a, bytes memory b) internal pure returns (bool) {\n return a.length == b.length && keccak256(a) == keccak256(b);\n }\n\n /**\n * @dev Reverses the byte order of a bytes32 value, converting between little-endian and big-endian.\n * Inspired in https://graphics.stanford.edu/~seander/bithacks.html#ReverseParallel[Reverse Parallel]\n */\n function reverseBytes32(bytes32 value) internal pure returns (bytes32) {\n value = // swap bytes\n ((value >> 8) & 0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF) |\n ((value & 0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF) << 8);\n value = // swap 2-byte long pairs\n ((value >> 16) & 0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) |\n ((value & 0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) << 16);\n value = // swap 4-byte long pairs\n ((value >> 32) & 0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF) |\n ((value & 0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF) << 32);\n value = // swap 8-byte long pairs\n ((value >> 64) & 0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF) |\n ((value & 0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF) << 64);\n return (value >> 128) | (value << 128); // swap 16-byte long pairs\n }\n\n /// @dev Same as {reverseBytes32} but optimized for 128-bit values.\n function reverseBytes16(bytes16 value) internal pure returns (bytes16) {\n value = // swap bytes\n ((value & 0xFF00FF00FF00FF00FF00FF00FF00FF00) >> 8) |\n ((value & 0x00FF00FF00FF00FF00FF00FF00FF00FF) << 8);\n value = // swap 2-byte long pairs\n ((value & 0xFFFF0000FFFF0000FFFF0000FFFF0000) >> 16) |\n ((value & 0x0000FFFF0000FFFF0000FFFF0000FFFF) << 16);\n value = // swap 4-byte long pairs\n ((value & 0xFFFFFFFF00000000FFFFFFFF00000000) >> 32) |\n ((value & 0x00000000FFFFFFFF00000000FFFFFFFF) << 32);\n return (value >> 64) | (value << 64); // swap 8-byte long pairs\n }\n\n /// @dev Same as {reverseBytes32} but optimized for 64-bit values.\n function reverseBytes8(bytes8 value) internal pure returns (bytes8) {\n value = ((value & 0xFF00FF00FF00FF00) >> 8) | ((value & 0x00FF00FF00FF00FF) << 8); // swap bytes\n value = ((value & 0xFFFF0000FFFF0000) >> 16) | ((value & 0x0000FFFF0000FFFF) << 16); // swap 2-byte long pairs\n return (value >> 32) | (value << 32); // swap 4-byte long pairs\n }\n\n /// @dev Same as {reverseBytes32} but optimized for 32-bit values.\n function reverseBytes4(bytes4 value) internal pure returns (bytes4) {\n value = ((value & 0xFF00FF00) >> 8) | ((value & 0x00FF00FF) << 8); // swap bytes\n return (value >> 16) | (value << 16); // swap 2-byte long pairs\n }\n\n /// @dev Same as {reverseBytes32} but optimized for 16-bit values.\n function reverseBytes2(bytes2 value) internal pure returns (bytes2) {\n return (value >> 8) | (value << 8);\n }\n\n /**\n * @dev Counts the number of leading zero bits a bytes array. Returns `8 * buffer.length`\n * if the buffer is all zeros.\n */\n function clz(bytes memory buffer) internal pure returns (uint256) {\n for (uint256 i = 0; i < buffer.length; i += 32) {\n bytes32 chunk = _unsafeReadBytesOffset(buffer, i);\n if (chunk != bytes32(0)) {\n return Math.min(8 * i + Math.clz(uint256(chunk)), 8 * buffer.length);\n }\n }\n return 8 * buffer.length;\n }\n\n /**\n * @dev Reads a bytes32 from a bytes array without bounds checking.\n *\n * NOTE: making this function internal would mean it could be used with memory unsafe offset, and marking the\n * assembly block as such would prevent some optimizations.\n */\n function _unsafeReadBytesOffset(bytes memory buffer, uint256 offset) private pure returns (bytes32 value) {\n // This is not memory safe in the general case, but all calls to this private function are within bounds.\n assembly (\"memory-safe\") {\n value := mload(add(add(buffer, 0x20), offset))\n }\n }\n}\n" + }, + "contracts/utils/math/Math.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.20;\n\nimport {Panic} from \"../Panic.sol\";\nimport {SafeCast} from \"./SafeCast.sol\";\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n enum Rounding {\n Floor, // Toward negative infinity\n Ceil, // Toward positive infinity\n Trunc, // Toward zero\n Expand // Away from zero\n }\n\n /**\n * @dev Return the 512-bit addition of two uint256.\n *\n * The result is stored in two 256 variables such that sum = high * 2²⁵⁶ + low.\n */\n function add512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\n assembly (\"memory-safe\") {\n low := add(a, b)\n high := lt(low, a)\n }\n }\n\n /**\n * @dev Return the 512-bit multiplication of two uint256.\n *\n * The result is stored in two 256 variables such that product = high * 2²⁵⁶ + low.\n */\n function mul512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\n // 512-bit multiply [high low] = x * y. Compute the product mod 2²⁵⁶ and mod 2²⁵⁶ - 1, then use\n // the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = high * 2²⁵⁶ + low.\n assembly (\"memory-safe\") {\n let mm := mulmod(a, b, not(0))\n low := mul(a, b)\n high := sub(sub(mm, low), lt(mm, low))\n }\n }\n\n /**\n * @dev Returns the addition of two unsigned integers, with a success flag (no overflow).\n */\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n unchecked {\n uint256 c = a + b;\n success = c >= a;\n result = c * SafeCast.toUint(success);\n }\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow).\n */\n function trySub(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n unchecked {\n uint256 c = a - b;\n success = c <= a;\n result = c * SafeCast.toUint(success);\n }\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow).\n */\n function tryMul(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n unchecked {\n uint256 c = a * b;\n assembly (\"memory-safe\") {\n // Only true when the multiplication doesn't overflow\n // (c / a == b) || (a == 0)\n success := or(eq(div(c, a), b), iszero(a))\n }\n // equivalent to: success ? c : 0\n result = c * SafeCast.toUint(success);\n }\n }\n\n /**\n * @dev Returns the division of two unsigned integers, with a success flag (no division by zero).\n */\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n unchecked {\n success = b > 0;\n assembly (\"memory-safe\") {\n // The `DIV` opcode returns zero when the denominator is 0.\n result := div(a, b)\n }\n }\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero).\n */\n function tryMod(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n unchecked {\n success = b > 0;\n assembly (\"memory-safe\") {\n // The `MOD` opcode returns zero when the denominator is 0.\n result := mod(a, b)\n }\n }\n }\n\n /**\n * @dev Unsigned saturating addition, bounds to `2²⁵⁶ - 1` instead of overflowing.\n */\n function saturatingAdd(uint256 a, uint256 b) internal pure returns (uint256) {\n (bool success, uint256 result) = tryAdd(a, b);\n return ternary(success, result, type(uint256).max);\n }\n\n /**\n * @dev Unsigned saturating subtraction, bounds to zero instead of overflowing.\n */\n function saturatingSub(uint256 a, uint256 b) internal pure returns (uint256) {\n (, uint256 result) = trySub(a, b);\n return result;\n }\n\n /**\n * @dev Unsigned saturating multiplication, bounds to `2²⁵⁶ - 1` instead of overflowing.\n */\n function saturatingMul(uint256 a, uint256 b) internal pure returns (uint256) {\n (bool success, uint256 result) = tryMul(a, b);\n return ternary(success, result, type(uint256).max);\n }\n\n /**\n * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n *\n * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n * one branch when needed, making this function more expensive.\n */\n function ternary(bool condition, uint256 a, uint256 b) internal pure returns (uint256) {\n unchecked {\n // branchless ternary works because:\n // b ^ (a ^ b) == a\n // b ^ 0 == b\n return b ^ ((a ^ b) * SafeCast.toUint(condition));\n }\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return ternary(a > b, a, b);\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return ternary(a < b, a, b);\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds towards infinity instead\n * of rounding towards zero.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n if (b == 0) {\n // Guarantee the same behavior as in a regular Solidity division.\n Panic.panic(Panic.DIVISION_BY_ZERO);\n }\n\n // The following calculation ensures accurate ceiling division without overflow.\n // Since a is non-zero, (a - 1) / b will not overflow.\n // The largest possible result occurs when (a - 1) / b is type(uint256).max,\n // but the largest value we can obtain is type(uint256).max - 1, which happens\n // when a = type(uint256).max and b = 1.\n unchecked {\n return SafeCast.toUint(a > 0) * ((a - 1) / b + 1);\n }\n }\n\n /**\n * @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n * denominator == 0.\n *\n * Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n * Uniswap Labs also under MIT license.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n unchecked {\n (uint256 high, uint256 low) = mul512(x, y);\n\n // Handle non-overflow cases, 256 by 256 division.\n if (high == 0) {\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n // The surrounding unchecked block does not change this fact.\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n return low / denominator;\n }\n\n // Make sure the result is less than 2²⁵⁶. Also prevents denominator == 0.\n if (denominator <= high) {\n Panic.panic(ternary(denominator == 0, Panic.DIVISION_BY_ZERO, Panic.UNDER_OVERFLOW));\n }\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [high low].\n uint256 remainder;\n assembly (\"memory-safe\") {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n high := sub(high, gt(remainder, low))\n low := sub(low, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator.\n // Always >= 1. See https://cs.stackexchange.com/q/138556/92363.\n\n uint256 twos = denominator & (0 - denominator);\n assembly (\"memory-safe\") {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [high low] by twos.\n low := div(low, twos)\n\n // Flip twos such that it is 2²⁵⁶ / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from high into low.\n low |= high * twos;\n\n // Invert denominator mod 2²⁵⁶. Now that denominator is an odd number, it has an inverse modulo 2²⁵⁶ such\n // that denominator * inv ≡ 1 mod 2²⁵⁶. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv ≡ 1 mod 2⁴.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also\n // works in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2⁸\n inverse *= 2 - denominator * inverse; // inverse mod 2¹⁶\n inverse *= 2 - denominator * inverse; // inverse mod 2³²\n inverse *= 2 - denominator * inverse; // inverse mod 2⁶⁴\n inverse *= 2 - denominator * inverse; // inverse mod 2¹²⁸\n inverse *= 2 - denominator * inverse; // inverse mod 2²⁵⁶\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2²⁵⁶. Since the preconditions guarantee that the outcome is\n // less than 2²⁵⁶, this is the final result. We don't need to compute the high bits of the result and high\n // is no longer required.\n result = low * inverse;\n return result;\n }\n }\n\n /**\n * @dev Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n return mulDiv(x, y, denominator) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0);\n }\n\n /**\n * @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256.\n */\n function mulShr(uint256 x, uint256 y, uint8 n) internal pure returns (uint256 result) {\n unchecked {\n (uint256 high, uint256 low) = mul512(x, y);\n if (high >= 1 << n) {\n Panic.panic(Panic.UNDER_OVERFLOW);\n }\n return (high << (256 - n)) | (low >> n);\n }\n }\n\n /**\n * @dev Calculates x * y >> n with full precision, following the selected rounding direction.\n */\n function mulShr(uint256 x, uint256 y, uint8 n, Rounding rounding) internal pure returns (uint256) {\n return mulShr(x, y, n) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, 1 << n) > 0);\n }\n\n /**\n * @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\n *\n * If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\n * If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\n *\n * If the input value is not inversible, 0 is returned.\n *\n * NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\n * inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}.\n */\n function invMod(uint256 a, uint256 n) internal pure returns (uint256) {\n unchecked {\n if (n == 0) return 0;\n\n // The inverse modulo is calculated using the Extended Euclidean Algorithm (iterative version)\n // Used to compute integers x and y such that: ax + ny = gcd(a, n).\n // When the gcd is 1, then the inverse of a modulo n exists and it's x.\n // ax + ny = 1\n // ax = 1 + (-y)n\n // ax ≡ 1 (mod n) # x is the inverse of a modulo n\n\n // If the remainder is 0 the gcd is n right away.\n uint256 remainder = a % n;\n uint256 gcd = n;\n\n // Therefore the initial coefficients are:\n // ax + ny = gcd(a, n) = n\n // 0a + 1n = n\n int256 x = 0;\n int256 y = 1;\n\n while (remainder != 0) {\n uint256 quotient = gcd / remainder;\n\n (gcd, remainder) = (\n // The old remainder is the next gcd to try.\n remainder,\n // Compute the next remainder.\n // Can't overflow given that (a % gcd) * (gcd // (a % gcd)) <= gcd\n // where gcd is at most n (capped to type(uint256).max)\n gcd - remainder * quotient\n );\n\n (x, y) = (\n // Increment the coefficient of a.\n y,\n // Decrement the coefficient of n.\n // Can overflow, but the result is casted to uint256 so that the\n // next value of y is \"wrapped around\" to a value between 0 and n - 1.\n x - y * int256(quotient)\n );\n }\n\n if (gcd != 1) return 0; // No inverse exists.\n return ternary(x < 0, n - uint256(-x), uint256(x)); // Wrap the result if it's negative.\n }\n }\n\n /**\n * @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\n *\n * From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\n * prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that\n * `a**(p-2)` is the modular multiplicative inverse of a in Fp.\n *\n * NOTE: this function does NOT check that `p` is a prime greater than `2`.\n */\n function invModPrime(uint256 a, uint256 p) internal view returns (uint256) {\n unchecked {\n return Math.modExp(a, p - 2, p);\n }\n }\n\n /**\n * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\n *\n * Requirements:\n * - modulus can't be zero\n * - underlying staticcall to precompile must succeed\n *\n * IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\n * sure the chain you're using it on supports the precompiled contract for modular exponentiation\n * at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\n * the underlying function will succeed given the lack of a revert, but the result may be incorrectly\n * interpreted as 0.\n */\n function modExp(uint256 b, uint256 e, uint256 m) internal view returns (uint256) {\n (bool success, uint256 result) = tryModExp(b, e, m);\n if (!success) {\n Panic.panic(Panic.DIVISION_BY_ZERO);\n }\n return result;\n }\n\n /**\n * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\n * It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\n * to operate modulo 0 or if the underlying precompile reverted.\n *\n * IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\n * you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\n * https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\n * of a revert, but the result may be incorrectly interpreted as 0.\n */\n function tryModExp(uint256 b, uint256 e, uint256 m) internal view returns (bool success, uint256 result) {\n if (m == 0) return (false, 0);\n assembly (\"memory-safe\") {\n let ptr := mload(0x40)\n // | Offset | Content | Content (Hex) |\n // |-----------|------------|--------------------------------------------------------------------|\n // | 0x00:0x1f | size of b | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n // | 0x20:0x3f | size of e | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n // | 0x40:0x5f | size of m | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n // | 0x60:0x7f | value of b | 0x<.............................................................b> |\n // | 0x80:0x9f | value of e | 0x<.............................................................e> |\n // | 0xa0:0xbf | value of m | 0x<.............................................................m> |\n mstore(ptr, 0x20)\n mstore(add(ptr, 0x20), 0x20)\n mstore(add(ptr, 0x40), 0x20)\n mstore(add(ptr, 0x60), b)\n mstore(add(ptr, 0x80), e)\n mstore(add(ptr, 0xa0), m)\n\n // Given the result < m, it's guaranteed to fit in 32 bytes,\n // so we can use the memory scratch space located at offset 0.\n success := staticcall(gas(), 0x05, ptr, 0xc0, 0x00, 0x20)\n result := mload(0x00)\n }\n }\n\n /**\n * @dev Variant of {modExp} that supports inputs of arbitrary length.\n */\n function modExp(bytes memory b, bytes memory e, bytes memory m) internal view returns (bytes memory) {\n (bool success, bytes memory result) = tryModExp(b, e, m);\n if (!success) {\n Panic.panic(Panic.DIVISION_BY_ZERO);\n }\n return result;\n }\n\n /**\n * @dev Variant of {tryModExp} that supports inputs of arbitrary length.\n */\n function tryModExp(\n bytes memory b,\n bytes memory e,\n bytes memory m\n ) internal view returns (bool success, bytes memory result) {\n if (_zeroBytes(m)) return (false, new bytes(0));\n\n uint256 mLen = m.length;\n\n // Encode call args in result and move the free memory pointer\n result = abi.encodePacked(b.length, e.length, mLen, b, e, m);\n\n assembly (\"memory-safe\") {\n let dataPtr := add(result, 0x20)\n // Write result on top of args to avoid allocating extra memory.\n success := staticcall(gas(), 0x05, dataPtr, mload(result), dataPtr, mLen)\n // Overwrite the length.\n // result.length > returndatasize() is guaranteed because returndatasize() == m.length\n mstore(result, mLen)\n // Set the memory pointer after the returned data.\n mstore(0x40, add(dataPtr, mLen))\n }\n }\n\n /**\n * @dev Returns whether the provided byte array is zero.\n */\n function _zeroBytes(bytes memory byteArray) private pure returns (bool) {\n for (uint256 i = 0; i < byteArray.length; ++i) {\n if (byteArray[i] != 0) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n * towards zero.\n *\n * This method is based on Newton's method for computing square roots; the algorithm is restricted to only\n * using integer operations.\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n unchecked {\n // Take care of easy edge cases when a == 0 or a == 1\n if (a <= 1) {\n return a;\n }\n\n // In this function, we use Newton's method to get a root of `f(x) := x² - a`. It involves building a\n // sequence x_n that converges toward sqrt(a). For each iteration x_n, we also define the error between\n // the current value as `ε_n = | x_n - sqrt(a) |`.\n //\n // For our first estimation, we consider `e` the smallest power of 2 which is bigger than the square root\n // of the target. (i.e. `2**(e-1) ≤ sqrt(a) < 2**e`). We know that `e ≤ 128` because `(2¹²⁸)² = 2²⁵⁶` is\n // bigger than any uint256.\n //\n // By noticing that\n // `2**(e-1) ≤ sqrt(a) < 2**e → (2**(e-1))² ≤ a < (2**e)² → 2**(2*e-2) ≤ a < 2**(2*e)`\n // we can deduce that `e - 1` is `log2(a) / 2`. We can thus compute `x_n = 2**(e-1)` using a method similar\n // to the msb function.\n uint256 aa = a;\n uint256 xn = 1;\n\n if (aa >= (1 << 128)) {\n aa >>= 128;\n xn <<= 64;\n }\n if (aa >= (1 << 64)) {\n aa >>= 64;\n xn <<= 32;\n }\n if (aa >= (1 << 32)) {\n aa >>= 32;\n xn <<= 16;\n }\n if (aa >= (1 << 16)) {\n aa >>= 16;\n xn <<= 8;\n }\n if (aa >= (1 << 8)) {\n aa >>= 8;\n xn <<= 4;\n }\n if (aa >= (1 << 4)) {\n aa >>= 4;\n xn <<= 2;\n }\n if (aa >= (1 << 2)) {\n xn <<= 1;\n }\n\n // We now have x_n such that `x_n = 2**(e-1) ≤ sqrt(a) < 2**e = 2 * x_n`. This implies ε_n ≤ 2**(e-1).\n //\n // We can refine our estimation by noticing that the middle of that interval minimizes the error.\n // If we move x_n to equal 2**(e-1) + 2**(e-2), then we reduce the error to ε_n ≤ 2**(e-2).\n // This is going to be our x_0 (and ε_0)\n xn = (3 * xn) >> 1; // ε_0 := | x_0 - sqrt(a) | ≤ 2**(e-2)\n\n // From here, Newton's method give us:\n // x_{n+1} = (x_n + a / x_n) / 2\n //\n // One should note that:\n // x_{n+1}² - a = ((x_n + a / x_n) / 2)² - a\n // = ((x_n² + a) / (2 * x_n))² - a\n // = (x_n⁴ + 2 * a * x_n² + a²) / (4 * x_n²) - a\n // = (x_n⁴ + 2 * a * x_n² + a² - 4 * a * x_n²) / (4 * x_n²)\n // = (x_n⁴ - 2 * a * x_n² + a²) / (4 * x_n²)\n // = (x_n² - a)² / (2 * x_n)²\n // = ((x_n² - a) / (2 * x_n))²\n // ≥ 0\n // Which proves that for all n ≥ 1, sqrt(a) ≤ x_n\n //\n // This gives us the proof of quadratic convergence of the sequence:\n // ε_{n+1} = | x_{n+1} - sqrt(a) |\n // = | (x_n + a / x_n) / 2 - sqrt(a) |\n // = | (x_n² + a - 2*x_n*sqrt(a)) / (2 * x_n) |\n // = | (x_n - sqrt(a))² / (2 * x_n) |\n // = | ε_n² / (2 * x_n) |\n // = ε_n² / | (2 * x_n) |\n //\n // For the first iteration, we have a special case where x_0 is known:\n // ε_1 = ε_0² / | (2 * x_0) |\n // ≤ (2**(e-2))² / (2 * (2**(e-1) + 2**(e-2)))\n // ≤ 2**(2*e-4) / (3 * 2**(e-1))\n // ≤ 2**(e-3) / 3\n // ≤ 2**(e-3-log2(3))\n // ≤ 2**(e-4.5)\n //\n // For the following iterations, we use the fact that, 2**(e-1) ≤ sqrt(a) ≤ x_n:\n // ε_{n+1} = ε_n² / | (2 * x_n) |\n // ≤ (2**(e-k))² / (2 * 2**(e-1))\n // ≤ 2**(2*e-2*k) / 2**e\n // ≤ 2**(e-2*k)\n xn = (xn + a / xn) >> 1; // ε_1 := | x_1 - sqrt(a) | ≤ 2**(e-4.5) -- special case, see above\n xn = (xn + a / xn) >> 1; // ε_2 := | x_2 - sqrt(a) | ≤ 2**(e-9) -- general case with k = 4.5\n xn = (xn + a / xn) >> 1; // ε_3 := | x_3 - sqrt(a) | ≤ 2**(e-18) -- general case with k = 9\n xn = (xn + a / xn) >> 1; // ε_4 := | x_4 - sqrt(a) | ≤ 2**(e-36) -- general case with k = 18\n xn = (xn + a / xn) >> 1; // ε_5 := | x_5 - sqrt(a) | ≤ 2**(e-72) -- general case with k = 36\n xn = (xn + a / xn) >> 1; // ε_6 := | x_6 - sqrt(a) | ≤ 2**(e-144) -- general case with k = 72\n\n // Because e ≤ 128 (as discussed during the first estimation phase), we know have reached a precision\n // ε_6 ≤ 2**(e-144) < 1. Given we're operating on integers, then we can ensure that xn is now either\n // sqrt(a) or sqrt(a) + 1.\n return xn - SafeCast.toUint(xn > a / xn);\n }\n }\n\n /**\n * @dev Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + SafeCast.toUint(unsignedRoundsUp(rounding) && result * result < a);\n }\n }\n\n /**\n * @dev Return the log in base 2 of a positive value rounded towards zero.\n * Returns 0 if given 0.\n */\n function log2(uint256 x) internal pure returns (uint256 r) {\n // If value has upper 128 bits set, log2 result is at least 128\n r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\n // If upper 64 bits of 128-bit half set, add 64 to result\n r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\n // If upper 32 bits of 64-bit half set, add 32 to result\n r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\n // If upper 16 bits of 32-bit half set, add 16 to result\n r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\n // If upper 8 bits of 16-bit half set, add 8 to result\n r |= SafeCast.toUint((x >> r) > 0xff) << 3;\n // If upper 4 bits of 8-bit half set, add 4 to result\n r |= SafeCast.toUint((x >> r) > 0xf) << 2;\n\n // Shifts value right by the current result and use it as an index into this lookup table:\n //\n // | x (4 bits) | index | table[index] = MSB position |\n // |------------|---------|-----------------------------|\n // | 0000 | 0 | table[0] = 0 |\n // | 0001 | 1 | table[1] = 0 |\n // | 0010 | 2 | table[2] = 1 |\n // | 0011 | 3 | table[3] = 1 |\n // | 0100 | 4 | table[4] = 2 |\n // | 0101 | 5 | table[5] = 2 |\n // | 0110 | 6 | table[6] = 2 |\n // | 0111 | 7 | table[7] = 2 |\n // | 1000 | 8 | table[8] = 3 |\n // | 1001 | 9 | table[9] = 3 |\n // | 1010 | 10 | table[10] = 3 |\n // | 1011 | 11 | table[11] = 3 |\n // | 1100 | 12 | table[12] = 3 |\n // | 1101 | 13 | table[13] = 3 |\n // | 1110 | 14 | table[14] = 3 |\n // | 1111 | 15 | table[15] = 3 |\n //\n // The lookup table is represented as a 32-byte value with the MSB positions for 0-15 in the last 16 bytes.\n assembly (\"memory-safe\") {\n r := or(r, byte(shr(r, x), 0x0000010102020202030303030303030300000000000000000000000000000000))\n }\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << result < value);\n }\n }\n\n /**\n * @dev Return the log in base 10 of a positive value rounded towards zero.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10 ** 64) {\n value /= 10 ** 64;\n result += 64;\n }\n if (value >= 10 ** 32) {\n value /= 10 ** 32;\n result += 32;\n }\n if (value >= 10 ** 16) {\n value /= 10 ** 16;\n result += 16;\n }\n if (value >= 10 ** 8) {\n value /= 10 ** 8;\n result += 8;\n }\n if (value >= 10 ** 4) {\n value /= 10 ** 4;\n result += 4;\n }\n if (value >= 10 ** 2) {\n value /= 10 ** 2;\n result += 2;\n }\n if (value >= 10 ** 1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 10 ** result < value);\n }\n }\n\n /**\n * @dev Return the log in base 256 of a positive value rounded towards zero.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 x) internal pure returns (uint256 r) {\n // If value has upper 128 bits set, log2 result is at least 128\n r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\n // If upper 64 bits of 128-bit half set, add 64 to result\n r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\n // If upper 32 bits of 64-bit half set, add 32 to result\n r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\n // If upper 16 bits of 32-bit half set, add 16 to result\n r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\n // Add 1 if upper 8 bits of 16-bit half set, and divide accumulated result by 8\n return (r >> 3) | SafeCast.toUint((x >> r) > 0xff);\n }\n\n /**\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << (result << 3) < value);\n }\n }\n\n /**\n * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers.\n */\n function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {\n return uint8(rounding) % 2 == 1;\n }\n\n /**\n * @dev Counts the number of leading zero bits in a uint256.\n */\n function clz(uint256 x) internal pure returns (uint256) {\n return ternary(x == 0, 256, 255 - log2(x));\n }\n}\n" + }, + "contracts/utils/math/SafeCast.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol)\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\n * checks.\n *\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n * easily result in undesired exploitation or bugs, since developers usually\n * assume that overflows raise errors. `SafeCast` restores this intuition by\n * reverting the transaction when such an operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeCast {\n /**\n * @dev Value doesn't fit in an uint of `bits` size.\n */\n error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);\n\n /**\n * @dev An int value doesn't fit in an uint of `bits` size.\n */\n error SafeCastOverflowedIntToUint(int256 value);\n\n /**\n * @dev Value doesn't fit in an int of `bits` size.\n */\n error SafeCastOverflowedIntDowncast(uint8 bits, int256 value);\n\n /**\n * @dev An uint value doesn't fit in an int of `bits` size.\n */\n error SafeCastOverflowedUintToInt(uint256 value);\n\n /**\n * @dev Returns the downcasted uint248 from uint256, reverting on\n * overflow (when the input is greater than largest uint248).\n *\n * Counterpart to Solidity's `uint248` operator.\n *\n * Requirements:\n *\n * - input must fit into 248 bits\n */\n function toUint248(uint256 value) internal pure returns (uint248) {\n if (value > type(uint248).max) {\n revert SafeCastOverflowedUintDowncast(248, value);\n }\n return uint248(value);\n }\n\n /**\n * @dev Returns the downcasted uint240 from uint256, reverting on\n * overflow (when the input is greater than largest uint240).\n *\n * Counterpart to Solidity's `uint240` operator.\n *\n * Requirements:\n *\n * - input must fit into 240 bits\n */\n function toUint240(uint256 value) internal pure returns (uint240) {\n if (value > type(uint240).max) {\n revert SafeCastOverflowedUintDowncast(240, value);\n }\n return uint240(value);\n }\n\n /**\n * @dev Returns the downcasted uint232 from uint256, reverting on\n * overflow (when the input is greater than largest uint232).\n *\n * Counterpart to Solidity's `uint232` operator.\n *\n * Requirements:\n *\n * - input must fit into 232 bits\n */\n function toUint232(uint256 value) internal pure returns (uint232) {\n if (value > type(uint232).max) {\n revert SafeCastOverflowedUintDowncast(232, value);\n }\n return uint232(value);\n }\n\n /**\n * @dev Returns the downcasted uint224 from uint256, reverting on\n * overflow (when the input is greater than largest uint224).\n *\n * Counterpart to Solidity's `uint224` operator.\n *\n * Requirements:\n *\n * - input must fit into 224 bits\n */\n function toUint224(uint256 value) internal pure returns (uint224) {\n if (value > type(uint224).max) {\n revert SafeCastOverflowedUintDowncast(224, value);\n }\n return uint224(value);\n }\n\n /**\n * @dev Returns the downcasted uint216 from uint256, reverting on\n * overflow (when the input is greater than largest uint216).\n *\n * Counterpart to Solidity's `uint216` operator.\n *\n * Requirements:\n *\n * - input must fit into 216 bits\n */\n function toUint216(uint256 value) internal pure returns (uint216) {\n if (value > type(uint216).max) {\n revert SafeCastOverflowedUintDowncast(216, value);\n }\n return uint216(value);\n }\n\n /**\n * @dev Returns the downcasted uint208 from uint256, reverting on\n * overflow (when the input is greater than largest uint208).\n *\n * Counterpart to Solidity's `uint208` operator.\n *\n * Requirements:\n *\n * - input must fit into 208 bits\n */\n function toUint208(uint256 value) internal pure returns (uint208) {\n if (value > type(uint208).max) {\n revert SafeCastOverflowedUintDowncast(208, value);\n }\n return uint208(value);\n }\n\n /**\n * @dev Returns the downcasted uint200 from uint256, reverting on\n * overflow (when the input is greater than largest uint200).\n *\n * Counterpart to Solidity's `uint200` operator.\n *\n * Requirements:\n *\n * - input must fit into 200 bits\n */\n function toUint200(uint256 value) internal pure returns (uint200) {\n if (value > type(uint200).max) {\n revert SafeCastOverflowedUintDowncast(200, value);\n }\n return uint200(value);\n }\n\n /**\n * @dev Returns the downcasted uint192 from uint256, reverting on\n * overflow (when the input is greater than largest uint192).\n *\n * Counterpart to Solidity's `uint192` operator.\n *\n * Requirements:\n *\n * - input must fit into 192 bits\n */\n function toUint192(uint256 value) internal pure returns (uint192) {\n if (value > type(uint192).max) {\n revert SafeCastOverflowedUintDowncast(192, value);\n }\n return uint192(value);\n }\n\n /**\n * @dev Returns the downcasted uint184 from uint256, reverting on\n * overflow (when the input is greater than largest uint184).\n *\n * Counterpart to Solidity's `uint184` operator.\n *\n * Requirements:\n *\n * - input must fit into 184 bits\n */\n function toUint184(uint256 value) internal pure returns (uint184) {\n if (value > type(uint184).max) {\n revert SafeCastOverflowedUintDowncast(184, value);\n }\n return uint184(value);\n }\n\n /**\n * @dev Returns the downcasted uint176 from uint256, reverting on\n * overflow (when the input is greater than largest uint176).\n *\n * Counterpart to Solidity's `uint176` operator.\n *\n * Requirements:\n *\n * - input must fit into 176 bits\n */\n function toUint176(uint256 value) internal pure returns (uint176) {\n if (value > type(uint176).max) {\n revert SafeCastOverflowedUintDowncast(176, value);\n }\n return uint176(value);\n }\n\n /**\n * @dev Returns the downcasted uint168 from uint256, reverting on\n * overflow (when the input is greater than largest uint168).\n *\n * Counterpart to Solidity's `uint168` operator.\n *\n * Requirements:\n *\n * - input must fit into 168 bits\n */\n function toUint168(uint256 value) internal pure returns (uint168) {\n if (value > type(uint168).max) {\n revert SafeCastOverflowedUintDowncast(168, value);\n }\n return uint168(value);\n }\n\n /**\n * @dev Returns the downcasted uint160 from uint256, reverting on\n * overflow (when the input is greater than largest uint160).\n *\n * Counterpart to Solidity's `uint160` operator.\n *\n * Requirements:\n *\n * - input must fit into 160 bits\n */\n function toUint160(uint256 value) internal pure returns (uint160) {\n if (value > type(uint160).max) {\n revert SafeCastOverflowedUintDowncast(160, value);\n }\n return uint160(value);\n }\n\n /**\n * @dev Returns the downcasted uint152 from uint256, reverting on\n * overflow (when the input is greater than largest uint152).\n *\n * Counterpart to Solidity's `uint152` operator.\n *\n * Requirements:\n *\n * - input must fit into 152 bits\n */\n function toUint152(uint256 value) internal pure returns (uint152) {\n if (value > type(uint152).max) {\n revert SafeCastOverflowedUintDowncast(152, value);\n }\n return uint152(value);\n }\n\n /**\n * @dev Returns the downcasted uint144 from uint256, reverting on\n * overflow (when the input is greater than largest uint144).\n *\n * Counterpart to Solidity's `uint144` operator.\n *\n * Requirements:\n *\n * - input must fit into 144 bits\n */\n function toUint144(uint256 value) internal pure returns (uint144) {\n if (value > type(uint144).max) {\n revert SafeCastOverflowedUintDowncast(144, value);\n }\n return uint144(value);\n }\n\n /**\n * @dev Returns the downcasted uint136 from uint256, reverting on\n * overflow (when the input is greater than largest uint136).\n *\n * Counterpart to Solidity's `uint136` operator.\n *\n * Requirements:\n *\n * - input must fit into 136 bits\n */\n function toUint136(uint256 value) internal pure returns (uint136) {\n if (value > type(uint136).max) {\n revert SafeCastOverflowedUintDowncast(136, value);\n }\n return uint136(value);\n }\n\n /**\n * @dev Returns the downcasted uint128 from uint256, reverting on\n * overflow (when the input is greater than largest uint128).\n *\n * Counterpart to Solidity's `uint128` operator.\n *\n * Requirements:\n *\n * - input must fit into 128 bits\n */\n function toUint128(uint256 value) internal pure returns (uint128) {\n if (value > type(uint128).max) {\n revert SafeCastOverflowedUintDowncast(128, value);\n }\n return uint128(value);\n }\n\n /**\n * @dev Returns the downcasted uint120 from uint256, reverting on\n * overflow (when the input is greater than largest uint120).\n *\n * Counterpart to Solidity's `uint120` operator.\n *\n * Requirements:\n *\n * - input must fit into 120 bits\n */\n function toUint120(uint256 value) internal pure returns (uint120) {\n if (value > type(uint120).max) {\n revert SafeCastOverflowedUintDowncast(120, value);\n }\n return uint120(value);\n }\n\n /**\n * @dev Returns the downcasted uint112 from uint256, reverting on\n * overflow (when the input is greater than largest uint112).\n *\n * Counterpart to Solidity's `uint112` operator.\n *\n * Requirements:\n *\n * - input must fit into 112 bits\n */\n function toUint112(uint256 value) internal pure returns (uint112) {\n if (value > type(uint112).max) {\n revert SafeCastOverflowedUintDowncast(112, value);\n }\n return uint112(value);\n }\n\n /**\n * @dev Returns the downcasted uint104 from uint256, reverting on\n * overflow (when the input is greater than largest uint104).\n *\n * Counterpart to Solidity's `uint104` operator.\n *\n * Requirements:\n *\n * - input must fit into 104 bits\n */\n function toUint104(uint256 value) internal pure returns (uint104) {\n if (value > type(uint104).max) {\n revert SafeCastOverflowedUintDowncast(104, value);\n }\n return uint104(value);\n }\n\n /**\n * @dev Returns the downcasted uint96 from uint256, reverting on\n * overflow (when the input is greater than largest uint96).\n *\n * Counterpart to Solidity's `uint96` operator.\n *\n * Requirements:\n *\n * - input must fit into 96 bits\n */\n function toUint96(uint256 value) internal pure returns (uint96) {\n if (value > type(uint96).max) {\n revert SafeCastOverflowedUintDowncast(96, value);\n }\n return uint96(value);\n }\n\n /**\n * @dev Returns the downcasted uint88 from uint256, reverting on\n * overflow (when the input is greater than largest uint88).\n *\n * Counterpart to Solidity's `uint88` operator.\n *\n * Requirements:\n *\n * - input must fit into 88 bits\n */\n function toUint88(uint256 value) internal pure returns (uint88) {\n if (value > type(uint88).max) {\n revert SafeCastOverflowedUintDowncast(88, value);\n }\n return uint88(value);\n }\n\n /**\n * @dev Returns the downcasted uint80 from uint256, reverting on\n * overflow (when the input is greater than largest uint80).\n *\n * Counterpart to Solidity's `uint80` operator.\n *\n * Requirements:\n *\n * - input must fit into 80 bits\n */\n function toUint80(uint256 value) internal pure returns (uint80) {\n if (value > type(uint80).max) {\n revert SafeCastOverflowedUintDowncast(80, value);\n }\n return uint80(value);\n }\n\n /**\n * @dev Returns the downcasted uint72 from uint256, reverting on\n * overflow (when the input is greater than largest uint72).\n *\n * Counterpart to Solidity's `uint72` operator.\n *\n * Requirements:\n *\n * - input must fit into 72 bits\n */\n function toUint72(uint256 value) internal pure returns (uint72) {\n if (value > type(uint72).max) {\n revert SafeCastOverflowedUintDowncast(72, value);\n }\n return uint72(value);\n }\n\n /**\n * @dev Returns the downcasted uint64 from uint256, reverting on\n * overflow (when the input is greater than largest uint64).\n *\n * Counterpart to Solidity's `uint64` operator.\n *\n * Requirements:\n *\n * - input must fit into 64 bits\n */\n function toUint64(uint256 value) internal pure returns (uint64) {\n if (value > type(uint64).max) {\n revert SafeCastOverflowedUintDowncast(64, value);\n }\n return uint64(value);\n }\n\n /**\n * @dev Returns the downcasted uint56 from uint256, reverting on\n * overflow (when the input is greater than largest uint56).\n *\n * Counterpart to Solidity's `uint56` operator.\n *\n * Requirements:\n *\n * - input must fit into 56 bits\n */\n function toUint56(uint256 value) internal pure returns (uint56) {\n if (value > type(uint56).max) {\n revert SafeCastOverflowedUintDowncast(56, value);\n }\n return uint56(value);\n }\n\n /**\n * @dev Returns the downcasted uint48 from uint256, reverting on\n * overflow (when the input is greater than largest uint48).\n *\n * Counterpart to Solidity's `uint48` operator.\n *\n * Requirements:\n *\n * - input must fit into 48 bits\n */\n function toUint48(uint256 value) internal pure returns (uint48) {\n if (value > type(uint48).max) {\n revert SafeCastOverflowedUintDowncast(48, value);\n }\n return uint48(value);\n }\n\n /**\n * @dev Returns the downcasted uint40 from uint256, reverting on\n * overflow (when the input is greater than largest uint40).\n *\n * Counterpart to Solidity's `uint40` operator.\n *\n * Requirements:\n *\n * - input must fit into 40 bits\n */\n function toUint40(uint256 value) internal pure returns (uint40) {\n if (value > type(uint40).max) {\n revert SafeCastOverflowedUintDowncast(40, value);\n }\n return uint40(value);\n }\n\n /**\n * @dev Returns the downcasted uint32 from uint256, reverting on\n * overflow (when the input is greater than largest uint32).\n *\n * Counterpart to Solidity's `uint32` operator.\n *\n * Requirements:\n *\n * - input must fit into 32 bits\n */\n function toUint32(uint256 value) internal pure returns (uint32) {\n if (value > type(uint32).max) {\n revert SafeCastOverflowedUintDowncast(32, value);\n }\n return uint32(value);\n }\n\n /**\n * @dev Returns the downcasted uint24 from uint256, reverting on\n * overflow (when the input is greater than largest uint24).\n *\n * Counterpart to Solidity's `uint24` operator.\n *\n * Requirements:\n *\n * - input must fit into 24 bits\n */\n function toUint24(uint256 value) internal pure returns (uint24) {\n if (value > type(uint24).max) {\n revert SafeCastOverflowedUintDowncast(24, value);\n }\n return uint24(value);\n }\n\n /**\n * @dev Returns the downcasted uint16 from uint256, reverting on\n * overflow (when the input is greater than largest uint16).\n *\n * Counterpart to Solidity's `uint16` operator.\n *\n * Requirements:\n *\n * - input must fit into 16 bits\n */\n function toUint16(uint256 value) internal pure returns (uint16) {\n if (value > type(uint16).max) {\n revert SafeCastOverflowedUintDowncast(16, value);\n }\n return uint16(value);\n }\n\n /**\n * @dev Returns the downcasted uint8 from uint256, reverting on\n * overflow (when the input is greater than largest uint8).\n *\n * Counterpart to Solidity's `uint8` operator.\n *\n * Requirements:\n *\n * - input must fit into 8 bits\n */\n function toUint8(uint256 value) internal pure returns (uint8) {\n if (value > type(uint8).max) {\n revert SafeCastOverflowedUintDowncast(8, value);\n }\n return uint8(value);\n }\n\n /**\n * @dev Converts a signed int256 into an unsigned uint256.\n *\n * Requirements:\n *\n * - input must be greater than or equal to 0.\n */\n function toUint256(int256 value) internal pure returns (uint256) {\n if (value < 0) {\n revert SafeCastOverflowedIntToUint(value);\n }\n return uint256(value);\n }\n\n /**\n * @dev Returns the downcasted int248 from int256, reverting on\n * overflow (when the input is less than smallest int248 or\n * greater than largest int248).\n *\n * Counterpart to Solidity's `int248` operator.\n *\n * Requirements:\n *\n * - input must fit into 248 bits\n */\n function toInt248(int256 value) internal pure returns (int248 downcasted) {\n downcasted = int248(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(248, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int240 from int256, reverting on\n * overflow (when the input is less than smallest int240 or\n * greater than largest int240).\n *\n * Counterpart to Solidity's `int240` operator.\n *\n * Requirements:\n *\n * - input must fit into 240 bits\n */\n function toInt240(int256 value) internal pure returns (int240 downcasted) {\n downcasted = int240(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(240, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int232 from int256, reverting on\n * overflow (when the input is less than smallest int232 or\n * greater than largest int232).\n *\n * Counterpart to Solidity's `int232` operator.\n *\n * Requirements:\n *\n * - input must fit into 232 bits\n */\n function toInt232(int256 value) internal pure returns (int232 downcasted) {\n downcasted = int232(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(232, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int224 from int256, reverting on\n * overflow (when the input is less than smallest int224 or\n * greater than largest int224).\n *\n * Counterpart to Solidity's `int224` operator.\n *\n * Requirements:\n *\n * - input must fit into 224 bits\n */\n function toInt224(int256 value) internal pure returns (int224 downcasted) {\n downcasted = int224(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(224, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int216 from int256, reverting on\n * overflow (when the input is less than smallest int216 or\n * greater than largest int216).\n *\n * Counterpart to Solidity's `int216` operator.\n *\n * Requirements:\n *\n * - input must fit into 216 bits\n */\n function toInt216(int256 value) internal pure returns (int216 downcasted) {\n downcasted = int216(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(216, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int208 from int256, reverting on\n * overflow (when the input is less than smallest int208 or\n * greater than largest int208).\n *\n * Counterpart to Solidity's `int208` operator.\n *\n * Requirements:\n *\n * - input must fit into 208 bits\n */\n function toInt208(int256 value) internal pure returns (int208 downcasted) {\n downcasted = int208(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(208, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int200 from int256, reverting on\n * overflow (when the input is less than smallest int200 or\n * greater than largest int200).\n *\n * Counterpart to Solidity's `int200` operator.\n *\n * Requirements:\n *\n * - input must fit into 200 bits\n */\n function toInt200(int256 value) internal pure returns (int200 downcasted) {\n downcasted = int200(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(200, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int192 from int256, reverting on\n * overflow (when the input is less than smallest int192 or\n * greater than largest int192).\n *\n * Counterpart to Solidity's `int192` operator.\n *\n * Requirements:\n *\n * - input must fit into 192 bits\n */\n function toInt192(int256 value) internal pure returns (int192 downcasted) {\n downcasted = int192(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(192, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int184 from int256, reverting on\n * overflow (when the input is less than smallest int184 or\n * greater than largest int184).\n *\n * Counterpart to Solidity's `int184` operator.\n *\n * Requirements:\n *\n * - input must fit into 184 bits\n */\n function toInt184(int256 value) internal pure returns (int184 downcasted) {\n downcasted = int184(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(184, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int176 from int256, reverting on\n * overflow (when the input is less than smallest int176 or\n * greater than largest int176).\n *\n * Counterpart to Solidity's `int176` operator.\n *\n * Requirements:\n *\n * - input must fit into 176 bits\n */\n function toInt176(int256 value) internal pure returns (int176 downcasted) {\n downcasted = int176(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(176, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int168 from int256, reverting on\n * overflow (when the input is less than smallest int168 or\n * greater than largest int168).\n *\n * Counterpart to Solidity's `int168` operator.\n *\n * Requirements:\n *\n * - input must fit into 168 bits\n */\n function toInt168(int256 value) internal pure returns (int168 downcasted) {\n downcasted = int168(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(168, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int160 from int256, reverting on\n * overflow (when the input is less than smallest int160 or\n * greater than largest int160).\n *\n * Counterpart to Solidity's `int160` operator.\n *\n * Requirements:\n *\n * - input must fit into 160 bits\n */\n function toInt160(int256 value) internal pure returns (int160 downcasted) {\n downcasted = int160(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(160, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int152 from int256, reverting on\n * overflow (when the input is less than smallest int152 or\n * greater than largest int152).\n *\n * Counterpart to Solidity's `int152` operator.\n *\n * Requirements:\n *\n * - input must fit into 152 bits\n */\n function toInt152(int256 value) internal pure returns (int152 downcasted) {\n downcasted = int152(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(152, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int144 from int256, reverting on\n * overflow (when the input is less than smallest int144 or\n * greater than largest int144).\n *\n * Counterpart to Solidity's `int144` operator.\n *\n * Requirements:\n *\n * - input must fit into 144 bits\n */\n function toInt144(int256 value) internal pure returns (int144 downcasted) {\n downcasted = int144(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(144, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int136 from int256, reverting on\n * overflow (when the input is less than smallest int136 or\n * greater than largest int136).\n *\n * Counterpart to Solidity's `int136` operator.\n *\n * Requirements:\n *\n * - input must fit into 136 bits\n */\n function toInt136(int256 value) internal pure returns (int136 downcasted) {\n downcasted = int136(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(136, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int128 from int256, reverting on\n * overflow (when the input is less than smallest int128 or\n * greater than largest int128).\n *\n * Counterpart to Solidity's `int128` operator.\n *\n * Requirements:\n *\n * - input must fit into 128 bits\n */\n function toInt128(int256 value) internal pure returns (int128 downcasted) {\n downcasted = int128(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(128, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int120 from int256, reverting on\n * overflow (when the input is less than smallest int120 or\n * greater than largest int120).\n *\n * Counterpart to Solidity's `int120` operator.\n *\n * Requirements:\n *\n * - input must fit into 120 bits\n */\n function toInt120(int256 value) internal pure returns (int120 downcasted) {\n downcasted = int120(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(120, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int112 from int256, reverting on\n * overflow (when the input is less than smallest int112 or\n * greater than largest int112).\n *\n * Counterpart to Solidity's `int112` operator.\n *\n * Requirements:\n *\n * - input must fit into 112 bits\n */\n function toInt112(int256 value) internal pure returns (int112 downcasted) {\n downcasted = int112(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(112, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int104 from int256, reverting on\n * overflow (when the input is less than smallest int104 or\n * greater than largest int104).\n *\n * Counterpart to Solidity's `int104` operator.\n *\n * Requirements:\n *\n * - input must fit into 104 bits\n */\n function toInt104(int256 value) internal pure returns (int104 downcasted) {\n downcasted = int104(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(104, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int96 from int256, reverting on\n * overflow (when the input is less than smallest int96 or\n * greater than largest int96).\n *\n * Counterpart to Solidity's `int96` operator.\n *\n * Requirements:\n *\n * - input must fit into 96 bits\n */\n function toInt96(int256 value) internal pure returns (int96 downcasted) {\n downcasted = int96(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(96, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int88 from int256, reverting on\n * overflow (when the input is less than smallest int88 or\n * greater than largest int88).\n *\n * Counterpart to Solidity's `int88` operator.\n *\n * Requirements:\n *\n * - input must fit into 88 bits\n */\n function toInt88(int256 value) internal pure returns (int88 downcasted) {\n downcasted = int88(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(88, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int80 from int256, reverting on\n * overflow (when the input is less than smallest int80 or\n * greater than largest int80).\n *\n * Counterpart to Solidity's `int80` operator.\n *\n * Requirements:\n *\n * - input must fit into 80 bits\n */\n function toInt80(int256 value) internal pure returns (int80 downcasted) {\n downcasted = int80(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(80, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int72 from int256, reverting on\n * overflow (when the input is less than smallest int72 or\n * greater than largest int72).\n *\n * Counterpart to Solidity's `int72` operator.\n *\n * Requirements:\n *\n * - input must fit into 72 bits\n */\n function toInt72(int256 value) internal pure returns (int72 downcasted) {\n downcasted = int72(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(72, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int64 from int256, reverting on\n * overflow (when the input is less than smallest int64 or\n * greater than largest int64).\n *\n * Counterpart to Solidity's `int64` operator.\n *\n * Requirements:\n *\n * - input must fit into 64 bits\n */\n function toInt64(int256 value) internal pure returns (int64 downcasted) {\n downcasted = int64(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(64, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int56 from int256, reverting on\n * overflow (when the input is less than smallest int56 or\n * greater than largest int56).\n *\n * Counterpart to Solidity's `int56` operator.\n *\n * Requirements:\n *\n * - input must fit into 56 bits\n */\n function toInt56(int256 value) internal pure returns (int56 downcasted) {\n downcasted = int56(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(56, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int48 from int256, reverting on\n * overflow (when the input is less than smallest int48 or\n * greater than largest int48).\n *\n * Counterpart to Solidity's `int48` operator.\n *\n * Requirements:\n *\n * - input must fit into 48 bits\n */\n function toInt48(int256 value) internal pure returns (int48 downcasted) {\n downcasted = int48(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(48, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int40 from int256, reverting on\n * overflow (when the input is less than smallest int40 or\n * greater than largest int40).\n *\n * Counterpart to Solidity's `int40` operator.\n *\n * Requirements:\n *\n * - input must fit into 40 bits\n */\n function toInt40(int256 value) internal pure returns (int40 downcasted) {\n downcasted = int40(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(40, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int32 from int256, reverting on\n * overflow (when the input is less than smallest int32 or\n * greater than largest int32).\n *\n * Counterpart to Solidity's `int32` operator.\n *\n * Requirements:\n *\n * - input must fit into 32 bits\n */\n function toInt32(int256 value) internal pure returns (int32 downcasted) {\n downcasted = int32(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(32, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int24 from int256, reverting on\n * overflow (when the input is less than smallest int24 or\n * greater than largest int24).\n *\n * Counterpart to Solidity's `int24` operator.\n *\n * Requirements:\n *\n * - input must fit into 24 bits\n */\n function toInt24(int256 value) internal pure returns (int24 downcasted) {\n downcasted = int24(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(24, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int16 from int256, reverting on\n * overflow (when the input is less than smallest int16 or\n * greater than largest int16).\n *\n * Counterpart to Solidity's `int16` operator.\n *\n * Requirements:\n *\n * - input must fit into 16 bits\n */\n function toInt16(int256 value) internal pure returns (int16 downcasted) {\n downcasted = int16(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(16, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int8 from int256, reverting on\n * overflow (when the input is less than smallest int8 or\n * greater than largest int8).\n *\n * Counterpart to Solidity's `int8` operator.\n *\n * Requirements:\n *\n * - input must fit into 8 bits\n */\n function toInt8(int256 value) internal pure returns (int8 downcasted) {\n downcasted = int8(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(8, value);\n }\n }\n\n /**\n * @dev Converts an unsigned uint256 into a signed int256.\n *\n * Requirements:\n *\n * - input must be less than or equal to maxInt256.\n */\n function toInt256(uint256 value) internal pure returns (int256) {\n // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\n if (value > uint256(type(int256).max)) {\n revert SafeCastOverflowedUintToInt(value);\n }\n return int256(value);\n }\n\n /**\n * @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump.\n */\n function toUint(bool b) internal pure returns (uint256 u) {\n assembly (\"memory-safe\") {\n u := iszero(iszero(b))\n }\n }\n}\n" + }, + "contracts/utils/Panic.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Helper library for emitting standardized panic codes.\n *\n * ```solidity\n * contract Example {\n * using Panic for uint256;\n *\n * // Use any of the declared internal constants\n * function foo() { Panic.GENERIC.panic(); }\n *\n * // Alternatively\n * function foo() { Panic.panic(Panic.GENERIC); }\n * }\n * ```\n *\n * Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\n *\n * _Available since v5.1._\n */\n// slither-disable-next-line unused-state\nlibrary Panic {\n /// @dev generic / unspecified error\n uint256 internal constant GENERIC = 0x00;\n /// @dev used by the assert() builtin\n uint256 internal constant ASSERT = 0x01;\n /// @dev arithmetic underflow or overflow\n uint256 internal constant UNDER_OVERFLOW = 0x11;\n /// @dev division or modulo by zero\n uint256 internal constant DIVISION_BY_ZERO = 0x12;\n /// @dev enum conversion error\n uint256 internal constant ENUM_CONVERSION_ERROR = 0x21;\n /// @dev invalid encoding in storage\n uint256 internal constant STORAGE_ENCODING_ERROR = 0x22;\n /// @dev empty array pop\n uint256 internal constant EMPTY_ARRAY_POP = 0x31;\n /// @dev array out of bounds access\n uint256 internal constant ARRAY_OUT_OF_BOUNDS = 0x32;\n /// @dev resource error (too large allocation or too large array)\n uint256 internal constant RESOURCE_ERROR = 0x41;\n /// @dev calling invalid internal function\n uint256 internal constant INVALID_INTERNAL_FUNCTION = 0x51;\n\n /// @dev Reverts with a panic code. Recommended to use with\n /// the internal constants with predefined codes.\n function panic(uint256 code) internal pure {\n assembly (\"memory-safe\") {\n mstore(0x00, 0x4e487b71)\n mstore(0x20, code)\n revert(0x1c, 0x24)\n }\n }\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.legacyAssembly", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "evm.gasEstimates", + "evm.assembly" + ] + } + }, + "remappings": [ + "@openzeppelin/contracts/=contracts/" + ] + } + }, + "output": { + "contracts": { + "contracts/utils/Bytes.sol": { + "Bytes": { + "abi": [], + "devdoc": { + "details": "Bytes operations.", + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": " /* \"contracts/utils/Bytes.sol\":198:11081 library Bytes {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/utils/Bytes.sol\":198:11081 library Bytes {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n revert(0x00, 0x00)\n\n auxdata: 0xa2646970667358221220bea14b5d3f32cfc824efbffb710ae2a700b7fc7954b845a818482733861cb37c64736f6c634300081e0033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220bea14b5d3f32cfc824efbffb710ae2a700b7fc7954b845a818482733861cb37c64736f6c634300081e0033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBE LOG1 0x4B TSTORE EXTCODEHASH ORIGIN 0xCF 0xC8 0x24 0xEF 0xBF EXTSTATICCALL PUSH18 0xAE2A700B7FC7954B845A818482733861CB3 PUSH29 0x64736F6C634300081E0033000000000000000000000000000000000000 ", + "sourceMap": "198:10883:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220bea14b5d3f32cfc824efbffb710ae2a700b7fc7954b845a818482733861cb37c64736f6c634300081e0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBE LOG1 0x4B TSTORE EXTCODEHASH ORIGIN 0xCF 0xC8 0x24 0xEF 0xBF EXTSTATICCALL PUSH18 0xAE2A700B7FC7954B845A818482733861CB3 PUSH29 0x64736F6C634300081E0033000000000000000000000000000000000000 ", + "sourceMap": "198:10883:0:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "_unsafeReadBytesOffset(bytes memory,uint256)": "infinite", + "clz(bytes memory)": "infinite", + "concat(bytes memory[] memory)": "infinite", + "equal(bytes memory,bytes memory)": "infinite", + "indexOf(bytes memory,bytes1)": "infinite", + "indexOf(bytes memory,bytes1,uint256)": "infinite", + "lastIndexOf(bytes memory,bytes1)": "infinite", + "lastIndexOf(bytes memory,bytes1,uint256)": "infinite", + "reverseBytes16(bytes16)": "infinite", + "reverseBytes2(bytes2)": "infinite", + "reverseBytes32(bytes32)": "infinite", + "reverseBytes4(bytes4)": "infinite", + "reverseBytes8(bytes8)": "infinite", + "slice(bytes memory,uint256)": "infinite", + "slice(bytes memory,uint256,uint256)": "infinite", + "splice(bytes memory,uint256)": "infinite", + "splice(bytes memory,uint256,uint256)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 198, + "end": 11081, + "name": "PUSH #[$]", + "source": 0, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 198, + "end": 11081, + "name": "PUSH [$]", + "source": 0, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 198, + "end": 11081, + "name": "PUSH", + "source": 0, + "value": "B" + }, + { + "begin": 198, + "end": 11081, + "name": "DUP3", + "source": 0 + }, + { + "begin": 198, + "end": 11081, + "name": "DUP3", + "source": 0 + }, + { + "begin": 198, + "end": 11081, + "name": "DUP3", + "source": 0 + }, + { + "begin": 198, + "end": 11081, + "name": "CODECOPY", + "source": 0 + }, + { + "begin": 198, + "end": 11081, + "name": "DUP1", + "source": 0 + }, + { + "begin": 198, + "end": 11081, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 198, + "end": 11081, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 198, + "end": 11081, + "name": "BYTE", + "source": 0 + }, + { + "begin": 198, + "end": 11081, + "name": "PUSH", + "source": 0, + "value": "73" + }, + { + "begin": 198, + "end": 11081, + "name": "EQ", + "source": 0 + }, + { + "begin": 198, + "end": 11081, + "name": "PUSH [tag]", + "source": 0, + "value": "1" + }, + { + "begin": 198, + "end": 11081, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 198, + "end": 11081, + "name": "PUSH", + "source": 0, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 198, + "end": 11081, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 198, + "end": 11081, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 198, + "end": 11081, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 198, + "end": 11081, + "name": "PUSH", + "source": 0, + "value": "4" + }, + { + "begin": 198, + "end": 11081, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 198, + "end": 11081, + "name": "PUSH", + "source": 0, + "value": "24" + }, + { + "begin": 198, + "end": 11081, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 198, + "end": 11081, + "name": "REVERT", + "source": 0 + }, + { + "begin": 198, + "end": 11081, + "name": "tag", + "source": 0, + "value": "1" + }, + { + "begin": 198, + "end": 11081, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 198, + "end": 11081, + "name": "ADDRESS", + "source": 0 + }, + { + "begin": 198, + "end": 11081, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 198, + "end": 11081, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 198, + "end": 11081, + "name": "PUSH", + "source": 0, + "value": "73" + }, + { + "begin": 198, + "end": 11081, + "name": "DUP2", + "source": 0 + }, + { + "begin": 198, + "end": 11081, + "name": "MSTORE8", + "source": 0 + }, + { + "begin": 198, + "end": 11081, + "name": "DUP3", + "source": 0 + }, + { + "begin": 198, + "end": 11081, + "name": "DUP2", + "source": 0 + }, + { + "begin": 198, + "end": 11081, + "name": "RETURN", + "source": 0 + } + ], + ".data": { + "0": { + ".auxdata": "a2646970667358221220bea14b5d3f32cfc824efbffb710ae2a700b7fc7954b845a818482733861cb37c64736f6c634300081e0033", + ".code": [ + { + "begin": 198, + "end": 11081, + "name": "PUSHDEPLOYADDRESS", + "source": 0 + }, + { + "begin": 198, + "end": 11081, + "name": "ADDRESS", + "source": 0 + }, + { + "begin": 198, + "end": 11081, + "name": "EQ", + "source": 0 + }, + { + "begin": 198, + "end": 11081, + "name": "PUSH", + "source": 0, + "value": "80" + }, + { + "begin": 198, + "end": 11081, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 198, + "end": 11081, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 198, + "end": 11081, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 198, + "end": 11081, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 198, + "end": 11081, + "name": "REVERT", + "source": 0 + } + ] + } + }, + "sourceList": [ + "contracts/utils/Bytes.sol", + "contracts/utils/Panic.sol", + "contracts/utils/math/Math.sol", + "contracts/utils/math/SafeCast.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Bytes operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/utils/Bytes.sol\":\"Bytes\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=contracts/\"]},\"sources\":{\"contracts/utils/Bytes.sol\":{\"keccak256\":\"0xb363f660b3fe0d3aacceff1cab8ef825045bbd85b2f6bce0ffc87f05bb9e5708\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59d5d6d07405d49fca24017da36ea42de525ddb80541efb5dd0b9f0352c11ad7\",\"dweb:/ipfs/QmR2hUnWKwhzdwYF9EZUqVVdLHMwqxZSN7haJ4mgetVcSs\"]},\"contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"contracts/utils/math/Math.sol\":{\"keccak256\":\"0x947aadb127ce0a07acc4e04c3a6fb99d5f484421e91090942e74e5ce88ac6dd2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ef4fb852b15ca2610e24983fa352ae70e7be9a41365427770a3be60f422ffe8\",\"dweb:/ipfs/QmWhb3iVqZ7o6tD1fn58b4j5nYu4JjnvvVib2xRnUNurHs\"]},\"contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/utils/Panic.sol": { + "Panic": { + "abi": [], + "devdoc": { + "details": "Helper library for emitting standardized panic codes. ```solidity contract Example { using Panic for uint256; // Use any of the declared internal constants function foo() { Panic.GENERIC.panic(); } // Alternatively function foo() { Panic.panic(Panic.GENERIC); } } ``` Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil]. _Available since v5.1._", + "kind": "dev", + "methods": {}, + "stateVariables": { + "ARRAY_OUT_OF_BOUNDS": { + "details": "array out of bounds access" + }, + "ASSERT": { + "details": "used by the assert() builtin" + }, + "DIVISION_BY_ZERO": { + "details": "division or modulo by zero" + }, + "EMPTY_ARRAY_POP": { + "details": "empty array pop" + }, + "ENUM_CONVERSION_ERROR": { + "details": "enum conversion error" + }, + "GENERIC": { + "details": "generic / unspecified error" + }, + "INVALID_INTERNAL_FUNCTION": { + "details": "calling invalid internal function" + }, + "RESOURCE_ERROR": { + "details": "resource error (too large allocation or too large array)" + }, + "STORAGE_ENCODING_ERROR": { + "details": "invalid encoding in storage" + }, + "UNDER_OVERFLOW": { + "details": "arithmetic underflow or overflow" + } + }, + "version": 1 + }, + "evm": { + "assembly": " /* \"contracts/utils/Panic.sol\":657:1972 library Panic {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/utils/Panic.sol\":657:1972 library Panic {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n revert(0x00, 0x00)\n\n auxdata: 0xa2646970667358221220f8853784743fddc43a23b6584906253b5342c8f578b644118f4a242d4b7424f264736f6c634300081e0033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220f8853784743fddc43a23b6584906253b5342c8f578b644118f4a242d4b7424f264736f6c634300081e0033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCALL DUP6 CALLDATACOPY DUP5 PUSH21 0x3FDDC43A23B6584906253B5342C8F578B644118F4A 0x24 0x2D 0x4B PUSH21 0x24F264736F6C634300081E00330000000000000000 ", + "sourceMap": "657:1315:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220f8853784743fddc43a23b6584906253b5342c8f578b644118f4a242d4b7424f264736f6c634300081e0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCALL DUP6 CALLDATACOPY DUP5 PUSH21 0x3FDDC43A23B6584906253B5342C8F578B644118F4A 0x24 0x2D 0x4B PUSH21 0x24F264736F6C634300081E00330000000000000000 ", + "sourceMap": "657:1315:1:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "panic(uint256)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 657, + "end": 1972, + "name": "PUSH #[$]", + "source": 1, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 657, + "end": 1972, + "name": "PUSH [$]", + "source": 1, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 657, + "end": 1972, + "name": "PUSH", + "source": 1, + "value": "B" + }, + { + "begin": 657, + "end": 1972, + "name": "DUP3", + "source": 1 + }, + { + "begin": 657, + "end": 1972, + "name": "DUP3", + "source": 1 + }, + { + "begin": 657, + "end": 1972, + "name": "DUP3", + "source": 1 + }, + { + "begin": 657, + "end": 1972, + "name": "CODECOPY", + "source": 1 + }, + { + "begin": 657, + "end": 1972, + "name": "DUP1", + "source": 1 + }, + { + "begin": 657, + "end": 1972, + "name": "MLOAD", + "source": 1 + }, + { + "begin": 657, + "end": 1972, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 657, + "end": 1972, + "name": "BYTE", + "source": 1 + }, + { + "begin": 657, + "end": 1972, + "name": "PUSH", + "source": 1, + "value": "73" + }, + { + "begin": 657, + "end": 1972, + "name": "EQ", + "source": 1 + }, + { + "begin": 657, + "end": 1972, + "name": "PUSH [tag]", + "source": 1, + "value": "1" + }, + { + "begin": 657, + "end": 1972, + "name": "JUMPI", + "source": 1 + }, + { + "begin": 657, + "end": 1972, + "name": "PUSH", + "source": 1, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 657, + "end": 1972, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 657, + "end": 1972, + "name": "MSTORE", + "source": 1 + }, + { + "begin": 657, + "end": 1972, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 657, + "end": 1972, + "name": "PUSH", + "source": 1, + "value": "4" + }, + { + "begin": 657, + "end": 1972, + "name": "MSTORE", + "source": 1 + }, + { + "begin": 657, + "end": 1972, + "name": "PUSH", + "source": 1, + "value": "24" + }, + { + "begin": 657, + "end": 1972, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 657, + "end": 1972, + "name": "REVERT", + "source": 1 + }, + { + "begin": 657, + "end": 1972, + "name": "tag", + "source": 1, + "value": "1" + }, + { + "begin": 657, + "end": 1972, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 657, + "end": 1972, + "name": "ADDRESS", + "source": 1 + }, + { + "begin": 657, + "end": 1972, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 657, + "end": 1972, + "name": "MSTORE", + "source": 1 + }, + { + "begin": 657, + "end": 1972, + "name": "PUSH", + "source": 1, + "value": "73" + }, + { + "begin": 657, + "end": 1972, + "name": "DUP2", + "source": 1 + }, + { + "begin": 657, + "end": 1972, + "name": "MSTORE8", + "source": 1 + }, + { + "begin": 657, + "end": 1972, + "name": "DUP3", + "source": 1 + }, + { + "begin": 657, + "end": 1972, + "name": "DUP2", + "source": 1 + }, + { + "begin": 657, + "end": 1972, + "name": "RETURN", + "source": 1 + } + ], + ".data": { + "0": { + ".auxdata": "a2646970667358221220f8853784743fddc43a23b6584906253b5342c8f578b644118f4a242d4b7424f264736f6c634300081e0033", + ".code": [ + { + "begin": 657, + "end": 1972, + "name": "PUSHDEPLOYADDRESS", + "source": 1 + }, + { + "begin": 657, + "end": 1972, + "name": "ADDRESS", + "source": 1 + }, + { + "begin": 657, + "end": 1972, + "name": "EQ", + "source": 1 + }, + { + "begin": 657, + "end": 1972, + "name": "PUSH", + "source": 1, + "value": "80" + }, + { + "begin": 657, + "end": 1972, + "name": "PUSH", + "source": 1, + "value": "40" + }, + { + "begin": 657, + "end": 1972, + "name": "MSTORE", + "source": 1 + }, + { + "begin": 657, + "end": 1972, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 657, + "end": 1972, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 657, + "end": 1972, + "name": "REVERT", + "source": 1 + } + ] + } + }, + "sourceList": [ + "contracts/utils/Bytes.sol", + "contracts/utils/Panic.sol", + "contracts/utils/math/Math.sol", + "contracts/utils/math/SafeCast.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Helper library for emitting standardized panic codes. ```solidity contract Example { using Panic for uint256; // Use any of the declared internal constants function foo() { Panic.GENERIC.panic(); } // Alternatively function foo() { Panic.panic(Panic.GENERIC); } } ``` Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil]. _Available since v5.1._\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ARRAY_OUT_OF_BOUNDS\":{\"details\":\"array out of bounds access\"},\"ASSERT\":{\"details\":\"used by the assert() builtin\"},\"DIVISION_BY_ZERO\":{\"details\":\"division or modulo by zero\"},\"EMPTY_ARRAY_POP\":{\"details\":\"empty array pop\"},\"ENUM_CONVERSION_ERROR\":{\"details\":\"enum conversion error\"},\"GENERIC\":{\"details\":\"generic / unspecified error\"},\"INVALID_INTERNAL_FUNCTION\":{\"details\":\"calling invalid internal function\"},\"RESOURCE_ERROR\":{\"details\":\"resource error (too large allocation or too large array)\"},\"STORAGE_ENCODING_ERROR\":{\"details\":\"invalid encoding in storage\"},\"UNDER_OVERFLOW\":{\"details\":\"arithmetic underflow or overflow\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/utils/Panic.sol\":\"Panic\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=contracts/\"]},\"sources\":{\"contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/utils/math/Math.sol": { + "Math": { + "abi": [], + "devdoc": { + "details": "Standard math utilities missing in the Solidity language.", + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": " /* \"contracts/utils/math/Math.sol\":281:32346 library Math {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/utils/math/Math.sol\":281:32346 library Math {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n revert(0x00, 0x00)\n\n auxdata: 0xa2646970667358221220e3423b95290c24de004bc336697429cf971856ef64166701665aed21e543e47b64736f6c634300081e0033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220e3423b95290c24de004bc336697429cf971856ef64166701665aed21e543e47b64736f6c634300081e0033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLF 0x423B SWAP6 0x29 0xC 0x24 0xDE STOP 0x4B 0xC3 CALLDATASIZE PUSH10 0x7429CF971856EF641667 ADD PUSH7 0x5AED21E543E47B PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ", + "sourceMap": "281:32065:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220e3423b95290c24de004bc336697429cf971856ef64166701665aed21e543e47b64736f6c634300081e0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLF 0x423B SWAP6 0x29 0xC 0x24 0xDE STOP 0x4B 0xC3 CALLDATASIZE PUSH10 0x7429CF971856EF641667 ADD PUSH7 0x5AED21E543E47B PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ", + "sourceMap": "281:32065:2:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "_zeroBytes(bytes memory)": "infinite", + "add512(uint256,uint256)": "infinite", + "average(uint256,uint256)": "infinite", + "ceilDiv(uint256,uint256)": "infinite", + "clz(uint256)": "infinite", + "invMod(uint256,uint256)": "infinite", + "invModPrime(uint256,uint256)": "infinite", + "log10(uint256)": "infinite", + "log10(uint256,enum Math.Rounding)": "infinite", + "log2(uint256)": "infinite", + "log2(uint256,enum Math.Rounding)": "infinite", + "log256(uint256)": "infinite", + "log256(uint256,enum Math.Rounding)": "infinite", + "max(uint256,uint256)": "infinite", + "min(uint256,uint256)": "infinite", + "modExp(bytes memory,bytes memory,bytes memory)": "infinite", + "modExp(uint256,uint256,uint256)": "infinite", + "mul512(uint256,uint256)": "infinite", + "mulDiv(uint256,uint256,uint256)": "infinite", + "mulDiv(uint256,uint256,uint256,enum Math.Rounding)": "infinite", + "mulShr(uint256,uint256,uint8)": "infinite", + "mulShr(uint256,uint256,uint8,enum Math.Rounding)": "infinite", + "saturatingAdd(uint256,uint256)": "infinite", + "saturatingMul(uint256,uint256)": "infinite", + "saturatingSub(uint256,uint256)": "infinite", + "sqrt(uint256)": "infinite", + "sqrt(uint256,enum Math.Rounding)": "infinite", + "ternary(bool,uint256,uint256)": "infinite", + "tryAdd(uint256,uint256)": "infinite", + "tryDiv(uint256,uint256)": "infinite", + "tryMod(uint256,uint256)": "infinite", + "tryModExp(bytes memory,bytes memory,bytes memory)": "infinite", + "tryModExp(uint256,uint256,uint256)": "infinite", + "tryMul(uint256,uint256)": "infinite", + "trySub(uint256,uint256)": "infinite", + "unsignedRoundsUp(enum Math.Rounding)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 281, + "end": 32346, + "name": "PUSH #[$]", + "source": 2, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 281, + "end": 32346, + "name": "PUSH [$]", + "source": 2, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 281, + "end": 32346, + "name": "PUSH", + "source": 2, + "value": "B" + }, + { + "begin": 281, + "end": 32346, + "name": "DUP3", + "source": 2 + }, + { + "begin": 281, + "end": 32346, + "name": "DUP3", + "source": 2 + }, + { + "begin": 281, + "end": 32346, + "name": "DUP3", + "source": 2 + }, + { + "begin": 281, + "end": 32346, + "name": "CODECOPY", + "source": 2 + }, + { + "begin": 281, + "end": 32346, + "name": "DUP1", + "source": 2 + }, + { + "begin": 281, + "end": 32346, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 281, + "end": 32346, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 281, + "end": 32346, + "name": "BYTE", + "source": 2 + }, + { + "begin": 281, + "end": 32346, + "name": "PUSH", + "source": 2, + "value": "73" + }, + { + "begin": 281, + "end": 32346, + "name": "EQ", + "source": 2 + }, + { + "begin": 281, + "end": 32346, + "name": "PUSH [tag]", + "source": 2, + "value": "1" + }, + { + "begin": 281, + "end": 32346, + "name": "JUMPI", + "source": 2 + }, + { + "begin": 281, + "end": 32346, + "name": "PUSH", + "source": 2, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 281, + "end": 32346, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 281, + "end": 32346, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 281, + "end": 32346, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 281, + "end": 32346, + "name": "PUSH", + "source": 2, + "value": "4" + }, + { + "begin": 281, + "end": 32346, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 281, + "end": 32346, + "name": "PUSH", + "source": 2, + "value": "24" + }, + { + "begin": 281, + "end": 32346, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 281, + "end": 32346, + "name": "REVERT", + "source": 2 + }, + { + "begin": 281, + "end": 32346, + "name": "tag", + "source": 2, + "value": "1" + }, + { + "begin": 281, + "end": 32346, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 281, + "end": 32346, + "name": "ADDRESS", + "source": 2 + }, + { + "begin": 281, + "end": 32346, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 281, + "end": 32346, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 281, + "end": 32346, + "name": "PUSH", + "source": 2, + "value": "73" + }, + { + "begin": 281, + "end": 32346, + "name": "DUP2", + "source": 2 + }, + { + "begin": 281, + "end": 32346, + "name": "MSTORE8", + "source": 2 + }, + { + "begin": 281, + "end": 32346, + "name": "DUP3", + "source": 2 + }, + { + "begin": 281, + "end": 32346, + "name": "DUP2", + "source": 2 + }, + { + "begin": 281, + "end": 32346, + "name": "RETURN", + "source": 2 + } + ], + ".data": { + "0": { + ".auxdata": "a2646970667358221220e3423b95290c24de004bc336697429cf971856ef64166701665aed21e543e47b64736f6c634300081e0033", + ".code": [ + { + "begin": 281, + "end": 32346, + "name": "PUSHDEPLOYADDRESS", + "source": 2 + }, + { + "begin": 281, + "end": 32346, + "name": "ADDRESS", + "source": 2 + }, + { + "begin": 281, + "end": 32346, + "name": "EQ", + "source": 2 + }, + { + "begin": 281, + "end": 32346, + "name": "PUSH", + "source": 2, + "value": "80" + }, + { + "begin": 281, + "end": 32346, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 281, + "end": 32346, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 281, + "end": 32346, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 281, + "end": 32346, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 281, + "end": 32346, + "name": "REVERT", + "source": 2 + } + ] + } + }, + "sourceList": [ + "contracts/utils/Bytes.sol", + "contracts/utils/Panic.sol", + "contracts/utils/math/Math.sol", + "contracts/utils/math/SafeCast.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=contracts/\"]},\"sources\":{\"contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"contracts/utils/math/Math.sol\":{\"keccak256\":\"0x947aadb127ce0a07acc4e04c3a6fb99d5f484421e91090942e74e5ce88ac6dd2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ef4fb852b15ca2610e24983fa352ae70e7be9a41365427770a3be60f422ffe8\",\"dweb:/ipfs/QmWhb3iVqZ7o6tD1fn58b4j5nYu4JjnvvVib2xRnUNurHs\"]},\"contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "contracts/utils/math/SafeCast.sol": { + "SafeCast": { + "abi": [ + { + "inputs": [ + { + "internalType": "uint8", + "name": "bits", + "type": "uint8" + }, + { + "internalType": "int256", + "name": "value", + "type": "int256" + } + ], + "name": "SafeCastOverflowedIntDowncast", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "int256", + "name": "value", + "type": "int256" + } + ], + "name": "SafeCastOverflowedIntToUint", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "bits", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "SafeCastOverflowedUintDowncast", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "SafeCastOverflowedUintToInt", + "type": "error" + } + ], + "devdoc": { + "details": "Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.", + "errors": { + "SafeCastOverflowedIntDowncast(uint8,int256)": [ + { + "details": "Value doesn't fit in an int of `bits` size." + } + ], + "SafeCastOverflowedIntToUint(int256)": [ + { + "details": "An int value doesn't fit in an uint of `bits` size." + } + ], + "SafeCastOverflowedUintDowncast(uint8,uint256)": [ + { + "details": "Value doesn't fit in an uint of `bits` size." + } + ], + "SafeCastOverflowedUintToInt(uint256)": [ + { + "details": "An uint value doesn't fit in an int of `bits` size." + } + ] + }, + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": " /* \"contracts/utils/math/SafeCast.sol\":769:34942 library SafeCast {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/utils/math/SafeCast.sol\":769:34942 library SafeCast {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n revert(0x00, 0x00)\n\n auxdata: 0xa264697066735822122064c8c0afddb9c8b5beab5bcda10016daad0e34a90664f1827e7fd78649abeebe64736f6c634300081e0033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122064c8c0afddb9c8b5beab5bcda10016daad0e34a90664f1827e7fd78649abeebe64736f6c634300081e0033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH5 0xC8C0AFDDB9 0xC8 0xB5 0xBE 0xAB JUMPDEST 0xCD LOG1 STOP AND 0xDA 0xAD 0xE CALLVALUE 0xA9 MOD PUSH5 0xF1827E7FD7 DUP7 BLOBHASH 0xAB RETURNCONTRACT 0xBE PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ", + "sourceMap": "769:34173:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122064c8c0afddb9c8b5beab5bcda10016daad0e34a90664f1827e7fd78649abeebe64736f6c634300081e0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH5 0xC8C0AFDDB9 0xC8 0xB5 0xBE 0xAB JUMPDEST 0xCD LOG1 STOP AND 0xDA 0xAD 0xE CALLVALUE 0xA9 MOD PUSH5 0xF1827E7FD7 DUP7 BLOBHASH 0xAB RETURNCONTRACT 0xBE PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ", + "sourceMap": "769:34173:3:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "toInt104(int256)": "infinite", + "toInt112(int256)": "infinite", + "toInt120(int256)": "infinite", + "toInt128(int256)": "infinite", + "toInt136(int256)": "infinite", + "toInt144(int256)": "infinite", + "toInt152(int256)": "infinite", + "toInt16(int256)": "infinite", + "toInt160(int256)": "infinite", + "toInt168(int256)": "infinite", + "toInt176(int256)": "infinite", + "toInt184(int256)": "infinite", + "toInt192(int256)": "infinite", + "toInt200(int256)": "infinite", + "toInt208(int256)": "infinite", + "toInt216(int256)": "infinite", + "toInt224(int256)": "infinite", + "toInt232(int256)": "infinite", + "toInt24(int256)": "infinite", + "toInt240(int256)": "infinite", + "toInt248(int256)": "infinite", + "toInt256(uint256)": "infinite", + "toInt32(int256)": "infinite", + "toInt40(int256)": "infinite", + "toInt48(int256)": "infinite", + "toInt56(int256)": "infinite", + "toInt64(int256)": "infinite", + "toInt72(int256)": "infinite", + "toInt8(int256)": "infinite", + "toInt80(int256)": "infinite", + "toInt88(int256)": "infinite", + "toInt96(int256)": "infinite", + "toUint(bool)": "infinite", + "toUint104(uint256)": "infinite", + "toUint112(uint256)": "infinite", + "toUint120(uint256)": "infinite", + "toUint128(uint256)": "infinite", + "toUint136(uint256)": "infinite", + "toUint144(uint256)": "infinite", + "toUint152(uint256)": "infinite", + "toUint16(uint256)": "infinite", + "toUint160(uint256)": "infinite", + "toUint168(uint256)": "infinite", + "toUint176(uint256)": "infinite", + "toUint184(uint256)": "infinite", + "toUint192(uint256)": "infinite", + "toUint200(uint256)": "infinite", + "toUint208(uint256)": "infinite", + "toUint216(uint256)": "infinite", + "toUint224(uint256)": "infinite", + "toUint232(uint256)": "infinite", + "toUint24(uint256)": "infinite", + "toUint240(uint256)": "infinite", + "toUint248(uint256)": "infinite", + "toUint256(int256)": "infinite", + "toUint32(uint256)": "infinite", + "toUint40(uint256)": "infinite", + "toUint48(uint256)": "infinite", + "toUint56(uint256)": "infinite", + "toUint64(uint256)": "infinite", + "toUint72(uint256)": "infinite", + "toUint8(uint256)": "infinite", + "toUint80(uint256)": "infinite", + "toUint88(uint256)": "infinite", + "toUint96(uint256)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 769, + "end": 34942, + "name": "PUSH #[$]", + "source": 3, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 769, + "end": 34942, + "name": "PUSH [$]", + "source": 3, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 769, + "end": 34942, + "name": "PUSH", + "source": 3, + "value": "B" + }, + { + "begin": 769, + "end": 34942, + "name": "DUP3", + "source": 3 + }, + { + "begin": 769, + "end": 34942, + "name": "DUP3", + "source": 3 + }, + { + "begin": 769, + "end": 34942, + "name": "DUP3", + "source": 3 + }, + { + "begin": 769, + "end": 34942, + "name": "CODECOPY", + "source": 3 + }, + { + "begin": 769, + "end": 34942, + "name": "DUP1", + "source": 3 + }, + { + "begin": 769, + "end": 34942, + "name": "MLOAD", + "source": 3 + }, + { + "begin": 769, + "end": 34942, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 769, + "end": 34942, + "name": "BYTE", + "source": 3 + }, + { + "begin": 769, + "end": 34942, + "name": "PUSH", + "source": 3, + "value": "73" + }, + { + "begin": 769, + "end": 34942, + "name": "EQ", + "source": 3 + }, + { + "begin": 769, + "end": 34942, + "name": "PUSH [tag]", + "source": 3, + "value": "1" + }, + { + "begin": 769, + "end": 34942, + "name": "JUMPI", + "source": 3 + }, + { + "begin": 769, + "end": 34942, + "name": "PUSH", + "source": 3, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 769, + "end": 34942, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 769, + "end": 34942, + "name": "MSTORE", + "source": 3 + }, + { + "begin": 769, + "end": 34942, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 769, + "end": 34942, + "name": "PUSH", + "source": 3, + "value": "4" + }, + { + "begin": 769, + "end": 34942, + "name": "MSTORE", + "source": 3 + }, + { + "begin": 769, + "end": 34942, + "name": "PUSH", + "source": 3, + "value": "24" + }, + { + "begin": 769, + "end": 34942, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 769, + "end": 34942, + "name": "REVERT", + "source": 3 + }, + { + "begin": 769, + "end": 34942, + "name": "tag", + "source": 3, + "value": "1" + }, + { + "begin": 769, + "end": 34942, + "name": "JUMPDEST", + "source": 3 + }, + { + "begin": 769, + "end": 34942, + "name": "ADDRESS", + "source": 3 + }, + { + "begin": 769, + "end": 34942, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 769, + "end": 34942, + "name": "MSTORE", + "source": 3 + }, + { + "begin": 769, + "end": 34942, + "name": "PUSH", + "source": 3, + "value": "73" + }, + { + "begin": 769, + "end": 34942, + "name": "DUP2", + "source": 3 + }, + { + "begin": 769, + "end": 34942, + "name": "MSTORE8", + "source": 3 + }, + { + "begin": 769, + "end": 34942, + "name": "DUP3", + "source": 3 + }, + { + "begin": 769, + "end": 34942, + "name": "DUP2", + "source": 3 + }, + { + "begin": 769, + "end": 34942, + "name": "RETURN", + "source": 3 + } + ], + ".data": { + "0": { + ".auxdata": "a264697066735822122064c8c0afddb9c8b5beab5bcda10016daad0e34a90664f1827e7fd78649abeebe64736f6c634300081e0033", + ".code": [ + { + "begin": 769, + "end": 34942, + "name": "PUSHDEPLOYADDRESS", + "source": 3 + }, + { + "begin": 769, + "end": 34942, + "name": "ADDRESS", + "source": 3 + }, + { + "begin": 769, + "end": 34942, + "name": "EQ", + "source": 3 + }, + { + "begin": 769, + "end": 34942, + "name": "PUSH", + "source": 3, + "value": "80" + }, + { + "begin": 769, + "end": 34942, + "name": "PUSH", + "source": 3, + "value": "40" + }, + { + "begin": 769, + "end": 34942, + "name": "MSTORE", + "source": 3 + }, + { + "begin": 769, + "end": 34942, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 769, + "end": 34942, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 769, + "end": 34942, + "name": "REVERT", + "source": 3 + } + ] + } + }, + "sourceList": [ + "contracts/utils/Bytes.sol", + "contracts/utils/Panic.sol", + "contracts/utils/math/Math.sol", + "contracts/utils/math/SafeCast.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntToUint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintToInt\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"errors\":{\"SafeCastOverflowedIntDowncast(uint8,int256)\":[{\"details\":\"Value doesn't fit in an int of `bits` size.\"}],\"SafeCastOverflowedIntToUint(int256)\":[{\"details\":\"An int value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintToInt(uint256)\":[{\"details\":\"An uint value doesn't fit in an int of `bits` size.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/utils/math/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=contracts/\"]},\"sources\":{\"contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + } + }, + "sources": { + "contracts/utils/Bytes.sol": { + "ast": { + "absolutePath": "contracts/utils/Bytes.sol", + "exportedSymbols": { + "Bytes": [ + 720 + ], + "Math": [ + 2414 + ] + }, + "id": 721, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "99:24:0" + }, + { + "absolutePath": "contracts/utils/math/Math.sol", + "file": "./math/Math.sol", + "id": 3, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 721, + "sourceUnit": 2415, + "src": "125:37:0", + "symbolAliases": [ + { + "foreign": { + "id": 2, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2414, + "src": "133:4:0", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Bytes", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 4, + "nodeType": "StructuredDocumentation", + "src": "164:33:0", + "text": " @dev Bytes operations." + }, + "fullyImplemented": true, + "id": 720, + "linearizedBaseContracts": [ + 720 + ], + "name": "Bytes", + "nameLocation": "206:5:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 20, + "nodeType": "Block", + "src": "687:45:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 15, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "712:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 16, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9, + "src": "720:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "hexValue": "30", + "id": 17, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "723:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 14, + "name": "indexOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 21, + 70 + ], + "referencedDeclaration": 70, + "src": "704:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes1_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bytes memory,bytes1,uint256) pure returns (uint256)" + } + }, + "id": 18, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "704:21:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 13, + "id": 19, + "nodeType": "Return", + "src": "697:28:0" + } + ] + }, + "documentation": { + "id": 5, + "nodeType": "StructuredDocumentation", + "src": "218:384:0", + "text": " @dev Forward search for `s` in `buffer`\n * If `s` is present in the buffer, returns the index of the first instance\n * If `s` is not present in the buffer, returns type(uint256).max\n NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf[Javascript's `Array.indexOf`]" + }, + "id": 21, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "indexOf", + "nameLocation": "616:7:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7, + "mutability": "mutable", + "name": "buffer", + "nameLocation": "637:6:0", + "nodeType": "VariableDeclaration", + "scope": 21, + "src": "624:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "624:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9, + "mutability": "mutable", + "name": "s", + "nameLocation": "652:1:0", + "nodeType": "VariableDeclaration", + "scope": 21, + "src": "645:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "typeName": { + "id": 8, + "name": "bytes1", + "nodeType": "ElementaryTypeName", + "src": "645:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "visibility": "internal" + } + ], + "src": "623:31:0" + }, + "returnParameters": { + "id": 13, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 21, + "src": "678:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "678:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "677:9:0" + }, + "scope": 720, + "src": "607:125:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 69, + "nodeType": "Block", + "src": "1286:246:0", + "statements": [ + { + "assignments": [ + 34 + ], + "declarations": [ + { + "constant": false, + "id": 34, + "mutability": "mutable", + "name": "length", + "nameLocation": "1304:6:0", + "nodeType": "VariableDeclaration", + "scope": 69, + "src": "1296:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 33, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1296:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 37, + "initialValue": { + "expression": { + "id": 35, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 24, + "src": "1313:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 36, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1320:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1313:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1296:30:0" + }, + { + "body": { + "id": 61, + "nodeType": "Block", + "src": "1375:117:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "id": 56, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 51, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 24, + "src": "1423:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 52, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 39, + "src": "1431:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 50, + "name": "_unsafeReadBytesOffset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 719, + "src": "1400:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (bytes memory,uint256) pure returns (bytes32)" + } + }, + "id": 53, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1400:33:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 49, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1393:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": { + "id": 48, + "name": "bytes1", + "nodeType": "ElementaryTypeName", + "src": "1393:6:0", + "typeDescriptions": {} + } + }, + "id": 54, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1393:41:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 55, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 26, + "src": "1438:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "1393:46:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 60, + "nodeType": "IfStatement", + "src": "1389:93:0", + "trueBody": { + "id": 59, + "nodeType": "Block", + "src": "1441:41:0", + "statements": [ + { + "expression": { + "id": 57, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 39, + "src": "1466:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 32, + "id": 58, + "nodeType": "Return", + "src": "1459:8:0" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 44, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 42, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 39, + "src": "1358:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 43, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34, + "src": "1362:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1358:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 62, + "initializationExpression": { + "assignments": [ + 39 + ], + "declarations": [ + { + "constant": false, + "id": 39, + "mutability": "mutable", + "name": "i", + "nameLocation": "1349:1:0", + "nodeType": "VariableDeclaration", + "scope": 62, + "src": "1341:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 38, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1341:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 41, + "initialValue": { + "id": 40, + "name": "pos", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28, + "src": "1353:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1341:15:0" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 46, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "1370:3:0", + "subExpression": { + "id": 45, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 39, + "src": "1372:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 47, + "nodeType": "ExpressionStatement", + "src": "1370:3:0" + }, + "nodeType": "ForStatement", + "src": "1336:156:0" + }, + { + "expression": { + "expression": { + "arguments": [ + { + "id": 65, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1513:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 64, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1513:7:0", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 63, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "1508:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 66, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1508:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 67, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1522:3:0", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "1508:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 32, + "id": 68, + "nodeType": "Return", + "src": "1501:24:0" + } + ] + }, + "documentation": { + "id": 22, + "nodeType": "StructuredDocumentation", + "src": "738:450:0", + "text": " @dev Forward search for `s` in `buffer` starting at position `pos`\n * If `s` is present in the buffer (at or after `pos`), returns the index of the next instance\n * If `s` is not present in the buffer (at or after `pos`), returns type(uint256).max\n NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf[Javascript's `Array.indexOf`]" + }, + "id": 70, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "indexOf", + "nameLocation": "1202:7:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 29, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 24, + "mutability": "mutable", + "name": "buffer", + "nameLocation": "1223:6:0", + "nodeType": "VariableDeclaration", + "scope": 70, + "src": "1210:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 23, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1210:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 26, + "mutability": "mutable", + "name": "s", + "nameLocation": "1238:1:0", + "nodeType": "VariableDeclaration", + "scope": 70, + "src": "1231:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "typeName": { + "id": 25, + "name": "bytes1", + "nodeType": "ElementaryTypeName", + "src": "1231:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 28, + "mutability": "mutable", + "name": "pos", + "nameLocation": "1249:3:0", + "nodeType": "VariableDeclaration", + "scope": 70, + "src": "1241:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 27, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1241:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1209:44:0" + }, + "returnParameters": { + "id": 32, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 31, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 70, + "src": "1277:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 30, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1277:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1276:9:0" + }, + "scope": 720, + "src": "1193:339:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 90, + "nodeType": "Block", + "src": "2019:65:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 81, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "2048:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 82, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 75, + "src": "2056:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "expression": { + "arguments": [ + { + "id": 85, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2064:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 84, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2064:7:0", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 83, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "2059:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 86, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2059:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 87, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2073:3:0", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "2059:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 80, + "name": "lastIndexOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 91, + 153 + ], + "referencedDeclaration": 153, + "src": "2036:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes1_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bytes memory,bytes1,uint256) pure returns (uint256)" + } + }, + "id": 88, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2036:41:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 79, + "id": 89, + "nodeType": "Return", + "src": "2029:48:0" + } + ] + }, + "documentation": { + "id": 71, + "nodeType": "StructuredDocumentation", + "src": "1538:392:0", + "text": " @dev Backward search for `s` in `buffer`\n * If `s` is present in the buffer, returns the index of the last instance\n * If `s` is not present in the buffer, returns type(uint256).max\n NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf[Javascript's `Array.lastIndexOf`]" + }, + "id": 91, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "lastIndexOf", + "nameLocation": "1944:11:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 76, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 73, + "mutability": "mutable", + "name": "buffer", + "nameLocation": "1969:6:0", + "nodeType": "VariableDeclaration", + "scope": 91, + "src": "1956:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 72, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1956:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 75, + "mutability": "mutable", + "name": "s", + "nameLocation": "1984:1:0", + "nodeType": "VariableDeclaration", + "scope": 91, + "src": "1977:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "typeName": { + "id": 74, + "name": "bytes1", + "nodeType": "ElementaryTypeName", + "src": "1977:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "visibility": "internal" + } + ], + "src": "1955:31:0" + }, + "returnParameters": { + "id": 79, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 78, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 91, + "src": "2010:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 77, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2010:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2009:9:0" + }, + "scope": 720, + "src": "1935:149:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 152, + "nodeType": "Block", + "src": "2657:348:0", + "statements": [ + { + "id": 151, + "nodeType": "UncheckedBlock", + "src": "2667:332:0", + "statements": [ + { + "assignments": [ + 104 + ], + "declarations": [ + { + "constant": false, + "id": 104, + "mutability": "mutable", + "name": "length", + "nameLocation": "2699:6:0", + "nodeType": "VariableDeclaration", + "scope": 151, + "src": "2691:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 103, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2691:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 107, + "initialValue": { + "expression": { + "id": 105, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 94, + "src": "2708:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 106, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2715:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2708:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2691:30:0" + }, + { + "body": { + "id": 143, + "nodeType": "Block", + "src": "2810:141:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "id": 136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 129, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 94, + "src": "2862:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 130, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "2870:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 131, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2874:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2870:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 128, + "name": "_unsafeReadBytesOffset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 719, + "src": "2839:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (bytes memory,uint256) pure returns (bytes32)" + } + }, + "id": 133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2839:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 127, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2832:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": { + "id": 126, + "name": "bytes1", + "nodeType": "ElementaryTypeName", + "src": "2832:6:0", + "typeDescriptions": {} + } + }, + "id": 134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2832:45:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 135, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 96, + "src": "2881:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "2832:50:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 142, + "nodeType": "IfStatement", + "src": "2828:109:0", + "trueBody": { + "id": 141, + "nodeType": "Block", + "src": "2884:53:0", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 137, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "2913:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 138, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2917:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2913:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 102, + "id": 140, + "nodeType": "Return", + "src": "2906:12:0" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 120, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "2798:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 121, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2802:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2798:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 144, + "initializationExpression": { + "assignments": [ + 109 + ], + "declarations": [ + { + "constant": false, + "id": 109, + "mutability": "mutable", + "name": "i", + "nameLocation": "2748:1:0", + "nodeType": "VariableDeclaration", + "scope": 144, + "src": "2740:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 108, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2740:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 119, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 114, + "name": "pos", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 98, + "src": "2780:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "31", + "id": 115, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2785:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "id": 112, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2414, + "src": "2761:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$2414_$", + "typeString": "type(library Math)" + } + }, + "id": 113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2766:13:0", + "memberName": "saturatingAdd", + "nodeType": "MemberAccess", + "referencedDeclaration": 984, + "src": "2761:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2761:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 117, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "2789:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 110, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2414, + "src": "2752:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$2414_$", + "typeString": "type(library Math)" + } + }, + "id": 111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2757:3:0", + "memberName": "min", + "nodeType": "MemberAccess", + "referencedDeclaration": 1099, + "src": "2752:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2752:44:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2740:56:0" + }, + "isSimpleCounterLoop": false, + "loopExpression": { + "expression": { + "id": 124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": true, + "src": "2805:3:0", + "subExpression": { + "id": 123, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "2807:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 125, + "nodeType": "ExpressionStatement", + "src": "2805:3:0" + }, + "nodeType": "ForStatement", + "src": "2735:216:0" + }, + { + "expression": { + "expression": { + "arguments": [ + { + "id": 147, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2976:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 146, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2976:7:0", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 145, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "2971:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 148, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2971:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 149, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2985:3:0", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "2971:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 102, + "id": 150, + "nodeType": "Return", + "src": "2964:24:0" + } + ] + } + ] + }, + "documentation": { + "id": 92, + "nodeType": "StructuredDocumentation", + "src": "2090:465:0", + "text": " @dev Backward search for `s` in `buffer` starting at position `pos`\n * If `s` is present in the buffer (at or before `pos`), returns the index of the previous instance\n * If `s` is not present in the buffer (at or before `pos`), returns type(uint256).max\n NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf[Javascript's `Array.lastIndexOf`]" + }, + "id": 153, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "lastIndexOf", + "nameLocation": "2569:11:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 99, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 94, + "mutability": "mutable", + "name": "buffer", + "nameLocation": "2594:6:0", + "nodeType": "VariableDeclaration", + "scope": 153, + "src": "2581:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 93, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2581:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 96, + "mutability": "mutable", + "name": "s", + "nameLocation": "2609:1:0", + "nodeType": "VariableDeclaration", + "scope": 153, + "src": "2602:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "typeName": { + "id": 95, + "name": "bytes1", + "nodeType": "ElementaryTypeName", + "src": "2602:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 98, + "mutability": "mutable", + "name": "pos", + "nameLocation": "2620:3:0", + "nodeType": "VariableDeclaration", + "scope": 153, + "src": "2612:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 97, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2612:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2580:44:0" + }, + "returnParameters": { + "id": 102, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 101, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 153, + "src": "2648:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 100, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2648:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2647:9:0" + }, + "scope": 720, + "src": "2560:445:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 170, + "nodeType": "Block", + "src": "3416:59:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 164, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 156, + "src": "3439:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 165, + "name": "start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 158, + "src": "3447:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 166, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 156, + "src": "3454:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 167, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3461:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3454:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 163, + "name": "slice", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 171, + 217 + ], + "referencedDeclaration": 217, + "src": "3433:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" + } + }, + "id": 168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3433:35:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 162, + "id": 169, + "nodeType": "Return", + "src": "3426:42:0" + } + ] + }, + "documentation": { + "id": 154, + "nodeType": "StructuredDocumentation", + "src": "3011:312:0", + "text": " @dev Copies the content of `buffer`, from `start` (included) to the end of `buffer` into a new bytes object in\n memory.\n NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice[Javascript's `Array.slice`]" + }, + "id": 171, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "slice", + "nameLocation": "3337:5:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 159, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 156, + "mutability": "mutable", + "name": "buffer", + "nameLocation": "3356:6:0", + "nodeType": "VariableDeclaration", + "scope": 171, + "src": "3343:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 155, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3343:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 158, + "mutability": "mutable", + "name": "start", + "nameLocation": "3372:5:0", + "nodeType": "VariableDeclaration", + "scope": 171, + "src": "3364:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 157, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3364:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3342:36:0" + }, + "returnParameters": { + "id": 162, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 161, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 171, + "src": "3402:12:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 160, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3402:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3401:14:0" + }, + "scope": 720, + "src": "3328:147:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 216, + "nodeType": "Block", + "src": "3959:380:0", + "statements": [ + { + "assignments": [ + 184 + ], + "declarations": [ + { + "constant": false, + "id": 184, + "mutability": "mutable", + "name": "length", + "nameLocation": "3997:6:0", + "nodeType": "VariableDeclaration", + "scope": 216, + "src": "3989:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 183, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3989:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 187, + "initialValue": { + "expression": { + "id": 185, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 174, + "src": "4006:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4013:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4006:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3989:30:0" + }, + { + "expression": { + "id": 194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 188, + "name": "end", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 178, + "src": "4029:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 191, + "name": "end", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 178, + "src": "4044:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 192, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 184, + "src": "4049:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 189, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2414, + "src": "4035:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$2414_$", + "typeString": "type(library Math)" + } + }, + "id": 190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4040:3:0", + "memberName": "min", + "nodeType": "MemberAccess", + "referencedDeclaration": 1099, + "src": "4035:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4035:21:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4029:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 195, + "nodeType": "ExpressionStatement", + "src": "4029:27:0" + }, + { + "expression": { + "id": 202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 196, + "name": "start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 176, + "src": "4066:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 199, + "name": "start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 176, + "src": "4083:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 200, + "name": "end", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 178, + "src": "4090:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 197, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2414, + "src": "4074:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$2414_$", + "typeString": "type(library Math)" + } + }, + "id": 198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4079:3:0", + "memberName": "min", + "nodeType": "MemberAccess", + "referencedDeclaration": 1099, + "src": "4074:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4074:20:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4066:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 203, + "nodeType": "ExpressionStatement", + "src": "4066:28:0" + }, + { + "assignments": [ + 205 + ], + "declarations": [ + { + "constant": false, + "id": 205, + "mutability": "mutable", + "name": "result", + "nameLocation": "4147:6:0", + "nodeType": "VariableDeclaration", + "scope": 216, + "src": "4134:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 204, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4134:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 212, + "initialValue": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 208, + "name": "end", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 178, + "src": "4166:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 209, + "name": "start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 176, + "src": "4172:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4166:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 207, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "4156:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 206, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4160:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4156:22:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4134:44:0" + }, + { + "AST": { + "nativeSrc": "4213:96:0", + "nodeType": "YulBlock", + "src": "4213:96:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "4237:6:0", + "nodeType": "YulIdentifier", + "src": "4237:6:0" + }, + { + "kind": "number", + "nativeSrc": "4245:4:0", + "nodeType": "YulLiteral", + "src": "4245:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4233:3:0", + "nodeType": "YulIdentifier", + "src": "4233:3:0" + }, + "nativeSrc": "4233:17:0", + "nodeType": "YulFunctionCall", + "src": "4233:17:0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "buffer", + "nativeSrc": "4260:6:0", + "nodeType": "YulIdentifier", + "src": "4260:6:0" + }, + { + "kind": "number", + "nativeSrc": "4268:4:0", + "nodeType": "YulLiteral", + "src": "4268:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4256:3:0", + "nodeType": "YulIdentifier", + "src": "4256:3:0" + }, + "nativeSrc": "4256:17:0", + "nodeType": "YulFunctionCall", + "src": "4256:17:0" + }, + { + "name": "start", + "nativeSrc": "4275:5:0", + "nodeType": "YulIdentifier", + "src": "4275:5:0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4252:3:0", + "nodeType": "YulIdentifier", + "src": "4252:3:0" + }, + "nativeSrc": "4252:29:0", + "nodeType": "YulFunctionCall", + "src": "4252:29:0" + }, + { + "arguments": [ + { + "name": "end", + "nativeSrc": "4287:3:0", + "nodeType": "YulIdentifier", + "src": "4287:3:0" + }, + { + "name": "start", + "nativeSrc": "4292:5:0", + "nodeType": "YulIdentifier", + "src": "4292:5:0" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4283:3:0", + "nodeType": "YulIdentifier", + "src": "4283:3:0" + }, + "nativeSrc": "4283:15:0", + "nodeType": "YulFunctionCall", + "src": "4283:15:0" + } + ], + "functionName": { + "name": "mcopy", + "nativeSrc": "4227:5:0", + "nodeType": "YulIdentifier", + "src": "4227:5:0" + }, + "nativeSrc": "4227:72:0", + "nodeType": "YulFunctionCall", + "src": "4227:72:0" + }, + "nativeSrc": "4227:72:0", + "nodeType": "YulExpressionStatement", + "src": "4227:72:0" + } + ] + }, + "evmVersion": "prague", + "externalReferences": [ + { + "declaration": 174, + "isOffset": false, + "isSlot": false, + "src": "4260:6:0", + "valueSize": 1 + }, + { + "declaration": 178, + "isOffset": false, + "isSlot": false, + "src": "4287:3:0", + "valueSize": 1 + }, + { + "declaration": 205, + "isOffset": false, + "isSlot": false, + "src": "4237:6:0", + "valueSize": 1 + }, + { + "declaration": 176, + "isOffset": false, + "isSlot": false, + "src": "4275:5:0", + "valueSize": 1 + }, + { + "declaration": 176, + "isOffset": false, + "isSlot": false, + "src": "4292:5:0", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 213, + "nodeType": "InlineAssembly", + "src": "4188:121:0" + }, + { + "expression": { + "id": 214, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 205, + "src": "4326:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 182, + "id": 215, + "nodeType": "Return", + "src": "4319:13:0" + } + ] + }, + "documentation": { + "id": 172, + "nodeType": "StructuredDocumentation", + "src": "3481:372:0", + "text": " @dev Copies the content of `buffer`, from `start` (included) to `end` (excluded) into a new bytes object in\n memory. The `end` argument is truncated to the length of the `buffer`.\n NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice[Javascript's `Array.slice`]" + }, + "id": 217, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "slice", + "nameLocation": "3867:5:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 179, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 174, + "mutability": "mutable", + "name": "buffer", + "nameLocation": "3886:6:0", + "nodeType": "VariableDeclaration", + "scope": 217, + "src": "3873:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 173, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3873:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 176, + "mutability": "mutable", + "name": "start", + "nameLocation": "3902:5:0", + "nodeType": "VariableDeclaration", + "scope": 217, + "src": "3894:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 175, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3894:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 178, + "mutability": "mutable", + "name": "end", + "nameLocation": "3917:3:0", + "nodeType": "VariableDeclaration", + "scope": 217, + "src": "3909:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 177, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3909:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3872:49:0" + }, + "returnParameters": { + "id": 182, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 181, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 217, + "src": "3945:12:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 180, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3945:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3944:14:0" + }, + "scope": 720, + "src": "3858:481:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 234, + "nodeType": "Block", + "src": "4707:60:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 228, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "4731:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 229, + "name": "start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 222, + "src": "4739:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 230, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "4746:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4753:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4746:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 227, + "name": "splice", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 235, + 272 + ], + "referencedDeclaration": 272, + "src": "4724:6:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" + } + }, + "id": 232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4724:36:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 226, + "id": 233, + "nodeType": "Return", + "src": "4717:43:0" + } + ] + }, + "documentation": { + "id": 218, + "nodeType": "StructuredDocumentation", + "src": "4345:268:0", + "text": " @dev Moves the content of `buffer`, from `start` (included) to the end of `buffer` to the start of that buffer.\n NOTE: This function modifies the provided buffer in place. If you need to preserve the original buffer, use {slice} instead" + }, + "id": 235, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "splice", + "nameLocation": "4627:6:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 223, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 220, + "mutability": "mutable", + "name": "buffer", + "nameLocation": "4647:6:0", + "nodeType": "VariableDeclaration", + "scope": 235, + "src": "4634:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 219, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4634:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 222, + "mutability": "mutable", + "name": "start", + "nameLocation": "4663:5:0", + "nodeType": "VariableDeclaration", + "scope": 235, + "src": "4655:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 221, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4655:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4633:36:0" + }, + "returnParameters": { + "id": 226, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 225, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 235, + "src": "4693:12:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 224, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4693:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4692:14:0" + }, + "scope": 720, + "src": "4618:149:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 271, + "nodeType": "Block", + "src": "5213:370:0", + "statements": [ + { + "assignments": [ + 248 + ], + "declarations": [ + { + "constant": false, + "id": 248, + "mutability": "mutable", + "name": "length", + "nameLocation": "5251:6:0", + "nodeType": "VariableDeclaration", + "scope": 271, + "src": "5243:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 247, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5243:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 251, + "initialValue": { + "expression": { + "id": 249, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 238, + "src": "5260:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5267:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5260:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5243:30:0" + }, + { + "expression": { + "id": 258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 252, + "name": "end", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 242, + "src": "5283:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 255, + "name": "end", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 242, + "src": "5298:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 256, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 248, + "src": "5303:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 253, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2414, + "src": "5289:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$2414_$", + "typeString": "type(library Math)" + } + }, + "id": 254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5294:3:0", + "memberName": "min", + "nodeType": "MemberAccess", + "referencedDeclaration": 1099, + "src": "5289:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5289:21:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5283:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 259, + "nodeType": "ExpressionStatement", + "src": "5283:27:0" + }, + { + "expression": { + "id": 266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 260, + "name": "start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 240, + "src": "5320:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 263, + "name": "start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 240, + "src": "5337:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 264, + "name": "end", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 242, + "src": "5344:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 261, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2414, + "src": "5328:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$2414_$", + "typeString": "type(library Math)" + } + }, + "id": 262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5333:3:0", + "memberName": "min", + "nodeType": "MemberAccess", + "referencedDeclaration": 1099, + "src": "5328:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5328:20:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5320:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 267, + "nodeType": "ExpressionStatement", + "src": "5320:28:0" + }, + { + "AST": { + "nativeSrc": "5413:140:0", + "nodeType": "YulBlock", + "src": "5413:140:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "buffer", + "nativeSrc": "5437:6:0", + "nodeType": "YulIdentifier", + "src": "5437:6:0" + }, + { + "kind": "number", + "nativeSrc": "5445:4:0", + "nodeType": "YulLiteral", + "src": "5445:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5433:3:0", + "nodeType": "YulIdentifier", + "src": "5433:3:0" + }, + "nativeSrc": "5433:17:0", + "nodeType": "YulFunctionCall", + "src": "5433:17:0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "buffer", + "nativeSrc": "5460:6:0", + "nodeType": "YulIdentifier", + "src": "5460:6:0" + }, + { + "kind": "number", + "nativeSrc": "5468:4:0", + "nodeType": "YulLiteral", + "src": "5468:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5456:3:0", + "nodeType": "YulIdentifier", + "src": "5456:3:0" + }, + "nativeSrc": "5456:17:0", + "nodeType": "YulFunctionCall", + "src": "5456:17:0" + }, + { + "name": "start", + "nativeSrc": "5475:5:0", + "nodeType": "YulIdentifier", + "src": "5475:5:0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5452:3:0", + "nodeType": "YulIdentifier", + "src": "5452:3:0" + }, + "nativeSrc": "5452:29:0", + "nodeType": "YulFunctionCall", + "src": "5452:29:0" + }, + { + "arguments": [ + { + "name": "end", + "nativeSrc": "5487:3:0", + "nodeType": "YulIdentifier", + "src": "5487:3:0" + }, + { + "name": "start", + "nativeSrc": "5492:5:0", + "nodeType": "YulIdentifier", + "src": "5492:5:0" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5483:3:0", + "nodeType": "YulIdentifier", + "src": "5483:3:0" + }, + "nativeSrc": "5483:15:0", + "nodeType": "YulFunctionCall", + "src": "5483:15:0" + } + ], + "functionName": { + "name": "mcopy", + "nativeSrc": "5427:5:0", + "nodeType": "YulIdentifier", + "src": "5427:5:0" + }, + "nativeSrc": "5427:72:0", + "nodeType": "YulFunctionCall", + "src": "5427:72:0" + }, + "nativeSrc": "5427:72:0", + "nodeType": "YulExpressionStatement", + "src": "5427:72:0" + }, + { + "expression": { + "arguments": [ + { + "name": "buffer", + "nativeSrc": "5519:6:0", + "nodeType": "YulIdentifier", + "src": "5519:6:0" + }, + { + "arguments": [ + { + "name": "end", + "nativeSrc": "5531:3:0", + "nodeType": "YulIdentifier", + "src": "5531:3:0" + }, + { + "name": "start", + "nativeSrc": "5536:5:0", + "nodeType": "YulIdentifier", + "src": "5536:5:0" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5527:3:0", + "nodeType": "YulIdentifier", + "src": "5527:3:0" + }, + "nativeSrc": "5527:15:0", + "nodeType": "YulFunctionCall", + "src": "5527:15:0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5512:6:0", + "nodeType": "YulIdentifier", + "src": "5512:6:0" + }, + "nativeSrc": "5512:31:0", + "nodeType": "YulFunctionCall", + "src": "5512:31:0" + }, + "nativeSrc": "5512:31:0", + "nodeType": "YulExpressionStatement", + "src": "5512:31:0" + } + ] + }, + "evmVersion": "prague", + "externalReferences": [ + { + "declaration": 238, + "isOffset": false, + "isSlot": false, + "src": "5437:6:0", + "valueSize": 1 + }, + { + "declaration": 238, + "isOffset": false, + "isSlot": false, + "src": "5460:6:0", + "valueSize": 1 + }, + { + "declaration": 238, + "isOffset": false, + "isSlot": false, + "src": "5519:6:0", + "valueSize": 1 + }, + { + "declaration": 242, + "isOffset": false, + "isSlot": false, + "src": "5487:3:0", + "valueSize": 1 + }, + { + "declaration": 242, + "isOffset": false, + "isSlot": false, + "src": "5531:3:0", + "valueSize": 1 + }, + { + "declaration": 240, + "isOffset": false, + "isSlot": false, + "src": "5475:5:0", + "valueSize": 1 + }, + { + "declaration": 240, + "isOffset": false, + "isSlot": false, + "src": "5492:5:0", + "valueSize": 1 + }, + { + "declaration": 240, + "isOffset": false, + "isSlot": false, + "src": "5536:5:0", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 268, + "nodeType": "InlineAssembly", + "src": "5388:165:0" + }, + { + "expression": { + "id": 269, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 238, + "src": "5570:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 246, + "id": 270, + "nodeType": "Return", + "src": "5563:13:0" + } + ] + }, + "documentation": { + "id": 236, + "nodeType": "StructuredDocumentation", + "src": "4773:333:0", + "text": " @dev Moves the content of `buffer`, from `start` (included) to end (excluded) to the start of that buffer. The\n `end` argument is truncated to the length of the `buffer`.\n NOTE: This function modifies the provided buffer in place. If you need to preserve the original buffer, use {slice} instead" + }, + "id": 272, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "splice", + "nameLocation": "5120:6:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 243, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 238, + "mutability": "mutable", + "name": "buffer", + "nameLocation": "5140:6:0", + "nodeType": "VariableDeclaration", + "scope": 272, + "src": "5127:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 237, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5127:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 240, + "mutability": "mutable", + "name": "start", + "nameLocation": "5156:5:0", + "nodeType": "VariableDeclaration", + "scope": 272, + "src": "5148:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 239, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5148:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 242, + "mutability": "mutable", + "name": "end", + "nameLocation": "5171:3:0", + "nodeType": "VariableDeclaration", + "scope": 272, + "src": "5163:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 241, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5163:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5126:49:0" + }, + "returnParameters": { + "id": 246, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 245, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 272, + "src": "5199:12:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 244, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5199:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5198:14:0" + }, + "scope": 720, + "src": "5111:472:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 344, + "nodeType": "Block", + "src": "6120:563:0", + "statements": [ + { + "assignments": [ + 282 + ], + "declarations": [ + { + "constant": false, + "id": 282, + "mutability": "mutable", + "name": "length", + "nameLocation": "6138:6:0", + "nodeType": "VariableDeclaration", + "scope": 344, + "src": "6130:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 281, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6130:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 284, + "initialValue": { + "hexValue": "30", + "id": 283, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6147:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "6130:18:0" + }, + { + "body": { + "id": 303, + "nodeType": "Block", + "src": "6203:52:0", + "statements": [ + { + "expression": { + "id": 301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 296, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 282, + "src": "6217:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "expression": { + "baseExpression": { + "id": 297, + "name": "buffers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 276, + "src": "6227:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 299, + "indexExpression": { + "id": 298, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 286, + "src": "6235:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6227:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6238:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "6227:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6217:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 302, + "nodeType": "ExpressionStatement", + "src": "6217:27:0" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 289, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 286, + "src": "6178:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 290, + "name": "buffers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 276, + "src": "6182:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6190:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "6182:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6178:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 304, + "initializationExpression": { + "assignments": [ + 286 + ], + "declarations": [ + { + "constant": false, + "id": 286, + "mutability": "mutable", + "name": "i", + "nameLocation": "6171:1:0", + "nodeType": "VariableDeclaration", + "scope": 304, + "src": "6163:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 285, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6163:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 288, + "initialValue": { + "hexValue": "30", + "id": 287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6175:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "6163:13:0" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "6198:3:0", + "subExpression": { + "id": 293, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 286, + "src": "6200:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 295, + "nodeType": "ExpressionStatement", + "src": "6198:3:0" + }, + "nodeType": "ForStatement", + "src": "6158:97:0" + }, + { + "assignments": [ + 306 + ], + "declarations": [ + { + "constant": false, + "id": 306, + "mutability": "mutable", + "name": "result", + "nameLocation": "6278:6:0", + "nodeType": "VariableDeclaration", + "scope": 344, + "src": "6265:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 305, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6265:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 311, + "initialValue": { + "arguments": [ + { + "id": 309, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 282, + "src": "6297:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 308, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "6287:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 307, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6291:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6287:17:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6265:39:0" + }, + { + "assignments": [ + 313 + ], + "declarations": [ + { + "constant": false, + "id": 313, + "mutability": "mutable", + "name": "offset", + "nameLocation": "6323:6:0", + "nodeType": "VariableDeclaration", + "scope": 344, + "src": "6315:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 312, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6315:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 315, + "initialValue": { + "hexValue": "30783230", + "id": 314, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6332:4:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "0x20" + }, + "nodeType": "VariableDeclarationStatement", + "src": "6315:21:0" + }, + { + "body": { + "id": 340, + "nodeType": "Block", + "src": "6391:262:0", + "statements": [ + { + "assignments": [ + 328 + ], + "declarations": [ + { + "constant": false, + "id": 328, + "mutability": "mutable", + "name": "input", + "nameLocation": "6418:5:0", + "nodeType": "VariableDeclaration", + "scope": 340, + "src": "6405:18:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 327, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6405:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 332, + "initialValue": { + "baseExpression": { + "id": 329, + "name": "buffers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 276, + "src": "6426:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 331, + "indexExpression": { + "id": 330, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 317, + "src": "6434:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6426:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6405:31:0" + }, + { + "AST": { + "nativeSrc": "6475:90:0", + "nodeType": "YulBlock", + "src": "6475:90:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "6503:6:0", + "nodeType": "YulIdentifier", + "src": "6503:6:0" + }, + { + "name": "offset", + "nativeSrc": "6511:6:0", + "nodeType": "YulIdentifier", + "src": "6511:6:0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6499:3:0", + "nodeType": "YulIdentifier", + "src": "6499:3:0" + }, + "nativeSrc": "6499:19:0", + "nodeType": "YulFunctionCall", + "src": "6499:19:0" + }, + { + "arguments": [ + { + "name": "input", + "nativeSrc": "6524:5:0", + "nodeType": "YulIdentifier", + "src": "6524:5:0" + }, + { + "kind": "number", + "nativeSrc": "6531:4:0", + "nodeType": "YulLiteral", + "src": "6531:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6520:3:0", + "nodeType": "YulIdentifier", + "src": "6520:3:0" + }, + "nativeSrc": "6520:16:0", + "nodeType": "YulFunctionCall", + "src": "6520:16:0" + }, + { + "arguments": [ + { + "name": "input", + "nativeSrc": "6544:5:0", + "nodeType": "YulIdentifier", + "src": "6544:5:0" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6538:5:0", + "nodeType": "YulIdentifier", + "src": "6538:5:0" + }, + "nativeSrc": "6538:12:0", + "nodeType": "YulFunctionCall", + "src": "6538:12:0" + } + ], + "functionName": { + "name": "mcopy", + "nativeSrc": "6493:5:0", + "nodeType": "YulIdentifier", + "src": "6493:5:0" + }, + "nativeSrc": "6493:58:0", + "nodeType": "YulFunctionCall", + "src": "6493:58:0" + }, + "nativeSrc": "6493:58:0", + "nodeType": "YulExpressionStatement", + "src": "6493:58:0" + } + ] + }, + "evmVersion": "prague", + "externalReferences": [ + { + "declaration": 328, + "isOffset": false, + "isSlot": false, + "src": "6524:5:0", + "valueSize": 1 + }, + { + "declaration": 328, + "isOffset": false, + "isSlot": false, + "src": "6544:5:0", + "valueSize": 1 + }, + { + "declaration": 313, + "isOffset": false, + "isSlot": false, + "src": "6511:6:0", + "valueSize": 1 + }, + { + "declaration": 306, + "isOffset": false, + "isSlot": false, + "src": "6503:6:0", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 333, + "nodeType": "InlineAssembly", + "src": "6450:115:0" + }, + { + "id": 339, + "nodeType": "UncheckedBlock", + "src": "6578:65:0", + "statements": [ + { + "expression": { + "id": 337, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 334, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 313, + "src": "6606:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "expression": { + "id": 335, + "name": "input", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 328, + "src": "6616:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6622:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "6616:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6606:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 338, + "nodeType": "ExpressionStatement", + "src": "6606:22:0" + } + ] + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 320, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 317, + "src": "6366:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 321, + "name": "buffers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 276, + "src": "6370:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6378:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "6370:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6366:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 341, + "initializationExpression": { + "assignments": [ + 317 + ], + "declarations": [ + { + "constant": false, + "id": 317, + "mutability": "mutable", + "name": "i", + "nameLocation": "6359:1:0", + "nodeType": "VariableDeclaration", + "scope": 341, + "src": "6351:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 316, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6351:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 319, + "initialValue": { + "hexValue": "30", + "id": 318, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6363:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "6351:13:0" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "6386:3:0", + "subExpression": { + "id": 324, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 317, + "src": "6388:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 326, + "nodeType": "ExpressionStatement", + "src": "6386:3:0" + }, + "nodeType": "ForStatement", + "src": "6346:307:0" + }, + { + "expression": { + "id": 342, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 306, + "src": "6670:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 280, + "id": 343, + "nodeType": "Return", + "src": "6663:13:0" + } + ] + }, + "documentation": { + "id": 273, + "nodeType": "StructuredDocumentation", + "src": "5589:449:0", + "text": " @dev Concatenate an array of bytes into a single bytes object.\n For fixed bytes types, we recommend using the solidity built-in `bytes.concat` or (equivalent)\n `abi.encodePacked`.\n NOTE: this could be done in assembly with a single loop that expands starting at the FMP, but that would be\n significantly less readable. It might be worth benchmarking the savings of the full-assembly approach." + }, + "id": 345, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "concat", + "nameLocation": "6052:6:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 277, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 276, + "mutability": "mutable", + "name": "buffers", + "nameLocation": "6074:7:0", + "nodeType": "VariableDeclaration", + "scope": 345, + "src": "6059:22:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 274, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6059:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 275, + "nodeType": "ArrayTypeName", + "src": "6059:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "6058:24:0" + }, + "returnParameters": { + "id": 280, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 279, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 345, + "src": "6106:12:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 278, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6106:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6105:14:0" + }, + "scope": 720, + "src": "6043:640:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 369, + "nodeType": "Block", + "src": "6841:76:0", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 359, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 355, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 348, + "src": "6858:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6860:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "6858:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 357, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 350, + "src": "6870:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6872:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "6870:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6858:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 361, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 348, + "src": "6892:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 360, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967288, + "src": "6882:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6882:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "id": 364, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 350, + "src": "6908:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 363, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967288, + "src": "6898:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6898:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6882:28:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6858:52:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 354, + "id": 368, + "nodeType": "Return", + "src": "6851:59:0" + } + ] + }, + "documentation": { + "id": 346, + "nodeType": "StructuredDocumentation", + "src": "6689:71:0", + "text": " @dev Returns true if the two byte buffers are equal." + }, + "id": 370, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "equal", + "nameLocation": "6774:5:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 351, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 348, + "mutability": "mutable", + "name": "a", + "nameLocation": "6793:1:0", + "nodeType": "VariableDeclaration", + "scope": 370, + "src": "6780:14:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 347, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6780:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 350, + "mutability": "mutable", + "name": "b", + "nameLocation": "6809:1:0", + "nodeType": "VariableDeclaration", + "scope": 370, + "src": "6796:14:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 349, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6796:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6779:32:0" + }, + "returnParameters": { + "id": 354, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 353, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 370, + "src": "6835:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 352, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6835:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6834:6:0" + }, + "scope": 720, + "src": "6765:152:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 460, + "nodeType": "Block", + "src": "7221:1024:0", + "statements": [ + { + "expression": { + "id": 394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 378, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 373, + "src": "7231:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 379, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 373, + "src": "7267:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "38", + "id": 380, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7276:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "7267:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 382, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7266:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "307830304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646", + "id": 383, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7281:66:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_450552876409790643671482431940419874915447411150352389258589821042463539455_by_1", + "typeString": "int_const 4505...(67 digits omitted)...9455" + }, + "value": "0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF" + }, + "src": "7266:81:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 385, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7265:83:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 386, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 373, + "src": "7365:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "307830304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646", + "id": 387, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7373:66:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_450552876409790643671482431940419874915447411150352389258589821042463539455_by_1", + "typeString": "int_const 4505...(67 digits omitted)...9455" + }, + "value": "0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF" + }, + "src": "7365:74:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 389, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7364:76:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "38", + "id": 390, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7444:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "7364:81:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 392, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7363:83:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "7265:181:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "7231:215:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 395, + "nodeType": "ExpressionStatement", + "src": "7231:215:0" + }, + { + "expression": { + "id": 412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 396, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 373, + "src": "7456:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 397, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 373, + "src": "7504:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "3136", + "id": 398, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7513:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "7504:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 400, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7503:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "307830303030464646463030303046464646303030304646464630303030464646463030303046464646303030304646464630303030464646463030303046464646", + "id": 401, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7519:66:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1766820105243087041267848467410591083712559083657179364930612997358944255_by_1", + "typeString": "int_const 1766...(65 digits omitted)...4255" + }, + "value": "0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF" + }, + "src": "7503:82:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 403, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7502:84:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 404, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 373, + "src": "7603:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "307830303030464646463030303046464646303030304646464630303030464646463030303046464646303030304646464630303030464646463030303046464646", + "id": 405, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7611:66:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1766820105243087041267848467410591083712559083657179364930612997358944255_by_1", + "typeString": "int_const 1766...(65 digits omitted)...4255" + }, + "value": "0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF" + }, + "src": "7603:74:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 407, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7602:76:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "3136", + "id": 408, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7682:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "7602:82:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 410, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7601:84:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "7502:183:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "7456:229:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 413, + "nodeType": "ExpressionStatement", + "src": "7456:229:0" + }, + { + "expression": { + "id": 430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 414, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 373, + "src": "7695:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 415, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 373, + "src": "7743:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "3332", + "id": 416, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7752:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "7743:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 418, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7742:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "307830303030303030304646464646464646303030303030303046464646464646463030303030303030464646464646464630303030303030304646464646464646", + "id": 419, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7758:66:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_26959946660873538060741835960174461801791452538186943042387869433855_by_1", + "typeString": "int_const 2695...(60 digits omitted)...3855" + }, + "value": "0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF" + }, + "src": "7742:82:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 421, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7741:84:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 422, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 373, + "src": "7842:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "307830303030303030304646464646464646303030303030303046464646464646463030303030303030464646464646464630303030303030304646464646464646", + "id": 423, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7850:66:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_26959946660873538060741835960174461801791452538186943042387869433855_by_1", + "typeString": "int_const 2695...(60 digits omitted)...3855" + }, + "value": "0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF" + }, + "src": "7842:74:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 425, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7841:76:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "3332", + "id": 426, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7921:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "7841:82:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 428, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7840:84:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "7741:183:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "7695:229:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 431, + "nodeType": "ExpressionStatement", + "src": "7695:229:0" + }, + { + "expression": { + "id": 448, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 432, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 373, + "src": "7934:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 438, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 433, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 373, + "src": "7982:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "3634", + "id": 434, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7991:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "7982:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 436, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7981:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "307830303030303030303030303030303030464646464646464646464646464646463030303030303030303030303030303046464646464646464646464646464646", + "id": 437, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7997:66:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_6277101735386680763495507056286727952657427581105975853055_by_1", + "typeString": "int_const 6277...(50 digits omitted)...3055" + }, + "value": "0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF" + }, + "src": "7981:82:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 439, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7980:84:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 442, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 440, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 373, + "src": "8081:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "307830303030303030303030303030303030464646464646464646464646464646463030303030303030303030303030303046464646464646464646464646464646", + "id": 441, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8089:66:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_6277101735386680763495507056286727952657427581105975853055_by_1", + "typeString": "int_const 6277...(50 digits omitted)...3055" + }, + "value": "0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF" + }, + "src": "8081:74:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 443, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8080:76:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "3634", + "id": 444, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8160:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "8080:82:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 446, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8079:84:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "7980:183:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "7934:229:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 449, + "nodeType": "ExpressionStatement", + "src": "7934:229:0" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 458, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 450, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 373, + "src": "8181:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "313238", + "id": 451, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8190:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "8181:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 453, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8180:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 454, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 373, + "src": "8198:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313238", + "id": 455, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8207:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "8198:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 457, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8197:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "8180:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 377, + "id": 459, + "nodeType": "Return", + "src": "8173:38:0" + } + ] + }, + "documentation": { + "id": 371, + "nodeType": "StructuredDocumentation", + "src": "6923:222:0", + "text": " @dev Reverses the byte order of a bytes32 value, converting between little-endian and big-endian.\n Inspired in https://graphics.stanford.edu/~seander/bithacks.html#ReverseParallel[Reverse Parallel]" + }, + "id": 461, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "reverseBytes32", + "nameLocation": "7159:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 374, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 373, + "mutability": "mutable", + "name": "value", + "nameLocation": "7182:5:0", + "nodeType": "VariableDeclaration", + "scope": 461, + "src": "7174:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 372, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7174:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "7173:15:0" + }, + "returnParameters": { + "id": 377, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 376, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 461, + "src": "7212:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 375, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7212:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "7211:9:0" + }, + "scope": 720, + "src": "7150:1095:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 533, + "nodeType": "Block", + "src": "8394:590:0", + "statements": [ + { + "expression": { + "id": 485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 469, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "8404:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + }, + "id": 484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + }, + "id": 475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + }, + "id": 472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 470, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "8440:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "30784646303046463030464630304646303046463030464630304646303046463030", + "id": 471, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8448:34:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_338958311018522360492699998064329424640_by_1", + "typeString": "int_const 3389...(31 digits omitted)...4640" + }, + "value": "0xFF00FF00FF00FF00FF00FF00FF00FF00" + }, + "src": "8440:42:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + } + ], + "id": 473, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8439:44:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "38", + "id": 474, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8487:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "8439:49:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + } + ], + "id": 476, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8438:51:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + }, + "id": 482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + }, + "id": 479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 477, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "8506:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "30783030464630304646303046463030464630304646303046463030464630304646", + "id": 478, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8514:34:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1324055902416102970674609367438786815_by_1", + "typeString": "int_const 1324...(29 digits omitted)...6815" + }, + "value": "0x00FF00FF00FF00FF00FF00FF00FF00FF" + }, + "src": "8506:42:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + } + ], + "id": 480, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8505:44:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "38", + "id": 481, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8553:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "8505:49:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + } + ], + "id": 483, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8504:51:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "src": "8438:117:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "src": "8404:151:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "id": 486, + "nodeType": "ExpressionStatement", + "src": "8404:151:0" + }, + { + "expression": { + "id": 503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 487, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "8565:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + }, + "id": 502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + }, + "id": 493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + }, + "id": 490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 488, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "8613:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "30784646464630303030464646463030303046464646303030304646464630303030", + "id": 489, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8621:34:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_340277174703306882242637262502835978240_by_1", + "typeString": "int_const 3402...(31 digits omitted)...8240" + }, + "value": "0xFFFF0000FFFF0000FFFF0000FFFF0000" + }, + "src": "8613:42:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + } + ], + "id": 491, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8612:44:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "3136", + "id": 492, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8660:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "8612:50:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + } + ], + "id": 494, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8611:52:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + }, + "id": 500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + }, + "id": 497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 495, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "8680:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "30783030303046464646303030304646464630303030464646463030303046464646", + "id": 496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8688:34:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_5192217631581220737344928932233215_by_1", + "typeString": "int_const 5192...(26 digits omitted)...3215" + }, + "value": "0x0000FFFF0000FFFF0000FFFF0000FFFF" + }, + "src": "8680:42:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + } + ], + "id": 498, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8679:44:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "3136", + "id": 499, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8727:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "8679:50:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + } + ], + "id": 501, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8678:52:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "src": "8611:119:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "src": "8565:165:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "id": 504, + "nodeType": "ExpressionStatement", + "src": "8565:165:0" + }, + { + "expression": { + "id": 521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 505, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "8740:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + }, + "id": 520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + }, + "id": 511, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + }, + "id": 508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 506, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "8788:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "30784646464646464646303030303030303046464646464646463030303030303030", + "id": 507, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8796:34:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_340282366841710300967557013907638845440_by_1", + "typeString": "int_const 3402...(31 digits omitted)...5440" + }, + "value": "0xFFFFFFFF00000000FFFFFFFF00000000" + }, + "src": "8788:42:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + } + ], + "id": 509, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8787:44:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "3332", + "id": 510, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8835:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "8787:50:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + } + ], + "id": 512, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8786:52:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + }, + "id": 518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + }, + "id": 515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 513, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "8855:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "30783030303030303030464646464646464630303030303030304646464646464646", + "id": 514, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8863:34:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_79228162495817593524129366015_by_1", + "typeString": "int_const 79228162495817593524129366015" + }, + "value": "0x00000000FFFFFFFF00000000FFFFFFFF" + }, + "src": "8855:42:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + } + ], + "id": 516, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8854:44:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "3332", + "id": 517, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8902:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "8854:50:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + } + ], + "id": 519, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8853:52:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "src": "8786:119:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "src": "8740:165:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "id": 522, + "nodeType": "ExpressionStatement", + "src": "8740:165:0" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + }, + "id": 531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + }, + "id": 525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 523, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "8923:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "3634", + "id": 524, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8932:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "8923:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + } + ], + "id": 526, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8922:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + }, + "id": 529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 527, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "8939:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "3634", + "id": 528, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8948:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "8939:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + } + ], + "id": 530, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8938:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "src": "8922:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "functionReturnParameters": 468, + "id": 532, + "nodeType": "Return", + "src": "8915:36:0" + } + ] + }, + "documentation": { + "id": 462, + "nodeType": "StructuredDocumentation", + "src": "8251:67:0", + "text": "@dev Same as {reverseBytes32} but optimized for 128-bit values." + }, + "id": 534, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "reverseBytes16", + "nameLocation": "8332:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 465, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 464, + "mutability": "mutable", + "name": "value", + "nameLocation": "8355:5:0", + "nodeType": "VariableDeclaration", + "scope": 534, + "src": "8347:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + }, + "typeName": { + "id": 463, + "name": "bytes16", + "nodeType": "ElementaryTypeName", + "src": "8347:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "visibility": "internal" + } + ], + "src": "8346:15:0" + }, + "returnParameters": { + "id": 468, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 467, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 534, + "src": "8385:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + }, + "typeName": { + "id": 466, + "name": "bytes16", + "nodeType": "ElementaryTypeName", + "src": "8385:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "visibility": "internal" + } + ], + "src": "8384:9:0" + }, + "scope": 720, + "src": "8323:661:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 588, + "nodeType": "Block", + "src": "9129:303:0", + "statements": [ + { + "expression": { + "id": 558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 542, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "9139:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + }, + "id": 557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + }, + "id": 548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + }, + "id": 545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 543, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "9149:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "307846463030464630304646303046463030", + "id": 544, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9157:18:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_18374966859414961920_by_1", + "typeString": "int_const 18374966859414961920" + }, + "value": "0xFF00FF00FF00FF00" + }, + "src": "9149:26:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + } + ], + "id": 546, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9148:28:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "38", + "id": 547, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9180:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "9148:33:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + } + ], + "id": 549, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9147:35:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + }, + "id": 555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + }, + "id": 552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 550, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "9187:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "307830304646303046463030464630304646", + "id": 551, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9195:18:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_71777214294589695_by_1", + "typeString": "int_const 71777214294589695" + }, + "value": "0x00FF00FF00FF00FF" + }, + "src": "9187:26:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + } + ], + "id": 553, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9186:28:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "38", + "id": 554, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9218:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "9186:33:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + } + ], + "id": 556, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9185:35:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + }, + "src": "9147:73:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + }, + "src": "9139:81:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + }, + "id": 559, + "nodeType": "ExpressionStatement", + "src": "9139:81:0" + }, + { + "expression": { + "id": 576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 560, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "9244:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + }, + "id": 575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + }, + "id": 566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + }, + "id": 563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 561, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "9254:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "307846464646303030304646464630303030", + "id": 562, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9262:18:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_18446462603027742720_by_1", + "typeString": "int_const 18446462603027742720" + }, + "value": "0xFFFF0000FFFF0000" + }, + "src": "9254:26:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + } + ], + "id": 564, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9253:28:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "3136", + "id": 565, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9285:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "9253:34:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + } + ], + "id": 567, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9252:36:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + }, + "id": 573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + }, + "id": 570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 568, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "9293:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "307830303030464646463030303046464646", + "id": 569, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9301:18:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_281470681808895_by_1", + "typeString": "int_const 281470681808895" + }, + "value": "0x0000FFFF0000FFFF" + }, + "src": "9293:26:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + } + ], + "id": 571, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9292:28:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "3136", + "id": 572, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9324:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "9292:34:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + } + ], + "id": 574, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9291:36:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + }, + "src": "9252:75:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + }, + "src": "9244:83:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + }, + "id": 577, + "nodeType": "ExpressionStatement", + "src": "9244:83:0" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + }, + "id": 586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + }, + "id": 580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 578, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "9371:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "3332", + "id": 579, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9380:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "9371:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + } + ], + "id": 581, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9370:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + }, + "id": 584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 582, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "9387:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "3332", + "id": 583, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9396:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "9387:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + } + ], + "id": 585, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9386:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + }, + "src": "9370:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + }, + "functionReturnParameters": 541, + "id": 587, + "nodeType": "Return", + "src": "9363:36:0" + } + ] + }, + "documentation": { + "id": 535, + "nodeType": "StructuredDocumentation", + "src": "8990:66:0", + "text": "@dev Same as {reverseBytes32} but optimized for 64-bit values." + }, + "id": 589, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "reverseBytes8", + "nameLocation": "9070:13:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 538, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 537, + "mutability": "mutable", + "name": "value", + "nameLocation": "9091:5:0", + "nodeType": "VariableDeclaration", + "scope": 589, + "src": "9084:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + }, + "typeName": { + "id": 536, + "name": "bytes8", + "nodeType": "ElementaryTypeName", + "src": "9084:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + }, + "visibility": "internal" + } + ], + "src": "9083:14:0" + }, + "returnParameters": { + "id": 541, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 540, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 589, + "src": "9121:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + }, + "typeName": { + "id": 539, + "name": "bytes8", + "nodeType": "ElementaryTypeName", + "src": "9121:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes8", + "typeString": "bytes8" + } + }, + "visibility": "internal" + } + ], + "src": "9120:8:0" + }, + "scope": 720, + "src": "9061:371:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 625, + "nodeType": "Block", + "src": "9577:168:0", + "statements": [ + { + "expression": { + "id": 613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 597, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 592, + "src": "9587:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 598, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 592, + "src": "9597:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "30784646303046463030", + "id": 599, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9605:10:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_4278255360_by_1", + "typeString": "int_const 4278255360" + }, + "value": "0xFF00FF00" + }, + "src": "9597:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "id": 601, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9596:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "38", + "id": 602, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9620:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "9596:25:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "id": 604, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9595:27:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 605, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 592, + "src": "9627:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "30783030464630304646", + "id": 606, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9635:10:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_16711935_by_1", + "typeString": "int_const 16711935" + }, + "value": "0x00FF00FF" + }, + "src": "9627:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "id": 608, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9626:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "38", + "id": 609, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9650:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "9626:25:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "id": 611, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9625:27:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "9595:57:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "9587:65:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "id": 614, + "nodeType": "ExpressionStatement", + "src": "9587:65:0" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 615, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 592, + "src": "9684:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "3136", + "id": 616, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9693:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "9684:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "id": 618, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9683:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 619, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 592, + "src": "9700:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "3136", + "id": 620, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9709:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "9700:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "id": 622, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9699:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "9683:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "functionReturnParameters": 596, + "id": 624, + "nodeType": "Return", + "src": "9676:36:0" + } + ] + }, + "documentation": { + "id": 590, + "nodeType": "StructuredDocumentation", + "src": "9438:66:0", + "text": "@dev Same as {reverseBytes32} but optimized for 32-bit values." + }, + "id": 626, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "reverseBytes4", + "nameLocation": "9518:13:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 593, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 592, + "mutability": "mutable", + "name": "value", + "nameLocation": "9539:5:0", + "nodeType": "VariableDeclaration", + "scope": 626, + "src": "9532:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 591, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "9532:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "9531:14:0" + }, + "returnParameters": { + "id": 596, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 595, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 626, + "src": "9569:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 594, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "9569:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "9568:8:0" + }, + "scope": 720, + "src": "9509:236:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 644, + "nodeType": "Block", + "src": "9890:51:0", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + }, + "id": 642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + }, + "id": 636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 634, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 629, + "src": "9908:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "38", + "id": 635, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9917:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "9908:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + } + } + ], + "id": 637, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9907:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + }, + "id": 640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 638, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 629, + "src": "9923:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "38", + "id": 639, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9932:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "9923:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + } + } + ], + "id": 641, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9922:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + } + }, + "src": "9907:27:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + } + }, + "functionReturnParameters": 633, + "id": 643, + "nodeType": "Return", + "src": "9900:34:0" + } + ] + }, + "documentation": { + "id": 627, + "nodeType": "StructuredDocumentation", + "src": "9751:66:0", + "text": "@dev Same as {reverseBytes32} but optimized for 16-bit values." + }, + "id": 645, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "reverseBytes2", + "nameLocation": "9831:13:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 630, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 629, + "mutability": "mutable", + "name": "value", + "nameLocation": "9852:5:0", + "nodeType": "VariableDeclaration", + "scope": 645, + "src": "9845:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + }, + "typeName": { + "id": 628, + "name": "bytes2", + "nodeType": "ElementaryTypeName", + "src": "9845:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + } + }, + "visibility": "internal" + } + ], + "src": "9844:14:0" + }, + "returnParameters": { + "id": 633, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 632, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 645, + "src": "9882:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + }, + "typeName": { + "id": 631, + "name": "bytes2", + "nodeType": "ElementaryTypeName", + "src": "9882:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + } + }, + "visibility": "internal" + } + ], + "src": "9881:8:0" + }, + "scope": 720, + "src": "9822:119:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 706, + "nodeType": "Block", + "src": "10158:311:0", + "statements": [ + { + "body": { + "id": 699, + "nodeType": "Block", + "src": "10216:213:0", + "statements": [ + { + "assignments": [ + 666 + ], + "declarations": [ + { + "constant": false, + "id": 666, + "mutability": "mutable", + "name": "chunk", + "nameLocation": "10238:5:0", + "nodeType": "VariableDeclaration", + "scope": 699, + "src": "10230:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 665, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10230:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 671, + "initialValue": { + "arguments": [ + { + "id": 668, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 648, + "src": "10269:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 669, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 654, + "src": "10277:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 667, + "name": "_unsafeReadBytesOffset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 719, + "src": "10246:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (bytes memory,uint256) pure returns (bytes32)" + } + }, + "id": 670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10246:33:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10230:49:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 672, + "name": "chunk", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "10297:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 675, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10314:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 674, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10306:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 673, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10306:7:0", + "typeDescriptions": {} + } + }, + "id": 676, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10306:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "10297:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 698, + "nodeType": "IfStatement", + "src": "10293:126:0", + "trueBody": { + "id": 697, + "nodeType": "Block", + "src": "10318:101:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 690, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "38", + "id": 680, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10352:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 681, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 654, + "src": "10356:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10352:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 687, + "name": "chunk", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "10377:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10369:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 685, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10369:7:0", + "typeDescriptions": {} + } + }, + "id": 688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10369:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 683, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2414, + "src": "10360:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$2414_$", + "typeString": "type(library Math)" + } + }, + "id": 684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10365:3:0", + "memberName": "clz", + "nodeType": "MemberAccess", + "referencedDeclaration": 2413, + "src": "10360:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10360:24:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10352:32:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "38", + "id": 691, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10386:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "expression": { + "id": 692, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 648, + "src": "10390:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10397:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "10390:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10386:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 678, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2414, + "src": "10343:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$2414_$", + "typeString": "type(library Math)" + } + }, + "id": 679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10348:3:0", + "memberName": "min", + "nodeType": "MemberAccess", + "referencedDeclaration": 1099, + "src": "10343:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 695, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10343:61:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 652, + "id": 696, + "nodeType": "Return", + "src": "10336:68:0" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 657, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 654, + "src": "10188:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 658, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 648, + "src": "10192:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10199:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "10192:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10188:17:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 700, + "initializationExpression": { + "assignments": [ + 654 + ], + "declarations": [ + { + "constant": false, + "id": 654, + "mutability": "mutable", + "name": "i", + "nameLocation": "10181:1:0", + "nodeType": "VariableDeclaration", + "scope": 700, + "src": "10173:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 653, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10173:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 656, + "initialValue": { + "hexValue": "30", + "id": 655, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10185:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "10173:13:0" + }, + "isSimpleCounterLoop": false, + "loopExpression": { + "expression": { + "id": 663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 661, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 654, + "src": "10207:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "3332", + "id": 662, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10212:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "10207:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 664, + "nodeType": "ExpressionStatement", + "src": "10207:7:0" + }, + "nodeType": "ForStatement", + "src": "10168:261:0" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "38", + "id": 701, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10445:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "expression": { + "id": 702, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 648, + "src": "10449:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10456:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "10449:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10445:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 652, + "id": 705, + "nodeType": "Return", + "src": "10438:24:0" + } + ] + }, + "documentation": { + "id": 646, + "nodeType": "StructuredDocumentation", + "src": "9947:140:0", + "text": " @dev Counts the number of leading zero bits a bytes array. Returns `8 * buffer.length`\n if the buffer is all zeros." + }, + "id": 707, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "clz", + "nameLocation": "10101:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 649, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 648, + "mutability": "mutable", + "name": "buffer", + "nameLocation": "10118:6:0", + "nodeType": "VariableDeclaration", + "scope": 707, + "src": "10105:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 647, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10105:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "10104:21:0" + }, + "returnParameters": { + "id": 652, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 651, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 707, + "src": "10149:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 650, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10149:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10148:9:0" + }, + "scope": 720, + "src": "10092:377:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 718, + "nodeType": "Block", + "src": "10854:225:0", + "statements": [ + { + "AST": { + "nativeSrc": "11003:70:0", + "nodeType": "YulBlock", + "src": "11003:70:0", + "statements": [ + { + "nativeSrc": "11017:46:0", + "nodeType": "YulAssignment", + "src": "11017:46:0", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "buffer", + "nativeSrc": "11040:6:0", + "nodeType": "YulIdentifier", + "src": "11040:6:0" + }, + { + "kind": "number", + "nativeSrc": "11048:4:0", + "nodeType": "YulLiteral", + "src": "11048:4:0", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11036:3:0", + "nodeType": "YulIdentifier", + "src": "11036:3:0" + }, + "nativeSrc": "11036:17:0", + "nodeType": "YulFunctionCall", + "src": "11036:17:0" + }, + { + "name": "offset", + "nativeSrc": "11055:6:0", + "nodeType": "YulIdentifier", + "src": "11055:6:0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11032:3:0", + "nodeType": "YulIdentifier", + "src": "11032:3:0" + }, + "nativeSrc": "11032:30:0", + "nodeType": "YulFunctionCall", + "src": "11032:30:0" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "11026:5:0", + "nodeType": "YulIdentifier", + "src": "11026:5:0" + }, + "nativeSrc": "11026:37:0", + "nodeType": "YulFunctionCall", + "src": "11026:37:0" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "11017:5:0", + "nodeType": "YulIdentifier", + "src": "11017:5:0" + } + ] + } + ] + }, + "evmVersion": "prague", + "externalReferences": [ + { + "declaration": 710, + "isOffset": false, + "isSlot": false, + "src": "11040:6:0", + "valueSize": 1 + }, + { + "declaration": 712, + "isOffset": false, + "isSlot": false, + "src": "11055:6:0", + "valueSize": 1 + }, + { + "declaration": 715, + "isOffset": false, + "isSlot": false, + "src": "11017:5:0", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 717, + "nodeType": "InlineAssembly", + "src": "10978:95:0" + } + ] + }, + "documentation": { + "id": 708, + "nodeType": "StructuredDocumentation", + "src": "10475:268:0", + "text": " @dev Reads a bytes32 from a bytes array without bounds checking.\n NOTE: making this function internal would mean it could be used with memory unsafe offset, and marking the\n assembly block as such would prevent some optimizations." + }, + "id": 719, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_unsafeReadBytesOffset", + "nameLocation": "10757:22:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 713, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 710, + "mutability": "mutable", + "name": "buffer", + "nameLocation": "10793:6:0", + "nodeType": "VariableDeclaration", + "scope": 719, + "src": "10780:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 709, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10780:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 712, + "mutability": "mutable", + "name": "offset", + "nameLocation": "10809:6:0", + "nodeType": "VariableDeclaration", + "scope": 719, + "src": "10801:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 711, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10801:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10779:37:0" + }, + "returnParameters": { + "id": 716, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 715, + "mutability": "mutable", + "name": "value", + "nameLocation": "10847:5:0", + "nodeType": "VariableDeclaration", + "scope": 719, + "src": "10839:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 714, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10839:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "10838:15:0" + }, + "scope": 720, + "src": "10748:331:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 721, + "src": "198:10883:0", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "99:10983:0" + }, + "id": 0 + }, + "contracts/utils/Panic.sol": { + "ast": { + "absolutePath": "contracts/utils/Panic.sol", + "exportedSymbols": { + "Panic": [ + 772 + ] + }, + "id": 773, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 722, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "99:24:1" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Panic", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 723, + "nodeType": "StructuredDocumentation", + "src": "125:489:1", + "text": " @dev Helper library for emitting standardized panic codes.\n ```solidity\n contract Example {\n using Panic for uint256;\n // Use any of the declared internal constants\n function foo() { Panic.GENERIC.panic(); }\n // Alternatively\n function foo() { Panic.panic(Panic.GENERIC); }\n }\n ```\n Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\n _Available since v5.1._" + }, + "fullyImplemented": true, + "id": 772, + "linearizedBaseContracts": [ + 772 + ], + "name": "Panic", + "nameLocation": "665:5:1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "documentation": { + "id": 724, + "nodeType": "StructuredDocumentation", + "src": "677:36:1", + "text": "@dev generic / unspecified error" + }, + "id": 727, + "mutability": "constant", + "name": "GENERIC", + "nameLocation": "744:7:1", + "nodeType": "VariableDeclaration", + "scope": 772, + "src": "718:40:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 725, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "718:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30783030", + "id": 726, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "754:4:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x00" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 728, + "nodeType": "StructuredDocumentation", + "src": "764:37:1", + "text": "@dev used by the assert() builtin" + }, + "id": 731, + "mutability": "constant", + "name": "ASSERT", + "nameLocation": "832:6:1", + "nodeType": "VariableDeclaration", + "scope": 772, + "src": "806:39:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 729, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "806:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30783031", + "id": 730, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "841:4:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "0x01" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 732, + "nodeType": "StructuredDocumentation", + "src": "851:41:1", + "text": "@dev arithmetic underflow or overflow" + }, + "id": 735, + "mutability": "constant", + "name": "UNDER_OVERFLOW", + "nameLocation": "923:14:1", + "nodeType": "VariableDeclaration", + "scope": 772, + "src": "897:47:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 733, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "897:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30783131", + "id": 734, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "940:4:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_17_by_1", + "typeString": "int_const 17" + }, + "value": "0x11" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 736, + "nodeType": "StructuredDocumentation", + "src": "950:35:1", + "text": "@dev division or modulo by zero" + }, + "id": 739, + "mutability": "constant", + "name": "DIVISION_BY_ZERO", + "nameLocation": "1016:16:1", + "nodeType": "VariableDeclaration", + "scope": 772, + "src": "990:49:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 737, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "990:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30783132", + "id": 738, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1035:4:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "0x12" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 740, + "nodeType": "StructuredDocumentation", + "src": "1045:30:1", + "text": "@dev enum conversion error" + }, + "id": 743, + "mutability": "constant", + "name": "ENUM_CONVERSION_ERROR", + "nameLocation": "1106:21:1", + "nodeType": "VariableDeclaration", + "scope": 772, + "src": "1080:54:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 741, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1080:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30783231", + "id": 742, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1130:4:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_33_by_1", + "typeString": "int_const 33" + }, + "value": "0x21" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 744, + "nodeType": "StructuredDocumentation", + "src": "1140:36:1", + "text": "@dev invalid encoding in storage" + }, + "id": 747, + "mutability": "constant", + "name": "STORAGE_ENCODING_ERROR", + "nameLocation": "1207:22:1", + "nodeType": "VariableDeclaration", + "scope": 772, + "src": "1181:55:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 745, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1181:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30783232", + "id": 746, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1232:4:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_34_by_1", + "typeString": "int_const 34" + }, + "value": "0x22" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 748, + "nodeType": "StructuredDocumentation", + "src": "1242:24:1", + "text": "@dev empty array pop" + }, + "id": 751, + "mutability": "constant", + "name": "EMPTY_ARRAY_POP", + "nameLocation": "1297:15:1", + "nodeType": "VariableDeclaration", + "scope": 772, + "src": "1271:48:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 749, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1271:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30783331", + "id": 750, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1315:4:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_49_by_1", + "typeString": "int_const 49" + }, + "value": "0x31" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 752, + "nodeType": "StructuredDocumentation", + "src": "1325:35:1", + "text": "@dev array out of bounds access" + }, + "id": 755, + "mutability": "constant", + "name": "ARRAY_OUT_OF_BOUNDS", + "nameLocation": "1391:19:1", + "nodeType": "VariableDeclaration", + "scope": 772, + "src": "1365:52:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 753, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1365:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30783332", + "id": 754, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1413:4:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_50_by_1", + "typeString": "int_const 50" + }, + "value": "0x32" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 756, + "nodeType": "StructuredDocumentation", + "src": "1423:65:1", + "text": "@dev resource error (too large allocation or too large array)" + }, + "id": 759, + "mutability": "constant", + "name": "RESOURCE_ERROR", + "nameLocation": "1519:14:1", + "nodeType": "VariableDeclaration", + "scope": 772, + "src": "1493:47:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 757, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1493:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30783431", + "id": 758, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1536:4:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_65_by_1", + "typeString": "int_const 65" + }, + "value": "0x41" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 760, + "nodeType": "StructuredDocumentation", + "src": "1546:42:1", + "text": "@dev calling invalid internal function" + }, + "id": 763, + "mutability": "constant", + "name": "INVALID_INTERNAL_FUNCTION", + "nameLocation": "1619:25:1", + "nodeType": "VariableDeclaration", + "scope": 772, + "src": "1593:58:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 761, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1593:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30783531", + "id": 762, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1647:4:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_81_by_1", + "typeString": "int_const 81" + }, + "value": "0x51" + }, + "visibility": "internal" + }, + { + "body": { + "id": 770, + "nodeType": "Block", + "src": "1819:151:1", + "statements": [ + { + "AST": { + "nativeSrc": "1854:110:1", + "nodeType": "YulBlock", + "src": "1854:110:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1875:4:1", + "nodeType": "YulLiteral", + "src": "1875:4:1", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "1881:10:1", + "nodeType": "YulLiteral", + "src": "1881:10:1", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1868:6:1", + "nodeType": "YulIdentifier", + "src": "1868:6:1" + }, + "nativeSrc": "1868:24:1", + "nodeType": "YulFunctionCall", + "src": "1868:24:1" + }, + "nativeSrc": "1868:24:1", + "nodeType": "YulExpressionStatement", + "src": "1868:24:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1912:4:1", + "nodeType": "YulLiteral", + "src": "1912:4:1", + "type": "", + "value": "0x20" + }, + { + "name": "code", + "nativeSrc": "1918:4:1", + "nodeType": "YulIdentifier", + "src": "1918:4:1" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1905:6:1", + "nodeType": "YulIdentifier", + "src": "1905:6:1" + }, + "nativeSrc": "1905:18:1", + "nodeType": "YulFunctionCall", + "src": "1905:18:1" + }, + "nativeSrc": "1905:18:1", + "nodeType": "YulExpressionStatement", + "src": "1905:18:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1943:4:1", + "nodeType": "YulLiteral", + "src": "1943:4:1", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "1949:4:1", + "nodeType": "YulLiteral", + "src": "1949:4:1", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1936:6:1", + "nodeType": "YulIdentifier", + "src": "1936:6:1" + }, + "nativeSrc": "1936:18:1", + "nodeType": "YulFunctionCall", + "src": "1936:18:1" + }, + "nativeSrc": "1936:18:1", + "nodeType": "YulExpressionStatement", + "src": "1936:18:1" + } + ] + }, + "evmVersion": "prague", + "externalReferences": [ + { + "declaration": 766, + "isOffset": false, + "isSlot": false, + "src": "1918:4:1", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 769, + "nodeType": "InlineAssembly", + "src": "1829:135:1" + } + ] + }, + "documentation": { + "id": 764, + "nodeType": "StructuredDocumentation", + "src": "1658:113:1", + "text": "@dev Reverts with a panic code. Recommended to use with\n the internal constants with predefined codes." + }, + "id": 771, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "panic", + "nameLocation": "1785:5:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 767, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 766, + "mutability": "mutable", + "name": "code", + "nameLocation": "1799:4:1", + "nodeType": "VariableDeclaration", + "scope": 771, + "src": "1791:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 765, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1791:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1790:14:1" + }, + "returnParameters": { + "id": 768, + "nodeType": "ParameterList", + "parameters": [], + "src": "1819:0:1" + }, + "scope": 772, + "src": "1776:194:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 773, + "src": "657:1315:1", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "99:1874:1" + }, + "id": 1 + }, + "contracts/utils/math/Math.sol": { + "ast": { + "absolutePath": "contracts/utils/math/Math.sol", + "exportedSymbols": { + "Math": [ + 2414 + ], + "Panic": [ + 772 + ], + "SafeCast": [ + 4179 + ] + }, + "id": 2415, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 774, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "103:24:2" + }, + { + "absolutePath": "contracts/utils/Panic.sol", + "file": "../Panic.sol", + "id": 776, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2415, + "sourceUnit": 773, + "src": "129:35:2", + "symbolAliases": [ + { + "foreign": { + "id": 775, + "name": "Panic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 772, + "src": "137:5:2", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/utils/math/SafeCast.sol", + "file": "./SafeCast.sol", + "id": 778, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2415, + "sourceUnit": 4180, + "src": "165:40:2", + "symbolAliases": [ + { + "foreign": { + "id": 777, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4179, + "src": "173:8:2", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Math", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 779, + "nodeType": "StructuredDocumentation", + "src": "207:73:2", + "text": " @dev Standard math utilities missing in the Solidity language." + }, + "fullyImplemented": true, + "id": 2414, + "linearizedBaseContracts": [ + 2414 + ], + "name": "Math", + "nameLocation": "289:4:2", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Math.Rounding", + "id": 784, + "members": [ + { + "id": 780, + "name": "Floor", + "nameLocation": "324:5:2", + "nodeType": "EnumValue", + "src": "324:5:2" + }, + { + "id": 781, + "name": "Ceil", + "nameLocation": "367:4:2", + "nodeType": "EnumValue", + "src": "367:4:2" + }, + { + "id": 782, + "name": "Trunc", + "nameLocation": "409:5:2", + "nodeType": "EnumValue", + "src": "409:5:2" + }, + { + "id": 783, + "name": "Expand", + "nameLocation": "439:6:2", + "nodeType": "EnumValue", + "src": "439:6:2" + } + ], + "name": "Rounding", + "nameLocation": "305:8:2", + "nodeType": "EnumDefinition", + "src": "300:169:2" + }, + { + "body": { + "id": 797, + "nodeType": "Block", + "src": "731:112:2", + "statements": [ + { + "AST": { + "nativeSrc": "766:71:2", + "nodeType": "YulBlock", + "src": "766:71:2", + "statements": [ + { + "nativeSrc": "780:16:2", + "nodeType": "YulAssignment", + "src": "780:16:2", + "value": { + "arguments": [ + { + "name": "a", + "nativeSrc": "791:1:2", + "nodeType": "YulIdentifier", + "src": "791:1:2" + }, + { + "name": "b", + "nativeSrc": "794:1:2", + "nodeType": "YulIdentifier", + "src": "794:1:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "787:3:2", + "nodeType": "YulIdentifier", + "src": "787:3:2" + }, + "nativeSrc": "787:9:2", + "nodeType": "YulFunctionCall", + "src": "787:9:2" + }, + "variableNames": [ + { + "name": "low", + "nativeSrc": "780:3:2", + "nodeType": "YulIdentifier", + "src": "780:3:2" + } + ] + }, + { + "nativeSrc": "809:18:2", + "nodeType": "YulAssignment", + "src": "809:18:2", + "value": { + "arguments": [ + { + "name": "low", + "nativeSrc": "820:3:2", + "nodeType": "YulIdentifier", + "src": "820:3:2" + }, + { + "name": "a", + "nativeSrc": "825:1:2", + "nodeType": "YulIdentifier", + "src": "825:1:2" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "817:2:2", + "nodeType": "YulIdentifier", + "src": "817:2:2" + }, + "nativeSrc": "817:10:2", + "nodeType": "YulFunctionCall", + "src": "817:10:2" + }, + "variableNames": [ + { + "name": "high", + "nativeSrc": "809:4:2", + "nodeType": "YulIdentifier", + "src": "809:4:2" + } + ] + } + ] + }, + "evmVersion": "prague", + "externalReferences": [ + { + "declaration": 787, + "isOffset": false, + "isSlot": false, + "src": "791:1:2", + "valueSize": 1 + }, + { + "declaration": 787, + "isOffset": false, + "isSlot": false, + "src": "825:1:2", + "valueSize": 1 + }, + { + "declaration": 789, + "isOffset": false, + "isSlot": false, + "src": "794:1:2", + "valueSize": 1 + }, + { + "declaration": 792, + "isOffset": false, + "isSlot": false, + "src": "809:4:2", + "valueSize": 1 + }, + { + "declaration": 794, + "isOffset": false, + "isSlot": false, + "src": "780:3:2", + "valueSize": 1 + }, + { + "declaration": 794, + "isOffset": false, + "isSlot": false, + "src": "820:3:2", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 796, + "nodeType": "InlineAssembly", + "src": "741:96:2" + } + ] + }, + "documentation": { + "id": 785, + "nodeType": "StructuredDocumentation", + "src": "475:163:2", + "text": " @dev Return the 512-bit addition of two uint256.\n The result is stored in two 256 variables such that sum = high * 2²⁵⁶ + low." + }, + "id": 798, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add512", + "nameLocation": "652:6:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 790, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 787, + "mutability": "mutable", + "name": "a", + "nameLocation": "667:1:2", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "659:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 786, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "659:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 789, + "mutability": "mutable", + "name": "b", + "nameLocation": "678:1:2", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "670:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 788, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "670:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "658:22:2" + }, + "returnParameters": { + "id": 795, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 792, + "mutability": "mutable", + "name": "high", + "nameLocation": "712:4:2", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "704:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 791, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "704:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 794, + "mutability": "mutable", + "name": "low", + "nameLocation": "726:3:2", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "718:11:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 793, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "718:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "703:27:2" + }, + "scope": 2414, + "src": "643:200:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 811, + "nodeType": "Block", + "src": "1115:462:2", + "statements": [ + { + "AST": { + "nativeSrc": "1437:134:2", + "nodeType": "YulBlock", + "src": "1437:134:2", + "statements": [ + { + "nativeSrc": "1451:30:2", + "nodeType": "YulVariableDeclaration", + "src": "1451:30:2", + "value": { + "arguments": [ + { + "name": "a", + "nativeSrc": "1468:1:2", + "nodeType": "YulIdentifier", + "src": "1468:1:2" + }, + { + "name": "b", + "nativeSrc": "1471:1:2", + "nodeType": "YulIdentifier", + "src": "1471:1:2" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1478:1:2", + "nodeType": "YulLiteral", + "src": "1478:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "1474:3:2", + "nodeType": "YulIdentifier", + "src": "1474:3:2" + }, + "nativeSrc": "1474:6:2", + "nodeType": "YulFunctionCall", + "src": "1474:6:2" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "1461:6:2", + "nodeType": "YulIdentifier", + "src": "1461:6:2" + }, + "nativeSrc": "1461:20:2", + "nodeType": "YulFunctionCall", + "src": "1461:20:2" + }, + "variables": [ + { + "name": "mm", + "nativeSrc": "1455:2:2", + "nodeType": "YulTypedName", + "src": "1455:2:2", + "type": "" + } + ] + }, + { + "nativeSrc": "1494:16:2", + "nodeType": "YulAssignment", + "src": "1494:16:2", + "value": { + "arguments": [ + { + "name": "a", + "nativeSrc": "1505:1:2", + "nodeType": "YulIdentifier", + "src": "1505:1:2" + }, + { + "name": "b", + "nativeSrc": "1508:1:2", + "nodeType": "YulIdentifier", + "src": "1508:1:2" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "1501:3:2", + "nodeType": "YulIdentifier", + "src": "1501:3:2" + }, + "nativeSrc": "1501:9:2", + "nodeType": "YulFunctionCall", + "src": "1501:9:2" + }, + "variableNames": [ + { + "name": "low", + "nativeSrc": "1494:3:2", + "nodeType": "YulIdentifier", + "src": "1494:3:2" + } + ] + }, + { + "nativeSrc": "1523:38:2", + "nodeType": "YulAssignment", + "src": "1523:38:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "mm", + "nativeSrc": "1539:2:2", + "nodeType": "YulIdentifier", + "src": "1539:2:2" + }, + { + "name": "low", + "nativeSrc": "1543:3:2", + "nodeType": "YulIdentifier", + "src": "1543:3:2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1535:3:2", + "nodeType": "YulIdentifier", + "src": "1535:3:2" + }, + "nativeSrc": "1535:12:2", + "nodeType": "YulFunctionCall", + "src": "1535:12:2" + }, + { + "arguments": [ + { + "name": "mm", + "nativeSrc": "1552:2:2", + "nodeType": "YulIdentifier", + "src": "1552:2:2" + }, + { + "name": "low", + "nativeSrc": "1556:3:2", + "nodeType": "YulIdentifier", + "src": "1556:3:2" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "1549:2:2", + "nodeType": "YulIdentifier", + "src": "1549:2:2" + }, + "nativeSrc": "1549:11:2", + "nodeType": "YulFunctionCall", + "src": "1549:11:2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1531:3:2", + "nodeType": "YulIdentifier", + "src": "1531:3:2" + }, + "nativeSrc": "1531:30:2", + "nodeType": "YulFunctionCall", + "src": "1531:30:2" + }, + "variableNames": [ + { + "name": "high", + "nativeSrc": "1523:4:2", + "nodeType": "YulIdentifier", + "src": "1523:4:2" + } + ] + } + ] + }, + "evmVersion": "prague", + "externalReferences": [ + { + "declaration": 801, + "isOffset": false, + "isSlot": false, + "src": "1468:1:2", + "valueSize": 1 + }, + { + "declaration": 801, + "isOffset": false, + "isSlot": false, + "src": "1505:1:2", + "valueSize": 1 + }, + { + "declaration": 803, + "isOffset": false, + "isSlot": false, + "src": "1471:1:2", + "valueSize": 1 + }, + { + "declaration": 803, + "isOffset": false, + "isSlot": false, + "src": "1508:1:2", + "valueSize": 1 + }, + { + "declaration": 806, + "isOffset": false, + "isSlot": false, + "src": "1523:4:2", + "valueSize": 1 + }, + { + "declaration": 808, + "isOffset": false, + "isSlot": false, + "src": "1494:3:2", + "valueSize": 1 + }, + { + "declaration": 808, + "isOffset": false, + "isSlot": false, + "src": "1543:3:2", + "valueSize": 1 + }, + { + "declaration": 808, + "isOffset": false, + "isSlot": false, + "src": "1556:3:2", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 810, + "nodeType": "InlineAssembly", + "src": "1412:159:2" + } + ] + }, + "documentation": { + "id": 799, + "nodeType": "StructuredDocumentation", + "src": "849:173:2", + "text": " @dev Return the 512-bit multiplication of two uint256.\n The result is stored in two 256 variables such that product = high * 2²⁵⁶ + low." + }, + "id": 812, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mul512", + "nameLocation": "1036:6:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 804, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 801, + "mutability": "mutable", + "name": "a", + "nameLocation": "1051:1:2", + "nodeType": "VariableDeclaration", + "scope": 812, + "src": "1043:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 800, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1043:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 803, + "mutability": "mutable", + "name": "b", + "nameLocation": "1062:1:2", + "nodeType": "VariableDeclaration", + "scope": 812, + "src": "1054:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 802, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1054:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1042:22:2" + }, + "returnParameters": { + "id": 809, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 806, + "mutability": "mutable", + "name": "high", + "nameLocation": "1096:4:2", + "nodeType": "VariableDeclaration", + "scope": 812, + "src": "1088:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 805, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1088:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 808, + "mutability": "mutable", + "name": "low", + "nameLocation": "1110:3:2", + "nodeType": "VariableDeclaration", + "scope": 812, + "src": "1102:11:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 807, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1102:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1087:27:2" + }, + "scope": 2414, + "src": "1027:550:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 846, + "nodeType": "Block", + "src": "1784:149:2", + "statements": [ + { + "id": 845, + "nodeType": "UncheckedBlock", + "src": "1794:133:2", + "statements": [ + { + "assignments": [ + 825 + ], + "declarations": [ + { + "constant": false, + "id": 825, + "mutability": "mutable", + "name": "c", + "nameLocation": "1826:1:2", + "nodeType": "VariableDeclaration", + "scope": 845, + "src": "1818:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 824, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1818:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 829, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 826, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 815, + "src": "1830:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 827, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "1834:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1830:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1818:17:2" + }, + { + "expression": { + "id": 834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 830, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 820, + "src": "1849:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 831, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 825, + "src": "1859:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 832, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 815, + "src": "1864:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1859:6:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1849:16:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 835, + "nodeType": "ExpressionStatement", + "src": "1849:16:2" + }, + { + "expression": { + "id": 843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 836, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 822, + "src": "1879:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 837, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 825, + "src": "1888:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "arguments": [ + { + "id": 840, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 820, + "src": "1908:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 838, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4179, + "src": "1892:8:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$4179_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1901:6:2", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4178, + "src": "1892:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1892:24:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1888:28:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1879:37:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 844, + "nodeType": "ExpressionStatement", + "src": "1879:37:2" + } + ] + } + ] + }, + "documentation": { + "id": 813, + "nodeType": "StructuredDocumentation", + "src": "1583:105:2", + "text": " @dev Returns the addition of two unsigned integers, with a success flag (no overflow)." + }, + "id": 847, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryAdd", + "nameLocation": "1702:6:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 818, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 815, + "mutability": "mutable", + "name": "a", + "nameLocation": "1717:1:2", + "nodeType": "VariableDeclaration", + "scope": 847, + "src": "1709:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 814, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1709:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 817, + "mutability": "mutable", + "name": "b", + "nameLocation": "1728:1:2", + "nodeType": "VariableDeclaration", + "scope": 847, + "src": "1720:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 816, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1720:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1708:22:2" + }, + "returnParameters": { + "id": 823, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 820, + "mutability": "mutable", + "name": "success", + "nameLocation": "1759:7:2", + "nodeType": "VariableDeclaration", + "scope": 847, + "src": "1754:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 819, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1754:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 822, + "mutability": "mutable", + "name": "result", + "nameLocation": "1776:6:2", + "nodeType": "VariableDeclaration", + "scope": 847, + "src": "1768:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 821, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1768:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1753:30:2" + }, + "scope": 2414, + "src": "1693:240:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 881, + "nodeType": "Block", + "src": "2143:149:2", + "statements": [ + { + "id": 880, + "nodeType": "UncheckedBlock", + "src": "2153:133:2", + "statements": [ + { + "assignments": [ + 860 + ], + "declarations": [ + { + "constant": false, + "id": 860, + "mutability": "mutable", + "name": "c", + "nameLocation": "2185:1:2", + "nodeType": "VariableDeclaration", + "scope": 880, + "src": "2177:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 859, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2177:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 864, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 861, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 850, + "src": "2189:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 862, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 852, + "src": "2193:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2189:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2177:17:2" + }, + { + "expression": { + "id": 869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 865, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 855, + "src": "2208:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 866, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 860, + "src": "2218:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 867, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 850, + "src": "2223:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2218:6:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2208:16:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 870, + "nodeType": "ExpressionStatement", + "src": "2208:16:2" + }, + { + "expression": { + "id": 878, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 871, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 857, + "src": "2238:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 872, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 860, + "src": "2247:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "arguments": [ + { + "id": 875, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 855, + "src": "2267:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 873, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4179, + "src": "2251:8:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$4179_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 874, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2260:6:2", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4178, + "src": "2251:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2251:24:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2247:28:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2238:37:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 879, + "nodeType": "ExpressionStatement", + "src": "2238:37:2" + } + ] + } + ] + }, + "documentation": { + "id": 848, + "nodeType": "StructuredDocumentation", + "src": "1939:108:2", + "text": " @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow)." + }, + "id": 882, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "trySub", + "nameLocation": "2061:6:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 853, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 850, + "mutability": "mutable", + "name": "a", + "nameLocation": "2076:1:2", + "nodeType": "VariableDeclaration", + "scope": 882, + "src": "2068:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 849, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2068:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 852, + "mutability": "mutable", + "name": "b", + "nameLocation": "2087:1:2", + "nodeType": "VariableDeclaration", + "scope": 882, + "src": "2079:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 851, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2079:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2067:22:2" + }, + "returnParameters": { + "id": 858, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 855, + "mutability": "mutable", + "name": "success", + "nameLocation": "2118:7:2", + "nodeType": "VariableDeclaration", + "scope": 882, + "src": "2113:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 854, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2113:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 857, + "mutability": "mutable", + "name": "result", + "nameLocation": "2135:6:2", + "nodeType": "VariableDeclaration", + "scope": 882, + "src": "2127:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 856, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2127:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2112:30:2" + }, + "scope": 2414, + "src": "2052:240:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 911, + "nodeType": "Block", + "src": "2505:391:2", + "statements": [ + { + "id": 910, + "nodeType": "UncheckedBlock", + "src": "2515:375:2", + "statements": [ + { + "assignments": [ + 895 + ], + "declarations": [ + { + "constant": false, + "id": 895, + "mutability": "mutable", + "name": "c", + "nameLocation": "2547:1:2", + "nodeType": "VariableDeclaration", + "scope": 910, + "src": "2539:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 894, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2539:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 899, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 896, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 885, + "src": "2551:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 897, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 887, + "src": "2555:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2551:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2539:17:2" + }, + { + "AST": { + "nativeSrc": "2595:188:2", + "nodeType": "YulBlock", + "src": "2595:188:2", + "statements": [ + { + "nativeSrc": "2727:42:2", + "nodeType": "YulAssignment", + "src": "2727:42:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "2748:1:2", + "nodeType": "YulIdentifier", + "src": "2748:1:2" + }, + { + "name": "a", + "nativeSrc": "2751:1:2", + "nodeType": "YulIdentifier", + "src": "2751:1:2" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "2744:3:2", + "nodeType": "YulIdentifier", + "src": "2744:3:2" + }, + "nativeSrc": "2744:9:2", + "nodeType": "YulFunctionCall", + "src": "2744:9:2" + }, + { + "name": "b", + "nativeSrc": "2755:1:2", + "nodeType": "YulIdentifier", + "src": "2755:1:2" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "2741:2:2", + "nodeType": "YulIdentifier", + "src": "2741:2:2" + }, + "nativeSrc": "2741:16:2", + "nodeType": "YulFunctionCall", + "src": "2741:16:2" + }, + { + "arguments": [ + { + "name": "a", + "nativeSrc": "2766:1:2", + "nodeType": "YulIdentifier", + "src": "2766:1:2" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2759:6:2", + "nodeType": "YulIdentifier", + "src": "2759:6:2" + }, + "nativeSrc": "2759:9:2", + "nodeType": "YulFunctionCall", + "src": "2759:9:2" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "2738:2:2", + "nodeType": "YulIdentifier", + "src": "2738:2:2" + }, + "nativeSrc": "2738:31:2", + "nodeType": "YulFunctionCall", + "src": "2738:31:2" + }, + "variableNames": [ + { + "name": "success", + "nativeSrc": "2727:7:2", + "nodeType": "YulIdentifier", + "src": "2727:7:2" + } + ] + } + ] + }, + "evmVersion": "prague", + "externalReferences": [ + { + "declaration": 885, + "isOffset": false, + "isSlot": false, + "src": "2751:1:2", + "valueSize": 1 + }, + { + "declaration": 885, + "isOffset": false, + "isSlot": false, + "src": "2766:1:2", + "valueSize": 1 + }, + { + "declaration": 887, + "isOffset": false, + "isSlot": false, + "src": "2755:1:2", + "valueSize": 1 + }, + { + "declaration": 895, + "isOffset": false, + "isSlot": false, + "src": "2748:1:2", + "valueSize": 1 + }, + { + "declaration": 890, + "isOffset": false, + "isSlot": false, + "src": "2727:7:2", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 900, + "nodeType": "InlineAssembly", + "src": "2570:213:2" + }, + { + "expression": { + "id": 908, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 901, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 892, + "src": "2842:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 902, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 895, + "src": "2851:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "arguments": [ + { + "id": 905, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 890, + "src": "2871:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 903, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4179, + "src": "2855:8:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$4179_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2864:6:2", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4178, + "src": "2855:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2855:24:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2851:28:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2842:37:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 909, + "nodeType": "ExpressionStatement", + "src": "2842:37:2" + } + ] + } + ] + }, + "documentation": { + "id": 883, + "nodeType": "StructuredDocumentation", + "src": "2298:111:2", + "text": " @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow)." + }, + "id": 912, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryMul", + "nameLocation": "2423:6:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 888, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 885, + "mutability": "mutable", + "name": "a", + "nameLocation": "2438:1:2", + "nodeType": "VariableDeclaration", + "scope": 912, + "src": "2430:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 884, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2430:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 887, + "mutability": "mutable", + "name": "b", + "nameLocation": "2449:1:2", + "nodeType": "VariableDeclaration", + "scope": 912, + "src": "2441:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 886, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2441:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2429:22:2" + }, + "returnParameters": { + "id": 893, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 890, + "mutability": "mutable", + "name": "success", + "nameLocation": "2480:7:2", + "nodeType": "VariableDeclaration", + "scope": 912, + "src": "2475:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 889, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2475:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 892, + "mutability": "mutable", + "name": "result", + "nameLocation": "2497:6:2", + "nodeType": "VariableDeclaration", + "scope": 912, + "src": "2489:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 891, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2489:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2474:30:2" + }, + "scope": 2414, + "src": "2414:482:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 932, + "nodeType": "Block", + "src": "3111:231:2", + "statements": [ + { + "id": 931, + "nodeType": "UncheckedBlock", + "src": "3121:215:2", + "statements": [ + { + "expression": { + "id": 928, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 924, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 920, + "src": "3145:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 925, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 917, + "src": "3155:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 926, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3159:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3155:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3145:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 929, + "nodeType": "ExpressionStatement", + "src": "3145:15:2" + }, + { + "AST": { + "nativeSrc": "3199:127:2", + "nodeType": "YulBlock", + "src": "3199:127:2", + "statements": [ + { + "nativeSrc": "3293:19:2", + "nodeType": "YulAssignment", + "src": "3293:19:2", + "value": { + "arguments": [ + { + "name": "a", + "nativeSrc": "3307:1:2", + "nodeType": "YulIdentifier", + "src": "3307:1:2" + }, + { + "name": "b", + "nativeSrc": "3310:1:2", + "nodeType": "YulIdentifier", + "src": "3310:1:2" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "3303:3:2", + "nodeType": "YulIdentifier", + "src": "3303:3:2" + }, + "nativeSrc": "3303:9:2", + "nodeType": "YulFunctionCall", + "src": "3303:9:2" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "3293:6:2", + "nodeType": "YulIdentifier", + "src": "3293:6:2" + } + ] + } + ] + }, + "evmVersion": "prague", + "externalReferences": [ + { + "declaration": 915, + "isOffset": false, + "isSlot": false, + "src": "3307:1:2", + "valueSize": 1 + }, + { + "declaration": 917, + "isOffset": false, + "isSlot": false, + "src": "3310:1:2", + "valueSize": 1 + }, + { + "declaration": 922, + "isOffset": false, + "isSlot": false, + "src": "3293:6:2", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 930, + "nodeType": "InlineAssembly", + "src": "3174:152:2" + } + ] + } + ] + }, + "documentation": { + "id": 913, + "nodeType": "StructuredDocumentation", + "src": "2902:113:2", + "text": " @dev Returns the division of two unsigned integers, with a success flag (no division by zero)." + }, + "id": 933, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryDiv", + "nameLocation": "3029:6:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 918, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 915, + "mutability": "mutable", + "name": "a", + "nameLocation": "3044:1:2", + "nodeType": "VariableDeclaration", + "scope": 933, + "src": "3036:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 914, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3036:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 917, + "mutability": "mutable", + "name": "b", + "nameLocation": "3055:1:2", + "nodeType": "VariableDeclaration", + "scope": 933, + "src": "3047:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 916, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3047:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3035:22:2" + }, + "returnParameters": { + "id": 923, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 920, + "mutability": "mutable", + "name": "success", + "nameLocation": "3086:7:2", + "nodeType": "VariableDeclaration", + "scope": 933, + "src": "3081:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 919, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3081:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 922, + "mutability": "mutable", + "name": "result", + "nameLocation": "3103:6:2", + "nodeType": "VariableDeclaration", + "scope": 933, + "src": "3095:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 921, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3095:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3080:30:2" + }, + "scope": 2414, + "src": "3020:322:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 953, + "nodeType": "Block", + "src": "3567:231:2", + "statements": [ + { + "id": 952, + "nodeType": "UncheckedBlock", + "src": "3577:215:2", + "statements": [ + { + "expression": { + "id": 949, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 945, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 941, + "src": "3601:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 946, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 938, + "src": "3611:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 947, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3615:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3611:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3601:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 950, + "nodeType": "ExpressionStatement", + "src": "3601:15:2" + }, + { + "AST": { + "nativeSrc": "3655:127:2", + "nodeType": "YulBlock", + "src": "3655:127:2", + "statements": [ + { + "nativeSrc": "3749:19:2", + "nodeType": "YulAssignment", + "src": "3749:19:2", + "value": { + "arguments": [ + { + "name": "a", + "nativeSrc": "3763:1:2", + "nodeType": "YulIdentifier", + "src": "3763:1:2" + }, + { + "name": "b", + "nativeSrc": "3766:1:2", + "nodeType": "YulIdentifier", + "src": "3766:1:2" + } + ], + "functionName": { + "name": "mod", + "nativeSrc": "3759:3:2", + "nodeType": "YulIdentifier", + "src": "3759:3:2" + }, + "nativeSrc": "3759:9:2", + "nodeType": "YulFunctionCall", + "src": "3759:9:2" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "3749:6:2", + "nodeType": "YulIdentifier", + "src": "3749:6:2" + } + ] + } + ] + }, + "evmVersion": "prague", + "externalReferences": [ + { + "declaration": 936, + "isOffset": false, + "isSlot": false, + "src": "3763:1:2", + "valueSize": 1 + }, + { + "declaration": 938, + "isOffset": false, + "isSlot": false, + "src": "3766:1:2", + "valueSize": 1 + }, + { + "declaration": 943, + "isOffset": false, + "isSlot": false, + "src": "3749:6:2", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 951, + "nodeType": "InlineAssembly", + "src": "3630:152:2" + } + ] + } + ] + }, + "documentation": { + "id": 934, + "nodeType": "StructuredDocumentation", + "src": "3348:123:2", + "text": " @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero)." + }, + "id": 954, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryMod", + "nameLocation": "3485:6:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 939, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 936, + "mutability": "mutable", + "name": "a", + "nameLocation": "3500:1:2", + "nodeType": "VariableDeclaration", + "scope": 954, + "src": "3492:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 935, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3492:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 938, + "mutability": "mutable", + "name": "b", + "nameLocation": "3511:1:2", + "nodeType": "VariableDeclaration", + "scope": 954, + "src": "3503:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 937, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3503:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3491:22:2" + }, + "returnParameters": { + "id": 944, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 941, + "mutability": "mutable", + "name": "success", + "nameLocation": "3542:7:2", + "nodeType": "VariableDeclaration", + "scope": 954, + "src": "3537:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 940, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3537:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 943, + "mutability": "mutable", + "name": "result", + "nameLocation": "3559:6:2", + "nodeType": "VariableDeclaration", + "scope": 954, + "src": "3551:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 942, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3551:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3536:30:2" + }, + "scope": 2414, + "src": "3476:322:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 983, + "nodeType": "Block", + "src": "3989:122:2", + "statements": [ + { + "assignments": [ + 965, + 967 + ], + "declarations": [ + { + "constant": false, + "id": 965, + "mutability": "mutable", + "name": "success", + "nameLocation": "4005:7:2", + "nodeType": "VariableDeclaration", + "scope": 983, + "src": "4000:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 964, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4000:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 967, + "mutability": "mutable", + "name": "result", + "nameLocation": "4022:6:2", + "nodeType": "VariableDeclaration", + "scope": 983, + "src": "4014:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 966, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4014:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 972, + "initialValue": { + "arguments": [ + { + "id": 969, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 957, + "src": "4039:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 970, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 959, + "src": "4042:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 968, + "name": "tryAdd", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 847, + "src": "4032:6:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (bool,uint256)" + } + }, + "id": 971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4032:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3999:45:2" + }, + { + "expression": { + "arguments": [ + { + "id": 974, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 965, + "src": "4069:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 975, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 967, + "src": "4078:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "arguments": [ + { + "id": 978, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4091:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 977, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4091:7:2", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 976, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "4086:4:2", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 979, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4086:13:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 980, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4100:3:2", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "4086:17:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 973, + "name": "ternary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1061, + "src": "4061:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bool,uint256,uint256) pure returns (uint256)" + } + }, + "id": 981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4061:43:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 963, + "id": 982, + "nodeType": "Return", + "src": "4054:50:2" + } + ] + }, + "documentation": { + "id": 955, + "nodeType": "StructuredDocumentation", + "src": "3804:103:2", + "text": " @dev Unsigned saturating addition, bounds to `2²⁵⁶ - 1` instead of overflowing." + }, + "id": 984, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "saturatingAdd", + "nameLocation": "3921:13:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 960, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 957, + "mutability": "mutable", + "name": "a", + "nameLocation": "3943:1:2", + "nodeType": "VariableDeclaration", + "scope": 984, + "src": "3935:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 956, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3935:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 959, + "mutability": "mutable", + "name": "b", + "nameLocation": "3954:1:2", + "nodeType": "VariableDeclaration", + "scope": 984, + "src": "3946:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 958, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3946:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3934:22:2" + }, + "returnParameters": { + "id": 963, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 962, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 984, + "src": "3980:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 961, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3980:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3979:9:2" + }, + "scope": 2414, + "src": "3912:199:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1003, + "nodeType": "Block", + "src": "4294:73:2", + "statements": [ + { + "assignments": [ + null, + 995 + ], + "declarations": [ + null, + { + "constant": false, + "id": 995, + "mutability": "mutable", + "name": "result", + "nameLocation": "4315:6:2", + "nodeType": "VariableDeclaration", + "scope": 1003, + "src": "4307:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 994, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4307:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1000, + "initialValue": { + "arguments": [ + { + "id": 997, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 987, + "src": "4332:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 998, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "4335:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 996, + "name": "trySub", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 882, + "src": "4325:6:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (bool,uint256)" + } + }, + "id": 999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4325:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4304:33:2" + }, + { + "expression": { + "id": 1001, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 995, + "src": "4354:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 993, + "id": 1002, + "nodeType": "Return", + "src": "4347:13:2" + } + ] + }, + "documentation": { + "id": 985, + "nodeType": "StructuredDocumentation", + "src": "4117:95:2", + "text": " @dev Unsigned saturating subtraction, bounds to zero instead of overflowing." + }, + "id": 1004, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "saturatingSub", + "nameLocation": "4226:13:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 990, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 987, + "mutability": "mutable", + "name": "a", + "nameLocation": "4248:1:2", + "nodeType": "VariableDeclaration", + "scope": 1004, + "src": "4240:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 986, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4240:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 989, + "mutability": "mutable", + "name": "b", + "nameLocation": "4259:1:2", + "nodeType": "VariableDeclaration", + "scope": 1004, + "src": "4251:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 988, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4251:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4239:22:2" + }, + "returnParameters": { + "id": 993, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 992, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1004, + "src": "4285:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 991, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4285:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4284:9:2" + }, + "scope": 2414, + "src": "4217:150:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1033, + "nodeType": "Block", + "src": "4564:122:2", + "statements": [ + { + "assignments": [ + 1015, + 1017 + ], + "declarations": [ + { + "constant": false, + "id": 1015, + "mutability": "mutable", + "name": "success", + "nameLocation": "4580:7:2", + "nodeType": "VariableDeclaration", + "scope": 1033, + "src": "4575:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1014, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4575:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1017, + "mutability": "mutable", + "name": "result", + "nameLocation": "4597:6:2", + "nodeType": "VariableDeclaration", + "scope": 1033, + "src": "4589:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1016, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4589:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1022, + "initialValue": { + "arguments": [ + { + "id": 1019, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1007, + "src": "4614:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1020, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1009, + "src": "4617:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1018, + "name": "tryMul", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 912, + "src": "4607:6:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (bool,uint256)" + } + }, + "id": 1021, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4607:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4574:45:2" + }, + { + "expression": { + "arguments": [ + { + "id": 1024, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1015, + "src": "4644:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 1025, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1017, + "src": "4653:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "arguments": [ + { + "id": 1028, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4666:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 1027, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4666:7:2", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 1026, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "4661:4:2", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1029, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4661:13:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 1030, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4675:3:2", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "4661:17:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1023, + "name": "ternary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1061, + "src": "4636:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bool,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1031, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4636:43:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1013, + "id": 1032, + "nodeType": "Return", + "src": "4629:50:2" + } + ] + }, + "documentation": { + "id": 1005, + "nodeType": "StructuredDocumentation", + "src": "4373:109:2", + "text": " @dev Unsigned saturating multiplication, bounds to `2²⁵⁶ - 1` instead of overflowing." + }, + "id": 1034, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "saturatingMul", + "nameLocation": "4496:13:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1010, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1007, + "mutability": "mutable", + "name": "a", + "nameLocation": "4518:1:2", + "nodeType": "VariableDeclaration", + "scope": 1034, + "src": "4510:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1006, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4510:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1009, + "mutability": "mutable", + "name": "b", + "nameLocation": "4529:1:2", + "nodeType": "VariableDeclaration", + "scope": 1034, + "src": "4521:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1008, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4521:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4509:22:2" + }, + "returnParameters": { + "id": 1013, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1012, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1034, + "src": "4555:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1011, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4555:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4554:9:2" + }, + "scope": 2414, + "src": "4487:199:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1060, + "nodeType": "Block", + "src": "5158:207:2", + "statements": [ + { + "id": 1059, + "nodeType": "UncheckedBlock", + "src": "5168:191:2", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1046, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1041, + "src": "5306:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1049, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1047, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "5312:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "id": 1048, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1041, + "src": "5316:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5312:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1050, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5311:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "arguments": [ + { + "id": 1053, + "name": "condition", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "5337:9:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 1051, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4179, + "src": "5321:8:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$4179_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 1052, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5330:6:2", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4178, + "src": "5321:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 1054, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5321:26:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5311:36:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1056, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5310:38:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5306:42:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1045, + "id": 1058, + "nodeType": "Return", + "src": "5299:49:2" + } + ] + } + ] + }, + "documentation": { + "id": 1035, + "nodeType": "StructuredDocumentation", + "src": "4692:374:2", + "text": " @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n one branch when needed, making this function more expensive." + }, + "id": 1061, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ternary", + "nameLocation": "5080:7:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1042, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1037, + "mutability": "mutable", + "name": "condition", + "nameLocation": "5093:9:2", + "nodeType": "VariableDeclaration", + "scope": 1061, + "src": "5088:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1036, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5088:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1039, + "mutability": "mutable", + "name": "a", + "nameLocation": "5112:1:2", + "nodeType": "VariableDeclaration", + "scope": 1061, + "src": "5104:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1038, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5104:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1041, + "mutability": "mutable", + "name": "b", + "nameLocation": "5123:1:2", + "nodeType": "VariableDeclaration", + "scope": 1061, + "src": "5115:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1040, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5115:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5087:38:2" + }, + "returnParameters": { + "id": 1045, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1044, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1061, + "src": "5149:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1043, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5149:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5148:9:2" + }, + "scope": 2414, + "src": "5071:294:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1079, + "nodeType": "Block", + "src": "5502:44:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1074, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1072, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1064, + "src": "5527:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 1073, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1066, + "src": "5531:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5527:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 1075, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1064, + "src": "5534:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1076, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1066, + "src": "5537:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1071, + "name": "ternary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1061, + "src": "5519:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bool,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5519:20:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1070, + "id": 1078, + "nodeType": "Return", + "src": "5512:27:2" + } + ] + }, + "documentation": { + "id": 1062, + "nodeType": "StructuredDocumentation", + "src": "5371:59:2", + "text": " @dev Returns the largest of two numbers." + }, + "id": 1080, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "max", + "nameLocation": "5444:3:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1067, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1064, + "mutability": "mutable", + "name": "a", + "nameLocation": "5456:1:2", + "nodeType": "VariableDeclaration", + "scope": 1080, + "src": "5448:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1063, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5448:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1066, + "mutability": "mutable", + "name": "b", + "nameLocation": "5467:1:2", + "nodeType": "VariableDeclaration", + "scope": 1080, + "src": "5459:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1065, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5459:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5447:22:2" + }, + "returnParameters": { + "id": 1070, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1069, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1080, + "src": "5493:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1068, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5493:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5492:9:2" + }, + "scope": 2414, + "src": "5435:111:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1098, + "nodeType": "Block", + "src": "5684:44:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1093, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1091, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1083, + "src": "5709:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 1092, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1085, + "src": "5713:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5709:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 1094, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1083, + "src": "5716:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1095, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1085, + "src": "5719:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1090, + "name": "ternary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1061, + "src": "5701:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bool,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1096, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5701:20:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1089, + "id": 1097, + "nodeType": "Return", + "src": "5694:27:2" + } + ] + }, + "documentation": { + "id": 1081, + "nodeType": "StructuredDocumentation", + "src": "5552:60:2", + "text": " @dev Returns the smallest of two numbers." + }, + "id": 1099, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "min", + "nameLocation": "5626:3:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1086, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1083, + "mutability": "mutable", + "name": "a", + "nameLocation": "5638:1:2", + "nodeType": "VariableDeclaration", + "scope": 1099, + "src": "5630:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1082, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5630:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1085, + "mutability": "mutable", + "name": "b", + "nameLocation": "5649:1:2", + "nodeType": "VariableDeclaration", + "scope": 1099, + "src": "5641:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1084, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5641:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5629:22:2" + }, + "returnParameters": { + "id": 1089, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1088, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1099, + "src": "5675:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1087, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5675:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5674:9:2" + }, + "scope": 2414, + "src": "5617:111:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1121, + "nodeType": "Block", + "src": "5912:82:2", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1109, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1102, + "src": "5967:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 1110, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1104, + "src": "5971:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5967:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1112, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5966:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1113, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1102, + "src": "5977:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "id": 1114, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1104, + "src": "5981:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5977:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1116, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5976:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "32", + "id": 1117, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5986:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "5976:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5966:21:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1108, + "id": 1120, + "nodeType": "Return", + "src": "5959:28:2" + } + ] + }, + "documentation": { + "id": 1100, + "nodeType": "StructuredDocumentation", + "src": "5734:102:2", + "text": " @dev Returns the average of two numbers. The result is rounded towards\n zero." + }, + "id": 1122, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "average", + "nameLocation": "5850:7:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1105, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1102, + "mutability": "mutable", + "name": "a", + "nameLocation": "5866:1:2", + "nodeType": "VariableDeclaration", + "scope": 1122, + "src": "5858:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1101, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5858:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1104, + "mutability": "mutable", + "name": "b", + "nameLocation": "5877:1:2", + "nodeType": "VariableDeclaration", + "scope": 1122, + "src": "5869:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1103, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5869:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5857:22:2" + }, + "returnParameters": { + "id": 1108, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1107, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1122, + "src": "5903:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1106, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5903:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5902:9:2" + }, + "scope": 2414, + "src": "5841:153:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1162, + "nodeType": "Block", + "src": "6286:633:2", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1132, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1127, + "src": "6300:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1133, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6305:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6300:6:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1143, + "nodeType": "IfStatement", + "src": "6296:150:2", + "trueBody": { + "id": 1142, + "nodeType": "Block", + "src": "6308:138:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 1138, + "name": "Panic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 772, + "src": "6412:5:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Panic_$772_$", + "typeString": "type(library Panic)" + } + }, + "id": 1139, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6418:16:2", + "memberName": "DIVISION_BY_ZERO", + "nodeType": "MemberAccess", + "referencedDeclaration": 739, + "src": "6412:22:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 1135, + "name": "Panic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 772, + "src": "6400:5:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Panic_$772_$", + "typeString": "type(library Panic)" + } + }, + "id": 1137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6406:5:2", + "memberName": "panic", + "nodeType": "MemberAccess", + "referencedDeclaration": 771, + "src": "6400:11:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 1140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6400:35:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1141, + "nodeType": "ExpressionStatement", + "src": "6400:35:2" + } + ] + } + }, + { + "id": 1161, + "nodeType": "UncheckedBlock", + "src": "6829:84:2", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1146, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1125, + "src": "6876:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 1147, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6880:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6876:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 1144, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4179, + "src": "6860:8:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$4179_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 1145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6869:6:2", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4178, + "src": "6860:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 1149, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6860:22:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1150, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1125, + "src": "6887:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 1151, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6891:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "6887:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1153, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6886:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 1154, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1127, + "src": "6896:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6886:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 1156, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6900:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "6886:15:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1158, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6885:17:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6860:42:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1131, + "id": 1160, + "nodeType": "Return", + "src": "6853:49:2" + } + ] + } + ] + }, + "documentation": { + "id": 1123, + "nodeType": "StructuredDocumentation", + "src": "6000:210:2", + "text": " @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero." + }, + "id": 1163, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ceilDiv", + "nameLocation": "6224:7:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1128, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1125, + "mutability": "mutable", + "name": "a", + "nameLocation": "6240:1:2", + "nodeType": "VariableDeclaration", + "scope": 1163, + "src": "6232:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1124, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6232:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1127, + "mutability": "mutable", + "name": "b", + "nameLocation": "6251:1:2", + "nodeType": "VariableDeclaration", + "scope": 1163, + "src": "6243:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1126, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6243:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6231:22:2" + }, + "returnParameters": { + "id": 1131, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1130, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1163, + "src": "6277:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1129, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6277:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6276:9:2" + }, + "scope": 2414, + "src": "6215:704:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1298, + "nodeType": "Block", + "src": "7340:3585:2", + "statements": [ + { + "id": 1297, + "nodeType": "UncheckedBlock", + "src": "7350:3569:2", + "statements": [ + { + "assignments": [ + 1176, + 1178 + ], + "declarations": [ + { + "constant": false, + "id": 1176, + "mutability": "mutable", + "name": "high", + "nameLocation": "7383:4:2", + "nodeType": "VariableDeclaration", + "scope": 1297, + "src": "7375:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1175, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7375:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1178, + "mutability": "mutable", + "name": "low", + "nameLocation": "7397:3:2", + "nodeType": "VariableDeclaration", + "scope": 1297, + "src": "7389:11:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1177, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7389:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1183, + "initialValue": { + "arguments": [ + { + "id": 1180, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1166, + "src": "7411:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1181, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1168, + "src": "7414:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1179, + "name": "mul512", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 812, + "src": "7404:6:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256,uint256)" + } + }, + "id": 1182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7404:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7374:42:2" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1184, + "name": "high", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1176, + "src": "7498:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7506:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7498:9:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1192, + "nodeType": "IfStatement", + "src": "7494:365:2", + "trueBody": { + "id": 1191, + "nodeType": "Block", + "src": "7509:350:2", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1187, + "name": "low", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1178, + "src": "7827:3:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 1188, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1170, + "src": "7833:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7827:17:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1174, + "id": 1190, + "nodeType": "Return", + "src": "7820:24:2" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1193, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1170, + "src": "7969:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 1194, + "name": "high", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1176, + "src": "7984:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7969:19:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1211, + "nodeType": "IfStatement", + "src": "7965:142:2", + "trueBody": { + "id": 1210, + "nodeType": "Block", + "src": "7990:117:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1200, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1170, + "src": "8028:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1201, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8043:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8028:16:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "expression": { + "id": 1203, + "name": "Panic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 772, + "src": "8046:5:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Panic_$772_$", + "typeString": "type(library Panic)" + } + }, + "id": 1204, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8052:16:2", + "memberName": "DIVISION_BY_ZERO", + "nodeType": "MemberAccess", + "referencedDeclaration": 739, + "src": "8046:22:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 1205, + "name": "Panic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 772, + "src": "8070:5:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Panic_$772_$", + "typeString": "type(library Panic)" + } + }, + "id": 1206, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8076:14:2", + "memberName": "UNDER_OVERFLOW", + "nodeType": "MemberAccess", + "referencedDeclaration": 735, + "src": "8070:20:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1199, + "name": "ternary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1061, + "src": "8020:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bool,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8020:71:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 1196, + "name": "Panic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 772, + "src": "8008:5:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Panic_$772_$", + "typeString": "type(library Panic)" + } + }, + "id": 1198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8014:5:2", + "memberName": "panic", + "nodeType": "MemberAccess", + "referencedDeclaration": 771, + "src": "8008:11:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 1208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8008:84:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1209, + "nodeType": "ExpressionStatement", + "src": "8008:84:2" + } + ] + } + }, + { + "assignments": [ + 1213 + ], + "declarations": [ + { + "constant": false, + "id": 1213, + "mutability": "mutable", + "name": "remainder", + "nameLocation": "8367:9:2", + "nodeType": "VariableDeclaration", + "scope": 1297, + "src": "8359:17:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1212, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8359:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1214, + "nodeType": "VariableDeclarationStatement", + "src": "8359:17:2" + }, + { + "AST": { + "nativeSrc": "8415:283:2", + "nodeType": "YulBlock", + "src": "8415:283:2", + "statements": [ + { + "nativeSrc": "8484:38:2", + "nodeType": "YulAssignment", + "src": "8484:38:2", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "8504:1:2", + "nodeType": "YulIdentifier", + "src": "8504:1:2" + }, + { + "name": "y", + "nativeSrc": "8507:1:2", + "nodeType": "YulIdentifier", + "src": "8507:1:2" + }, + { + "name": "denominator", + "nativeSrc": "8510:11:2", + "nodeType": "YulIdentifier", + "src": "8510:11:2" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "8497:6:2", + "nodeType": "YulIdentifier", + "src": "8497:6:2" + }, + "nativeSrc": "8497:25:2", + "nodeType": "YulFunctionCall", + "src": "8497:25:2" + }, + "variableNames": [ + { + "name": "remainder", + "nativeSrc": "8484:9:2", + "nodeType": "YulIdentifier", + "src": "8484:9:2" + } + ] + }, + { + "nativeSrc": "8604:37:2", + "nodeType": "YulAssignment", + "src": "8604:37:2", + "value": { + "arguments": [ + { + "name": "high", + "nativeSrc": "8616:4:2", + "nodeType": "YulIdentifier", + "src": "8616:4:2" + }, + { + "arguments": [ + { + "name": "remainder", + "nativeSrc": "8625:9:2", + "nodeType": "YulIdentifier", + "src": "8625:9:2" + }, + { + "name": "low", + "nativeSrc": "8636:3:2", + "nodeType": "YulIdentifier", + "src": "8636:3:2" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "8622:2:2", + "nodeType": "YulIdentifier", + "src": "8622:2:2" + }, + "nativeSrc": "8622:18:2", + "nodeType": "YulFunctionCall", + "src": "8622:18:2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8612:3:2", + "nodeType": "YulIdentifier", + "src": "8612:3:2" + }, + "nativeSrc": "8612:29:2", + "nodeType": "YulFunctionCall", + "src": "8612:29:2" + }, + "variableNames": [ + { + "name": "high", + "nativeSrc": "8604:4:2", + "nodeType": "YulIdentifier", + "src": "8604:4:2" + } + ] + }, + { + "nativeSrc": "8658:26:2", + "nodeType": "YulAssignment", + "src": "8658:26:2", + "value": { + "arguments": [ + { + "name": "low", + "nativeSrc": "8669:3:2", + "nodeType": "YulIdentifier", + "src": "8669:3:2" + }, + { + "name": "remainder", + "nativeSrc": "8674:9:2", + "nodeType": "YulIdentifier", + "src": "8674:9:2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8665:3:2", + "nodeType": "YulIdentifier", + "src": "8665:3:2" + }, + "nativeSrc": "8665:19:2", + "nodeType": "YulFunctionCall", + "src": "8665:19:2" + }, + "variableNames": [ + { + "name": "low", + "nativeSrc": "8658:3:2", + "nodeType": "YulIdentifier", + "src": "8658:3:2" + } + ] + } + ] + }, + "evmVersion": "prague", + "externalReferences": [ + { + "declaration": 1170, + "isOffset": false, + "isSlot": false, + "src": "8510:11:2", + "valueSize": 1 + }, + { + "declaration": 1176, + "isOffset": false, + "isSlot": false, + "src": "8604:4:2", + "valueSize": 1 + }, + { + "declaration": 1176, + "isOffset": false, + "isSlot": false, + "src": "8616:4:2", + "valueSize": 1 + }, + { + "declaration": 1178, + "isOffset": false, + "isSlot": false, + "src": "8636:3:2", + "valueSize": 1 + }, + { + "declaration": 1178, + "isOffset": false, + "isSlot": false, + "src": "8658:3:2", + "valueSize": 1 + }, + { + "declaration": 1178, + "isOffset": false, + "isSlot": false, + "src": "8669:3:2", + "valueSize": 1 + }, + { + "declaration": 1213, + "isOffset": false, + "isSlot": false, + "src": "8484:9:2", + "valueSize": 1 + }, + { + "declaration": 1213, + "isOffset": false, + "isSlot": false, + "src": "8625:9:2", + "valueSize": 1 + }, + { + "declaration": 1213, + "isOffset": false, + "isSlot": false, + "src": "8674:9:2", + "valueSize": 1 + }, + { + "declaration": 1166, + "isOffset": false, + "isSlot": false, + "src": "8504:1:2", + "valueSize": 1 + }, + { + "declaration": 1168, + "isOffset": false, + "isSlot": false, + "src": "8507:1:2", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 1215, + "nodeType": "InlineAssembly", + "src": "8390:308:2" + }, + { + "assignments": [ + 1217 + ], + "declarations": [ + { + "constant": false, + "id": 1217, + "mutability": "mutable", + "name": "twos", + "nameLocation": "8910:4:2", + "nodeType": "VariableDeclaration", + "scope": 1297, + "src": "8902:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1216, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8902:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1224, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1218, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1170, + "src": "8917:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "30", + "id": 1219, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8932:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1220, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1170, + "src": "8936:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8932:15:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1222, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8931:17:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8917:31:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8902:46:2" + }, + { + "AST": { + "nativeSrc": "8987:359:2", + "nodeType": "YulBlock", + "src": "8987:359:2", + "statements": [ + { + "nativeSrc": "9052:37:2", + "nodeType": "YulAssignment", + "src": "9052:37:2", + "value": { + "arguments": [ + { + "name": "denominator", + "nativeSrc": "9071:11:2", + "nodeType": "YulIdentifier", + "src": "9071:11:2" + }, + { + "name": "twos", + "nativeSrc": "9084:4:2", + "nodeType": "YulIdentifier", + "src": "9084:4:2" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "9067:3:2", + "nodeType": "YulIdentifier", + "src": "9067:3:2" + }, + "nativeSrc": "9067:22:2", + "nodeType": "YulFunctionCall", + "src": "9067:22:2" + }, + "variableNames": [ + { + "name": "denominator", + "nativeSrc": "9052:11:2", + "nodeType": "YulIdentifier", + "src": "9052:11:2" + } + ] + }, + { + "nativeSrc": "9153:21:2", + "nodeType": "YulAssignment", + "src": "9153:21:2", + "value": { + "arguments": [ + { + "name": "low", + "nativeSrc": "9164:3:2", + "nodeType": "YulIdentifier", + "src": "9164:3:2" + }, + { + "name": "twos", + "nativeSrc": "9169:4:2", + "nodeType": "YulIdentifier", + "src": "9169:4:2" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "9160:3:2", + "nodeType": "YulIdentifier", + "src": "9160:3:2" + }, + "nativeSrc": "9160:14:2", + "nodeType": "YulFunctionCall", + "src": "9160:14:2" + }, + "variableNames": [ + { + "name": "low", + "nativeSrc": "9153:3:2", + "nodeType": "YulIdentifier", + "src": "9153:3:2" + } + ] + }, + { + "nativeSrc": "9293:39:2", + "nodeType": "YulAssignment", + "src": "9293:39:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9313:1:2", + "nodeType": "YulLiteral", + "src": "9313:1:2", + "type": "", + "value": "0" + }, + { + "name": "twos", + "nativeSrc": "9316:4:2", + "nodeType": "YulIdentifier", + "src": "9316:4:2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "9309:3:2", + "nodeType": "YulIdentifier", + "src": "9309:3:2" + }, + "nativeSrc": "9309:12:2", + "nodeType": "YulFunctionCall", + "src": "9309:12:2" + }, + { + "name": "twos", + "nativeSrc": "9323:4:2", + "nodeType": "YulIdentifier", + "src": "9323:4:2" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "9305:3:2", + "nodeType": "YulIdentifier", + "src": "9305:3:2" + }, + "nativeSrc": "9305:23:2", + "nodeType": "YulFunctionCall", + "src": "9305:23:2" + }, + { + "kind": "number", + "nativeSrc": "9330:1:2", + "nodeType": "YulLiteral", + "src": "9330:1:2", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9301:3:2", + "nodeType": "YulIdentifier", + "src": "9301:3:2" + }, + "nativeSrc": "9301:31:2", + "nodeType": "YulFunctionCall", + "src": "9301:31:2" + }, + "variableNames": [ + { + "name": "twos", + "nativeSrc": "9293:4:2", + "nodeType": "YulIdentifier", + "src": "9293:4:2" + } + ] + } + ] + }, + "evmVersion": "prague", + "externalReferences": [ + { + "declaration": 1170, + "isOffset": false, + "isSlot": false, + "src": "9052:11:2", + "valueSize": 1 + }, + { + "declaration": 1170, + "isOffset": false, + "isSlot": false, + "src": "9071:11:2", + "valueSize": 1 + }, + { + "declaration": 1178, + "isOffset": false, + "isSlot": false, + "src": "9153:3:2", + "valueSize": 1 + }, + { + "declaration": 1178, + "isOffset": false, + "isSlot": false, + "src": "9164:3:2", + "valueSize": 1 + }, + { + "declaration": 1217, + "isOffset": false, + "isSlot": false, + "src": "9084:4:2", + "valueSize": 1 + }, + { + "declaration": 1217, + "isOffset": false, + "isSlot": false, + "src": "9169:4:2", + "valueSize": 1 + }, + { + "declaration": 1217, + "isOffset": false, + "isSlot": false, + "src": "9293:4:2", + "valueSize": 1 + }, + { + "declaration": 1217, + "isOffset": false, + "isSlot": false, + "src": "9316:4:2", + "valueSize": 1 + }, + { + "declaration": 1217, + "isOffset": false, + "isSlot": false, + "src": "9323:4:2", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 1225, + "nodeType": "InlineAssembly", + "src": "8962:384:2" + }, + { + "expression": { + "id": 1230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1226, + "name": "low", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1178, + "src": "9409:3:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1227, + "name": "high", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1176, + "src": "9416:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 1228, + "name": "twos", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1217, + "src": "9423:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9416:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9409:18:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1231, + "nodeType": "ExpressionStatement", + "src": "9409:18:2" + }, + { + "assignments": [ + 1233 + ], + "declarations": [ + { + "constant": false, + "id": 1233, + "mutability": "mutable", + "name": "inverse", + "nameLocation": "9770:7:2", + "nodeType": "VariableDeclaration", + "scope": 1297, + "src": "9762:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1232, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9762:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1240, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "33", + "id": 1234, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9781:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 1235, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1170, + "src": "9785:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9781:15:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1237, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9780:17:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "hexValue": "32", + "id": 1238, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9800:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "9780:21:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9762:39:2" + }, + { + "expression": { + "id": 1247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1241, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "10018:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 1242, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10029:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1243, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1170, + "src": "10033:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 1244, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "10047:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10033:21:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10029:25:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10018:36:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1248, + "nodeType": "ExpressionStatement", + "src": "10018:36:2" + }, + { + "expression": { + "id": 1255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1249, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "10088:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 1250, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10099:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1251, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1170, + "src": "10103:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 1252, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "10117:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10103:21:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10099:25:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10088:36:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1256, + "nodeType": "ExpressionStatement", + "src": "10088:36:2" + }, + { + "expression": { + "id": 1263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1257, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "10160:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 1258, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10171:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1259, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1170, + "src": "10175:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 1260, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "10189:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10175:21:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10171:25:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10160:36:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1264, + "nodeType": "ExpressionStatement", + "src": "10160:36:2" + }, + { + "expression": { + "id": 1271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1265, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "10231:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 1266, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10242:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1267, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1170, + "src": "10246:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 1268, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "10260:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10246:21:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10242:25:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10231:36:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1272, + "nodeType": "ExpressionStatement", + "src": "10231:36:2" + }, + { + "expression": { + "id": 1279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1273, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "10304:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 1274, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10315:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1275, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1170, + "src": "10319:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 1276, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "10333:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10319:21:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10315:25:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10304:36:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1280, + "nodeType": "ExpressionStatement", + "src": "10304:36:2" + }, + { + "expression": { + "id": 1287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1281, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "10378:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 1282, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10389:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1285, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1283, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1170, + "src": "10393:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 1284, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "10407:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10393:21:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10389:25:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10378:36:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1288, + "nodeType": "ExpressionStatement", + "src": "10378:36:2" + }, + { + "expression": { + "id": 1293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1289, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1173, + "src": "10859:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1290, + "name": "low", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1178, + "src": "10868:3:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 1291, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "10874:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10868:13:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10859:22:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1294, + "nodeType": "ExpressionStatement", + "src": "10859:22:2" + }, + { + "expression": { + "id": 1295, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1173, + "src": "10902:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1174, + "id": 1296, + "nodeType": "Return", + "src": "10895:13:2" + } + ] + } + ] + }, + "documentation": { + "id": 1164, + "nodeType": "StructuredDocumentation", + "src": "6925:312:2", + "text": " @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license." + }, + "id": 1299, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mulDiv", + "nameLocation": "7251:6:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1171, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1166, + "mutability": "mutable", + "name": "x", + "nameLocation": "7266:1:2", + "nodeType": "VariableDeclaration", + "scope": 1299, + "src": "7258:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1165, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7258:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1168, + "mutability": "mutable", + "name": "y", + "nameLocation": "7277:1:2", + "nodeType": "VariableDeclaration", + "scope": 1299, + "src": "7269:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1167, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7269:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1170, + "mutability": "mutable", + "name": "denominator", + "nameLocation": "7288:11:2", + "nodeType": "VariableDeclaration", + "scope": 1299, + "src": "7280:19:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1169, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7280:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7257:43:2" + }, + "returnParameters": { + "id": 1174, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1173, + "mutability": "mutable", + "name": "result", + "nameLocation": "7332:6:2", + "nodeType": "VariableDeclaration", + "scope": 1299, + "src": "7324:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1172, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7324:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7323:16:2" + }, + "scope": 2414, + "src": "7242:3683:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1335, + "nodeType": "Block", + "src": "11164:128:2", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 1315, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1302, + "src": "11188:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1316, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1304, + "src": "11191:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1317, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1306, + "src": "11194:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1314, + "name": "mulDiv", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1299, + 1336 + ], + "referencedDeclaration": 1299, + "src": "11181:6:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11181:25:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 1322, + "name": "rounding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1309, + "src": "11242:8:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + } + ], + "id": 1321, + "name": "unsignedRoundsUp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2392, + "src": "11225:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$784_$returns$_t_bool_$", + "typeString": "function (enum Math.Rounding) pure returns (bool)" + } + }, + "id": 1323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11225:26:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 1325, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1302, + "src": "11262:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1326, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1304, + "src": "11265:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1327, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1306, + "src": "11268:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1324, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967280, + "src": "11255:6:2", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11255:25:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 1329, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11283:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11255:29:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "11225:59:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 1319, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4179, + "src": "11209:8:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$4179_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 1320, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11218:6:2", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4178, + "src": "11209:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 1332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11209:76:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11181:104:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1313, + "id": 1334, + "nodeType": "Return", + "src": "11174:111:2" + } + ] + }, + "documentation": { + "id": 1300, + "nodeType": "StructuredDocumentation", + "src": "10931:118:2", + "text": " @dev Calculates x * y / denominator with full precision, following the selected rounding direction." + }, + "id": 1336, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mulDiv", + "nameLocation": "11063:6:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1310, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1302, + "mutability": "mutable", + "name": "x", + "nameLocation": "11078:1:2", + "nodeType": "VariableDeclaration", + "scope": 1336, + "src": "11070:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1301, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11070:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1304, + "mutability": "mutable", + "name": "y", + "nameLocation": "11089:1:2", + "nodeType": "VariableDeclaration", + "scope": 1336, + "src": "11081:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1303, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11081:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1306, + "mutability": "mutable", + "name": "denominator", + "nameLocation": "11100:11:2", + "nodeType": "VariableDeclaration", + "scope": 1336, + "src": "11092:19:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1305, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11092:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1309, + "mutability": "mutable", + "name": "rounding", + "nameLocation": "11122:8:2", + "nodeType": "VariableDeclaration", + "scope": 1336, + "src": "11113:17:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + }, + "typeName": { + "id": 1308, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1307, + "name": "Rounding", + "nameLocations": [ + "11113:8:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 784, + "src": "11113:8:2" + }, + "referencedDeclaration": 784, + "src": "11113:8:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + } + }, + "visibility": "internal" + } + ], + "src": "11069:62:2" + }, + "returnParameters": { + "id": 1313, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1312, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1336, + "src": "11155:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1311, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11155:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11154:9:2" + }, + "scope": 2414, + "src": "11054:238:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1385, + "nodeType": "Block", + "src": "11500:245:2", + "statements": [ + { + "id": 1384, + "nodeType": "UncheckedBlock", + "src": "11510:229:2", + "statements": [ + { + "assignments": [ + 1349, + 1351 + ], + "declarations": [ + { + "constant": false, + "id": 1349, + "mutability": "mutable", + "name": "high", + "nameLocation": "11543:4:2", + "nodeType": "VariableDeclaration", + "scope": 1384, + "src": "11535:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1348, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11535:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1351, + "mutability": "mutable", + "name": "low", + "nameLocation": "11557:3:2", + "nodeType": "VariableDeclaration", + "scope": 1384, + "src": "11549:11:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1350, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11549:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1356, + "initialValue": { + "arguments": [ + { + "id": 1353, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1339, + "src": "11571:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1354, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1341, + "src": "11574:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1352, + "name": "mul512", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 812, + "src": "11564:6:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256,uint256)" + } + }, + "id": 1355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11564:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11534:42:2" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1357, + "name": "high", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1349, + "src": "11594:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 1358, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11602:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "id": 1359, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1343, + "src": "11607:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "11602:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11594:14:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1370, + "nodeType": "IfStatement", + "src": "11590:86:2", + "trueBody": { + "id": 1369, + "nodeType": "Block", + "src": "11610:66:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 1365, + "name": "Panic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 772, + "src": "11640:5:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Panic_$772_$", + "typeString": "type(library Panic)" + } + }, + "id": 1366, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "11646:14:2", + "memberName": "UNDER_OVERFLOW", + "nodeType": "MemberAccess", + "referencedDeclaration": 735, + "src": "11640:20:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 1362, + "name": "Panic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 772, + "src": "11628:5:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Panic_$772_$", + "typeString": "type(library Panic)" + } + }, + "id": 1364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11634:5:2", + "memberName": "panic", + "nodeType": "MemberAccess", + "referencedDeclaration": 771, + "src": "11628:11:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 1367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11628:33:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1368, + "nodeType": "ExpressionStatement", + "src": "11628:33:2" + } + ] + } + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1371, + "name": "high", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1349, + "src": "11697:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "id": 1374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "323536", + "id": 1372, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11706:3:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "value": "256" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1373, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1343, + "src": "11712:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "11706:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "id": 1375, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11705:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "11697:17:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1377, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11696:19:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1378, + "name": "low", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "11719:3:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 1379, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1343, + "src": "11726:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "11719:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1381, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11718:10:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11696:32:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1347, + "id": 1383, + "nodeType": "Return", + "src": "11689:39:2" + } + ] + } + ] + }, + "documentation": { + "id": 1337, + "nodeType": "StructuredDocumentation", + "src": "11298:111:2", + "text": " @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256." + }, + "id": 1386, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mulShr", + "nameLocation": "11423:6:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1344, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1339, + "mutability": "mutable", + "name": "x", + "nameLocation": "11438:1:2", + "nodeType": "VariableDeclaration", + "scope": 1386, + "src": "11430:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1338, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11430:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1341, + "mutability": "mutable", + "name": "y", + "nameLocation": "11449:1:2", + "nodeType": "VariableDeclaration", + "scope": 1386, + "src": "11441:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1340, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11441:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1343, + "mutability": "mutable", + "name": "n", + "nameLocation": "11458:1:2", + "nodeType": "VariableDeclaration", + "scope": 1386, + "src": "11452:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1342, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "11452:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "11429:31:2" + }, + "returnParameters": { + "id": 1347, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1346, + "mutability": "mutable", + "name": "result", + "nameLocation": "11492:6:2", + "nodeType": "VariableDeclaration", + "scope": 1386, + "src": "11484:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1345, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11484:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11483:16:2" + }, + "scope": 2414, + "src": "11414:331:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1424, + "nodeType": "Block", + "src": "11963:113:2", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 1402, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1389, + "src": "11987:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1403, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1391, + "src": "11990:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1404, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1393, + "src": "11993:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 1401, + "name": "mulShr", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1386, + 1425 + ], + "referencedDeclaration": 1386, + "src": "11980:6:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint8_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint8) pure returns (uint256)" + } + }, + "id": 1405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11980:15:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 1409, + "name": "rounding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1396, + "src": "12031:8:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + } + ], + "id": 1408, + "name": "unsignedRoundsUp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2392, + "src": "12014:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$784_$returns$_t_bool_$", + "typeString": "function (enum Math.Rounding) pure returns (bool)" + } + }, + "id": 1410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12014:26:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 1412, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1389, + "src": "12051:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1413, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1391, + "src": "12054:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 1414, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12057:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "id": 1415, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1393, + "src": "12062:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "12057:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1411, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967280, + "src": "12044:6:2", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12044:20:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 1418, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12067:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "12044:24:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "12014:54:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 1406, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4179, + "src": "11998:8:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$4179_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 1407, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12007:6:2", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4178, + "src": "11998:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 1421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11998:71:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11980:89:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1400, + "id": 1423, + "nodeType": "Return", + "src": "11973:96:2" + } + ] + }, + "documentation": { + "id": 1387, + "nodeType": "StructuredDocumentation", + "src": "11751:109:2", + "text": " @dev Calculates x * y >> n with full precision, following the selected rounding direction." + }, + "id": 1425, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mulShr", + "nameLocation": "11874:6:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1397, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1389, + "mutability": "mutable", + "name": "x", + "nameLocation": "11889:1:2", + "nodeType": "VariableDeclaration", + "scope": 1425, + "src": "11881:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1388, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11881:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1391, + "mutability": "mutable", + "name": "y", + "nameLocation": "11900:1:2", + "nodeType": "VariableDeclaration", + "scope": 1425, + "src": "11892:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1390, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11892:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1393, + "mutability": "mutable", + "name": "n", + "nameLocation": "11909:1:2", + "nodeType": "VariableDeclaration", + "scope": 1425, + "src": "11903:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1392, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "11903:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1396, + "mutability": "mutable", + "name": "rounding", + "nameLocation": "11921:8:2", + "nodeType": "VariableDeclaration", + "scope": 1425, + "src": "11912:17:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + }, + "typeName": { + "id": 1395, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1394, + "name": "Rounding", + "nameLocations": [ + "11912:8:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 784, + "src": "11912:8:2" + }, + "referencedDeclaration": 784, + "src": "11912:8:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + } + }, + "visibility": "internal" + } + ], + "src": "11880:50:2" + }, + "returnParameters": { + "id": 1400, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1399, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1425, + "src": "11954:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1398, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11954:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11953:9:2" + }, + "scope": 2414, + "src": "11865:211:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1521, + "nodeType": "Block", + "src": "12710:1849:2", + "statements": [ + { + "id": 1520, + "nodeType": "UncheckedBlock", + "src": "12720:1833:2", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1435, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1430, + "src": "12748:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1436, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12753:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "12748:6:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1440, + "nodeType": "IfStatement", + "src": "12744:20:2", + "trueBody": { + "expression": { + "hexValue": "30", + "id": 1438, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12763:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 1434, + "id": 1439, + "nodeType": "Return", + "src": "12756:8:2" + } + }, + { + "assignments": [ + 1442 + ], + "declarations": [ + { + "constant": false, + "id": 1442, + "mutability": "mutable", + "name": "remainder", + "nameLocation": "13243:9:2", + "nodeType": "VariableDeclaration", + "scope": 1520, + "src": "13235:17:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1441, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13235:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1446, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1443, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1428, + "src": "13255:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "id": 1444, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1430, + "src": "13259:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13255:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13235:25:2" + }, + { + "assignments": [ + 1448 + ], + "declarations": [ + { + "constant": false, + "id": 1448, + "mutability": "mutable", + "name": "gcd", + "nameLocation": "13282:3:2", + "nodeType": "VariableDeclaration", + "scope": 1520, + "src": "13274:11:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1447, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13274:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1450, + "initialValue": { + "id": 1449, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1430, + "src": "13288:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13274:15:2" + }, + { + "assignments": [ + 1452 + ], + "declarations": [ + { + "constant": false, + "id": 1452, + "mutability": "mutable", + "name": "x", + "nameLocation": "13432:1:2", + "nodeType": "VariableDeclaration", + "scope": 1520, + "src": "13425:8:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 1451, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "13425:6:2", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "id": 1454, + "initialValue": { + "hexValue": "30", + "id": 1453, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13436:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "13425:12:2" + }, + { + "assignments": [ + 1456 + ], + "declarations": [ + { + "constant": false, + "id": 1456, + "mutability": "mutable", + "name": "y", + "nameLocation": "13458:1:2", + "nodeType": "VariableDeclaration", + "scope": 1520, + "src": "13451:8:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 1455, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "13451:6:2", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "id": 1458, + "initialValue": { + "hexValue": "31", + "id": 1457, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13462:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "VariableDeclarationStatement", + "src": "13451:12:2" + }, + { + "body": { + "id": 1495, + "nodeType": "Block", + "src": "13501:882:2", + "statements": [ + { + "assignments": [ + 1463 + ], + "declarations": [ + { + "constant": false, + "id": 1463, + "mutability": "mutable", + "name": "quotient", + "nameLocation": "13527:8:2", + "nodeType": "VariableDeclaration", + "scope": 1495, + "src": "13519:16:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1462, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13519:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1467, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1464, + "name": "gcd", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1448, + "src": "13538:3:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 1465, + "name": "remainder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1442, + "src": "13544:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13538:15:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13519:34:2" + }, + { + "expression": { + "id": 1478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 1468, + "name": "gcd", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1448, + "src": "13573:3:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1469, + "name": "remainder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1442, + "src": "13578:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1470, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "13572:16:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "components": [ + { + "id": 1471, + "name": "remainder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1442, + "src": "13678:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1472, + "name": "gcd", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1448, + "src": "13923:3:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1473, + "name": "remainder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1442, + "src": "13929:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 1474, + "name": "quotient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1463, + "src": "13941:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13929:20:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13923:26:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1477, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13591:376:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "13572:395:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1479, + "nodeType": "ExpressionStatement", + "src": "13572:395:2" + }, + { + "expression": { + "id": 1493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 1480, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1452, + "src": "13987:1:2", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + { + "id": 1481, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1456, + "src": "13990:1:2", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "id": 1482, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "13986:6:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_int256_$_t_int256_$", + "typeString": "tuple(int256,int256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "components": [ + { + "id": 1483, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1456, + "src": "14072:1:2", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 1491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1484, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1452, + "src": "14326:1:2", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 1490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1485, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1456, + "src": "14330:1:2", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "arguments": [ + { + "id": 1488, + "name": "quotient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1463, + "src": "14341:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1487, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14334:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int256_$", + "typeString": "type(int256)" + }, + "typeName": { + "id": 1486, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "14334:6:2", + "typeDescriptions": {} + } + }, + "id": 1489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14334:16:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "14330:20:2", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "14326:24:2", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "id": 1492, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13995:373:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_int256_$_t_int256_$", + "typeString": "tuple(int256,int256)" + } + }, + "src": "13986:382:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1494, + "nodeType": "ExpressionStatement", + "src": "13986:382:2" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1459, + "name": "remainder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1442, + "src": "13485:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 1460, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13498:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "13485:14:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1496, + "nodeType": "WhileStatement", + "src": "13478:905:2" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1497, + "name": "gcd", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1448, + "src": "14401:3:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "31", + "id": 1498, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14408:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "14401:8:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1502, + "nodeType": "IfStatement", + "src": "14397:22:2", + "trueBody": { + "expression": { + "hexValue": "30", + "id": 1500, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14418:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 1434, + "id": 1501, + "nodeType": "Return", + "src": "14411:8:2" + } + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 1506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1504, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1452, + "src": "14470:1:2", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "hexValue": "30", + "id": 1505, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14474:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14470:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1507, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1430, + "src": "14477:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "arguments": [ + { + "id": 1511, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "14489:2:2", + "subExpression": { + "id": 1510, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1452, + "src": "14490:1:2", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 1509, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14481:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 1508, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14481:7:2", + "typeDescriptions": {} + } + }, + "id": 1512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14481:11:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14477:15:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 1516, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1452, + "src": "14502:1:2", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 1515, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14494:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 1514, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14494:7:2", + "typeDescriptions": {} + } + }, + "id": 1517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14494:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1503, + "name": "ternary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1061, + "src": "14462:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bool,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14462:43:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1434, + "id": 1519, + "nodeType": "Return", + "src": "14455:50:2" + } + ] + } + ] + }, + "documentation": { + "id": 1426, + "nodeType": "StructuredDocumentation", + "src": "12082:553:2", + "text": " @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\n If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\n If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\n If the input value is not inversible, 0 is returned.\n NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\n inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}." + }, + "id": 1522, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "invMod", + "nameLocation": "12649:6:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1431, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1428, + "mutability": "mutable", + "name": "a", + "nameLocation": "12664:1:2", + "nodeType": "VariableDeclaration", + "scope": 1522, + "src": "12656:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1427, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12656:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1430, + "mutability": "mutable", + "name": "n", + "nameLocation": "12675:1:2", + "nodeType": "VariableDeclaration", + "scope": 1522, + "src": "12667:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1429, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12667:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12655:22:2" + }, + "returnParameters": { + "id": 1434, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1433, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1522, + "src": "12701:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1432, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12701:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12700:9:2" + }, + "scope": 2414, + "src": "12640:1919:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1542, + "nodeType": "Block", + "src": "15159:82:2", + "statements": [ + { + "id": 1541, + "nodeType": "UncheckedBlock", + "src": "15169:66:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1534, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1525, + "src": "15212:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1535, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1527, + "src": "15215:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "32", + "id": 1536, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15219:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "15215:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1538, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1527, + "src": "15222:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 1532, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2414, + "src": "15200:4:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$2414_$", + "typeString": "type(library Math)" + } + }, + "id": 1533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15205:6:2", + "memberName": "modExp", + "nodeType": "MemberAccess", + "referencedDeclaration": 1579, + "src": "15200:11:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) view returns (uint256)" + } + }, + "id": 1539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15200:24:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1531, + "id": 1540, + "nodeType": "Return", + "src": "15193:31:2" + } + ] + } + ] + }, + "documentation": { + "id": 1523, + "nodeType": "StructuredDocumentation", + "src": "14565:514:2", + "text": " @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\n From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\n prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that\n `a**(p-2)` is the modular multiplicative inverse of a in Fp.\n NOTE: this function does NOT check that `p` is a prime greater than `2`." + }, + "id": 1543, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "invModPrime", + "nameLocation": "15093:11:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1528, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1525, + "mutability": "mutable", + "name": "a", + "nameLocation": "15113:1:2", + "nodeType": "VariableDeclaration", + "scope": 1543, + "src": "15105:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1524, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15105:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1527, + "mutability": "mutable", + "name": "p", + "nameLocation": "15124:1:2", + "nodeType": "VariableDeclaration", + "scope": 1543, + "src": "15116:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1526, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15116:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15104:22:2" + }, + "returnParameters": { + "id": 1531, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1530, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1543, + "src": "15150:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1529, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15150:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15149:9:2" + }, + "scope": 2414, + "src": "15084:157:2", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1578, + "nodeType": "Block", + "src": "16011:174:2", + "statements": [ + { + "assignments": [ + 1556, + 1558 + ], + "declarations": [ + { + "constant": false, + "id": 1556, + "mutability": "mutable", + "name": "success", + "nameLocation": "16027:7:2", + "nodeType": "VariableDeclaration", + "scope": 1578, + "src": "16022:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1555, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "16022:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1558, + "mutability": "mutable", + "name": "result", + "nameLocation": "16044:6:2", + "nodeType": "VariableDeclaration", + "scope": 1578, + "src": "16036:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1557, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16036:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1564, + "initialValue": { + "arguments": [ + { + "id": 1560, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1546, + "src": "16064:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1561, + "name": "e", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1548, + "src": "16067:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1562, + "name": "m", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1550, + "src": "16070:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1559, + "name": "tryModExp", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1603, + 1685 + ], + "referencedDeclaration": 1603, + "src": "16054:9:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) view returns (bool,uint256)" + } + }, + "id": 1563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16054:18:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16021:51:2" + }, + { + "condition": { + "id": 1566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "16086:8:2", + "subExpression": { + "id": 1565, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1556, + "src": "16087:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1575, + "nodeType": "IfStatement", + "src": "16082:74:2", + "trueBody": { + "id": 1574, + "nodeType": "Block", + "src": "16096:60:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 1570, + "name": "Panic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 772, + "src": "16122:5:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Panic_$772_$", + "typeString": "type(library Panic)" + } + }, + "id": 1571, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "16128:16:2", + "memberName": "DIVISION_BY_ZERO", + "nodeType": "MemberAccess", + "referencedDeclaration": 739, + "src": "16122:22:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 1567, + "name": "Panic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 772, + "src": "16110:5:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Panic_$772_$", + "typeString": "type(library Panic)" + } + }, + "id": 1569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16116:5:2", + "memberName": "panic", + "nodeType": "MemberAccess", + "referencedDeclaration": 771, + "src": "16110:11:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 1572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16110:35:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1573, + "nodeType": "ExpressionStatement", + "src": "16110:35:2" + } + ] + } + }, + { + "expression": { + "id": 1576, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1558, + "src": "16172:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1554, + "id": 1577, + "nodeType": "Return", + "src": "16165:13:2" + } + ] + }, + "documentation": { + "id": 1544, + "nodeType": "StructuredDocumentation", + "src": "15247:678:2", + "text": " @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\n Requirements:\n - modulus can't be zero\n - underlying staticcall to precompile must succeed\n IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\n sure the chain you're using it on supports the precompiled contract for modular exponentiation\n at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\n the underlying function will succeed given the lack of a revert, but the result may be incorrectly\n interpreted as 0." + }, + "id": 1579, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "modExp", + "nameLocation": "15939:6:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1551, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1546, + "mutability": "mutable", + "name": "b", + "nameLocation": "15954:1:2", + "nodeType": "VariableDeclaration", + "scope": 1579, + "src": "15946:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1545, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15946:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1548, + "mutability": "mutable", + "name": "e", + "nameLocation": "15965:1:2", + "nodeType": "VariableDeclaration", + "scope": 1579, + "src": "15957:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1547, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15957:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1550, + "mutability": "mutable", + "name": "m", + "nameLocation": "15976:1:2", + "nodeType": "VariableDeclaration", + "scope": 1579, + "src": "15968:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1549, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15968:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15945:33:2" + }, + "returnParameters": { + "id": 1554, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1553, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1579, + "src": "16002:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1552, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16002:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16001:9:2" + }, + "scope": 2414, + "src": "15930:255:2", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1602, + "nodeType": "Block", + "src": "17039:1493:2", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1593, + "name": "m", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1586, + "src": "17053:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1594, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17058:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "17053:6:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1600, + "nodeType": "IfStatement", + "src": "17049:29:2", + "trueBody": { + "expression": { + "components": [ + { + "hexValue": "66616c7365", + "id": 1596, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17069:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "hexValue": "30", + "id": 1597, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17076:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 1598, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "17068:10:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 1592, + "id": 1599, + "nodeType": "Return", + "src": "17061:17:2" + } + }, + { + "AST": { + "nativeSrc": "17113:1413:2", + "nodeType": "YulBlock", + "src": "17113:1413:2", + "statements": [ + { + "nativeSrc": "17127:22:2", + "nodeType": "YulVariableDeclaration", + "src": "17127:22:2", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17144:4:2", + "nodeType": "YulLiteral", + "src": "17144:4:2", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "17138:5:2", + "nodeType": "YulIdentifier", + "src": "17138:5:2" + }, + "nativeSrc": "17138:11:2", + "nodeType": "YulFunctionCall", + "src": "17138:11:2" + }, + "variables": [ + { + "name": "ptr", + "nativeSrc": "17131:3:2", + "nodeType": "YulTypedName", + "src": "17131:3:2", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "ptr", + "nativeSrc": "18057:3:2", + "nodeType": "YulIdentifier", + "src": "18057:3:2" + }, + { + "kind": "number", + "nativeSrc": "18062:4:2", + "nodeType": "YulLiteral", + "src": "18062:4:2", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18050:6:2", + "nodeType": "YulIdentifier", + "src": "18050:6:2" + }, + "nativeSrc": "18050:17:2", + "nodeType": "YulFunctionCall", + "src": "18050:17:2" + }, + "nativeSrc": "18050:17:2", + "nodeType": "YulExpressionStatement", + "src": "18050:17:2" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "ptr", + "nativeSrc": "18091:3:2", + "nodeType": "YulIdentifier", + "src": "18091:3:2" + }, + { + "kind": "number", + "nativeSrc": "18096:4:2", + "nodeType": "YulLiteral", + "src": "18096:4:2", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18087:3:2", + "nodeType": "YulIdentifier", + "src": "18087:3:2" + }, + "nativeSrc": "18087:14:2", + "nodeType": "YulFunctionCall", + "src": "18087:14:2" + }, + { + "kind": "number", + "nativeSrc": "18103:4:2", + "nodeType": "YulLiteral", + "src": "18103:4:2", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18080:6:2", + "nodeType": "YulIdentifier", + "src": "18080:6:2" + }, + "nativeSrc": "18080:28:2", + "nodeType": "YulFunctionCall", + "src": "18080:28:2" + }, + "nativeSrc": "18080:28:2", + "nodeType": "YulExpressionStatement", + "src": "18080:28:2" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "ptr", + "nativeSrc": "18132:3:2", + "nodeType": "YulIdentifier", + "src": "18132:3:2" + }, + { + "kind": "number", + "nativeSrc": "18137:4:2", + "nodeType": "YulLiteral", + "src": "18137:4:2", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18128:3:2", + "nodeType": "YulIdentifier", + "src": "18128:3:2" + }, + "nativeSrc": "18128:14:2", + "nodeType": "YulFunctionCall", + "src": "18128:14:2" + }, + { + "kind": "number", + "nativeSrc": "18144:4:2", + "nodeType": "YulLiteral", + "src": "18144:4:2", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18121:6:2", + "nodeType": "YulIdentifier", + "src": "18121:6:2" + }, + "nativeSrc": "18121:28:2", + "nodeType": "YulFunctionCall", + "src": "18121:28:2" + }, + "nativeSrc": "18121:28:2", + "nodeType": "YulExpressionStatement", + "src": "18121:28:2" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "ptr", + "nativeSrc": "18173:3:2", + "nodeType": "YulIdentifier", + "src": "18173:3:2" + }, + { + "kind": "number", + "nativeSrc": "18178:4:2", + "nodeType": "YulLiteral", + "src": "18178:4:2", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18169:3:2", + "nodeType": "YulIdentifier", + "src": "18169:3:2" + }, + "nativeSrc": "18169:14:2", + "nodeType": "YulFunctionCall", + "src": "18169:14:2" + }, + { + "name": "b", + "nativeSrc": "18185:1:2", + "nodeType": "YulIdentifier", + "src": "18185:1:2" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18162:6:2", + "nodeType": "YulIdentifier", + "src": "18162:6:2" + }, + "nativeSrc": "18162:25:2", + "nodeType": "YulFunctionCall", + "src": "18162:25:2" + }, + "nativeSrc": "18162:25:2", + "nodeType": "YulExpressionStatement", + "src": "18162:25:2" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "ptr", + "nativeSrc": "18211:3:2", + "nodeType": "YulIdentifier", + "src": "18211:3:2" + }, + { + "kind": "number", + "nativeSrc": "18216:4:2", + "nodeType": "YulLiteral", + "src": "18216:4:2", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18207:3:2", + "nodeType": "YulIdentifier", + "src": "18207:3:2" + }, + "nativeSrc": "18207:14:2", + "nodeType": "YulFunctionCall", + "src": "18207:14:2" + }, + { + "name": "e", + "nativeSrc": "18223:1:2", + "nodeType": "YulIdentifier", + "src": "18223:1:2" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18200:6:2", + "nodeType": "YulIdentifier", + "src": "18200:6:2" + }, + "nativeSrc": "18200:25:2", + "nodeType": "YulFunctionCall", + "src": "18200:25:2" + }, + "nativeSrc": "18200:25:2", + "nodeType": "YulExpressionStatement", + "src": "18200:25:2" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "ptr", + "nativeSrc": "18249:3:2", + "nodeType": "YulIdentifier", + "src": "18249:3:2" + }, + { + "kind": "number", + "nativeSrc": "18254:4:2", + "nodeType": "YulLiteral", + "src": "18254:4:2", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18245:3:2", + "nodeType": "YulIdentifier", + "src": "18245:3:2" + }, + "nativeSrc": "18245:14:2", + "nodeType": "YulFunctionCall", + "src": "18245:14:2" + }, + { + "name": "m", + "nativeSrc": "18261:1:2", + "nodeType": "YulIdentifier", + "src": "18261:1:2" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18238:6:2", + "nodeType": "YulIdentifier", + "src": "18238:6:2" + }, + "nativeSrc": "18238:25:2", + "nodeType": "YulFunctionCall", + "src": "18238:25:2" + }, + "nativeSrc": "18238:25:2", + "nodeType": "YulExpressionStatement", + "src": "18238:25:2" + }, + { + "nativeSrc": "18425:57:2", + "nodeType": "YulAssignment", + "src": "18425:57:2", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "18447:3:2", + "nodeType": "YulIdentifier", + "src": "18447:3:2" + }, + "nativeSrc": "18447:5:2", + "nodeType": "YulFunctionCall", + "src": "18447:5:2" + }, + { + "kind": "number", + "nativeSrc": "18454:4:2", + "nodeType": "YulLiteral", + "src": "18454:4:2", + "type": "", + "value": "0x05" + }, + { + "name": "ptr", + "nativeSrc": "18460:3:2", + "nodeType": "YulIdentifier", + "src": "18460:3:2" + }, + { + "kind": "number", + "nativeSrc": "18465:4:2", + "nodeType": "YulLiteral", + "src": "18465:4:2", + "type": "", + "value": "0xc0" + }, + { + "kind": "number", + "nativeSrc": "18471:4:2", + "nodeType": "YulLiteral", + "src": "18471:4:2", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "18477:4:2", + "nodeType": "YulLiteral", + "src": "18477:4:2", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "18436:10:2", + "nodeType": "YulIdentifier", + "src": "18436:10:2" + }, + "nativeSrc": "18436:46:2", + "nodeType": "YulFunctionCall", + "src": "18436:46:2" + }, + "variableNames": [ + { + "name": "success", + "nativeSrc": "18425:7:2", + "nodeType": "YulIdentifier", + "src": "18425:7:2" + } + ] + }, + { + "nativeSrc": "18495:21:2", + "nodeType": "YulAssignment", + "src": "18495:21:2", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18511:4:2", + "nodeType": "YulLiteral", + "src": "18511:4:2", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "18505:5:2", + "nodeType": "YulIdentifier", + "src": "18505:5:2" + }, + "nativeSrc": "18505:11:2", + "nodeType": "YulFunctionCall", + "src": "18505:11:2" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "18495:6:2", + "nodeType": "YulIdentifier", + "src": "18495:6:2" + } + ] + } + ] + }, + "evmVersion": "prague", + "externalReferences": [ + { + "declaration": 1582, + "isOffset": false, + "isSlot": false, + "src": "18185:1:2", + "valueSize": 1 + }, + { + "declaration": 1584, + "isOffset": false, + "isSlot": false, + "src": "18223:1:2", + "valueSize": 1 + }, + { + "declaration": 1586, + "isOffset": false, + "isSlot": false, + "src": "18261:1:2", + "valueSize": 1 + }, + { + "declaration": 1591, + "isOffset": false, + "isSlot": false, + "src": "18495:6:2", + "valueSize": 1 + }, + { + "declaration": 1589, + "isOffset": false, + "isSlot": false, + "src": "18425:7:2", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 1601, + "nodeType": "InlineAssembly", + "src": "17088:1438:2" + } + ] + }, + "documentation": { + "id": 1580, + "nodeType": "StructuredDocumentation", + "src": "16191:738:2", + "text": " @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\n It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\n to operate modulo 0 or if the underlying precompile reverted.\n IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\n you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\n https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\n of a revert, but the result may be incorrectly interpreted as 0." + }, + "id": 1603, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryModExp", + "nameLocation": "16943:9:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1587, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1582, + "mutability": "mutable", + "name": "b", + "nameLocation": "16961:1:2", + "nodeType": "VariableDeclaration", + "scope": 1603, + "src": "16953:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1581, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16953:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1584, + "mutability": "mutable", + "name": "e", + "nameLocation": "16972:1:2", + "nodeType": "VariableDeclaration", + "scope": 1603, + "src": "16964:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1583, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16964:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1586, + "mutability": "mutable", + "name": "m", + "nameLocation": "16983:1:2", + "nodeType": "VariableDeclaration", + "scope": 1603, + "src": "16975:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1585, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16975:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16952:33:2" + }, + "returnParameters": { + "id": 1592, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1589, + "mutability": "mutable", + "name": "success", + "nameLocation": "17014:7:2", + "nodeType": "VariableDeclaration", + "scope": 1603, + "src": "17009:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1588, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "17009:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1591, + "mutability": "mutable", + "name": "result", + "nameLocation": "17031:6:2", + "nodeType": "VariableDeclaration", + "scope": 1603, + "src": "17023:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1590, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17023:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "17008:30:2" + }, + "scope": 2414, + "src": "16934:1598:2", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1638, + "nodeType": "Block", + "src": "18729:179:2", + "statements": [ + { + "assignments": [ + 1616, + 1618 + ], + "declarations": [ + { + "constant": false, + "id": 1616, + "mutability": "mutable", + "name": "success", + "nameLocation": "18745:7:2", + "nodeType": "VariableDeclaration", + "scope": 1638, + "src": "18740:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1615, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "18740:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1618, + "mutability": "mutable", + "name": "result", + "nameLocation": "18767:6:2", + "nodeType": "VariableDeclaration", + "scope": 1638, + "src": "18754:19:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1617, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "18754:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 1624, + "initialValue": { + "arguments": [ + { + "id": 1620, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1606, + "src": "18787:1:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 1621, + "name": "e", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1608, + "src": "18790:1:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 1622, + "name": "m", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1610, + "src": "18793:1:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1619, + "name": "tryModExp", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1603, + 1685 + ], + "referencedDeclaration": 1685, + "src": "18777:9:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,bytes memory,bytes memory) view returns (bool,bytes memory)" + } + }, + "id": 1623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18777:18:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18739:56:2" + }, + { + "condition": { + "id": 1626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "18809:8:2", + "subExpression": { + "id": 1625, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1616, + "src": "18810:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1635, + "nodeType": "IfStatement", + "src": "18805:74:2", + "trueBody": { + "id": 1634, + "nodeType": "Block", + "src": "18819:60:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 1630, + "name": "Panic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 772, + "src": "18845:5:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Panic_$772_$", + "typeString": "type(library Panic)" + } + }, + "id": 1631, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "18851:16:2", + "memberName": "DIVISION_BY_ZERO", + "nodeType": "MemberAccess", + "referencedDeclaration": 739, + "src": "18845:22:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 1627, + "name": "Panic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 772, + "src": "18833:5:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Panic_$772_$", + "typeString": "type(library Panic)" + } + }, + "id": 1629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18839:5:2", + "memberName": "panic", + "nodeType": "MemberAccess", + "referencedDeclaration": 771, + "src": "18833:11:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 1632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18833:35:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1633, + "nodeType": "ExpressionStatement", + "src": "18833:35:2" + } + ] + } + }, + { + "expression": { + "id": 1636, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1618, + "src": "18895:6:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 1614, + "id": 1637, + "nodeType": "Return", + "src": "18888:13:2" + } + ] + }, + "documentation": { + "id": 1604, + "nodeType": "StructuredDocumentation", + "src": "18538:85:2", + "text": " @dev Variant of {modExp} that supports inputs of arbitrary length." + }, + "id": 1639, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "modExp", + "nameLocation": "18637:6:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1611, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1606, + "mutability": "mutable", + "name": "b", + "nameLocation": "18657:1:2", + "nodeType": "VariableDeclaration", + "scope": 1639, + "src": "18644:14:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1605, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "18644:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1608, + "mutability": "mutable", + "name": "e", + "nameLocation": "18673:1:2", + "nodeType": "VariableDeclaration", + "scope": 1639, + "src": "18660:14:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1607, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "18660:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1610, + "mutability": "mutable", + "name": "m", + "nameLocation": "18689:1:2", + "nodeType": "VariableDeclaration", + "scope": 1639, + "src": "18676:14:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1609, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "18676:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "18643:48:2" + }, + "returnParameters": { + "id": 1614, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1613, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1639, + "src": "18715:12:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1612, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "18715:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "18714:14:2" + }, + "scope": 2414, + "src": "18628:280:2", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1684, + "nodeType": "Block", + "src": "19162:771:2", + "statements": [ + { + "condition": { + "arguments": [ + { + "id": 1654, + "name": "m", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1646, + "src": "19187:1:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1653, + "name": "_zeroBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1718, + "src": "19176:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes memory) pure returns (bool)" + } + }, + "id": 1655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19176:13:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1663, + "nodeType": "IfStatement", + "src": "19172:47:2", + "trueBody": { + "expression": { + "components": [ + { + "hexValue": "66616c7365", + "id": 1656, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19199:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 1659, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19216:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1658, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "19206:9:2", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 1657, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "19210:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 1660, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19206:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "id": 1661, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "19198:21:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "functionReturnParameters": 1652, + "id": 1662, + "nodeType": "Return", + "src": "19191:28:2" + } + }, + { + "assignments": [ + 1665 + ], + "declarations": [ + { + "constant": false, + "id": 1665, + "mutability": "mutable", + "name": "mLen", + "nameLocation": "19238:4:2", + "nodeType": "VariableDeclaration", + "scope": 1684, + "src": "19230:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1664, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19230:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1668, + "initialValue": { + "expression": { + "id": 1666, + "name": "m", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1646, + "src": "19245:1:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19247:6:2", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "19245:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "19230:23:2" + }, + { + "expression": { + "id": 1681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1669, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1651, + "src": "19335:6:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 1672, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1642, + "src": "19361:1:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19363:6:2", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "19361:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 1674, + "name": "e", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1644, + "src": "19371:1:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19373:6:2", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "19371:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1676, + "name": "mLen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1665, + "src": "19381:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1677, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1642, + "src": "19387:1:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 1678, + "name": "e", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1644, + "src": "19390:1:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 1679, + "name": "m", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1646, + "src": "19393:1:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 1670, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "19344:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 1671, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "19348:12:2", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "19344:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 1680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19344:51:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "src": "19335:60:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1682, + "nodeType": "ExpressionStatement", + "src": "19335:60:2" + }, + { + "AST": { + "nativeSrc": "19431:496:2", + "nodeType": "YulBlock", + "src": "19431:496:2", + "statements": [ + { + "nativeSrc": "19445:32:2", + "nodeType": "YulVariableDeclaration", + "src": "19445:32:2", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "19464:6:2", + "nodeType": "YulIdentifier", + "src": "19464:6:2" + }, + { + "kind": "number", + "nativeSrc": "19472:4:2", + "nodeType": "YulLiteral", + "src": "19472:4:2", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19460:3:2", + "nodeType": "YulIdentifier", + "src": "19460:3:2" + }, + "nativeSrc": "19460:17:2", + "nodeType": "YulFunctionCall", + "src": "19460:17:2" + }, + "variables": [ + { + "name": "dataPtr", + "nativeSrc": "19449:7:2", + "nodeType": "YulTypedName", + "src": "19449:7:2", + "type": "" + } + ] + }, + { + "nativeSrc": "19567:73:2", + "nodeType": "YulAssignment", + "src": "19567:73:2", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "19589:3:2", + "nodeType": "YulIdentifier", + "src": "19589:3:2" + }, + "nativeSrc": "19589:5:2", + "nodeType": "YulFunctionCall", + "src": "19589:5:2" + }, + { + "kind": "number", + "nativeSrc": "19596:4:2", + "nodeType": "YulLiteral", + "src": "19596:4:2", + "type": "", + "value": "0x05" + }, + { + "name": "dataPtr", + "nativeSrc": "19602:7:2", + "nodeType": "YulIdentifier", + "src": "19602:7:2" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "19617:6:2", + "nodeType": "YulIdentifier", + "src": "19617:6:2" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "19611:5:2", + "nodeType": "YulIdentifier", + "src": "19611:5:2" + }, + "nativeSrc": "19611:13:2", + "nodeType": "YulFunctionCall", + "src": "19611:13:2" + }, + { + "name": "dataPtr", + "nativeSrc": "19626:7:2", + "nodeType": "YulIdentifier", + "src": "19626:7:2" + }, + { + "name": "mLen", + "nativeSrc": "19635:4:2", + "nodeType": "YulIdentifier", + "src": "19635:4:2" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "19578:10:2", + "nodeType": "YulIdentifier", + "src": "19578:10:2" + }, + "nativeSrc": "19578:62:2", + "nodeType": "YulFunctionCall", + "src": "19578:62:2" + }, + "variableNames": [ + { + "name": "success", + "nativeSrc": "19567:7:2", + "nodeType": "YulIdentifier", + "src": "19567:7:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "19796:6:2", + "nodeType": "YulIdentifier", + "src": "19796:6:2" + }, + { + "name": "mLen", + "nativeSrc": "19804:4:2", + "nodeType": "YulIdentifier", + "src": "19804:4:2" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19789:6:2", + "nodeType": "YulIdentifier", + "src": "19789:6:2" + }, + "nativeSrc": "19789:20:2", + "nodeType": "YulFunctionCall", + "src": "19789:20:2" + }, + "nativeSrc": "19789:20:2", + "nodeType": "YulExpressionStatement", + "src": "19789:20:2" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "19892:4:2", + "nodeType": "YulLiteral", + "src": "19892:4:2", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "dataPtr", + "nativeSrc": "19902:7:2", + "nodeType": "YulIdentifier", + "src": "19902:7:2" + }, + { + "name": "mLen", + "nativeSrc": "19911:4:2", + "nodeType": "YulIdentifier", + "src": "19911:4:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19898:3:2", + "nodeType": "YulIdentifier", + "src": "19898:3:2" + }, + "nativeSrc": "19898:18:2", + "nodeType": "YulFunctionCall", + "src": "19898:18:2" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19885:6:2", + "nodeType": "YulIdentifier", + "src": "19885:6:2" + }, + "nativeSrc": "19885:32:2", + "nodeType": "YulFunctionCall", + "src": "19885:32:2" + }, + "nativeSrc": "19885:32:2", + "nodeType": "YulExpressionStatement", + "src": "19885:32:2" + } + ] + }, + "evmVersion": "prague", + "externalReferences": [ + { + "declaration": 1665, + "isOffset": false, + "isSlot": false, + "src": "19635:4:2", + "valueSize": 1 + }, + { + "declaration": 1665, + "isOffset": false, + "isSlot": false, + "src": "19804:4:2", + "valueSize": 1 + }, + { + "declaration": 1665, + "isOffset": false, + "isSlot": false, + "src": "19911:4:2", + "valueSize": 1 + }, + { + "declaration": 1651, + "isOffset": false, + "isSlot": false, + "src": "19464:6:2", + "valueSize": 1 + }, + { + "declaration": 1651, + "isOffset": false, + "isSlot": false, + "src": "19617:6:2", + "valueSize": 1 + }, + { + "declaration": 1651, + "isOffset": false, + "isSlot": false, + "src": "19796:6:2", + "valueSize": 1 + }, + { + "declaration": 1649, + "isOffset": false, + "isSlot": false, + "src": "19567:7:2", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 1683, + "nodeType": "InlineAssembly", + "src": "19406:521:2" + } + ] + }, + "documentation": { + "id": 1640, + "nodeType": "StructuredDocumentation", + "src": "18914:88:2", + "text": " @dev Variant of {tryModExp} that supports inputs of arbitrary length." + }, + "id": 1685, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryModExp", + "nameLocation": "19016:9:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1647, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1642, + "mutability": "mutable", + "name": "b", + "nameLocation": "19048:1:2", + "nodeType": "VariableDeclaration", + "scope": 1685, + "src": "19035:14:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1641, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "19035:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1644, + "mutability": "mutable", + "name": "e", + "nameLocation": "19072:1:2", + "nodeType": "VariableDeclaration", + "scope": 1685, + "src": "19059:14:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1643, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "19059:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1646, + "mutability": "mutable", + "name": "m", + "nameLocation": "19096:1:2", + "nodeType": "VariableDeclaration", + "scope": 1685, + "src": "19083:14:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1645, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "19083:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "19025:78:2" + }, + "returnParameters": { + "id": 1652, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1649, + "mutability": "mutable", + "name": "success", + "nameLocation": "19132:7:2", + "nodeType": "VariableDeclaration", + "scope": 1685, + "src": "19127:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1648, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "19127:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1651, + "mutability": "mutable", + "name": "result", + "nameLocation": "19154:6:2", + "nodeType": "VariableDeclaration", + "scope": 1685, + "src": "19141:19:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1650, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "19141:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "19126:35:2" + }, + "scope": 2414, + "src": "19007:926:2", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1717, + "nodeType": "Block", + "src": "20088:176:2", + "statements": [ + { + "body": { + "id": 1713, + "nodeType": "Block", + "src": "20145:92:2", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "id": 1708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 1704, + "name": "byteArray", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1688, + "src": "20163:9:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1706, + "indexExpression": { + "id": 1705, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1694, + "src": "20173:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20163:12:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 1707, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20179:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "20163:17:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1712, + "nodeType": "IfStatement", + "src": "20159:68:2", + "trueBody": { + "id": 1711, + "nodeType": "Block", + "src": "20182:45:2", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 1709, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20207:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1692, + "id": 1710, + "nodeType": "Return", + "src": "20200:12:2" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1697, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1694, + "src": "20118:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 1698, + "name": "byteArray", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1688, + "src": "20122:9:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20132:6:2", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "20122:16:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20118:20:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1714, + "initializationExpression": { + "assignments": [ + 1694 + ], + "declarations": [ + { + "constant": false, + "id": 1694, + "mutability": "mutable", + "name": "i", + "nameLocation": "20111:1:2", + "nodeType": "VariableDeclaration", + "scope": 1714, + "src": "20103:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1693, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20103:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1696, + "initialValue": { + "hexValue": "30", + "id": 1695, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20115:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "20103:13:2" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 1702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "20140:3:2", + "subExpression": { + "id": 1701, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1694, + "src": "20142:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1703, + "nodeType": "ExpressionStatement", + "src": "20140:3:2" + }, + "nodeType": "ForStatement", + "src": "20098:139:2" + }, + { + "expression": { + "hexValue": "74727565", + "id": 1715, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20253:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1692, + "id": 1716, + "nodeType": "Return", + "src": "20246:11:2" + } + ] + }, + "documentation": { + "id": 1686, + "nodeType": "StructuredDocumentation", + "src": "19939:72:2", + "text": " @dev Returns whether the provided byte array is zero." + }, + "id": 1718, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_zeroBytes", + "nameLocation": "20025:10:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1689, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1688, + "mutability": "mutable", + "name": "byteArray", + "nameLocation": "20049:9:2", + "nodeType": "VariableDeclaration", + "scope": 1718, + "src": "20036:22:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1687, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "20036:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "20035:24:2" + }, + "returnParameters": { + "id": 1692, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1691, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1718, + "src": "20082:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1690, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "20082:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "20081:6:2" + }, + "scope": 2414, + "src": "20016:248:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1936, + "nodeType": "Block", + "src": "20624:5124:2", + "statements": [ + { + "id": 1935, + "nodeType": "UncheckedBlock", + "src": "20634:5108:2", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1726, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1721, + "src": "20728:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "hexValue": "31", + "id": 1727, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20733:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "20728:6:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1732, + "nodeType": "IfStatement", + "src": "20724:53:2", + "trueBody": { + "id": 1731, + "nodeType": "Block", + "src": "20736:41:2", + "statements": [ + { + "expression": { + "id": 1729, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1721, + "src": "20761:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1725, + "id": 1730, + "nodeType": "Return", + "src": "20754:8:2" + } + ] + } + }, + { + "assignments": [ + 1734 + ], + "declarations": [ + { + "constant": false, + "id": 1734, + "mutability": "mutable", + "name": "aa", + "nameLocation": "21712:2:2", + "nodeType": "VariableDeclaration", + "scope": 1935, + "src": "21704:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1733, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21704:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1736, + "initialValue": { + "id": 1735, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1721, + "src": "21717:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21704:14:2" + }, + { + "assignments": [ + 1738 + ], + "declarations": [ + { + "constant": false, + "id": 1738, + "mutability": "mutable", + "name": "xn", + "nameLocation": "21740:2:2", + "nodeType": "VariableDeclaration", + "scope": 1935, + "src": "21732:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1737, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21732:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1740, + "initialValue": { + "hexValue": "31", + "id": 1739, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21745:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "VariableDeclarationStatement", + "src": "21732:14:2" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1741, + "name": "aa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1734, + "src": "21765:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1456" + }, + "id": 1744, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 1742, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21772:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313238", + "id": 1743, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21777:3:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "21772:8:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1456" + } + } + ], + "id": 1745, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "21771:10:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1456" + } + }, + "src": "21765:16:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1756, + "nodeType": "IfStatement", + "src": "21761:92:2", + "trueBody": { + "id": 1755, + "nodeType": "Block", + "src": "21783:70:2", + "statements": [ + { + "expression": { + "id": 1749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1747, + "name": "aa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1734, + "src": "21801:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "313238", + "id": 1748, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21808:3:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "21801:10:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1750, + "nodeType": "ExpressionStatement", + "src": "21801:10:2" + }, + { + "expression": { + "id": 1753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1751, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "21829:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "<<=", + "rightHandSide": { + "hexValue": "3634", + "id": 1752, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21836:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "21829:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1754, + "nodeType": "ExpressionStatement", + "src": "21829:9:2" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1757, + "name": "aa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1734, + "src": "21870:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_18446744073709551616_by_1", + "typeString": "int_const 18446744073709551616" + }, + "id": 1760, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 1758, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21877:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "3634", + "id": 1759, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21882:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "21877:7:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_18446744073709551616_by_1", + "typeString": "int_const 18446744073709551616" + } + } + ], + "id": 1761, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "21876:9:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_18446744073709551616_by_1", + "typeString": "int_const 18446744073709551616" + } + }, + "src": "21870:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1772, + "nodeType": "IfStatement", + "src": "21866:90:2", + "trueBody": { + "id": 1771, + "nodeType": "Block", + "src": "21887:69:2", + "statements": [ + { + "expression": { + "id": 1765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1763, + "name": "aa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1734, + "src": "21905:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "3634", + "id": 1764, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21912:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "21905:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1766, + "nodeType": "ExpressionStatement", + "src": "21905:9:2" + }, + { + "expression": { + "id": 1769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1767, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "21932:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "<<=", + "rightHandSide": { + "hexValue": "3332", + "id": 1768, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21939:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "21932:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1770, + "nodeType": "ExpressionStatement", + "src": "21932:9:2" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1773, + "name": "aa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1734, + "src": "21973:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_4294967296_by_1", + "typeString": "int_const 4294967296" + }, + "id": 1776, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 1774, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21980:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "3332", + "id": 1775, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21985:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "21980:7:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967296_by_1", + "typeString": "int_const 4294967296" + } + } + ], + "id": 1777, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "21979:9:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967296_by_1", + "typeString": "int_const 4294967296" + } + }, + "src": "21973:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1788, + "nodeType": "IfStatement", + "src": "21969:90:2", + "trueBody": { + "id": 1787, + "nodeType": "Block", + "src": "21990:69:2", + "statements": [ + { + "expression": { + "id": 1781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1779, + "name": "aa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1734, + "src": "22008:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "3332", + "id": 1780, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22015:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "22008:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1782, + "nodeType": "ExpressionStatement", + "src": "22008:9:2" + }, + { + "expression": { + "id": 1785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1783, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "22035:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "<<=", + "rightHandSide": { + "hexValue": "3136", + "id": 1784, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22042:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "22035:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1786, + "nodeType": "ExpressionStatement", + "src": "22035:9:2" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1789, + "name": "aa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1734, + "src": "22076:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_65536_by_1", + "typeString": "int_const 65536" + }, + "id": 1792, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 1790, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22083:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "3136", + "id": 1791, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22088:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "22083:7:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_65536_by_1", + "typeString": "int_const 65536" + } + } + ], + "id": 1793, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "22082:9:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_65536_by_1", + "typeString": "int_const 65536" + } + }, + "src": "22076:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1804, + "nodeType": "IfStatement", + "src": "22072:89:2", + "trueBody": { + "id": 1803, + "nodeType": "Block", + "src": "22093:68:2", + "statements": [ + { + "expression": { + "id": 1797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1795, + "name": "aa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1734, + "src": "22111:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "3136", + "id": 1796, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22118:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "22111:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1798, + "nodeType": "ExpressionStatement", + "src": "22111:9:2" + }, + { + "expression": { + "id": 1801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1799, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "22138:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "<<=", + "rightHandSide": { + "hexValue": "38", + "id": 1800, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22145:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "22138:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1802, + "nodeType": "ExpressionStatement", + "src": "22138:8:2" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1810, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1805, + "name": "aa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1734, + "src": "22178:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "id": 1808, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 1806, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22185:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "38", + "id": 1807, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22190:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "22185:6:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + } + } + ], + "id": 1809, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "22184:8:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + } + }, + "src": "22178:14:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1820, + "nodeType": "IfStatement", + "src": "22174:87:2", + "trueBody": { + "id": 1819, + "nodeType": "Block", + "src": "22194:67:2", + "statements": [ + { + "expression": { + "id": 1813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1811, + "name": "aa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1734, + "src": "22212:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "38", + "id": 1812, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22219:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "22212:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1814, + "nodeType": "ExpressionStatement", + "src": "22212:8:2" + }, + { + "expression": { + "id": 1817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1815, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "22238:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "<<=", + "rightHandSide": { + "hexValue": "34", + "id": 1816, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22245:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "22238:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1818, + "nodeType": "ExpressionStatement", + "src": "22238:8:2" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1821, + "name": "aa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1734, + "src": "22278:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "id": 1824, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 1822, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22285:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "34", + "id": 1823, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22290:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "22285:6:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + } + } + ], + "id": 1825, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "22284:8:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + } + }, + "src": "22278:14:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1836, + "nodeType": "IfStatement", + "src": "22274:87:2", + "trueBody": { + "id": 1835, + "nodeType": "Block", + "src": "22294:67:2", + "statements": [ + { + "expression": { + "id": 1829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1827, + "name": "aa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1734, + "src": "22312:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "34", + "id": 1828, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22319:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "22312:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1830, + "nodeType": "ExpressionStatement", + "src": "22312:8:2" + }, + { + "expression": { + "id": 1833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1831, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "22338:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "<<=", + "rightHandSide": { + "hexValue": "32", + "id": 1832, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22345:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "22338:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1834, + "nodeType": "ExpressionStatement", + "src": "22338:8:2" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1837, + "name": "aa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1734, + "src": "22378:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "id": 1840, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 1838, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22385:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "32", + "id": 1839, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22390:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "22385:6:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + } + } + ], + "id": 1841, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "22384:8:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + } + }, + "src": "22378:14:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1848, + "nodeType": "IfStatement", + "src": "22374:61:2", + "trueBody": { + "id": 1847, + "nodeType": "Block", + "src": "22394:41:2", + "statements": [ + { + "expression": { + "id": 1845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1843, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "22412:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "<<=", + "rightHandSide": { + "hexValue": "31", + "id": 1844, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22419:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "22412:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1846, + "nodeType": "ExpressionStatement", + "src": "22412:8:2" + } + ] + } + }, + { + "expression": { + "id": 1856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1849, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "22855:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "33", + "id": 1850, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22861:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 1851, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "22865:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22861:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1853, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "22860:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 1854, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22872:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "22860:13:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22855:18:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1857, + "nodeType": "ExpressionStatement", + "src": "22855:18:2" + }, + { + "expression": { + "id": 1867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1858, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "24760:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1859, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "24766:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1860, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1721, + "src": "24771:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 1861, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "24775:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24771:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24766:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1864, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "24765:13:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 1865, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24782:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "24765:18:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24760:23:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1868, + "nodeType": "ExpressionStatement", + "src": "24760:23:2" + }, + { + "expression": { + "id": 1878, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1869, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "24869:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1874, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1870, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "24875:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1871, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1721, + "src": "24880:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 1872, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "24884:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24880:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24875:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1875, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "24874:13:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 1876, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24891:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "24874:18:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24869:23:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1879, + "nodeType": "ExpressionStatement", + "src": "24869:23:2" + }, + { + "expression": { + "id": 1889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1880, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "24980:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1888, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1881, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "24986:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1882, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1721, + "src": "24991:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 1883, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "24995:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24991:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24986:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1886, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "24985:13:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 1887, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25002:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "24985:18:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24980:23:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1890, + "nodeType": "ExpressionStatement", + "src": "24980:23:2" + }, + { + "expression": { + "id": 1900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1891, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "25089:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1896, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1892, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "25095:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1893, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1721, + "src": "25100:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 1894, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "25104:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25100:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25095:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1897, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "25094:13:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 1898, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25111:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "25094:18:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25089:23:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1901, + "nodeType": "ExpressionStatement", + "src": "25089:23:2" + }, + { + "expression": { + "id": 1911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1902, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "25199:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1910, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1903, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "25205:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1904, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1721, + "src": "25210:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 1905, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "25214:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25210:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25205:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1908, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "25204:13:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 1909, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25221:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "25204:18:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25199:23:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1912, + "nodeType": "ExpressionStatement", + "src": "25199:23:2" + }, + { + "expression": { + "id": 1922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1913, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "25309:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1914, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "25315:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1917, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1915, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1721, + "src": "25320:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 1916, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "25324:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25320:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25315:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1919, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "25314:13:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 1920, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25331:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "25314:18:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25309:23:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1923, + "nodeType": "ExpressionStatement", + "src": "25309:23:2" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1933, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1924, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "25698:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1927, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "25719:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1928, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1721, + "src": "25724:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 1929, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1738, + "src": "25728:2:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25724:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25719:11:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 1925, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4179, + "src": "25703:8:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$4179_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 1926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25712:6:2", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4178, + "src": "25703:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 1932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25703:28:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25698:33:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1725, + "id": 1934, + "nodeType": "Return", + "src": "25691:40:2" + } + ] + } + ] + }, + "documentation": { + "id": 1719, + "nodeType": "StructuredDocumentation", + "src": "20270:292:2", + "text": " @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n This method is based on Newton's method for computing square roots; the algorithm is restricted to only\n using integer operations." + }, + "id": 1937, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sqrt", + "nameLocation": "20576:4:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1722, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1721, + "mutability": "mutable", + "name": "a", + "nameLocation": "20589:1:2", + "nodeType": "VariableDeclaration", + "scope": 1937, + "src": "20581:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1720, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20581:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "20580:11:2" + }, + "returnParameters": { + "id": 1725, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1724, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1937, + "src": "20615:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1723, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20615:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "20614:9:2" + }, + "scope": 2414, + "src": "20567:5181:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1970, + "nodeType": "Block", + "src": "25921:171:2", + "statements": [ + { + "id": 1969, + "nodeType": "UncheckedBlock", + "src": "25931:155:2", + "statements": [ + { + "assignments": [ + 1949 + ], + "declarations": [ + { + "constant": false, + "id": 1949, + "mutability": "mutable", + "name": "result", + "nameLocation": "25963:6:2", + "nodeType": "VariableDeclaration", + "scope": 1969, + "src": "25955:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1948, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25955:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1953, + "initialValue": { + "arguments": [ + { + "id": 1951, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1940, + "src": "25977:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1950, + "name": "sqrt", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1937, + 1971 + ], + "referencedDeclaration": 1937, + "src": "25972:4:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 1952, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25972:7:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "25955:24:2" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1954, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1949, + "src": "26000:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 1958, + "name": "rounding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1943, + "src": "26042:8:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + } + ], + "id": 1957, + "name": "unsignedRoundsUp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2392, + "src": "26025:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$784_$returns$_t_bool_$", + "typeString": "function (enum Math.Rounding) pure returns (bool)" + } + }, + "id": 1959, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26025:26:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1962, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1960, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1949, + "src": "26055:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 1961, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1949, + "src": "26064:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26055:15:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 1963, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1940, + "src": "26073:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26055:19:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "26025:49:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 1955, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4179, + "src": "26009:8:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$4179_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 1956, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26018:6:2", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4178, + "src": "26009:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 1966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26009:66:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26000:75:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1947, + "id": 1968, + "nodeType": "Return", + "src": "25993:82:2" + } + ] + } + ] + }, + "documentation": { + "id": 1938, + "nodeType": "StructuredDocumentation", + "src": "25754:86:2", + "text": " @dev Calculates sqrt(a), following the selected rounding direction." + }, + "id": 1971, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sqrt", + "nameLocation": "25854:4:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1944, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1940, + "mutability": "mutable", + "name": "a", + "nameLocation": "25867:1:2", + "nodeType": "VariableDeclaration", + "scope": 1971, + "src": "25859:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1939, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25859:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1943, + "mutability": "mutable", + "name": "rounding", + "nameLocation": "25879:8:2", + "nodeType": "VariableDeclaration", + "scope": 1971, + "src": "25870:17:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + }, + "typeName": { + "id": 1942, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1941, + "name": "Rounding", + "nameLocations": [ + "25870:8:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 784, + "src": "25870:8:2" + }, + "referencedDeclaration": 784, + "src": "25870:8:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + } + }, + "visibility": "internal" + } + ], + "src": "25858:30:2" + }, + "returnParameters": { + "id": 1947, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1946, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1971, + "src": "25912:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1945, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25912:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "25911:9:2" + }, + "scope": 2414, + "src": "25845:247:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2061, + "nodeType": "Block", + "src": "26281:2334:2", + "statements": [ + { + "expression": { + "id": 1988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1979, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "26363:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1982, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1974, + "src": "26383:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30786666666666666666666666666666666666666666666666666666666666666666", + "id": 1983, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26387:34:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211455_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1455" + }, + "value": "0xffffffffffffffffffffffffffffffff" + }, + "src": "26383:38:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 1980, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4179, + "src": "26367:8:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$4179_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 1981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26376:6:2", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4178, + "src": "26367:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 1985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26367:55:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "37", + "id": 1986, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26426:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_7_by_1", + "typeString": "int_const 7" + }, + "value": "7" + }, + "src": "26367:60:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26363:64:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1989, + "nodeType": "ExpressionStatement", + "src": "26363:64:2" + }, + { + "expression": { + "id": 2002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1990, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "26503:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1993, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1974, + "src": "26525:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 1994, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "26530:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26525:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1996, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "26524:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "307866666666666666666666666666666666", + "id": 1997, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26535:18:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_18446744073709551615_by_1", + "typeString": "int_const 18446744073709551615" + }, + "value": "0xffffffffffffffff" + }, + "src": "26524:29:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 1991, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4179, + "src": "26508:8:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$4179_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 1992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26517:6:2", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4178, + "src": "26508:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 1999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26508:46:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "36", + "id": 2000, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26558:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_6_by_1", + "typeString": "int_const 6" + }, + "value": "6" + }, + "src": "26508:51:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26503:56:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2003, + "nodeType": "ExpressionStatement", + "src": "26503:56:2" + }, + { + "expression": { + "id": 2016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2004, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "26634:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2007, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1974, + "src": "26656:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 2008, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "26661:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26656:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2010, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "26655:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30786666666666666666", + "id": 2011, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26666:10:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967295_by_1", + "typeString": "int_const 4294967295" + }, + "value": "0xffffffff" + }, + "src": "26655:21:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 2005, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4179, + "src": "26639:8:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$4179_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 2006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26648:6:2", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4178, + "src": "26639:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 2013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26639:38:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "35", + "id": 2014, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26681:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "src": "26639:43:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26634:48:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2017, + "nodeType": "ExpressionStatement", + "src": "26634:48:2" + }, + { + "expression": { + "id": 2030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2018, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "26757:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2021, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1974, + "src": "26779:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 2022, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "26784:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26779:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2024, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "26778:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "307866666666", + "id": 2025, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26789:6:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_65535_by_1", + "typeString": "int_const 65535" + }, + "value": "0xffff" + }, + "src": "26778:17:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 2019, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4179, + "src": "26762:8:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$4179_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 2020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26771:6:2", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4178, + "src": "26762:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 2027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26762:34:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "34", + "id": 2028, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26800:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "26762:39:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26757:44:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2031, + "nodeType": "ExpressionStatement", + "src": "26757:44:2" + }, + { + "expression": { + "id": 2044, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2032, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "26874:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2040, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2035, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1974, + "src": "26896:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 2036, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "26901:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26896:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2038, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "26895:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30786666", + "id": 2039, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26906:4:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "0xff" + }, + "src": "26895:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 2033, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4179, + "src": "26879:8:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$4179_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 2034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26888:6:2", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4178, + "src": "26879:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 2041, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26879:32:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "33", + "id": 2042, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26915:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "src": "26879:37:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26874:42:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2045, + "nodeType": "ExpressionStatement", + "src": "26874:42:2" + }, + { + "expression": { + "id": 2058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2046, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "26988:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2054, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2049, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1974, + "src": "27010:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 2050, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "27015:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27010:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2052, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27009:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "307866", + "id": 2053, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27020:3:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_15_by_1", + "typeString": "int_const 15" + }, + "value": "0xf" + }, + "src": "27009:14:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 2047, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4179, + "src": "26993:8:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$4179_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 2048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27002:6:2", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4178, + "src": "26993:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 2055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26993:31:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "32", + "id": 2056, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27028:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "26993:36:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26988:41:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2059, + "nodeType": "ExpressionStatement", + "src": "26988:41:2" + }, + { + "AST": { + "nativeSrc": "28490:119:2", + "nodeType": "YulBlock", + "src": "28490:119:2", + "statements": [ + { + "nativeSrc": "28504:95:2", + "nodeType": "YulAssignment", + "src": "28504:95:2", + "value": { + "arguments": [ + { + "name": "r", + "nativeSrc": "28512:1:2", + "nodeType": "YulIdentifier", + "src": "28512:1:2" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "r", + "nativeSrc": "28524:1:2", + "nodeType": "YulIdentifier", + "src": "28524:1:2" + }, + { + "name": "x", + "nativeSrc": "28527:1:2", + "nodeType": "YulIdentifier", + "src": "28527:1:2" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "28520:3:2", + "nodeType": "YulIdentifier", + "src": "28520:3:2" + }, + "nativeSrc": "28520:9:2", + "nodeType": "YulFunctionCall", + "src": "28520:9:2" + }, + { + "kind": "number", + "nativeSrc": "28531:66:2", + "nodeType": "YulLiteral", + "src": "28531:66:2", + "type": "", + "value": "0x0000010102020202030303030303030300000000000000000000000000000000" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "28515:4:2", + "nodeType": "YulIdentifier", + "src": "28515:4:2" + }, + "nativeSrc": "28515:83:2", + "nodeType": "YulFunctionCall", + "src": "28515:83:2" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "28509:2:2", + "nodeType": "YulIdentifier", + "src": "28509:2:2" + }, + "nativeSrc": "28509:90:2", + "nodeType": "YulFunctionCall", + "src": "28509:90:2" + }, + "variableNames": [ + { + "name": "r", + "nativeSrc": "28504:1:2", + "nodeType": "YulIdentifier", + "src": "28504:1:2" + } + ] + } + ] + }, + "evmVersion": "prague", + "externalReferences": [ + { + "declaration": 1977, + "isOffset": false, + "isSlot": false, + "src": "28504:1:2", + "valueSize": 1 + }, + { + "declaration": 1977, + "isOffset": false, + "isSlot": false, + "src": "28512:1:2", + "valueSize": 1 + }, + { + "declaration": 1977, + "isOffset": false, + "isSlot": false, + "src": "28524:1:2", + "valueSize": 1 + }, + { + "declaration": 1974, + "isOffset": false, + "isSlot": false, + "src": "28527:1:2", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 2060, + "nodeType": "InlineAssembly", + "src": "28465:144:2" + } + ] + }, + "documentation": { + "id": 1972, + "nodeType": "StructuredDocumentation", + "src": "26098:119:2", + "text": " @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0." + }, + "id": 2062, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "log2", + "nameLocation": "26231:4:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1975, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1974, + "mutability": "mutable", + "name": "x", + "nameLocation": "26244:1:2", + "nodeType": "VariableDeclaration", + "scope": 2062, + "src": "26236:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1973, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26236:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26235:11:2" + }, + "returnParameters": { + "id": 1978, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1977, + "mutability": "mutable", + "name": "r", + "nameLocation": "26278:1:2", + "nodeType": "VariableDeclaration", + "scope": 2062, + "src": "26270:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1976, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26270:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26269:11:2" + }, + "scope": 2414, + "src": "26222:2393:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2095, + "nodeType": "Block", + "src": "28848:175:2", + "statements": [ + { + "id": 2094, + "nodeType": "UncheckedBlock", + "src": "28858:159:2", + "statements": [ + { + "assignments": [ + 2074 + ], + "declarations": [ + { + "constant": false, + "id": 2074, + "mutability": "mutable", + "name": "result", + "nameLocation": "28890:6:2", + "nodeType": "VariableDeclaration", + "scope": 2094, + "src": "28882:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2073, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28882:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2078, + "initialValue": { + "arguments": [ + { + "id": 2076, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2065, + "src": "28904:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2075, + "name": "log2", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2062, + 2096 + ], + "referencedDeclaration": 2062, + "src": "28899:4:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 2077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28899:11:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "28882:28:2" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2092, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2079, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2074, + "src": "28931:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2090, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 2083, + "name": "rounding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2068, + "src": "28973:8:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + } + ], + "id": 2082, + "name": "unsignedRoundsUp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2392, + "src": "28956:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$784_$returns$_t_bool_$", + "typeString": "function (enum Math.Rounding) pure returns (bool)" + } + }, + "id": 2084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28956:26:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2089, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2087, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 2085, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28986:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "id": 2086, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2074, + "src": "28991:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28986:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 2088, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2065, + "src": "29000:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28986:19:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "28956:49:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 2080, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4179, + "src": "28940:8:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$4179_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 2081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28949:6:2", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4178, + "src": "28940:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 2091, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28940:66:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28931:75:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2072, + "id": 2093, + "nodeType": "Return", + "src": "28924:82:2" + } + ] + } + ] + }, + "documentation": { + "id": 2063, + "nodeType": "StructuredDocumentation", + "src": "28621:142:2", + "text": " @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0." + }, + "id": 2096, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "log2", + "nameLocation": "28777:4:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2069, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2065, + "mutability": "mutable", + "name": "value", + "nameLocation": "28790:5:2", + "nodeType": "VariableDeclaration", + "scope": 2096, + "src": "28782:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2064, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28782:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2068, + "mutability": "mutable", + "name": "rounding", + "nameLocation": "28806:8:2", + "nodeType": "VariableDeclaration", + "scope": 2096, + "src": "28797:17:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + }, + "typeName": { + "id": 2067, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2066, + "name": "Rounding", + "nameLocations": [ + "28797:8:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 784, + "src": "28797:8:2" + }, + "referencedDeclaration": 784, + "src": "28797:8:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + } + }, + "visibility": "internal" + } + ], + "src": "28781:34:2" + }, + "returnParameters": { + "id": 2072, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2071, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2096, + "src": "28839:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2070, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28839:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "28838:9:2" + }, + "scope": 2414, + "src": "28768:255:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2224, + "nodeType": "Block", + "src": "29216:854:2", + "statements": [ + { + "assignments": [ + 2105 + ], + "declarations": [ + { + "constant": false, + "id": 2105, + "mutability": "mutable", + "name": "result", + "nameLocation": "29234:6:2", + "nodeType": "VariableDeclaration", + "scope": 2224, + "src": "29226:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2104, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29226:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2107, + "initialValue": { + "hexValue": "30", + "id": 2106, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29243:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "29226:18:2" + }, + { + "id": 2221, + "nodeType": "UncheckedBlock", + "src": "29254:787:2", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2112, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2108, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2099, + "src": "29282:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1", + "typeString": "int_const 1000...(57 digits omitted)...0000" + }, + "id": 2111, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 2109, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29291:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "3634", + "id": 2110, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29297:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "29291:8:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1", + "typeString": "int_const 1000...(57 digits omitted)...0000" + } + }, + "src": "29282:17:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2124, + "nodeType": "IfStatement", + "src": "29278:103:2", + "trueBody": { + "id": 2123, + "nodeType": "Block", + "src": "29301:80:2", + "statements": [ + { + "expression": { + "id": 2117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2113, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2099, + "src": "29319:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1", + "typeString": "int_const 1000...(57 digits omitted)...0000" + }, + "id": 2116, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 2114, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29328:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "3634", + "id": 2115, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29334:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "29328:8:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1", + "typeString": "int_const 1000...(57 digits omitted)...0000" + } + }, + "src": "29319:17:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2118, + "nodeType": "ExpressionStatement", + "src": "29319:17:2" + }, + { + "expression": { + "id": 2121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2119, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2105, + "src": "29354:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "3634", + "id": 2120, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29364:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "29354:12:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2122, + "nodeType": "ExpressionStatement", + "src": "29354:12:2" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2129, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2125, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2099, + "src": "29398:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_100000000000000000000000000000000_by_1", + "typeString": "int_const 1000...(25 digits omitted)...0000" + }, + "id": 2128, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 2126, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29407:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "3332", + "id": 2127, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29413:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "29407:8:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_100000000000000000000000000000000_by_1", + "typeString": "int_const 1000...(25 digits omitted)...0000" + } + }, + "src": "29398:17:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2141, + "nodeType": "IfStatement", + "src": "29394:103:2", + "trueBody": { + "id": 2140, + "nodeType": "Block", + "src": "29417:80:2", + "statements": [ + { + "expression": { + "id": 2134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2130, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2099, + "src": "29435:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_rational_100000000000000000000000000000000_by_1", + "typeString": "int_const 1000...(25 digits omitted)...0000" + }, + "id": 2133, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 2131, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29444:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "3332", + "id": 2132, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29450:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "29444:8:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_100000000000000000000000000000000_by_1", + "typeString": "int_const 1000...(25 digits omitted)...0000" + } + }, + "src": "29435:17:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2135, + "nodeType": "ExpressionStatement", + "src": "29435:17:2" + }, + { + "expression": { + "id": 2138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2136, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2105, + "src": "29470:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "3332", + "id": 2137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29480:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "29470:12:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2139, + "nodeType": "ExpressionStatement", + "src": "29470:12:2" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2142, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2099, + "src": "29514:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_10000000000000000_by_1", + "typeString": "int_const 10000000000000000" + }, + "id": 2145, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 2143, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29523:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "3136", + "id": 2144, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29529:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "29523:8:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000000000000000_by_1", + "typeString": "int_const 10000000000000000" + } + }, + "src": "29514:17:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2158, + "nodeType": "IfStatement", + "src": "29510:103:2", + "trueBody": { + "id": 2157, + "nodeType": "Block", + "src": "29533:80:2", + "statements": [ + { + "expression": { + "id": 2151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2147, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2099, + "src": "29551:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_rational_10000000000000000_by_1", + "typeString": "int_const 10000000000000000" + }, + "id": 2150, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 2148, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29560:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "3136", + "id": 2149, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29566:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "29560:8:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000000000000000_by_1", + "typeString": "int_const 10000000000000000" + } + }, + "src": "29551:17:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2152, + "nodeType": "ExpressionStatement", + "src": "29551:17:2" + }, + { + "expression": { + "id": 2155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2153, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2105, + "src": "29586:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "3136", + "id": 2154, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29596:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "29586:12:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2156, + "nodeType": "ExpressionStatement", + "src": "29586:12:2" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2159, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2099, + "src": "29630:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_100000000_by_1", + "typeString": "int_const 100000000" + }, + "id": 2162, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 2160, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29639:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "38", + "id": 2161, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29645:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "29639:7:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_100000000_by_1", + "typeString": "int_const 100000000" + } + }, + "src": "29630:16:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2175, + "nodeType": "IfStatement", + "src": "29626:100:2", + "trueBody": { + "id": 2174, + "nodeType": "Block", + "src": "29648:78:2", + "statements": [ + { + "expression": { + "id": 2168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2164, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2099, + "src": "29666:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_rational_100000000_by_1", + "typeString": "int_const 100000000" + }, + "id": 2167, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 2165, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29675:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "38", + "id": 2166, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29681:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "29675:7:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_100000000_by_1", + "typeString": "int_const 100000000" + } + }, + "src": "29666:16:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2169, + "nodeType": "ExpressionStatement", + "src": "29666:16:2" + }, + { + "expression": { + "id": 2172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2170, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2105, + "src": "29700:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "38", + "id": 2171, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29710:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "29700:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2173, + "nodeType": "ExpressionStatement", + "src": "29700:11:2" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2176, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2099, + "src": "29743:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + }, + "id": 2179, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 2177, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29752:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "34", + "id": 2178, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29758:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "29752:7:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + } + }, + "src": "29743:16:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2192, + "nodeType": "IfStatement", + "src": "29739:100:2", + "trueBody": { + "id": 2191, + "nodeType": "Block", + "src": "29761:78:2", + "statements": [ + { + "expression": { + "id": 2185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2181, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2099, + "src": "29779:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + }, + "id": 2184, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 2182, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29788:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "34", + "id": 2183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29794:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "29788:7:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + } + }, + "src": "29779:16:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2186, + "nodeType": "ExpressionStatement", + "src": "29779:16:2" + }, + { + "expression": { + "id": 2189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2187, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2105, + "src": "29813:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "34", + "id": 2188, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29823:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "29813:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2190, + "nodeType": "ExpressionStatement", + "src": "29813:11:2" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2193, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2099, + "src": "29856:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + }, + "id": 2196, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 2194, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29865:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "32", + "id": 2195, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29871:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "29865:7:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + } + }, + "src": "29856:16:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2209, + "nodeType": "IfStatement", + "src": "29852:100:2", + "trueBody": { + "id": 2208, + "nodeType": "Block", + "src": "29874:78:2", + "statements": [ + { + "expression": { + "id": 2202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2198, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2099, + "src": "29892:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + }, + "id": 2201, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 2199, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29901:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "32", + "id": 2200, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29907:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "29901:7:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + } + }, + "src": "29892:16:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2203, + "nodeType": "ExpressionStatement", + "src": "29892:16:2" + }, + { + "expression": { + "id": 2206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2204, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2105, + "src": "29926:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "32", + "id": 2205, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29936:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "29926:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2207, + "nodeType": "ExpressionStatement", + "src": "29926:11:2" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2210, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2099, + "src": "29969:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "id": 2213, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 2211, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29978:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "31", + "id": 2212, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29984:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "29978:7:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + } + }, + "src": "29969:16:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2220, + "nodeType": "IfStatement", + "src": "29965:66:2", + "trueBody": { + "id": 2219, + "nodeType": "Block", + "src": "29987:44:2", + "statements": [ + { + "expression": { + "id": 2217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2215, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2105, + "src": "30005:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "31", + "id": 2216, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30015:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "30005:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2218, + "nodeType": "ExpressionStatement", + "src": "30005:11:2" + } + ] + } + } + ] + }, + { + "expression": { + "id": 2222, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2105, + "src": "30057:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2103, + "id": 2223, + "nodeType": "Return", + "src": "30050:13:2" + } + ] + }, + "documentation": { + "id": 2097, + "nodeType": "StructuredDocumentation", + "src": "29029:120:2", + "text": " @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0." + }, + "id": 2225, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "log10", + "nameLocation": "29163:5:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2100, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2099, + "mutability": "mutable", + "name": "value", + "nameLocation": "29177:5:2", + "nodeType": "VariableDeclaration", + "scope": 2225, + "src": "29169:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2098, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29169:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "29168:15:2" + }, + "returnParameters": { + "id": 2103, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2102, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2225, + "src": "29207:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2101, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29207:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "29206:9:2" + }, + "scope": 2414, + "src": "29154:916:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2258, + "nodeType": "Block", + "src": "30305:177:2", + "statements": [ + { + "id": 2257, + "nodeType": "UncheckedBlock", + "src": "30315:161:2", + "statements": [ + { + "assignments": [ + 2237 + ], + "declarations": [ + { + "constant": false, + "id": 2237, + "mutability": "mutable", + "name": "result", + "nameLocation": "30347:6:2", + "nodeType": "VariableDeclaration", + "scope": 2257, + "src": "30339:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2236, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30339:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2241, + "initialValue": { + "arguments": [ + { + "id": 2239, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2228, + "src": "30362:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2238, + "name": "log10", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2225, + 2259 + ], + "referencedDeclaration": 2225, + "src": "30356:5:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 2240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30356:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "30339:29:2" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2242, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2237, + "src": "30389:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 2246, + "name": "rounding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2231, + "src": "30431:8:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + } + ], + "id": 2245, + "name": "unsignedRoundsUp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2392, + "src": "30414:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$784_$returns$_t_bool_$", + "typeString": "function (enum Math.Rounding) pure returns (bool)" + } + }, + "id": 2247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30414:26:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2252, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 2248, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30444:2:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "id": 2249, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2237, + "src": "30450:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "30444:12:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 2251, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2228, + "src": "30459:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "30444:20:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "30414:50:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 2243, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4179, + "src": "30398:8:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$4179_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 2244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "30407:6:2", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4178, + "src": "30398:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 2254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30398:67:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "30389:76:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2235, + "id": 2256, + "nodeType": "Return", + "src": "30382:83:2" + } + ] + } + ] + }, + "documentation": { + "id": 2226, + "nodeType": "StructuredDocumentation", + "src": "30076:143:2", + "text": " @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0." + }, + "id": 2259, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "log10", + "nameLocation": "30233:5:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2232, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2228, + "mutability": "mutable", + "name": "value", + "nameLocation": "30247:5:2", + "nodeType": "VariableDeclaration", + "scope": 2259, + "src": "30239:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2227, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30239:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2231, + "mutability": "mutable", + "name": "rounding", + "nameLocation": "30263:8:2", + "nodeType": "VariableDeclaration", + "scope": 2259, + "src": "30254:17:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + }, + "typeName": { + "id": 2230, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2229, + "name": "Rounding", + "nameLocations": [ + "30254:8:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 784, + "src": "30254:8:2" + }, + "referencedDeclaration": 784, + "src": "30254:8:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + } + }, + "visibility": "internal" + } + ], + "src": "30238:34:2" + }, + "returnParameters": { + "id": 2235, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2234, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2259, + "src": "30296:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2233, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30296:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "30295:9:2" + }, + "scope": 2414, + "src": "30224:258:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2335, + "nodeType": "Block", + "src": "30800:675:2", + "statements": [ + { + "expression": { + "id": 2276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2267, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2265, + "src": "30882:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2270, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2262, + "src": "30902:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30786666666666666666666666666666666666666666666666666666666666666666", + "id": 2271, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30906:34:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211455_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1455" + }, + "value": "0xffffffffffffffffffffffffffffffff" + }, + "src": "30902:38:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 2268, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4179, + "src": "30886:8:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$4179_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 2269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "30895:6:2", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4178, + "src": "30886:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 2273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30886:55:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "37", + "id": 2274, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30945:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_7_by_1", + "typeString": "int_const 7" + }, + "value": "7" + }, + "src": "30886:60:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "30882:64:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2277, + "nodeType": "ExpressionStatement", + "src": "30882:64:2" + }, + { + "expression": { + "id": 2290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2278, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2265, + "src": "31022:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2281, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2262, + "src": "31044:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 2282, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2265, + "src": "31049:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31044:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2284, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "31043:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "307866666666666666666666666666666666", + "id": 2285, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31054:18:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_18446744073709551615_by_1", + "typeString": "int_const 18446744073709551615" + }, + "value": "0xffffffffffffffff" + }, + "src": "31043:29:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 2279, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4179, + "src": "31027:8:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$4179_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 2280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "31036:6:2", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4178, + "src": "31027:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 2287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31027:46:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "36", + "id": 2288, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31077:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_6_by_1", + "typeString": "int_const 6" + }, + "value": "6" + }, + "src": "31027:51:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31022:56:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2291, + "nodeType": "ExpressionStatement", + "src": "31022:56:2" + }, + { + "expression": { + "id": 2304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2292, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2265, + "src": "31153:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2297, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2295, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2262, + "src": "31175:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 2296, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2265, + "src": "31180:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31175:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2298, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "31174:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30786666666666666666", + "id": 2299, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31185:10:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967295_by_1", + "typeString": "int_const 4294967295" + }, + "value": "0xffffffff" + }, + "src": "31174:21:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 2293, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4179, + "src": "31158:8:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$4179_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 2294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "31167:6:2", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4178, + "src": "31158:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 2301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31158:38:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "35", + "id": 2302, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31200:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_5_by_1", + "typeString": "int_const 5" + }, + "value": "5" + }, + "src": "31158:43:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31153:48:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2305, + "nodeType": "ExpressionStatement", + "src": "31153:48:2" + }, + { + "expression": { + "id": 2318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2306, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2265, + "src": "31276:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2317, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2309, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2262, + "src": "31298:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 2310, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2265, + "src": "31303:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31298:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2312, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "31297:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "307866666666", + "id": 2313, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31308:6:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_65535_by_1", + "typeString": "int_const 65535" + }, + "value": "0xffff" + }, + "src": "31297:17:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 2307, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4179, + "src": "31281:8:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$4179_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 2308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "31290:6:2", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4178, + "src": "31281:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 2315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31281:34:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "34", + "id": 2316, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31319:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "31281:39:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31276:44:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2319, + "nodeType": "ExpressionStatement", + "src": "31276:44:2" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2320, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2265, + "src": "31426:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "33", + "id": 2321, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31431:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "src": "31426:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2323, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "31425:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2326, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2262, + "src": "31453:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 2327, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2265, + "src": "31458:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31453:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2329, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "31452:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30786666", + "id": 2330, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31463:4:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "0xff" + }, + "src": "31452:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 2324, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4179, + "src": "31436:8:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$4179_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 2325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "31445:6:2", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4178, + "src": "31436:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 2332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31436:32:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31425:43:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2266, + "id": 2334, + "nodeType": "Return", + "src": "31418:50:2" + } + ] + }, + "documentation": { + "id": 2260, + "nodeType": "StructuredDocumentation", + "src": "30488:246:2", + "text": " @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string." + }, + "id": 2336, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "log256", + "nameLocation": "30748:6:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2263, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2262, + "mutability": "mutable", + "name": "x", + "nameLocation": "30763:1:2", + "nodeType": "VariableDeclaration", + "scope": 2336, + "src": "30755:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2261, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30755:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "30754:11:2" + }, + "returnParameters": { + "id": 2266, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2265, + "mutability": "mutable", + "name": "r", + "nameLocation": "30797:1:2", + "nodeType": "VariableDeclaration", + "scope": 2336, + "src": "30789:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2264, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30789:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "30788:11:2" + }, + "scope": 2414, + "src": "30739:736:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2372, + "nodeType": "Block", + "src": "31712:184:2", + "statements": [ + { + "id": 2371, + "nodeType": "UncheckedBlock", + "src": "31722:168:2", + "statements": [ + { + "assignments": [ + 2348 + ], + "declarations": [ + { + "constant": false, + "id": 2348, + "mutability": "mutable", + "name": "result", + "nameLocation": "31754:6:2", + "nodeType": "VariableDeclaration", + "scope": 2371, + "src": "31746:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2347, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31746:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2352, + "initialValue": { + "arguments": [ + { + "id": 2350, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2339, + "src": "31770:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2349, + "name": "log256", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2336, + 2373 + ], + "referencedDeclaration": 2336, + "src": "31763:6:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 2351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31763:13:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31746:30:2" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2353, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2348, + "src": "31797:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 2357, + "name": "rounding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2342, + "src": "31839:8:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + } + ], + "id": 2356, + "name": "unsignedRoundsUp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2392, + "src": "31822:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$784_$returns$_t_bool_$", + "typeString": "function (enum Math.Rounding) pure returns (bool)" + } + }, + "id": 2358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31822:26:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 2359, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31852:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2360, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2348, + "src": "31858:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "33", + "id": 2361, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31868:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "src": "31858:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2363, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "31857:13:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31852:18:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 2365, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2339, + "src": "31873:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31852:26:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "31822:56:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 2354, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4179, + "src": "31806:8:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$4179_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 2355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "31815:6:2", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4178, + "src": "31806:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 2368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31806:73:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31797:82:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2346, + "id": 2370, + "nodeType": "Return", + "src": "31790:89:2" + } + ] + } + ] + }, + "documentation": { + "id": 2337, + "nodeType": "StructuredDocumentation", + "src": "31481:144:2", + "text": " @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0." + }, + "id": 2373, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "log256", + "nameLocation": "31639:6:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2343, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2339, + "mutability": "mutable", + "name": "value", + "nameLocation": "31654:5:2", + "nodeType": "VariableDeclaration", + "scope": 2373, + "src": "31646:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2338, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31646:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2342, + "mutability": "mutable", + "name": "rounding", + "nameLocation": "31670:8:2", + "nodeType": "VariableDeclaration", + "scope": 2373, + "src": "31661:17:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + }, + "typeName": { + "id": 2341, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2340, + "name": "Rounding", + "nameLocations": [ + "31661:8:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 784, + "src": "31661:8:2" + }, + "referencedDeclaration": 784, + "src": "31661:8:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + } + }, + "visibility": "internal" + } + ], + "src": "31645:34:2" + }, + "returnParameters": { + "id": 2346, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2345, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2373, + "src": "31703:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2344, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31703:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "31702:9:2" + }, + "scope": 2414, + "src": "31630:266:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2391, + "nodeType": "Block", + "src": "32094:48:2", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 2389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 2387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 2384, + "name": "rounding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2377, + "src": "32117:8:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + } + ], + "id": 2383, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "32111:5:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 2382, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "32111:5:2", + "typeDescriptions": {} + } + }, + "id": 2385, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32111:15:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "hexValue": "32", + "id": 2386, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32129:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "32111:19:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "31", + "id": 2388, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32134:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "32111:24:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2381, + "id": 2390, + "nodeType": "Return", + "src": "32104:31:2" + } + ] + }, + "documentation": { + "id": 2374, + "nodeType": "StructuredDocumentation", + "src": "31902:113:2", + "text": " @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers." + }, + "id": 2392, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unsignedRoundsUp", + "nameLocation": "32029:16:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2378, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2377, + "mutability": "mutable", + "name": "rounding", + "nameLocation": "32055:8:2", + "nodeType": "VariableDeclaration", + "scope": 2392, + "src": "32046:17:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + }, + "typeName": { + "id": 2376, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2375, + "name": "Rounding", + "nameLocations": [ + "32046:8:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 784, + "src": "32046:8:2" + }, + "referencedDeclaration": 784, + "src": "32046:8:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$784", + "typeString": "enum Math.Rounding" + } + }, + "visibility": "internal" + } + ], + "src": "32045:19:2" + }, + "returnParameters": { + "id": 2381, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2380, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2392, + "src": "32088:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2379, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "32088:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "32087:6:2" + }, + "scope": 2414, + "src": "32020:122:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2412, + "nodeType": "Block", + "src": "32285:59:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2401, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2395, + "src": "32310:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2402, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32315:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "32310:6:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "323536", + "id": 2404, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32318:3:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "value": "256" + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "323535", + "id": 2405, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32323:3:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "255" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "arguments": [ + { + "id": 2407, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2395, + "src": "32334:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2406, + "name": "log2", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2062, + 2096 + ], + "referencedDeclaration": 2062, + "src": "32329:4:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 2408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32329:7:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "32323:13:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2400, + "name": "ternary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1061, + "src": "32302:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bool,uint256,uint256) pure returns (uint256)" + } + }, + "id": 2410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32302:35:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2399, + "id": 2411, + "nodeType": "Return", + "src": "32295:42:2" + } + ] + }, + "documentation": { + "id": 2393, + "nodeType": "StructuredDocumentation", + "src": "32148:76:2", + "text": " @dev Counts the number of leading zero bits in a uint256." + }, + "id": 2413, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "clz", + "nameLocation": "32238:3:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2396, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2395, + "mutability": "mutable", + "name": "x", + "nameLocation": "32250:1:2", + "nodeType": "VariableDeclaration", + "scope": 2413, + "src": "32242:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2394, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32242:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "32241:11:2" + }, + "returnParameters": { + "id": 2399, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2398, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2413, + "src": "32276:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2397, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32276:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "32275:9:2" + }, + "scope": 2414, + "src": "32229:115:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 2415, + "src": "281:32065:2", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "103:32244:2" + }, + "id": 2 + }, + "contracts/utils/math/SafeCast.sol": { + "ast": { + "absolutePath": "contracts/utils/math/SafeCast.sol", + "exportedSymbols": { + "SafeCast": [ + 4179 + ] + }, + "id": 4180, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2416, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "192:24:3" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "SafeCast", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 2417, + "nodeType": "StructuredDocumentation", + "src": "218:550:3", + "text": " @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\n checks.\n Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n easily result in undesired exploitation or bugs, since developers usually\n assume that overflows raise errors. `SafeCast` restores this intuition by\n reverting the transaction when such an operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always." + }, + "fullyImplemented": true, + "id": 4179, + "linearizedBaseContracts": [ + 4179 + ], + "name": "SafeCast", + "nameLocation": "777:8:3", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 2418, + "nodeType": "StructuredDocumentation", + "src": "792:68:3", + "text": " @dev Value doesn't fit in an uint of `bits` size." + }, + "errorSelector": "6dfcc650", + "id": 2424, + "name": "SafeCastOverflowedUintDowncast", + "nameLocation": "871:30:3", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 2423, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2420, + "mutability": "mutable", + "name": "bits", + "nameLocation": "908:4:3", + "nodeType": "VariableDeclaration", + "scope": 2424, + "src": "902:10:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2419, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "902:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2422, + "mutability": "mutable", + "name": "value", + "nameLocation": "922:5:3", + "nodeType": "VariableDeclaration", + "scope": 2424, + "src": "914:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2421, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "914:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "901:27:3" + }, + "src": "865:64:3" + }, + { + "documentation": { + "id": 2425, + "nodeType": "StructuredDocumentation", + "src": "935:75:3", + "text": " @dev An int value doesn't fit in an uint of `bits` size." + }, + "errorSelector": "a8ce4432", + "id": 2429, + "name": "SafeCastOverflowedIntToUint", + "nameLocation": "1021:27:3", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 2428, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2427, + "mutability": "mutable", + "name": "value", + "nameLocation": "1056:5:3", + "nodeType": "VariableDeclaration", + "scope": 2429, + "src": "1049:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2426, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1049:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1048:14:3" + }, + "src": "1015:48:3" + }, + { + "documentation": { + "id": 2430, + "nodeType": "StructuredDocumentation", + "src": "1069:67:3", + "text": " @dev Value doesn't fit in an int of `bits` size." + }, + "errorSelector": "327269a7", + "id": 2436, + "name": "SafeCastOverflowedIntDowncast", + "nameLocation": "1147:29:3", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 2435, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2432, + "mutability": "mutable", + "name": "bits", + "nameLocation": "1183:4:3", + "nodeType": "VariableDeclaration", + "scope": 2436, + "src": "1177:10:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2431, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1177:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2434, + "mutability": "mutable", + "name": "value", + "nameLocation": "1196:5:3", + "nodeType": "VariableDeclaration", + "scope": 2436, + "src": "1189:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2433, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1189:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1176:26:3" + }, + "src": "1141:62:3" + }, + { + "documentation": { + "id": 2437, + "nodeType": "StructuredDocumentation", + "src": "1209:75:3", + "text": " @dev An uint value doesn't fit in an int of `bits` size." + }, + "errorSelector": "24775e06", + "id": 2441, + "name": "SafeCastOverflowedUintToInt", + "nameLocation": "1295:27:3", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 2440, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2439, + "mutability": "mutable", + "name": "value", + "nameLocation": "1331:5:3", + "nodeType": "VariableDeclaration", + "scope": 2441, + "src": "1323:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2438, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1323:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1322:15:3" + }, + "src": "1289:49:3" + }, + { + "body": { + "id": 2468, + "nodeType": "Block", + "src": "1695:152:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2449, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2444, + "src": "1709:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2452, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1722:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint248_$", + "typeString": "type(uint248)" + }, + "typeName": { + "id": 2451, + "name": "uint248", + "nodeType": "ElementaryTypeName", + "src": "1722:7:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint248_$", + "typeString": "type(uint248)" + } + ], + "id": 2450, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "1717:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2453, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1717:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint248", + "typeString": "type(uint248)" + } + }, + "id": 2454, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1731:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "1717:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint248", + "typeString": "uint248" + } + }, + "src": "1709:25:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2462, + "nodeType": "IfStatement", + "src": "1705:105:3", + "trueBody": { + "id": 2461, + "nodeType": "Block", + "src": "1736:74:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323438", + "id": 2457, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1788:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_248_by_1", + "typeString": "int_const 248" + }, + "value": "248" + }, + { + "id": 2458, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2444, + "src": "1793:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_248_by_1", + "typeString": "int_const 248" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2456, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "1757:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 2459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1757:42:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2460, + "nodeType": "RevertStatement", + "src": "1750:49:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2465, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2444, + "src": "1834:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2464, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1826:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint248_$", + "typeString": "type(uint248)" + }, + "typeName": { + "id": 2463, + "name": "uint248", + "nodeType": "ElementaryTypeName", + "src": "1826:7:3", + "typeDescriptions": {} + } + }, + "id": 2466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1826:14:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint248", + "typeString": "uint248" + } + }, + "functionReturnParameters": 2448, + "id": 2467, + "nodeType": "Return", + "src": "1819:21:3" + } + ] + }, + "documentation": { + "id": 2442, + "nodeType": "StructuredDocumentation", + "src": "1344:280:3", + "text": " @dev Returns the downcasted uint248 from uint256, reverting on\n overflow (when the input is greater than largest uint248).\n Counterpart to Solidity's `uint248` operator.\n Requirements:\n - input must fit into 248 bits" + }, + "id": 2469, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint248", + "nameLocation": "1638:9:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2445, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2444, + "mutability": "mutable", + "name": "value", + "nameLocation": "1656:5:3", + "nodeType": "VariableDeclaration", + "scope": 2469, + "src": "1648:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2443, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1648:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1647:15:3" + }, + "returnParameters": { + "id": 2448, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2447, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2469, + "src": "1686:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint248", + "typeString": "uint248" + }, + "typeName": { + "id": 2446, + "name": "uint248", + "nodeType": "ElementaryTypeName", + "src": "1686:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint248", + "typeString": "uint248" + } + }, + "visibility": "internal" + } + ], + "src": "1685:9:3" + }, + "scope": 4179, + "src": "1629:218:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2496, + "nodeType": "Block", + "src": "2204:152:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2477, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2472, + "src": "2218:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2480, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2231:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint240_$", + "typeString": "type(uint240)" + }, + "typeName": { + "id": 2479, + "name": "uint240", + "nodeType": "ElementaryTypeName", + "src": "2231:7:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint240_$", + "typeString": "type(uint240)" + } + ], + "id": 2478, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "2226:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2481, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2226:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint240", + "typeString": "type(uint240)" + } + }, + "id": 2482, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2240:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "2226:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint240", + "typeString": "uint240" + } + }, + "src": "2218:25:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2490, + "nodeType": "IfStatement", + "src": "2214:105:3", + "trueBody": { + "id": 2489, + "nodeType": "Block", + "src": "2245:74:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323430", + "id": 2485, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2297:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_240_by_1", + "typeString": "int_const 240" + }, + "value": "240" + }, + { + "id": 2486, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2472, + "src": "2302:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_240_by_1", + "typeString": "int_const 240" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2484, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "2266:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 2487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2266:42:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2488, + "nodeType": "RevertStatement", + "src": "2259:49:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2493, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2472, + "src": "2343:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2492, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2335:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint240_$", + "typeString": "type(uint240)" + }, + "typeName": { + "id": 2491, + "name": "uint240", + "nodeType": "ElementaryTypeName", + "src": "2335:7:3", + "typeDescriptions": {} + } + }, + "id": 2494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2335:14:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint240", + "typeString": "uint240" + } + }, + "functionReturnParameters": 2476, + "id": 2495, + "nodeType": "Return", + "src": "2328:21:3" + } + ] + }, + "documentation": { + "id": 2470, + "nodeType": "StructuredDocumentation", + "src": "1853:280:3", + "text": " @dev Returns the downcasted uint240 from uint256, reverting on\n overflow (when the input is greater than largest uint240).\n Counterpart to Solidity's `uint240` operator.\n Requirements:\n - input must fit into 240 bits" + }, + "id": 2497, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint240", + "nameLocation": "2147:9:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2473, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2472, + "mutability": "mutable", + "name": "value", + "nameLocation": "2165:5:3", + "nodeType": "VariableDeclaration", + "scope": 2497, + "src": "2157:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2471, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2157:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2156:15:3" + }, + "returnParameters": { + "id": 2476, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2475, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2497, + "src": "2195:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint240", + "typeString": "uint240" + }, + "typeName": { + "id": 2474, + "name": "uint240", + "nodeType": "ElementaryTypeName", + "src": "2195:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint240", + "typeString": "uint240" + } + }, + "visibility": "internal" + } + ], + "src": "2194:9:3" + }, + "scope": 4179, + "src": "2138:218:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2524, + "nodeType": "Block", + "src": "2713:152:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2511, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2505, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2500, + "src": "2727:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2508, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2740:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint232_$", + "typeString": "type(uint232)" + }, + "typeName": { + "id": 2507, + "name": "uint232", + "nodeType": "ElementaryTypeName", + "src": "2740:7:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint232_$", + "typeString": "type(uint232)" + } + ], + "id": 2506, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "2735:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2509, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2735:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint232", + "typeString": "type(uint232)" + } + }, + "id": 2510, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2749:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "2735:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint232", + "typeString": "uint232" + } + }, + "src": "2727:25:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2518, + "nodeType": "IfStatement", + "src": "2723:105:3", + "trueBody": { + "id": 2517, + "nodeType": "Block", + "src": "2754:74:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323332", + "id": 2513, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2806:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_232_by_1", + "typeString": "int_const 232" + }, + "value": "232" + }, + { + "id": 2514, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2500, + "src": "2811:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_232_by_1", + "typeString": "int_const 232" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2512, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "2775:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 2515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2775:42:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2516, + "nodeType": "RevertStatement", + "src": "2768:49:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2521, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2500, + "src": "2852:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2520, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2844:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint232_$", + "typeString": "type(uint232)" + }, + "typeName": { + "id": 2519, + "name": "uint232", + "nodeType": "ElementaryTypeName", + "src": "2844:7:3", + "typeDescriptions": {} + } + }, + "id": 2522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2844:14:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint232", + "typeString": "uint232" + } + }, + "functionReturnParameters": 2504, + "id": 2523, + "nodeType": "Return", + "src": "2837:21:3" + } + ] + }, + "documentation": { + "id": 2498, + "nodeType": "StructuredDocumentation", + "src": "2362:280:3", + "text": " @dev Returns the downcasted uint232 from uint256, reverting on\n overflow (when the input is greater than largest uint232).\n Counterpart to Solidity's `uint232` operator.\n Requirements:\n - input must fit into 232 bits" + }, + "id": 2525, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint232", + "nameLocation": "2656:9:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2501, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2500, + "mutability": "mutable", + "name": "value", + "nameLocation": "2674:5:3", + "nodeType": "VariableDeclaration", + "scope": 2525, + "src": "2666:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2499, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2666:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2665:15:3" + }, + "returnParameters": { + "id": 2504, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2503, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2525, + "src": "2704:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint232", + "typeString": "uint232" + }, + "typeName": { + "id": 2502, + "name": "uint232", + "nodeType": "ElementaryTypeName", + "src": "2704:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint232", + "typeString": "uint232" + } + }, + "visibility": "internal" + } + ], + "src": "2703:9:3" + }, + "scope": 4179, + "src": "2647:218:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2552, + "nodeType": "Block", + "src": "3222:152:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2533, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2528, + "src": "3236:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2536, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3249:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint224_$", + "typeString": "type(uint224)" + }, + "typeName": { + "id": 2535, + "name": "uint224", + "nodeType": "ElementaryTypeName", + "src": "3249:7:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint224_$", + "typeString": "type(uint224)" + } + ], + "id": 2534, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "3244:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2537, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3244:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint224", + "typeString": "type(uint224)" + } + }, + "id": 2538, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3258:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "3244:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "src": "3236:25:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2546, + "nodeType": "IfStatement", + "src": "3232:105:3", + "trueBody": { + "id": 2545, + "nodeType": "Block", + "src": "3263:74:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323234", + "id": 2541, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3315:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_224_by_1", + "typeString": "int_const 224" + }, + "value": "224" + }, + { + "id": 2542, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2528, + "src": "3320:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_224_by_1", + "typeString": "int_const 224" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2540, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "3284:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 2543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3284:42:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2544, + "nodeType": "RevertStatement", + "src": "3277:49:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2549, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2528, + "src": "3361:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2548, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3353:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint224_$", + "typeString": "type(uint224)" + }, + "typeName": { + "id": 2547, + "name": "uint224", + "nodeType": "ElementaryTypeName", + "src": "3353:7:3", + "typeDescriptions": {} + } + }, + "id": 2550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3353:14:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "functionReturnParameters": 2532, + "id": 2551, + "nodeType": "Return", + "src": "3346:21:3" + } + ] + }, + "documentation": { + "id": 2526, + "nodeType": "StructuredDocumentation", + "src": "2871:280:3", + "text": " @dev Returns the downcasted uint224 from uint256, reverting on\n overflow (when the input is greater than largest uint224).\n Counterpart to Solidity's `uint224` operator.\n Requirements:\n - input must fit into 224 bits" + }, + "id": 2553, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint224", + "nameLocation": "3165:9:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2529, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2528, + "mutability": "mutable", + "name": "value", + "nameLocation": "3183:5:3", + "nodeType": "VariableDeclaration", + "scope": 2553, + "src": "3175:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2527, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3175:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3174:15:3" + }, + "returnParameters": { + "id": 2532, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2531, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2553, + "src": "3213:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + }, + "typeName": { + "id": 2530, + "name": "uint224", + "nodeType": "ElementaryTypeName", + "src": "3213:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "visibility": "internal" + } + ], + "src": "3212:9:3" + }, + "scope": 4179, + "src": "3156:218:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2580, + "nodeType": "Block", + "src": "3731:152:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2561, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2556, + "src": "3745:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2564, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3758:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint216_$", + "typeString": "type(uint216)" + }, + "typeName": { + "id": 2563, + "name": "uint216", + "nodeType": "ElementaryTypeName", + "src": "3758:7:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint216_$", + "typeString": "type(uint216)" + } + ], + "id": 2562, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "3753:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2565, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3753:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint216", + "typeString": "type(uint216)" + } + }, + "id": 2566, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3767:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "3753:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint216", + "typeString": "uint216" + } + }, + "src": "3745:25:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2574, + "nodeType": "IfStatement", + "src": "3741:105:3", + "trueBody": { + "id": 2573, + "nodeType": "Block", + "src": "3772:74:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323136", + "id": 2569, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3824:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_216_by_1", + "typeString": "int_const 216" + }, + "value": "216" + }, + { + "id": 2570, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2556, + "src": "3829:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_216_by_1", + "typeString": "int_const 216" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2568, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "3793:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 2571, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3793:42:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2572, + "nodeType": "RevertStatement", + "src": "3786:49:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2577, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2556, + "src": "3870:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2576, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3862:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint216_$", + "typeString": "type(uint216)" + }, + "typeName": { + "id": 2575, + "name": "uint216", + "nodeType": "ElementaryTypeName", + "src": "3862:7:3", + "typeDescriptions": {} + } + }, + "id": 2578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3862:14:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint216", + "typeString": "uint216" + } + }, + "functionReturnParameters": 2560, + "id": 2579, + "nodeType": "Return", + "src": "3855:21:3" + } + ] + }, + "documentation": { + "id": 2554, + "nodeType": "StructuredDocumentation", + "src": "3380:280:3", + "text": " @dev Returns the downcasted uint216 from uint256, reverting on\n overflow (when the input is greater than largest uint216).\n Counterpart to Solidity's `uint216` operator.\n Requirements:\n - input must fit into 216 bits" + }, + "id": 2581, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint216", + "nameLocation": "3674:9:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2557, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2556, + "mutability": "mutable", + "name": "value", + "nameLocation": "3692:5:3", + "nodeType": "VariableDeclaration", + "scope": 2581, + "src": "3684:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2555, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3684:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3683:15:3" + }, + "returnParameters": { + "id": 2560, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2559, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2581, + "src": "3722:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint216", + "typeString": "uint216" + }, + "typeName": { + "id": 2558, + "name": "uint216", + "nodeType": "ElementaryTypeName", + "src": "3722:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint216", + "typeString": "uint216" + } + }, + "visibility": "internal" + } + ], + "src": "3721:9:3" + }, + "scope": 4179, + "src": "3665:218:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2608, + "nodeType": "Block", + "src": "4240:152:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2589, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2584, + "src": "4254:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2592, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4267:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint208_$", + "typeString": "type(uint208)" + }, + "typeName": { + "id": 2591, + "name": "uint208", + "nodeType": "ElementaryTypeName", + "src": "4267:7:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint208_$", + "typeString": "type(uint208)" + } + ], + "id": 2590, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "4262:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2593, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4262:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint208", + "typeString": "type(uint208)" + } + }, + "id": 2594, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4276:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "4262:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint208", + "typeString": "uint208" + } + }, + "src": "4254:25:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2602, + "nodeType": "IfStatement", + "src": "4250:105:3", + "trueBody": { + "id": 2601, + "nodeType": "Block", + "src": "4281:74:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323038", + "id": 2597, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4333:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_208_by_1", + "typeString": "int_const 208" + }, + "value": "208" + }, + { + "id": 2598, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2584, + "src": "4338:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_208_by_1", + "typeString": "int_const 208" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2596, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "4302:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 2599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4302:42:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2600, + "nodeType": "RevertStatement", + "src": "4295:49:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2605, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2584, + "src": "4379:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2604, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4371:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint208_$", + "typeString": "type(uint208)" + }, + "typeName": { + "id": 2603, + "name": "uint208", + "nodeType": "ElementaryTypeName", + "src": "4371:7:3", + "typeDescriptions": {} + } + }, + "id": 2606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4371:14:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint208", + "typeString": "uint208" + } + }, + "functionReturnParameters": 2588, + "id": 2607, + "nodeType": "Return", + "src": "4364:21:3" + } + ] + }, + "documentation": { + "id": 2582, + "nodeType": "StructuredDocumentation", + "src": "3889:280:3", + "text": " @dev Returns the downcasted uint208 from uint256, reverting on\n overflow (when the input is greater than largest uint208).\n Counterpart to Solidity's `uint208` operator.\n Requirements:\n - input must fit into 208 bits" + }, + "id": 2609, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint208", + "nameLocation": "4183:9:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2585, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2584, + "mutability": "mutable", + "name": "value", + "nameLocation": "4201:5:3", + "nodeType": "VariableDeclaration", + "scope": 2609, + "src": "4193:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2583, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4193:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4192:15:3" + }, + "returnParameters": { + "id": 2588, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2587, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2609, + "src": "4231:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint208", + "typeString": "uint208" + }, + "typeName": { + "id": 2586, + "name": "uint208", + "nodeType": "ElementaryTypeName", + "src": "4231:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint208", + "typeString": "uint208" + } + }, + "visibility": "internal" + } + ], + "src": "4230:9:3" + }, + "scope": 4179, + "src": "4174:218:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2636, + "nodeType": "Block", + "src": "4749:152:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2617, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2612, + "src": "4763:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2620, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4776:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint200_$", + "typeString": "type(uint200)" + }, + "typeName": { + "id": 2619, + "name": "uint200", + "nodeType": "ElementaryTypeName", + "src": "4776:7:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint200_$", + "typeString": "type(uint200)" + } + ], + "id": 2618, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "4771:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2621, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4771:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint200", + "typeString": "type(uint200)" + } + }, + "id": 2622, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4785:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "4771:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint200", + "typeString": "uint200" + } + }, + "src": "4763:25:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2630, + "nodeType": "IfStatement", + "src": "4759:105:3", + "trueBody": { + "id": 2629, + "nodeType": "Block", + "src": "4790:74:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323030", + "id": 2625, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4842:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_200_by_1", + "typeString": "int_const 200" + }, + "value": "200" + }, + { + "id": 2626, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2612, + "src": "4847:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_200_by_1", + "typeString": "int_const 200" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2624, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "4811:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 2627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4811:42:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2628, + "nodeType": "RevertStatement", + "src": "4804:49:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2633, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2612, + "src": "4888:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2632, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4880:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint200_$", + "typeString": "type(uint200)" + }, + "typeName": { + "id": 2631, + "name": "uint200", + "nodeType": "ElementaryTypeName", + "src": "4880:7:3", + "typeDescriptions": {} + } + }, + "id": 2634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4880:14:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint200", + "typeString": "uint200" + } + }, + "functionReturnParameters": 2616, + "id": 2635, + "nodeType": "Return", + "src": "4873:21:3" + } + ] + }, + "documentation": { + "id": 2610, + "nodeType": "StructuredDocumentation", + "src": "4398:280:3", + "text": " @dev Returns the downcasted uint200 from uint256, reverting on\n overflow (when the input is greater than largest uint200).\n Counterpart to Solidity's `uint200` operator.\n Requirements:\n - input must fit into 200 bits" + }, + "id": 2637, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint200", + "nameLocation": "4692:9:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2613, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2612, + "mutability": "mutable", + "name": "value", + "nameLocation": "4710:5:3", + "nodeType": "VariableDeclaration", + "scope": 2637, + "src": "4702:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2611, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4702:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4701:15:3" + }, + "returnParameters": { + "id": 2616, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2615, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2637, + "src": "4740:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint200", + "typeString": "uint200" + }, + "typeName": { + "id": 2614, + "name": "uint200", + "nodeType": "ElementaryTypeName", + "src": "4740:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint200", + "typeString": "uint200" + } + }, + "visibility": "internal" + } + ], + "src": "4739:9:3" + }, + "scope": 4179, + "src": "4683:218:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2664, + "nodeType": "Block", + "src": "5258:152:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2645, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2640, + "src": "5272:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2648, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5285:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint192_$", + "typeString": "type(uint192)" + }, + "typeName": { + "id": 2647, + "name": "uint192", + "nodeType": "ElementaryTypeName", + "src": "5285:7:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint192_$", + "typeString": "type(uint192)" + } + ], + "id": 2646, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "5280:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2649, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5280:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint192", + "typeString": "type(uint192)" + } + }, + "id": 2650, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5294:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "5280:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint192", + "typeString": "uint192" + } + }, + "src": "5272:25:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2658, + "nodeType": "IfStatement", + "src": "5268:105:3", + "trueBody": { + "id": 2657, + "nodeType": "Block", + "src": "5299:74:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313932", + "id": 2653, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5351:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_192_by_1", + "typeString": "int_const 192" + }, + "value": "192" + }, + { + "id": 2654, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2640, + "src": "5356:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_192_by_1", + "typeString": "int_const 192" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2652, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "5320:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 2655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5320:42:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2656, + "nodeType": "RevertStatement", + "src": "5313:49:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2661, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2640, + "src": "5397:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2660, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5389:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint192_$", + "typeString": "type(uint192)" + }, + "typeName": { + "id": 2659, + "name": "uint192", + "nodeType": "ElementaryTypeName", + "src": "5389:7:3", + "typeDescriptions": {} + } + }, + "id": 2662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5389:14:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint192", + "typeString": "uint192" + } + }, + "functionReturnParameters": 2644, + "id": 2663, + "nodeType": "Return", + "src": "5382:21:3" + } + ] + }, + "documentation": { + "id": 2638, + "nodeType": "StructuredDocumentation", + "src": "4907:280:3", + "text": " @dev Returns the downcasted uint192 from uint256, reverting on\n overflow (when the input is greater than largest uint192).\n Counterpart to Solidity's `uint192` operator.\n Requirements:\n - input must fit into 192 bits" + }, + "id": 2665, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint192", + "nameLocation": "5201:9:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2641, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2640, + "mutability": "mutable", + "name": "value", + "nameLocation": "5219:5:3", + "nodeType": "VariableDeclaration", + "scope": 2665, + "src": "5211:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2639, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5211:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5210:15:3" + }, + "returnParameters": { + "id": 2644, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2643, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2665, + "src": "5249:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint192", + "typeString": "uint192" + }, + "typeName": { + "id": 2642, + "name": "uint192", + "nodeType": "ElementaryTypeName", + "src": "5249:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint192", + "typeString": "uint192" + } + }, + "visibility": "internal" + } + ], + "src": "5248:9:3" + }, + "scope": 4179, + "src": "5192:218:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2692, + "nodeType": "Block", + "src": "5767:152:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2673, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2668, + "src": "5781:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2676, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5794:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint184_$", + "typeString": "type(uint184)" + }, + "typeName": { + "id": 2675, + "name": "uint184", + "nodeType": "ElementaryTypeName", + "src": "5794:7:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint184_$", + "typeString": "type(uint184)" + } + ], + "id": 2674, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "5789:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2677, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5789:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint184", + "typeString": "type(uint184)" + } + }, + "id": 2678, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5803:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "5789:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + "src": "5781:25:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2686, + "nodeType": "IfStatement", + "src": "5777:105:3", + "trueBody": { + "id": 2685, + "nodeType": "Block", + "src": "5808:74:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313834", + "id": 2681, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5860:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_184_by_1", + "typeString": "int_const 184" + }, + "value": "184" + }, + { + "id": 2682, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2668, + "src": "5865:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_184_by_1", + "typeString": "int_const 184" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2680, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "5829:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 2683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5829:42:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2684, + "nodeType": "RevertStatement", + "src": "5822:49:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2689, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2668, + "src": "5906:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5898:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint184_$", + "typeString": "type(uint184)" + }, + "typeName": { + "id": 2687, + "name": "uint184", + "nodeType": "ElementaryTypeName", + "src": "5898:7:3", + "typeDescriptions": {} + } + }, + "id": 2690, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5898:14:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + "functionReturnParameters": 2672, + "id": 2691, + "nodeType": "Return", + "src": "5891:21:3" + } + ] + }, + "documentation": { + "id": 2666, + "nodeType": "StructuredDocumentation", + "src": "5416:280:3", + "text": " @dev Returns the downcasted uint184 from uint256, reverting on\n overflow (when the input is greater than largest uint184).\n Counterpart to Solidity's `uint184` operator.\n Requirements:\n - input must fit into 184 bits" + }, + "id": 2693, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint184", + "nameLocation": "5710:9:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2669, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2668, + "mutability": "mutable", + "name": "value", + "nameLocation": "5728:5:3", + "nodeType": "VariableDeclaration", + "scope": 2693, + "src": "5720:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2667, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5720:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5719:15:3" + }, + "returnParameters": { + "id": 2672, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2671, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2693, + "src": "5758:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + }, + "typeName": { + "id": 2670, + "name": "uint184", + "nodeType": "ElementaryTypeName", + "src": "5758:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + "visibility": "internal" + } + ], + "src": "5757:9:3" + }, + "scope": 4179, + "src": "5701:218:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2720, + "nodeType": "Block", + "src": "6276:152:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2707, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2701, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2696, + "src": "6290:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2704, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6303:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint176_$", + "typeString": "type(uint176)" + }, + "typeName": { + "id": 2703, + "name": "uint176", + "nodeType": "ElementaryTypeName", + "src": "6303:7:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint176_$", + "typeString": "type(uint176)" + } + ], + "id": 2702, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "6298:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2705, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6298:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint176", + "typeString": "type(uint176)" + } + }, + "id": 2706, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6312:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "6298:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint176", + "typeString": "uint176" + } + }, + "src": "6290:25:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2714, + "nodeType": "IfStatement", + "src": "6286:105:3", + "trueBody": { + "id": 2713, + "nodeType": "Block", + "src": "6317:74:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313736", + "id": 2709, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6369:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_176_by_1", + "typeString": "int_const 176" + }, + "value": "176" + }, + { + "id": 2710, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2696, + "src": "6374:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_176_by_1", + "typeString": "int_const 176" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2708, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "6338:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 2711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6338:42:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2712, + "nodeType": "RevertStatement", + "src": "6331:49:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2717, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2696, + "src": "6415:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2716, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6407:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint176_$", + "typeString": "type(uint176)" + }, + "typeName": { + "id": 2715, + "name": "uint176", + "nodeType": "ElementaryTypeName", + "src": "6407:7:3", + "typeDescriptions": {} + } + }, + "id": 2718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6407:14:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint176", + "typeString": "uint176" + } + }, + "functionReturnParameters": 2700, + "id": 2719, + "nodeType": "Return", + "src": "6400:21:3" + } + ] + }, + "documentation": { + "id": 2694, + "nodeType": "StructuredDocumentation", + "src": "5925:280:3", + "text": " @dev Returns the downcasted uint176 from uint256, reverting on\n overflow (when the input is greater than largest uint176).\n Counterpart to Solidity's `uint176` operator.\n Requirements:\n - input must fit into 176 bits" + }, + "id": 2721, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint176", + "nameLocation": "6219:9:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2697, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2696, + "mutability": "mutable", + "name": "value", + "nameLocation": "6237:5:3", + "nodeType": "VariableDeclaration", + "scope": 2721, + "src": "6229:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2695, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6229:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6228:15:3" + }, + "returnParameters": { + "id": 2700, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2699, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2721, + "src": "6267:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint176", + "typeString": "uint176" + }, + "typeName": { + "id": 2698, + "name": "uint176", + "nodeType": "ElementaryTypeName", + "src": "6267:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint176", + "typeString": "uint176" + } + }, + "visibility": "internal" + } + ], + "src": "6266:9:3" + }, + "scope": 4179, + "src": "6210:218:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2748, + "nodeType": "Block", + "src": "6785:152:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2729, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2724, + "src": "6799:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2732, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6812:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint168_$", + "typeString": "type(uint168)" + }, + "typeName": { + "id": 2731, + "name": "uint168", + "nodeType": "ElementaryTypeName", + "src": "6812:7:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint168_$", + "typeString": "type(uint168)" + } + ], + "id": 2730, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "6807:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2733, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6807:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint168", + "typeString": "type(uint168)" + } + }, + "id": 2734, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6821:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "6807:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint168", + "typeString": "uint168" + } + }, + "src": "6799:25:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2742, + "nodeType": "IfStatement", + "src": "6795:105:3", + "trueBody": { + "id": 2741, + "nodeType": "Block", + "src": "6826:74:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313638", + "id": 2737, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6878:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_168_by_1", + "typeString": "int_const 168" + }, + "value": "168" + }, + { + "id": 2738, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2724, + "src": "6883:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_168_by_1", + "typeString": "int_const 168" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2736, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "6847:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 2739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6847:42:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2740, + "nodeType": "RevertStatement", + "src": "6840:49:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2745, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2724, + "src": "6924:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2744, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6916:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint168_$", + "typeString": "type(uint168)" + }, + "typeName": { + "id": 2743, + "name": "uint168", + "nodeType": "ElementaryTypeName", + "src": "6916:7:3", + "typeDescriptions": {} + } + }, + "id": 2746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6916:14:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint168", + "typeString": "uint168" + } + }, + "functionReturnParameters": 2728, + "id": 2747, + "nodeType": "Return", + "src": "6909:21:3" + } + ] + }, + "documentation": { + "id": 2722, + "nodeType": "StructuredDocumentation", + "src": "6434:280:3", + "text": " @dev Returns the downcasted uint168 from uint256, reverting on\n overflow (when the input is greater than largest uint168).\n Counterpart to Solidity's `uint168` operator.\n Requirements:\n - input must fit into 168 bits" + }, + "id": 2749, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint168", + "nameLocation": "6728:9:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2725, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2724, + "mutability": "mutable", + "name": "value", + "nameLocation": "6746:5:3", + "nodeType": "VariableDeclaration", + "scope": 2749, + "src": "6738:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2723, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6738:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6737:15:3" + }, + "returnParameters": { + "id": 2728, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2727, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2749, + "src": "6776:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint168", + "typeString": "uint168" + }, + "typeName": { + "id": 2726, + "name": "uint168", + "nodeType": "ElementaryTypeName", + "src": "6776:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint168", + "typeString": "uint168" + } + }, + "visibility": "internal" + } + ], + "src": "6775:9:3" + }, + "scope": 4179, + "src": "6719:218:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2776, + "nodeType": "Block", + "src": "7294:152:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2757, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2752, + "src": "7308:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2760, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7321:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 2759, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "7321:7:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + } + ], + "id": 2758, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "7316:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2761, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7316:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint160", + "typeString": "type(uint160)" + } + }, + "id": 2762, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7330:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "7316:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "7308:25:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2770, + "nodeType": "IfStatement", + "src": "7304:105:3", + "trueBody": { + "id": 2769, + "nodeType": "Block", + "src": "7335:74:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313630", + "id": 2765, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7387:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_160_by_1", + "typeString": "int_const 160" + }, + "value": "160" + }, + { + "id": 2766, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2752, + "src": "7392:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_160_by_1", + "typeString": "int_const 160" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2764, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "7356:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 2767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7356:42:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2768, + "nodeType": "RevertStatement", + "src": "7349:49:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2773, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2752, + "src": "7433:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2772, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7425:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 2771, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "7425:7:3", + "typeDescriptions": {} + } + }, + "id": 2774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7425:14:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "functionReturnParameters": 2756, + "id": 2775, + "nodeType": "Return", + "src": "7418:21:3" + } + ] + }, + "documentation": { + "id": 2750, + "nodeType": "StructuredDocumentation", + "src": "6943:280:3", + "text": " @dev Returns the downcasted uint160 from uint256, reverting on\n overflow (when the input is greater than largest uint160).\n Counterpart to Solidity's `uint160` operator.\n Requirements:\n - input must fit into 160 bits" + }, + "id": 2777, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint160", + "nameLocation": "7237:9:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2753, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2752, + "mutability": "mutable", + "name": "value", + "nameLocation": "7255:5:3", + "nodeType": "VariableDeclaration", + "scope": 2777, + "src": "7247:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2751, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7247:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7246:15:3" + }, + "returnParameters": { + "id": 2756, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2755, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2777, + "src": "7285:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "typeName": { + "id": 2754, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "7285:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "visibility": "internal" + } + ], + "src": "7284:9:3" + }, + "scope": 4179, + "src": "7228:218:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2804, + "nodeType": "Block", + "src": "7803:152:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2785, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2780, + "src": "7817:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2788, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7830:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint152_$", + "typeString": "type(uint152)" + }, + "typeName": { + "id": 2787, + "name": "uint152", + "nodeType": "ElementaryTypeName", + "src": "7830:7:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint152_$", + "typeString": "type(uint152)" + } + ], + "id": 2786, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "7825:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2789, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7825:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint152", + "typeString": "type(uint152)" + } + }, + "id": 2790, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7839:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "7825:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint152", + "typeString": "uint152" + } + }, + "src": "7817:25:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2798, + "nodeType": "IfStatement", + "src": "7813:105:3", + "trueBody": { + "id": 2797, + "nodeType": "Block", + "src": "7844:74:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313532", + "id": 2793, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7896:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_152_by_1", + "typeString": "int_const 152" + }, + "value": "152" + }, + { + "id": 2794, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2780, + "src": "7901:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_152_by_1", + "typeString": "int_const 152" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2792, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "7865:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 2795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7865:42:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2796, + "nodeType": "RevertStatement", + "src": "7858:49:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2801, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2780, + "src": "7942:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2800, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7934:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint152_$", + "typeString": "type(uint152)" + }, + "typeName": { + "id": 2799, + "name": "uint152", + "nodeType": "ElementaryTypeName", + "src": "7934:7:3", + "typeDescriptions": {} + } + }, + "id": 2802, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7934:14:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint152", + "typeString": "uint152" + } + }, + "functionReturnParameters": 2784, + "id": 2803, + "nodeType": "Return", + "src": "7927:21:3" + } + ] + }, + "documentation": { + "id": 2778, + "nodeType": "StructuredDocumentation", + "src": "7452:280:3", + "text": " @dev Returns the downcasted uint152 from uint256, reverting on\n overflow (when the input is greater than largest uint152).\n Counterpart to Solidity's `uint152` operator.\n Requirements:\n - input must fit into 152 bits" + }, + "id": 2805, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint152", + "nameLocation": "7746:9:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2781, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2780, + "mutability": "mutable", + "name": "value", + "nameLocation": "7764:5:3", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "7756:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2779, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7756:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7755:15:3" + }, + "returnParameters": { + "id": 2784, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2783, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "7794:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint152", + "typeString": "uint152" + }, + "typeName": { + "id": 2782, + "name": "uint152", + "nodeType": "ElementaryTypeName", + "src": "7794:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint152", + "typeString": "uint152" + } + }, + "visibility": "internal" + } + ], + "src": "7793:9:3" + }, + "scope": 4179, + "src": "7737:218:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2832, + "nodeType": "Block", + "src": "8312:152:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2813, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2808, + "src": "8326:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2816, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8339:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint144_$", + "typeString": "type(uint144)" + }, + "typeName": { + "id": 2815, + "name": "uint144", + "nodeType": "ElementaryTypeName", + "src": "8339:7:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint144_$", + "typeString": "type(uint144)" + } + ], + "id": 2814, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "8334:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2817, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8334:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint144", + "typeString": "type(uint144)" + } + }, + "id": 2818, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8348:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "8334:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + } + }, + "src": "8326:25:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2826, + "nodeType": "IfStatement", + "src": "8322:105:3", + "trueBody": { + "id": 2825, + "nodeType": "Block", + "src": "8353:74:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313434", + "id": 2821, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8405:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_144_by_1", + "typeString": "int_const 144" + }, + "value": "144" + }, + { + "id": 2822, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2808, + "src": "8410:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_144_by_1", + "typeString": "int_const 144" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2820, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "8374:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 2823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8374:42:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2824, + "nodeType": "RevertStatement", + "src": "8367:49:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2829, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2808, + "src": "8451:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2828, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8443:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint144_$", + "typeString": "type(uint144)" + }, + "typeName": { + "id": 2827, + "name": "uint144", + "nodeType": "ElementaryTypeName", + "src": "8443:7:3", + "typeDescriptions": {} + } + }, + "id": 2830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8443:14:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + } + }, + "functionReturnParameters": 2812, + "id": 2831, + "nodeType": "Return", + "src": "8436:21:3" + } + ] + }, + "documentation": { + "id": 2806, + "nodeType": "StructuredDocumentation", + "src": "7961:280:3", + "text": " @dev Returns the downcasted uint144 from uint256, reverting on\n overflow (when the input is greater than largest uint144).\n Counterpart to Solidity's `uint144` operator.\n Requirements:\n - input must fit into 144 bits" + }, + "id": 2833, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint144", + "nameLocation": "8255:9:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2809, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2808, + "mutability": "mutable", + "name": "value", + "nameLocation": "8273:5:3", + "nodeType": "VariableDeclaration", + "scope": 2833, + "src": "8265:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2807, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8265:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8264:15:3" + }, + "returnParameters": { + "id": 2812, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2811, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2833, + "src": "8303:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + }, + "typeName": { + "id": 2810, + "name": "uint144", + "nodeType": "ElementaryTypeName", + "src": "8303:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + } + }, + "visibility": "internal" + } + ], + "src": "8302:9:3" + }, + "scope": 4179, + "src": "8246:218:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2860, + "nodeType": "Block", + "src": "8821:152:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2841, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2836, + "src": "8835:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2844, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8848:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint136_$", + "typeString": "type(uint136)" + }, + "typeName": { + "id": 2843, + "name": "uint136", + "nodeType": "ElementaryTypeName", + "src": "8848:7:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint136_$", + "typeString": "type(uint136)" + } + ], + "id": 2842, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "8843:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2845, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8843:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint136", + "typeString": "type(uint136)" + } + }, + "id": 2846, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8857:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "8843:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint136", + "typeString": "uint136" + } + }, + "src": "8835:25:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2854, + "nodeType": "IfStatement", + "src": "8831:105:3", + "trueBody": { + "id": 2853, + "nodeType": "Block", + "src": "8862:74:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313336", + "id": 2849, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8914:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_136_by_1", + "typeString": "int_const 136" + }, + "value": "136" + }, + { + "id": 2850, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2836, + "src": "8919:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_136_by_1", + "typeString": "int_const 136" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2848, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "8883:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 2851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8883:42:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2852, + "nodeType": "RevertStatement", + "src": "8876:49:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2857, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2836, + "src": "8960:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2856, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8952:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint136_$", + "typeString": "type(uint136)" + }, + "typeName": { + "id": 2855, + "name": "uint136", + "nodeType": "ElementaryTypeName", + "src": "8952:7:3", + "typeDescriptions": {} + } + }, + "id": 2858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8952:14:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint136", + "typeString": "uint136" + } + }, + "functionReturnParameters": 2840, + "id": 2859, + "nodeType": "Return", + "src": "8945:21:3" + } + ] + }, + "documentation": { + "id": 2834, + "nodeType": "StructuredDocumentation", + "src": "8470:280:3", + "text": " @dev Returns the downcasted uint136 from uint256, reverting on\n overflow (when the input is greater than largest uint136).\n Counterpart to Solidity's `uint136` operator.\n Requirements:\n - input must fit into 136 bits" + }, + "id": 2861, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint136", + "nameLocation": "8764:9:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2837, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2836, + "mutability": "mutable", + "name": "value", + "nameLocation": "8782:5:3", + "nodeType": "VariableDeclaration", + "scope": 2861, + "src": "8774:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2835, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8774:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8773:15:3" + }, + "returnParameters": { + "id": 2840, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2839, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2861, + "src": "8812:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint136", + "typeString": "uint136" + }, + "typeName": { + "id": 2838, + "name": "uint136", + "nodeType": "ElementaryTypeName", + "src": "8812:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint136", + "typeString": "uint136" + } + }, + "visibility": "internal" + } + ], + "src": "8811:9:3" + }, + "scope": 4179, + "src": "8755:218:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2888, + "nodeType": "Block", + "src": "9330:152:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2869, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2864, + "src": "9344:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2872, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9357:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 2871, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "9357:7:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + } + ], + "id": 2870, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "9352:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2873, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9352:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint128", + "typeString": "type(uint128)" + } + }, + "id": 2874, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9366:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "9352:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "9344:25:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2882, + "nodeType": "IfStatement", + "src": "9340:105:3", + "trueBody": { + "id": 2881, + "nodeType": "Block", + "src": "9371:74:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313238", + "id": 2877, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9423:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + { + "id": 2878, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2864, + "src": "9428:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2876, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "9392:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 2879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9392:42:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2880, + "nodeType": "RevertStatement", + "src": "9385:49:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2885, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2864, + "src": "9469:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2884, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9461:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 2883, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "9461:7:3", + "typeDescriptions": {} + } + }, + "id": 2886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9461:14:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "functionReturnParameters": 2868, + "id": 2887, + "nodeType": "Return", + "src": "9454:21:3" + } + ] + }, + "documentation": { + "id": 2862, + "nodeType": "StructuredDocumentation", + "src": "8979:280:3", + "text": " @dev Returns the downcasted uint128 from uint256, reverting on\n overflow (when the input is greater than largest uint128).\n Counterpart to Solidity's `uint128` operator.\n Requirements:\n - input must fit into 128 bits" + }, + "id": 2889, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint128", + "nameLocation": "9273:9:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2865, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2864, + "mutability": "mutable", + "name": "value", + "nameLocation": "9291:5:3", + "nodeType": "VariableDeclaration", + "scope": 2889, + "src": "9283:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2863, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9283:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9282:15:3" + }, + "returnParameters": { + "id": 2868, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2867, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2889, + "src": "9321:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 2866, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "9321:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "9320:9:3" + }, + "scope": 4179, + "src": "9264:218:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2916, + "nodeType": "Block", + "src": "9839:152:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2897, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2892, + "src": "9853:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2900, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9866:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint120_$", + "typeString": "type(uint120)" + }, + "typeName": { + "id": 2899, + "name": "uint120", + "nodeType": "ElementaryTypeName", + "src": "9866:7:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint120_$", + "typeString": "type(uint120)" + } + ], + "id": 2898, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "9861:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2901, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9861:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint120", + "typeString": "type(uint120)" + } + }, + "id": 2902, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9875:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "9861:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint120", + "typeString": "uint120" + } + }, + "src": "9853:25:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2910, + "nodeType": "IfStatement", + "src": "9849:105:3", + "trueBody": { + "id": 2909, + "nodeType": "Block", + "src": "9880:74:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313230", + "id": 2905, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9932:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_120_by_1", + "typeString": "int_const 120" + }, + "value": "120" + }, + { + "id": 2906, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2892, + "src": "9937:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_120_by_1", + "typeString": "int_const 120" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2904, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "9901:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 2907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9901:42:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2908, + "nodeType": "RevertStatement", + "src": "9894:49:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2913, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2892, + "src": "9978:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2912, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9970:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint120_$", + "typeString": "type(uint120)" + }, + "typeName": { + "id": 2911, + "name": "uint120", + "nodeType": "ElementaryTypeName", + "src": "9970:7:3", + "typeDescriptions": {} + } + }, + "id": 2914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9970:14:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint120", + "typeString": "uint120" + } + }, + "functionReturnParameters": 2896, + "id": 2915, + "nodeType": "Return", + "src": "9963:21:3" + } + ] + }, + "documentation": { + "id": 2890, + "nodeType": "StructuredDocumentation", + "src": "9488:280:3", + "text": " @dev Returns the downcasted uint120 from uint256, reverting on\n overflow (when the input is greater than largest uint120).\n Counterpart to Solidity's `uint120` operator.\n Requirements:\n - input must fit into 120 bits" + }, + "id": 2917, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint120", + "nameLocation": "9782:9:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2893, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2892, + "mutability": "mutable", + "name": "value", + "nameLocation": "9800:5:3", + "nodeType": "VariableDeclaration", + "scope": 2917, + "src": "9792:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2891, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9792:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9791:15:3" + }, + "returnParameters": { + "id": 2896, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2895, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2917, + "src": "9830:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint120", + "typeString": "uint120" + }, + "typeName": { + "id": 2894, + "name": "uint120", + "nodeType": "ElementaryTypeName", + "src": "9830:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint120", + "typeString": "uint120" + } + }, + "visibility": "internal" + } + ], + "src": "9829:9:3" + }, + "scope": 4179, + "src": "9773:218:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2944, + "nodeType": "Block", + "src": "10348:152:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2925, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2920, + "src": "10362:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2928, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10375:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint112_$", + "typeString": "type(uint112)" + }, + "typeName": { + "id": 2927, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "10375:7:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint112_$", + "typeString": "type(uint112)" + } + ], + "id": 2926, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "10370:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2929, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10370:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint112", + "typeString": "type(uint112)" + } + }, + "id": 2930, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10384:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "10370:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "src": "10362:25:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2938, + "nodeType": "IfStatement", + "src": "10358:105:3", + "trueBody": { + "id": 2937, + "nodeType": "Block", + "src": "10389:74:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313132", + "id": 2933, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10441:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_112_by_1", + "typeString": "int_const 112" + }, + "value": "112" + }, + { + "id": 2934, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2920, + "src": "10446:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_112_by_1", + "typeString": "int_const 112" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2932, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "10410:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 2935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10410:42:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2936, + "nodeType": "RevertStatement", + "src": "10403:49:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2941, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2920, + "src": "10487:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2940, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10479:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint112_$", + "typeString": "type(uint112)" + }, + "typeName": { + "id": 2939, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "10479:7:3", + "typeDescriptions": {} + } + }, + "id": 2942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10479:14:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "functionReturnParameters": 2924, + "id": 2943, + "nodeType": "Return", + "src": "10472:21:3" + } + ] + }, + "documentation": { + "id": 2918, + "nodeType": "StructuredDocumentation", + "src": "9997:280:3", + "text": " @dev Returns the downcasted uint112 from uint256, reverting on\n overflow (when the input is greater than largest uint112).\n Counterpart to Solidity's `uint112` operator.\n Requirements:\n - input must fit into 112 bits" + }, + "id": 2945, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint112", + "nameLocation": "10291:9:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2921, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2920, + "mutability": "mutable", + "name": "value", + "nameLocation": "10309:5:3", + "nodeType": "VariableDeclaration", + "scope": 2945, + "src": "10301:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2919, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10301:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10300:15:3" + }, + "returnParameters": { + "id": 2924, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2923, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2945, + "src": "10339:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 2922, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "10339:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + } + ], + "src": "10338:9:3" + }, + "scope": 4179, + "src": "10282:218:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2972, + "nodeType": "Block", + "src": "10857:152:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2959, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2953, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2948, + "src": "10871:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2956, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10884:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint104_$", + "typeString": "type(uint104)" + }, + "typeName": { + "id": 2955, + "name": "uint104", + "nodeType": "ElementaryTypeName", + "src": "10884:7:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint104_$", + "typeString": "type(uint104)" + } + ], + "id": 2954, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "10879:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2957, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10879:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint104", + "typeString": "type(uint104)" + } + }, + "id": 2958, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10893:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "10879:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint104", + "typeString": "uint104" + } + }, + "src": "10871:25:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2966, + "nodeType": "IfStatement", + "src": "10867:105:3", + "trueBody": { + "id": 2965, + "nodeType": "Block", + "src": "10898:74:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313034", + "id": 2961, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10950:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_104_by_1", + "typeString": "int_const 104" + }, + "value": "104" + }, + { + "id": 2962, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2948, + "src": "10955:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_104_by_1", + "typeString": "int_const 104" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2960, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "10919:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 2963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10919:42:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2964, + "nodeType": "RevertStatement", + "src": "10912:49:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2969, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2948, + "src": "10996:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2968, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10988:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint104_$", + "typeString": "type(uint104)" + }, + "typeName": { + "id": 2967, + "name": "uint104", + "nodeType": "ElementaryTypeName", + "src": "10988:7:3", + "typeDescriptions": {} + } + }, + "id": 2970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10988:14:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint104", + "typeString": "uint104" + } + }, + "functionReturnParameters": 2952, + "id": 2971, + "nodeType": "Return", + "src": "10981:21:3" + } + ] + }, + "documentation": { + "id": 2946, + "nodeType": "StructuredDocumentation", + "src": "10506:280:3", + "text": " @dev Returns the downcasted uint104 from uint256, reverting on\n overflow (when the input is greater than largest uint104).\n Counterpart to Solidity's `uint104` operator.\n Requirements:\n - input must fit into 104 bits" + }, + "id": 2973, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint104", + "nameLocation": "10800:9:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2949, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2948, + "mutability": "mutable", + "name": "value", + "nameLocation": "10818:5:3", + "nodeType": "VariableDeclaration", + "scope": 2973, + "src": "10810:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2947, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10810:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10809:15:3" + }, + "returnParameters": { + "id": 2952, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2951, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2973, + "src": "10848:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint104", + "typeString": "uint104" + }, + "typeName": { + "id": 2950, + "name": "uint104", + "nodeType": "ElementaryTypeName", + "src": "10848:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint104", + "typeString": "uint104" + } + }, + "visibility": "internal" + } + ], + "src": "10847:9:3" + }, + "scope": 4179, + "src": "10791:218:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3000, + "nodeType": "Block", + "src": "11360:149:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2981, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2976, + "src": "11374:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2984, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11387:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint96_$", + "typeString": "type(uint96)" + }, + "typeName": { + "id": 2983, + "name": "uint96", + "nodeType": "ElementaryTypeName", + "src": "11387:6:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint96_$", + "typeString": "type(uint96)" + } + ], + "id": 2982, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "11382:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2985, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11382:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint96", + "typeString": "type(uint96)" + } + }, + "id": 2986, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "11395:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "11382:16:3", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + } + }, + "src": "11374:24:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2994, + "nodeType": "IfStatement", + "src": "11370:103:3", + "trueBody": { + "id": 2993, + "nodeType": "Block", + "src": "11400:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3936", + "id": 2989, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11452:2:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_96_by_1", + "typeString": "int_const 96" + }, + "value": "96" + }, + { + "id": 2990, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2976, + "src": "11456:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_96_by_1", + "typeString": "int_const 96" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2988, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "11421:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 2991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11421:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2992, + "nodeType": "RevertStatement", + "src": "11414:48:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2997, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2976, + "src": "11496:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2996, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11489:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint96_$", + "typeString": "type(uint96)" + }, + "typeName": { + "id": 2995, + "name": "uint96", + "nodeType": "ElementaryTypeName", + "src": "11489:6:3", + "typeDescriptions": {} + } + }, + "id": 2998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11489:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + } + }, + "functionReturnParameters": 2980, + "id": 2999, + "nodeType": "Return", + "src": "11482:20:3" + } + ] + }, + "documentation": { + "id": 2974, + "nodeType": "StructuredDocumentation", + "src": "11015:276:3", + "text": " @dev Returns the downcasted uint96 from uint256, reverting on\n overflow (when the input is greater than largest uint96).\n Counterpart to Solidity's `uint96` operator.\n Requirements:\n - input must fit into 96 bits" + }, + "id": 3001, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint96", + "nameLocation": "11305:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2977, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2976, + "mutability": "mutable", + "name": "value", + "nameLocation": "11322:5:3", + "nodeType": "VariableDeclaration", + "scope": 3001, + "src": "11314:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2975, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11314:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11313:15:3" + }, + "returnParameters": { + "id": 2980, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2979, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3001, + "src": "11352:6:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + }, + "typeName": { + "id": 2978, + "name": "uint96", + "nodeType": "ElementaryTypeName", + "src": "11352:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + } + }, + "visibility": "internal" + } + ], + "src": "11351:8:3" + }, + "scope": 4179, + "src": "11296:213:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3028, + "nodeType": "Block", + "src": "11860:149:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3009, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3004, + "src": "11874:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 3012, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11887:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint88_$", + "typeString": "type(uint88)" + }, + "typeName": { + "id": 3011, + "name": "uint88", + "nodeType": "ElementaryTypeName", + "src": "11887:6:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint88_$", + "typeString": "type(uint88)" + } + ], + "id": 3010, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "11882:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 3013, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11882:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint88", + "typeString": "type(uint88)" + } + }, + "id": 3014, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "11895:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "11882:16:3", + "typeDescriptions": { + "typeIdentifier": "t_uint88", + "typeString": "uint88" + } + }, + "src": "11874:24:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3022, + "nodeType": "IfStatement", + "src": "11870:103:3", + "trueBody": { + "id": 3021, + "nodeType": "Block", + "src": "11900:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3838", + "id": 3017, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11952:2:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_88_by_1", + "typeString": "int_const 88" + }, + "value": "88" + }, + { + "id": 3018, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3004, + "src": "11956:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_88_by_1", + "typeString": "int_const 88" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3016, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "11921:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 3019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11921:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3020, + "nodeType": "RevertStatement", + "src": "11914:48:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 3025, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3004, + "src": "11996:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3024, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11989:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint88_$", + "typeString": "type(uint88)" + }, + "typeName": { + "id": 3023, + "name": "uint88", + "nodeType": "ElementaryTypeName", + "src": "11989:6:3", + "typeDescriptions": {} + } + }, + "id": 3026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11989:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint88", + "typeString": "uint88" + } + }, + "functionReturnParameters": 3008, + "id": 3027, + "nodeType": "Return", + "src": "11982:20:3" + } + ] + }, + "documentation": { + "id": 3002, + "nodeType": "StructuredDocumentation", + "src": "11515:276:3", + "text": " @dev Returns the downcasted uint88 from uint256, reverting on\n overflow (when the input is greater than largest uint88).\n Counterpart to Solidity's `uint88` operator.\n Requirements:\n - input must fit into 88 bits" + }, + "id": 3029, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint88", + "nameLocation": "11805:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3005, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3004, + "mutability": "mutable", + "name": "value", + "nameLocation": "11822:5:3", + "nodeType": "VariableDeclaration", + "scope": 3029, + "src": "11814:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3003, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11814:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11813:15:3" + }, + "returnParameters": { + "id": 3008, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3007, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3029, + "src": "11852:6:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint88", + "typeString": "uint88" + }, + "typeName": { + "id": 3006, + "name": "uint88", + "nodeType": "ElementaryTypeName", + "src": "11852:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint88", + "typeString": "uint88" + } + }, + "visibility": "internal" + } + ], + "src": "11851:8:3" + }, + "scope": 4179, + "src": "11796:213:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3056, + "nodeType": "Block", + "src": "12360:149:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3037, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3032, + "src": "12374:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 3040, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12387:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint80_$", + "typeString": "type(uint80)" + }, + "typeName": { + "id": 3039, + "name": "uint80", + "nodeType": "ElementaryTypeName", + "src": "12387:6:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint80_$", + "typeString": "type(uint80)" + } + ], + "id": 3038, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "12382:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 3041, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12382:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint80", + "typeString": "type(uint80)" + } + }, + "id": 3042, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12395:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "12382:16:3", + "typeDescriptions": { + "typeIdentifier": "t_uint80", + "typeString": "uint80" + } + }, + "src": "12374:24:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3050, + "nodeType": "IfStatement", + "src": "12370:103:3", + "trueBody": { + "id": 3049, + "nodeType": "Block", + "src": "12400:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3830", + "id": 3045, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12452:2:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_80_by_1", + "typeString": "int_const 80" + }, + "value": "80" + }, + { + "id": 3046, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3032, + "src": "12456:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_80_by_1", + "typeString": "int_const 80" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3044, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "12421:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 3047, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12421:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3048, + "nodeType": "RevertStatement", + "src": "12414:48:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 3053, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3032, + "src": "12496:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3052, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12489:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint80_$", + "typeString": "type(uint80)" + }, + "typeName": { + "id": 3051, + "name": "uint80", + "nodeType": "ElementaryTypeName", + "src": "12489:6:3", + "typeDescriptions": {} + } + }, + "id": 3054, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12489:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint80", + "typeString": "uint80" + } + }, + "functionReturnParameters": 3036, + "id": 3055, + "nodeType": "Return", + "src": "12482:20:3" + } + ] + }, + "documentation": { + "id": 3030, + "nodeType": "StructuredDocumentation", + "src": "12015:276:3", + "text": " @dev Returns the downcasted uint80 from uint256, reverting on\n overflow (when the input is greater than largest uint80).\n Counterpart to Solidity's `uint80` operator.\n Requirements:\n - input must fit into 80 bits" + }, + "id": 3057, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint80", + "nameLocation": "12305:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3033, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3032, + "mutability": "mutable", + "name": "value", + "nameLocation": "12322:5:3", + "nodeType": "VariableDeclaration", + "scope": 3057, + "src": "12314:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3031, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12314:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12313:15:3" + }, + "returnParameters": { + "id": 3036, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3035, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3057, + "src": "12352:6:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint80", + "typeString": "uint80" + }, + "typeName": { + "id": 3034, + "name": "uint80", + "nodeType": "ElementaryTypeName", + "src": "12352:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint80", + "typeString": "uint80" + } + }, + "visibility": "internal" + } + ], + "src": "12351:8:3" + }, + "scope": 4179, + "src": "12296:213:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3084, + "nodeType": "Block", + "src": "12860:149:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3071, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3065, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3060, + "src": "12874:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 3068, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12887:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint72_$", + "typeString": "type(uint72)" + }, + "typeName": { + "id": 3067, + "name": "uint72", + "nodeType": "ElementaryTypeName", + "src": "12887:6:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint72_$", + "typeString": "type(uint72)" + } + ], + "id": 3066, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "12882:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 3069, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12882:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint72", + "typeString": "type(uint72)" + } + }, + "id": 3070, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12895:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "12882:16:3", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "src": "12874:24:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3078, + "nodeType": "IfStatement", + "src": "12870:103:3", + "trueBody": { + "id": 3077, + "nodeType": "Block", + "src": "12900:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3732", + "id": 3073, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12952:2:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_72_by_1", + "typeString": "int_const 72" + }, + "value": "72" + }, + { + "id": 3074, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3060, + "src": "12956:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_72_by_1", + "typeString": "int_const 72" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3072, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "12921:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 3075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12921:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3076, + "nodeType": "RevertStatement", + "src": "12914:48:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 3081, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3060, + "src": "12996:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3080, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12989:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint72_$", + "typeString": "type(uint72)" + }, + "typeName": { + "id": 3079, + "name": "uint72", + "nodeType": "ElementaryTypeName", + "src": "12989:6:3", + "typeDescriptions": {} + } + }, + "id": 3082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12989:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "functionReturnParameters": 3064, + "id": 3083, + "nodeType": "Return", + "src": "12982:20:3" + } + ] + }, + "documentation": { + "id": 3058, + "nodeType": "StructuredDocumentation", + "src": "12515:276:3", + "text": " @dev Returns the downcasted uint72 from uint256, reverting on\n overflow (when the input is greater than largest uint72).\n Counterpart to Solidity's `uint72` operator.\n Requirements:\n - input must fit into 72 bits" + }, + "id": 3085, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint72", + "nameLocation": "12805:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3061, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3060, + "mutability": "mutable", + "name": "value", + "nameLocation": "12822:5:3", + "nodeType": "VariableDeclaration", + "scope": 3085, + "src": "12814:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3059, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12814:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12813:15:3" + }, + "returnParameters": { + "id": 3064, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3063, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3085, + "src": "12852:6:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + }, + "typeName": { + "id": 3062, + "name": "uint72", + "nodeType": "ElementaryTypeName", + "src": "12852:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "visibility": "internal" + } + ], + "src": "12851:8:3" + }, + "scope": 4179, + "src": "12796:213:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3112, + "nodeType": "Block", + "src": "13360:149:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3093, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3088, + "src": "13374:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 3096, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13387:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 3095, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "13387:6:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + } + ], + "id": 3094, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "13382:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 3097, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13382:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint64", + "typeString": "type(uint64)" + } + }, + "id": 3098, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13395:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "13382:16:3", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "13374:24:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3106, + "nodeType": "IfStatement", + "src": "13370:103:3", + "trueBody": { + "id": 3105, + "nodeType": "Block", + "src": "13400:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3634", + "id": 3101, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13452:2:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + { + "id": 3102, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3088, + "src": "13456:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3100, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "13421:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 3103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13421:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3104, + "nodeType": "RevertStatement", + "src": "13414:48:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 3109, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3088, + "src": "13496:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3108, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13489:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 3107, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "13489:6:3", + "typeDescriptions": {} + } + }, + "id": 3110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13489:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "functionReturnParameters": 3092, + "id": 3111, + "nodeType": "Return", + "src": "13482:20:3" + } + ] + }, + "documentation": { + "id": 3086, + "nodeType": "StructuredDocumentation", + "src": "13015:276:3", + "text": " @dev Returns the downcasted uint64 from uint256, reverting on\n overflow (when the input is greater than largest uint64).\n Counterpart to Solidity's `uint64` operator.\n Requirements:\n - input must fit into 64 bits" + }, + "id": 3113, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint64", + "nameLocation": "13305:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3089, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3088, + "mutability": "mutable", + "name": "value", + "nameLocation": "13322:5:3", + "nodeType": "VariableDeclaration", + "scope": 3113, + "src": "13314:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3087, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13314:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13313:15:3" + }, + "returnParameters": { + "id": 3092, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3091, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3113, + "src": "13352:6:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 3090, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "13352:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "13351:8:3" + }, + "scope": 4179, + "src": "13296:213:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3140, + "nodeType": "Block", + "src": "13860:149:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3121, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3116, + "src": "13874:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 3124, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13887:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint56_$", + "typeString": "type(uint56)" + }, + "typeName": { + "id": 3123, + "name": "uint56", + "nodeType": "ElementaryTypeName", + "src": "13887:6:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint56_$", + "typeString": "type(uint56)" + } + ], + "id": 3122, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "13882:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 3125, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13882:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint56", + "typeString": "type(uint56)" + } + }, + "id": 3126, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13895:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "13882:16:3", + "typeDescriptions": { + "typeIdentifier": "t_uint56", + "typeString": "uint56" + } + }, + "src": "13874:24:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3134, + "nodeType": "IfStatement", + "src": "13870:103:3", + "trueBody": { + "id": 3133, + "nodeType": "Block", + "src": "13900:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3536", + "id": 3129, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13952:2:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_56_by_1", + "typeString": "int_const 56" + }, + "value": "56" + }, + { + "id": 3130, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3116, + "src": "13956:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_56_by_1", + "typeString": "int_const 56" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3128, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "13921:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 3131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13921:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3132, + "nodeType": "RevertStatement", + "src": "13914:48:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 3137, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3116, + "src": "13996:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3136, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13989:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint56_$", + "typeString": "type(uint56)" + }, + "typeName": { + "id": 3135, + "name": "uint56", + "nodeType": "ElementaryTypeName", + "src": "13989:6:3", + "typeDescriptions": {} + } + }, + "id": 3138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13989:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint56", + "typeString": "uint56" + } + }, + "functionReturnParameters": 3120, + "id": 3139, + "nodeType": "Return", + "src": "13982:20:3" + } + ] + }, + "documentation": { + "id": 3114, + "nodeType": "StructuredDocumentation", + "src": "13515:276:3", + "text": " @dev Returns the downcasted uint56 from uint256, reverting on\n overflow (when the input is greater than largest uint56).\n Counterpart to Solidity's `uint56` operator.\n Requirements:\n - input must fit into 56 bits" + }, + "id": 3141, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint56", + "nameLocation": "13805:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3117, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3116, + "mutability": "mutable", + "name": "value", + "nameLocation": "13822:5:3", + "nodeType": "VariableDeclaration", + "scope": 3141, + "src": "13814:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3115, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13814:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13813:15:3" + }, + "returnParameters": { + "id": 3120, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3119, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3141, + "src": "13852:6:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint56", + "typeString": "uint56" + }, + "typeName": { + "id": 3118, + "name": "uint56", + "nodeType": "ElementaryTypeName", + "src": "13852:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint56", + "typeString": "uint56" + } + }, + "visibility": "internal" + } + ], + "src": "13851:8:3" + }, + "scope": 4179, + "src": "13796:213:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3168, + "nodeType": "Block", + "src": "14360:149:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3149, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3144, + "src": "14374:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 3152, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14387:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint48_$", + "typeString": "type(uint48)" + }, + "typeName": { + "id": 3151, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "14387:6:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint48_$", + "typeString": "type(uint48)" + } + ], + "id": 3150, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "14382:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 3153, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14382:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint48", + "typeString": "type(uint48)" + } + }, + "id": 3154, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "14395:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "14382:16:3", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "src": "14374:24:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3162, + "nodeType": "IfStatement", + "src": "14370:103:3", + "trueBody": { + "id": 3161, + "nodeType": "Block", + "src": "14400:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3438", + "id": 3157, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14452:2:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + "value": "48" + }, + { + "id": 3158, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3144, + "src": "14456:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3156, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "14421:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 3159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14421:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3160, + "nodeType": "RevertStatement", + "src": "14414:48:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 3165, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3144, + "src": "14496:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3164, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14489:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint48_$", + "typeString": "type(uint48)" + }, + "typeName": { + "id": 3163, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "14489:6:3", + "typeDescriptions": {} + } + }, + "id": 3166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14489:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "functionReturnParameters": 3148, + "id": 3167, + "nodeType": "Return", + "src": "14482:20:3" + } + ] + }, + "documentation": { + "id": 3142, + "nodeType": "StructuredDocumentation", + "src": "14015:276:3", + "text": " @dev Returns the downcasted uint48 from uint256, reverting on\n overflow (when the input is greater than largest uint48).\n Counterpart to Solidity's `uint48` operator.\n Requirements:\n - input must fit into 48 bits" + }, + "id": 3169, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint48", + "nameLocation": "14305:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3145, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3144, + "mutability": "mutable", + "name": "value", + "nameLocation": "14322:5:3", + "nodeType": "VariableDeclaration", + "scope": 3169, + "src": "14314:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3143, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14314:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14313:15:3" + }, + "returnParameters": { + "id": 3148, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3147, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3169, + "src": "14352:6:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + }, + "typeName": { + "id": 3146, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "14352:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "visibility": "internal" + } + ], + "src": "14351:8:3" + }, + "scope": 4179, + "src": "14296:213:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3196, + "nodeType": "Block", + "src": "14860:149:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3177, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3172, + "src": "14874:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 3180, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14887:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint40_$", + "typeString": "type(uint40)" + }, + "typeName": { + "id": 3179, + "name": "uint40", + "nodeType": "ElementaryTypeName", + "src": "14887:6:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint40_$", + "typeString": "type(uint40)" + } + ], + "id": 3178, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "14882:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 3181, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14882:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint40", + "typeString": "type(uint40)" + } + }, + "id": 3182, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "14895:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "14882:16:3", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "src": "14874:24:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3190, + "nodeType": "IfStatement", + "src": "14870:103:3", + "trueBody": { + "id": 3189, + "nodeType": "Block", + "src": "14900:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3430", + "id": 3185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14952:2:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_40_by_1", + "typeString": "int_const 40" + }, + "value": "40" + }, + { + "id": 3186, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3172, + "src": "14956:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_40_by_1", + "typeString": "int_const 40" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3184, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "14921:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 3187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14921:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3188, + "nodeType": "RevertStatement", + "src": "14914:48:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 3193, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3172, + "src": "14996:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3192, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14989:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint40_$", + "typeString": "type(uint40)" + }, + "typeName": { + "id": 3191, + "name": "uint40", + "nodeType": "ElementaryTypeName", + "src": "14989:6:3", + "typeDescriptions": {} + } + }, + "id": 3194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14989:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "functionReturnParameters": 3176, + "id": 3195, + "nodeType": "Return", + "src": "14982:20:3" + } + ] + }, + "documentation": { + "id": 3170, + "nodeType": "StructuredDocumentation", + "src": "14515:276:3", + "text": " @dev Returns the downcasted uint40 from uint256, reverting on\n overflow (when the input is greater than largest uint40).\n Counterpart to Solidity's `uint40` operator.\n Requirements:\n - input must fit into 40 bits" + }, + "id": 3197, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint40", + "nameLocation": "14805:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3173, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3172, + "mutability": "mutable", + "name": "value", + "nameLocation": "14822:5:3", + "nodeType": "VariableDeclaration", + "scope": 3197, + "src": "14814:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3171, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14814:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14813:15:3" + }, + "returnParameters": { + "id": 3176, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3175, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3197, + "src": "14852:6:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + }, + "typeName": { + "id": 3174, + "name": "uint40", + "nodeType": "ElementaryTypeName", + "src": "14852:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "visibility": "internal" + } + ], + "src": "14851:8:3" + }, + "scope": 4179, + "src": "14796:213:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3224, + "nodeType": "Block", + "src": "15360:149:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3205, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3200, + "src": "15374:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 3208, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15387:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint32_$", + "typeString": "type(uint32)" + }, + "typeName": { + "id": 3207, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "15387:6:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint32_$", + "typeString": "type(uint32)" + } + ], + "id": 3206, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "15382:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 3209, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15382:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint32", + "typeString": "type(uint32)" + } + }, + "id": 3210, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "15395:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "15382:16:3", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "15374:24:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3218, + "nodeType": "IfStatement", + "src": "15370:103:3", + "trueBody": { + "id": 3217, + "nodeType": "Block", + "src": "15400:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3332", + "id": 3213, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15452:2:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + { + "id": 3214, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3200, + "src": "15456:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3212, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "15421:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 3215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15421:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3216, + "nodeType": "RevertStatement", + "src": "15414:48:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 3221, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3200, + "src": "15496:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3220, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15489:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint32_$", + "typeString": "type(uint32)" + }, + "typeName": { + "id": 3219, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "15489:6:3", + "typeDescriptions": {} + } + }, + "id": 3222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15489:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "functionReturnParameters": 3204, + "id": 3223, + "nodeType": "Return", + "src": "15482:20:3" + } + ] + }, + "documentation": { + "id": 3198, + "nodeType": "StructuredDocumentation", + "src": "15015:276:3", + "text": " @dev Returns the downcasted uint32 from uint256, reverting on\n overflow (when the input is greater than largest uint32).\n Counterpart to Solidity's `uint32` operator.\n Requirements:\n - input must fit into 32 bits" + }, + "id": 3225, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint32", + "nameLocation": "15305:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3201, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3200, + "mutability": "mutable", + "name": "value", + "nameLocation": "15322:5:3", + "nodeType": "VariableDeclaration", + "scope": 3225, + "src": "15314:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3199, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15314:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15313:15:3" + }, + "returnParameters": { + "id": 3204, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3203, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3225, + "src": "15352:6:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 3202, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "15352:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "src": "15351:8:3" + }, + "scope": 4179, + "src": "15296:213:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3252, + "nodeType": "Block", + "src": "15860:149:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3233, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3228, + "src": "15874:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 3236, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15887:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint24_$", + "typeString": "type(uint24)" + }, + "typeName": { + "id": 3235, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "15887:6:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint24_$", + "typeString": "type(uint24)" + } + ], + "id": 3234, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "15882:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 3237, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15882:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint24", + "typeString": "type(uint24)" + } + }, + "id": 3238, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "15895:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "15882:16:3", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "15874:24:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3246, + "nodeType": "IfStatement", + "src": "15870:103:3", + "trueBody": { + "id": 3245, + "nodeType": "Block", + "src": "15900:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3234", + "id": 3241, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15952:2:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_24_by_1", + "typeString": "int_const 24" + }, + "value": "24" + }, + { + "id": 3242, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3228, + "src": "15956:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_24_by_1", + "typeString": "int_const 24" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3240, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "15921:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 3243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15921:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3244, + "nodeType": "RevertStatement", + "src": "15914:48:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 3249, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3228, + "src": "15996:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3248, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15989:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint24_$", + "typeString": "type(uint24)" + }, + "typeName": { + "id": 3247, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "15989:6:3", + "typeDescriptions": {} + } + }, + "id": 3250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15989:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "functionReturnParameters": 3232, + "id": 3251, + "nodeType": "Return", + "src": "15982:20:3" + } + ] + }, + "documentation": { + "id": 3226, + "nodeType": "StructuredDocumentation", + "src": "15515:276:3", + "text": " @dev Returns the downcasted uint24 from uint256, reverting on\n overflow (when the input is greater than largest uint24).\n Counterpart to Solidity's `uint24` operator.\n Requirements:\n - input must fit into 24 bits" + }, + "id": 3253, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint24", + "nameLocation": "15805:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3229, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3228, + "mutability": "mutable", + "name": "value", + "nameLocation": "15822:5:3", + "nodeType": "VariableDeclaration", + "scope": 3253, + "src": "15814:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3227, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15814:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15813:15:3" + }, + "returnParameters": { + "id": 3232, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3231, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3253, + "src": "15852:6:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 3230, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "15852:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "15851:8:3" + }, + "scope": 4179, + "src": "15796:213:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3280, + "nodeType": "Block", + "src": "16360:149:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3261, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3256, + "src": "16374:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 3264, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16387:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint16_$", + "typeString": "type(uint16)" + }, + "typeName": { + "id": 3263, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "16387:6:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint16_$", + "typeString": "type(uint16)" + } + ], + "id": 3262, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "16382:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 3265, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16382:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint16", + "typeString": "type(uint16)" + } + }, + "id": 3266, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "16395:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "16382:16:3", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "16374:24:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3274, + "nodeType": "IfStatement", + "src": "16370:103:3", + "trueBody": { + "id": 3273, + "nodeType": "Block", + "src": "16400:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3136", + "id": 3269, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16452:2:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + { + "id": 3270, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3256, + "src": "16456:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3268, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "16421:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 3271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16421:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3272, + "nodeType": "RevertStatement", + "src": "16414:48:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 3277, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3256, + "src": "16496:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3276, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16489:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint16_$", + "typeString": "type(uint16)" + }, + "typeName": { + "id": 3275, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "16489:6:3", + "typeDescriptions": {} + } + }, + "id": 3278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16489:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "functionReturnParameters": 3260, + "id": 3279, + "nodeType": "Return", + "src": "16482:20:3" + } + ] + }, + "documentation": { + "id": 3254, + "nodeType": "StructuredDocumentation", + "src": "16015:276:3", + "text": " @dev Returns the downcasted uint16 from uint256, reverting on\n overflow (when the input is greater than largest uint16).\n Counterpart to Solidity's `uint16` operator.\n Requirements:\n - input must fit into 16 bits" + }, + "id": 3281, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint16", + "nameLocation": "16305:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3257, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3256, + "mutability": "mutable", + "name": "value", + "nameLocation": "16322:5:3", + "nodeType": "VariableDeclaration", + "scope": 3281, + "src": "16314:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3255, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16314:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16313:15:3" + }, + "returnParameters": { + "id": 3260, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3259, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3281, + "src": "16352:6:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 3258, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "16352:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "16351:8:3" + }, + "scope": 4179, + "src": "16296:213:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3308, + "nodeType": "Block", + "src": "16854:146:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3289, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3284, + "src": "16868:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 3292, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16881:5:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 3291, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "16881:5:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + } + ], + "id": 3290, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "16876:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 3293, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16876:11:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint8", + "typeString": "type(uint8)" + } + }, + "id": 3294, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "16888:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "16876:15:3", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "16868:23:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3302, + "nodeType": "IfStatement", + "src": "16864:101:3", + "trueBody": { + "id": 3301, + "nodeType": "Block", + "src": "16893:72:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "38", + "id": 3297, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16945:1:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + { + "id": 3298, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3284, + "src": "16948:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3296, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "16914:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint8,uint256) pure returns (error)" + } + }, + "id": 3299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16914:40:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3300, + "nodeType": "RevertStatement", + "src": "16907:47:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 3305, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3284, + "src": "16987:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3304, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16981:5:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 3303, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "16981:5:3", + "typeDescriptions": {} + } + }, + "id": 3306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16981:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 3288, + "id": 3307, + "nodeType": "Return", + "src": "16974:19:3" + } + ] + }, + "documentation": { + "id": 3282, + "nodeType": "StructuredDocumentation", + "src": "16515:272:3", + "text": " @dev Returns the downcasted uint8 from uint256, reverting on\n overflow (when the input is greater than largest uint8).\n Counterpart to Solidity's `uint8` operator.\n Requirements:\n - input must fit into 8 bits" + }, + "id": 3309, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint8", + "nameLocation": "16801:7:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3285, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3284, + "mutability": "mutable", + "name": "value", + "nameLocation": "16817:5:3", + "nodeType": "VariableDeclaration", + "scope": 3309, + "src": "16809:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3283, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16809:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16808:15:3" + }, + "returnParameters": { + "id": 3288, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3287, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3309, + "src": "16847:5:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 3286, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "16847:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "16846:7:3" + }, + "scope": 4179, + "src": "16792:208:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3331, + "nodeType": "Block", + "src": "17236:128:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3317, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3312, + "src": "17250:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "hexValue": "30", + "id": 3318, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17258:1:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "17250:9:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3325, + "nodeType": "IfStatement", + "src": "17246:81:3", + "trueBody": { + "id": 3324, + "nodeType": "Block", + "src": "17261:66:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 3321, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3312, + "src": "17310:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3320, + "name": "SafeCastOverflowedIntToUint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2429, + "src": "17282:27:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_int256_$returns$_t_error_$", + "typeString": "function (int256) pure returns (error)" + } + }, + "id": 3322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17282:34:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3323, + "nodeType": "RevertStatement", + "src": "17275:41:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 3328, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3312, + "src": "17351:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3327, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17343:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3326, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17343:7:3", + "typeDescriptions": {} + } + }, + "id": 3329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17343:14:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3316, + "id": 3330, + "nodeType": "Return", + "src": "17336:21:3" + } + ] + }, + "documentation": { + "id": 3310, + "nodeType": "StructuredDocumentation", + "src": "17006:160:3", + "text": " @dev Converts a signed int256 into an unsigned uint256.\n Requirements:\n - input must be greater than or equal to 0." + }, + "id": 3332, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint256", + "nameLocation": "17180:9:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3313, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3312, + "mutability": "mutable", + "name": "value", + "nameLocation": "17197:5:3", + "nodeType": "VariableDeclaration", + "scope": 3332, + "src": "17190:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3311, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "17190:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "17189:14:3" + }, + "returnParameters": { + "id": 3316, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3315, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3332, + "src": "17227:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3314, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17227:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "17226:9:3" + }, + "scope": 4179, + "src": "17171:193:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3357, + "nodeType": "Block", + "src": "17761:150:3", + "statements": [ + { + "expression": { + "id": 3345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3340, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3338, + "src": "17771:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int248", + "typeString": "int248" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3343, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3335, + "src": "17791:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3342, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17784:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int248_$", + "typeString": "type(int248)" + }, + "typeName": { + "id": 3341, + "name": "int248", + "nodeType": "ElementaryTypeName", + "src": "17784:6:3", + "typeDescriptions": {} + } + }, + "id": 3344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17784:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int248", + "typeString": "int248" + } + }, + "src": "17771:26:3", + "typeDescriptions": { + "typeIdentifier": "t_int248", + "typeString": "int248" + } + }, + "id": 3346, + "nodeType": "ExpressionStatement", + "src": "17771:26:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3347, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3338, + "src": "17811:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int248", + "typeString": "int248" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3348, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3335, + "src": "17825:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "17811:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3356, + "nodeType": "IfStatement", + "src": "17807:98:3", + "trueBody": { + "id": 3355, + "nodeType": "Block", + "src": "17832:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323438", + "id": 3351, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17883:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_248_by_1", + "typeString": "int_const 248" + }, + "value": "248" + }, + { + "id": 3352, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3335, + "src": "17888:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_248_by_1", + "typeString": "int_const 248" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3350, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "17853:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 3353, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17853:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3354, + "nodeType": "RevertStatement", + "src": "17846:48:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 3333, + "nodeType": "StructuredDocumentation", + "src": "17370:312:3", + "text": " @dev Returns the downcasted int248 from int256, reverting on\n overflow (when the input is less than smallest int248 or\n greater than largest int248).\n Counterpart to Solidity's `int248` operator.\n Requirements:\n - input must fit into 248 bits" + }, + "id": 3358, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt248", + "nameLocation": "17696:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3336, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3335, + "mutability": "mutable", + "name": "value", + "nameLocation": "17712:5:3", + "nodeType": "VariableDeclaration", + "scope": 3358, + "src": "17705:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3334, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "17705:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "17704:14:3" + }, + "returnParameters": { + "id": 3339, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3338, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "17749:10:3", + "nodeType": "VariableDeclaration", + "scope": 3358, + "src": "17742:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int248", + "typeString": "int248" + }, + "typeName": { + "id": 3337, + "name": "int248", + "nodeType": "ElementaryTypeName", + "src": "17742:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int248", + "typeString": "int248" + } + }, + "visibility": "internal" + } + ], + "src": "17741:19:3" + }, + "scope": 4179, + "src": "17687:224:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3383, + "nodeType": "Block", + "src": "18308:150:3", + "statements": [ + { + "expression": { + "id": 3371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3366, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3364, + "src": "18318:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int240", + "typeString": "int240" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3369, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3361, + "src": "18338:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3368, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18331:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int240_$", + "typeString": "type(int240)" + }, + "typeName": { + "id": 3367, + "name": "int240", + "nodeType": "ElementaryTypeName", + "src": "18331:6:3", + "typeDescriptions": {} + } + }, + "id": 3370, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18331:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int240", + "typeString": "int240" + } + }, + "src": "18318:26:3", + "typeDescriptions": { + "typeIdentifier": "t_int240", + "typeString": "int240" + } + }, + "id": 3372, + "nodeType": "ExpressionStatement", + "src": "18318:26:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3373, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3364, + "src": "18358:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int240", + "typeString": "int240" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3374, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3361, + "src": "18372:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "18358:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3382, + "nodeType": "IfStatement", + "src": "18354:98:3", + "trueBody": { + "id": 3381, + "nodeType": "Block", + "src": "18379:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323430", + "id": 3377, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18430:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_240_by_1", + "typeString": "int_const 240" + }, + "value": "240" + }, + { + "id": 3378, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3361, + "src": "18435:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_240_by_1", + "typeString": "int_const 240" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3376, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "18400:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 3379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18400:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3380, + "nodeType": "RevertStatement", + "src": "18393:48:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 3359, + "nodeType": "StructuredDocumentation", + "src": "17917:312:3", + "text": " @dev Returns the downcasted int240 from int256, reverting on\n overflow (when the input is less than smallest int240 or\n greater than largest int240).\n Counterpart to Solidity's `int240` operator.\n Requirements:\n - input must fit into 240 bits" + }, + "id": 3384, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt240", + "nameLocation": "18243:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3362, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3361, + "mutability": "mutable", + "name": "value", + "nameLocation": "18259:5:3", + "nodeType": "VariableDeclaration", + "scope": 3384, + "src": "18252:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3360, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "18252:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "18251:14:3" + }, + "returnParameters": { + "id": 3365, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3364, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "18296:10:3", + "nodeType": "VariableDeclaration", + "scope": 3384, + "src": "18289:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int240", + "typeString": "int240" + }, + "typeName": { + "id": 3363, + "name": "int240", + "nodeType": "ElementaryTypeName", + "src": "18289:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int240", + "typeString": "int240" + } + }, + "visibility": "internal" + } + ], + "src": "18288:19:3" + }, + "scope": 4179, + "src": "18234:224:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3409, + "nodeType": "Block", + "src": "18855:150:3", + "statements": [ + { + "expression": { + "id": 3397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3392, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3390, + "src": "18865:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int232", + "typeString": "int232" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3395, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3387, + "src": "18885:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3394, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18878:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int232_$", + "typeString": "type(int232)" + }, + "typeName": { + "id": 3393, + "name": "int232", + "nodeType": "ElementaryTypeName", + "src": "18878:6:3", + "typeDescriptions": {} + } + }, + "id": 3396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18878:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int232", + "typeString": "int232" + } + }, + "src": "18865:26:3", + "typeDescriptions": { + "typeIdentifier": "t_int232", + "typeString": "int232" + } + }, + "id": 3398, + "nodeType": "ExpressionStatement", + "src": "18865:26:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3399, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3390, + "src": "18905:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int232", + "typeString": "int232" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3400, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3387, + "src": "18919:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "18905:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3408, + "nodeType": "IfStatement", + "src": "18901:98:3", + "trueBody": { + "id": 3407, + "nodeType": "Block", + "src": "18926:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323332", + "id": 3403, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18977:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_232_by_1", + "typeString": "int_const 232" + }, + "value": "232" + }, + { + "id": 3404, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3387, + "src": "18982:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_232_by_1", + "typeString": "int_const 232" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3402, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "18947:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 3405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18947:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3406, + "nodeType": "RevertStatement", + "src": "18940:48:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 3385, + "nodeType": "StructuredDocumentation", + "src": "18464:312:3", + "text": " @dev Returns the downcasted int232 from int256, reverting on\n overflow (when the input is less than smallest int232 or\n greater than largest int232).\n Counterpart to Solidity's `int232` operator.\n Requirements:\n - input must fit into 232 bits" + }, + "id": 3410, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt232", + "nameLocation": "18790:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3387, + "mutability": "mutable", + "name": "value", + "nameLocation": "18806:5:3", + "nodeType": "VariableDeclaration", + "scope": 3410, + "src": "18799:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3386, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "18799:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "18798:14:3" + }, + "returnParameters": { + "id": 3391, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3390, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "18843:10:3", + "nodeType": "VariableDeclaration", + "scope": 3410, + "src": "18836:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int232", + "typeString": "int232" + }, + "typeName": { + "id": 3389, + "name": "int232", + "nodeType": "ElementaryTypeName", + "src": "18836:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int232", + "typeString": "int232" + } + }, + "visibility": "internal" + } + ], + "src": "18835:19:3" + }, + "scope": 4179, + "src": "18781:224:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3435, + "nodeType": "Block", + "src": "19402:150:3", + "statements": [ + { + "expression": { + "id": 3423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3418, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3416, + "src": "19412:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int224", + "typeString": "int224" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3421, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3413, + "src": "19432:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3420, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "19425:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int224_$", + "typeString": "type(int224)" + }, + "typeName": { + "id": 3419, + "name": "int224", + "nodeType": "ElementaryTypeName", + "src": "19425:6:3", + "typeDescriptions": {} + } + }, + "id": 3422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19425:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int224", + "typeString": "int224" + } + }, + "src": "19412:26:3", + "typeDescriptions": { + "typeIdentifier": "t_int224", + "typeString": "int224" + } + }, + "id": 3424, + "nodeType": "ExpressionStatement", + "src": "19412:26:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3425, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3416, + "src": "19452:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int224", + "typeString": "int224" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3426, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3413, + "src": "19466:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "19452:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3434, + "nodeType": "IfStatement", + "src": "19448:98:3", + "trueBody": { + "id": 3433, + "nodeType": "Block", + "src": "19473:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323234", + "id": 3429, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19524:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_224_by_1", + "typeString": "int_const 224" + }, + "value": "224" + }, + { + "id": 3430, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3413, + "src": "19529:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_224_by_1", + "typeString": "int_const 224" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3428, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "19494:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 3431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19494:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3432, + "nodeType": "RevertStatement", + "src": "19487:48:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 3411, + "nodeType": "StructuredDocumentation", + "src": "19011:312:3", + "text": " @dev Returns the downcasted int224 from int256, reverting on\n overflow (when the input is less than smallest int224 or\n greater than largest int224).\n Counterpart to Solidity's `int224` operator.\n Requirements:\n - input must fit into 224 bits" + }, + "id": 3436, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt224", + "nameLocation": "19337:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3414, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3413, + "mutability": "mutable", + "name": "value", + "nameLocation": "19353:5:3", + "nodeType": "VariableDeclaration", + "scope": 3436, + "src": "19346:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3412, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "19346:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "19345:14:3" + }, + "returnParameters": { + "id": 3417, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3416, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "19390:10:3", + "nodeType": "VariableDeclaration", + "scope": 3436, + "src": "19383:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int224", + "typeString": "int224" + }, + "typeName": { + "id": 3415, + "name": "int224", + "nodeType": "ElementaryTypeName", + "src": "19383:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int224", + "typeString": "int224" + } + }, + "visibility": "internal" + } + ], + "src": "19382:19:3" + }, + "scope": 4179, + "src": "19328:224:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3461, + "nodeType": "Block", + "src": "19949:150:3", + "statements": [ + { + "expression": { + "id": 3449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3444, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3442, + "src": "19959:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int216", + "typeString": "int216" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3447, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3439, + "src": "19979:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3446, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "19972:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int216_$", + "typeString": "type(int216)" + }, + "typeName": { + "id": 3445, + "name": "int216", + "nodeType": "ElementaryTypeName", + "src": "19972:6:3", + "typeDescriptions": {} + } + }, + "id": 3448, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19972:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int216", + "typeString": "int216" + } + }, + "src": "19959:26:3", + "typeDescriptions": { + "typeIdentifier": "t_int216", + "typeString": "int216" + } + }, + "id": 3450, + "nodeType": "ExpressionStatement", + "src": "19959:26:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3451, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3442, + "src": "19999:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int216", + "typeString": "int216" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3452, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3439, + "src": "20013:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "19999:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3460, + "nodeType": "IfStatement", + "src": "19995:98:3", + "trueBody": { + "id": 3459, + "nodeType": "Block", + "src": "20020:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323136", + "id": 3455, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20071:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_216_by_1", + "typeString": "int_const 216" + }, + "value": "216" + }, + { + "id": 3456, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3439, + "src": "20076:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_216_by_1", + "typeString": "int_const 216" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3454, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "20041:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 3457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20041:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3458, + "nodeType": "RevertStatement", + "src": "20034:48:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 3437, + "nodeType": "StructuredDocumentation", + "src": "19558:312:3", + "text": " @dev Returns the downcasted int216 from int256, reverting on\n overflow (when the input is less than smallest int216 or\n greater than largest int216).\n Counterpart to Solidity's `int216` operator.\n Requirements:\n - input must fit into 216 bits" + }, + "id": 3462, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt216", + "nameLocation": "19884:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3440, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3439, + "mutability": "mutable", + "name": "value", + "nameLocation": "19900:5:3", + "nodeType": "VariableDeclaration", + "scope": 3462, + "src": "19893:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3438, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "19893:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "19892:14:3" + }, + "returnParameters": { + "id": 3443, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3442, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "19937:10:3", + "nodeType": "VariableDeclaration", + "scope": 3462, + "src": "19930:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int216", + "typeString": "int216" + }, + "typeName": { + "id": 3441, + "name": "int216", + "nodeType": "ElementaryTypeName", + "src": "19930:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int216", + "typeString": "int216" + } + }, + "visibility": "internal" + } + ], + "src": "19929:19:3" + }, + "scope": 4179, + "src": "19875:224:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3487, + "nodeType": "Block", + "src": "20496:150:3", + "statements": [ + { + "expression": { + "id": 3475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3470, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3468, + "src": "20506:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int208", + "typeString": "int208" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3473, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3465, + "src": "20526:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3472, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "20519:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int208_$", + "typeString": "type(int208)" + }, + "typeName": { + "id": 3471, + "name": "int208", + "nodeType": "ElementaryTypeName", + "src": "20519:6:3", + "typeDescriptions": {} + } + }, + "id": 3474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20519:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int208", + "typeString": "int208" + } + }, + "src": "20506:26:3", + "typeDescriptions": { + "typeIdentifier": "t_int208", + "typeString": "int208" + } + }, + "id": 3476, + "nodeType": "ExpressionStatement", + "src": "20506:26:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3477, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3468, + "src": "20546:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int208", + "typeString": "int208" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3478, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3465, + "src": "20560:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "20546:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3486, + "nodeType": "IfStatement", + "src": "20542:98:3", + "trueBody": { + "id": 3485, + "nodeType": "Block", + "src": "20567:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323038", + "id": 3481, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20618:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_208_by_1", + "typeString": "int_const 208" + }, + "value": "208" + }, + { + "id": 3482, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3465, + "src": "20623:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_208_by_1", + "typeString": "int_const 208" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3480, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "20588:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 3483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20588:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3484, + "nodeType": "RevertStatement", + "src": "20581:48:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 3463, + "nodeType": "StructuredDocumentation", + "src": "20105:312:3", + "text": " @dev Returns the downcasted int208 from int256, reverting on\n overflow (when the input is less than smallest int208 or\n greater than largest int208).\n Counterpart to Solidity's `int208` operator.\n Requirements:\n - input must fit into 208 bits" + }, + "id": 3488, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt208", + "nameLocation": "20431:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3466, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3465, + "mutability": "mutable", + "name": "value", + "nameLocation": "20447:5:3", + "nodeType": "VariableDeclaration", + "scope": 3488, + "src": "20440:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3464, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "20440:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "20439:14:3" + }, + "returnParameters": { + "id": 3469, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3468, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "20484:10:3", + "nodeType": "VariableDeclaration", + "scope": 3488, + "src": "20477:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int208", + "typeString": "int208" + }, + "typeName": { + "id": 3467, + "name": "int208", + "nodeType": "ElementaryTypeName", + "src": "20477:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int208", + "typeString": "int208" + } + }, + "visibility": "internal" + } + ], + "src": "20476:19:3" + }, + "scope": 4179, + "src": "20422:224:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3513, + "nodeType": "Block", + "src": "21043:150:3", + "statements": [ + { + "expression": { + "id": 3501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3496, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3494, + "src": "21053:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int200", + "typeString": "int200" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3499, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3491, + "src": "21073:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3498, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21066:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int200_$", + "typeString": "type(int200)" + }, + "typeName": { + "id": 3497, + "name": "int200", + "nodeType": "ElementaryTypeName", + "src": "21066:6:3", + "typeDescriptions": {} + } + }, + "id": 3500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21066:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int200", + "typeString": "int200" + } + }, + "src": "21053:26:3", + "typeDescriptions": { + "typeIdentifier": "t_int200", + "typeString": "int200" + } + }, + "id": 3502, + "nodeType": "ExpressionStatement", + "src": "21053:26:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3503, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3494, + "src": "21093:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int200", + "typeString": "int200" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3504, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3491, + "src": "21107:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "21093:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3512, + "nodeType": "IfStatement", + "src": "21089:98:3", + "trueBody": { + "id": 3511, + "nodeType": "Block", + "src": "21114:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323030", + "id": 3507, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21165:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_200_by_1", + "typeString": "int_const 200" + }, + "value": "200" + }, + { + "id": 3508, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3491, + "src": "21170:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_200_by_1", + "typeString": "int_const 200" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3506, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "21135:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 3509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21135:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3510, + "nodeType": "RevertStatement", + "src": "21128:48:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 3489, + "nodeType": "StructuredDocumentation", + "src": "20652:312:3", + "text": " @dev Returns the downcasted int200 from int256, reverting on\n overflow (when the input is less than smallest int200 or\n greater than largest int200).\n Counterpart to Solidity's `int200` operator.\n Requirements:\n - input must fit into 200 bits" + }, + "id": 3514, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt200", + "nameLocation": "20978:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3492, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3491, + "mutability": "mutable", + "name": "value", + "nameLocation": "20994:5:3", + "nodeType": "VariableDeclaration", + "scope": 3514, + "src": "20987:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3490, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "20987:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "20986:14:3" + }, + "returnParameters": { + "id": 3495, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3494, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "21031:10:3", + "nodeType": "VariableDeclaration", + "scope": 3514, + "src": "21024:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int200", + "typeString": "int200" + }, + "typeName": { + "id": 3493, + "name": "int200", + "nodeType": "ElementaryTypeName", + "src": "21024:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int200", + "typeString": "int200" + } + }, + "visibility": "internal" + } + ], + "src": "21023:19:3" + }, + "scope": 4179, + "src": "20969:224:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3539, + "nodeType": "Block", + "src": "21590:150:3", + "statements": [ + { + "expression": { + "id": 3527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3522, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3520, + "src": "21600:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int192", + "typeString": "int192" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3525, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3517, + "src": "21620:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3524, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21613:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int192_$", + "typeString": "type(int192)" + }, + "typeName": { + "id": 3523, + "name": "int192", + "nodeType": "ElementaryTypeName", + "src": "21613:6:3", + "typeDescriptions": {} + } + }, + "id": 3526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21613:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int192", + "typeString": "int192" + } + }, + "src": "21600:26:3", + "typeDescriptions": { + "typeIdentifier": "t_int192", + "typeString": "int192" + } + }, + "id": 3528, + "nodeType": "ExpressionStatement", + "src": "21600:26:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3529, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3520, + "src": "21640:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int192", + "typeString": "int192" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3530, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3517, + "src": "21654:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "21640:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3538, + "nodeType": "IfStatement", + "src": "21636:98:3", + "trueBody": { + "id": 3537, + "nodeType": "Block", + "src": "21661:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313932", + "id": 3533, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21712:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_192_by_1", + "typeString": "int_const 192" + }, + "value": "192" + }, + { + "id": 3534, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3517, + "src": "21717:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_192_by_1", + "typeString": "int_const 192" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3532, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "21682:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 3535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21682:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3536, + "nodeType": "RevertStatement", + "src": "21675:48:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 3515, + "nodeType": "StructuredDocumentation", + "src": "21199:312:3", + "text": " @dev Returns the downcasted int192 from int256, reverting on\n overflow (when the input is less than smallest int192 or\n greater than largest int192).\n Counterpart to Solidity's `int192` operator.\n Requirements:\n - input must fit into 192 bits" + }, + "id": 3540, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt192", + "nameLocation": "21525:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3518, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3517, + "mutability": "mutable", + "name": "value", + "nameLocation": "21541:5:3", + "nodeType": "VariableDeclaration", + "scope": 3540, + "src": "21534:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3516, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "21534:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "21533:14:3" + }, + "returnParameters": { + "id": 3521, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3520, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "21578:10:3", + "nodeType": "VariableDeclaration", + "scope": 3540, + "src": "21571:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int192", + "typeString": "int192" + }, + "typeName": { + "id": 3519, + "name": "int192", + "nodeType": "ElementaryTypeName", + "src": "21571:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int192", + "typeString": "int192" + } + }, + "visibility": "internal" + } + ], + "src": "21570:19:3" + }, + "scope": 4179, + "src": "21516:224:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3565, + "nodeType": "Block", + "src": "22137:150:3", + "statements": [ + { + "expression": { + "id": 3553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3548, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3546, + "src": "22147:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int184", + "typeString": "int184" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3551, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3543, + "src": "22167:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3550, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "22160:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int184_$", + "typeString": "type(int184)" + }, + "typeName": { + "id": 3549, + "name": "int184", + "nodeType": "ElementaryTypeName", + "src": "22160:6:3", + "typeDescriptions": {} + } + }, + "id": 3552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22160:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int184", + "typeString": "int184" + } + }, + "src": "22147:26:3", + "typeDescriptions": { + "typeIdentifier": "t_int184", + "typeString": "int184" + } + }, + "id": 3554, + "nodeType": "ExpressionStatement", + "src": "22147:26:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3555, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3546, + "src": "22187:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int184", + "typeString": "int184" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3556, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3543, + "src": "22201:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "22187:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3564, + "nodeType": "IfStatement", + "src": "22183:98:3", + "trueBody": { + "id": 3563, + "nodeType": "Block", + "src": "22208:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313834", + "id": 3559, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22259:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_184_by_1", + "typeString": "int_const 184" + }, + "value": "184" + }, + { + "id": 3560, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3543, + "src": "22264:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_184_by_1", + "typeString": "int_const 184" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3558, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "22229:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 3561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22229:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3562, + "nodeType": "RevertStatement", + "src": "22222:48:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 3541, + "nodeType": "StructuredDocumentation", + "src": "21746:312:3", + "text": " @dev Returns the downcasted int184 from int256, reverting on\n overflow (when the input is less than smallest int184 or\n greater than largest int184).\n Counterpart to Solidity's `int184` operator.\n Requirements:\n - input must fit into 184 bits" + }, + "id": 3566, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt184", + "nameLocation": "22072:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3544, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3543, + "mutability": "mutable", + "name": "value", + "nameLocation": "22088:5:3", + "nodeType": "VariableDeclaration", + "scope": 3566, + "src": "22081:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3542, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "22081:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "22080:14:3" + }, + "returnParameters": { + "id": 3547, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3546, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "22125:10:3", + "nodeType": "VariableDeclaration", + "scope": 3566, + "src": "22118:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int184", + "typeString": "int184" + }, + "typeName": { + "id": 3545, + "name": "int184", + "nodeType": "ElementaryTypeName", + "src": "22118:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int184", + "typeString": "int184" + } + }, + "visibility": "internal" + } + ], + "src": "22117:19:3" + }, + "scope": 4179, + "src": "22063:224:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3591, + "nodeType": "Block", + "src": "22684:150:3", + "statements": [ + { + "expression": { + "id": 3579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3574, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3572, + "src": "22694:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int176", + "typeString": "int176" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3577, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3569, + "src": "22714:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3576, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "22707:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int176_$", + "typeString": "type(int176)" + }, + "typeName": { + "id": 3575, + "name": "int176", + "nodeType": "ElementaryTypeName", + "src": "22707:6:3", + "typeDescriptions": {} + } + }, + "id": 3578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22707:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int176", + "typeString": "int176" + } + }, + "src": "22694:26:3", + "typeDescriptions": { + "typeIdentifier": "t_int176", + "typeString": "int176" + } + }, + "id": 3580, + "nodeType": "ExpressionStatement", + "src": "22694:26:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3581, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3572, + "src": "22734:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int176", + "typeString": "int176" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3582, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3569, + "src": "22748:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "22734:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3590, + "nodeType": "IfStatement", + "src": "22730:98:3", + "trueBody": { + "id": 3589, + "nodeType": "Block", + "src": "22755:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313736", + "id": 3585, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22806:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_176_by_1", + "typeString": "int_const 176" + }, + "value": "176" + }, + { + "id": 3586, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3569, + "src": "22811:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_176_by_1", + "typeString": "int_const 176" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3584, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "22776:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 3587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22776:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3588, + "nodeType": "RevertStatement", + "src": "22769:48:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 3567, + "nodeType": "StructuredDocumentation", + "src": "22293:312:3", + "text": " @dev Returns the downcasted int176 from int256, reverting on\n overflow (when the input is less than smallest int176 or\n greater than largest int176).\n Counterpart to Solidity's `int176` operator.\n Requirements:\n - input must fit into 176 bits" + }, + "id": 3592, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt176", + "nameLocation": "22619:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3570, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3569, + "mutability": "mutable", + "name": "value", + "nameLocation": "22635:5:3", + "nodeType": "VariableDeclaration", + "scope": 3592, + "src": "22628:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3568, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "22628:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "22627:14:3" + }, + "returnParameters": { + "id": 3573, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3572, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "22672:10:3", + "nodeType": "VariableDeclaration", + "scope": 3592, + "src": "22665:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int176", + "typeString": "int176" + }, + "typeName": { + "id": 3571, + "name": "int176", + "nodeType": "ElementaryTypeName", + "src": "22665:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int176", + "typeString": "int176" + } + }, + "visibility": "internal" + } + ], + "src": "22664:19:3" + }, + "scope": 4179, + "src": "22610:224:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3617, + "nodeType": "Block", + "src": "23231:150:3", + "statements": [ + { + "expression": { + "id": 3605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3600, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3598, + "src": "23241:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int168", + "typeString": "int168" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3603, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3595, + "src": "23261:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3602, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "23254:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int168_$", + "typeString": "type(int168)" + }, + "typeName": { + "id": 3601, + "name": "int168", + "nodeType": "ElementaryTypeName", + "src": "23254:6:3", + "typeDescriptions": {} + } + }, + "id": 3604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23254:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int168", + "typeString": "int168" + } + }, + "src": "23241:26:3", + "typeDescriptions": { + "typeIdentifier": "t_int168", + "typeString": "int168" + } + }, + "id": 3606, + "nodeType": "ExpressionStatement", + "src": "23241:26:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3607, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3598, + "src": "23281:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int168", + "typeString": "int168" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3608, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3595, + "src": "23295:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "23281:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3616, + "nodeType": "IfStatement", + "src": "23277:98:3", + "trueBody": { + "id": 3615, + "nodeType": "Block", + "src": "23302:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313638", + "id": 3611, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23353:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_168_by_1", + "typeString": "int_const 168" + }, + "value": "168" + }, + { + "id": 3612, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3595, + "src": "23358:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_168_by_1", + "typeString": "int_const 168" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3610, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "23323:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 3613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23323:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3614, + "nodeType": "RevertStatement", + "src": "23316:48:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 3593, + "nodeType": "StructuredDocumentation", + "src": "22840:312:3", + "text": " @dev Returns the downcasted int168 from int256, reverting on\n overflow (when the input is less than smallest int168 or\n greater than largest int168).\n Counterpart to Solidity's `int168` operator.\n Requirements:\n - input must fit into 168 bits" + }, + "id": 3618, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt168", + "nameLocation": "23166:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3596, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3595, + "mutability": "mutable", + "name": "value", + "nameLocation": "23182:5:3", + "nodeType": "VariableDeclaration", + "scope": 3618, + "src": "23175:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3594, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "23175:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "23174:14:3" + }, + "returnParameters": { + "id": 3599, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3598, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "23219:10:3", + "nodeType": "VariableDeclaration", + "scope": 3618, + "src": "23212:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int168", + "typeString": "int168" + }, + "typeName": { + "id": 3597, + "name": "int168", + "nodeType": "ElementaryTypeName", + "src": "23212:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int168", + "typeString": "int168" + } + }, + "visibility": "internal" + } + ], + "src": "23211:19:3" + }, + "scope": 4179, + "src": "23157:224:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3643, + "nodeType": "Block", + "src": "23778:150:3", + "statements": [ + { + "expression": { + "id": 3631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3626, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3624, + "src": "23788:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int160", + "typeString": "int160" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3629, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3621, + "src": "23808:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3628, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "23801:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int160_$", + "typeString": "type(int160)" + }, + "typeName": { + "id": 3627, + "name": "int160", + "nodeType": "ElementaryTypeName", + "src": "23801:6:3", + "typeDescriptions": {} + } + }, + "id": 3630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23801:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int160", + "typeString": "int160" + } + }, + "src": "23788:26:3", + "typeDescriptions": { + "typeIdentifier": "t_int160", + "typeString": "int160" + } + }, + "id": 3632, + "nodeType": "ExpressionStatement", + "src": "23788:26:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3633, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3624, + "src": "23828:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int160", + "typeString": "int160" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3634, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3621, + "src": "23842:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "23828:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3642, + "nodeType": "IfStatement", + "src": "23824:98:3", + "trueBody": { + "id": 3641, + "nodeType": "Block", + "src": "23849:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313630", + "id": 3637, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23900:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_160_by_1", + "typeString": "int_const 160" + }, + "value": "160" + }, + { + "id": 3638, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3621, + "src": "23905:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_160_by_1", + "typeString": "int_const 160" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3636, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "23870:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 3639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23870:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3640, + "nodeType": "RevertStatement", + "src": "23863:48:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 3619, + "nodeType": "StructuredDocumentation", + "src": "23387:312:3", + "text": " @dev Returns the downcasted int160 from int256, reverting on\n overflow (when the input is less than smallest int160 or\n greater than largest int160).\n Counterpart to Solidity's `int160` operator.\n Requirements:\n - input must fit into 160 bits" + }, + "id": 3644, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt160", + "nameLocation": "23713:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3622, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3621, + "mutability": "mutable", + "name": "value", + "nameLocation": "23729:5:3", + "nodeType": "VariableDeclaration", + "scope": 3644, + "src": "23722:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3620, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "23722:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "23721:14:3" + }, + "returnParameters": { + "id": 3625, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3624, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "23766:10:3", + "nodeType": "VariableDeclaration", + "scope": 3644, + "src": "23759:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int160", + "typeString": "int160" + }, + "typeName": { + "id": 3623, + "name": "int160", + "nodeType": "ElementaryTypeName", + "src": "23759:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int160", + "typeString": "int160" + } + }, + "visibility": "internal" + } + ], + "src": "23758:19:3" + }, + "scope": 4179, + "src": "23704:224:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3669, + "nodeType": "Block", + "src": "24325:150:3", + "statements": [ + { + "expression": { + "id": 3657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3652, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3650, + "src": "24335:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int152", + "typeString": "int152" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3655, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3647, + "src": "24355:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3654, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "24348:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int152_$", + "typeString": "type(int152)" + }, + "typeName": { + "id": 3653, + "name": "int152", + "nodeType": "ElementaryTypeName", + "src": "24348:6:3", + "typeDescriptions": {} + } + }, + "id": 3656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24348:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int152", + "typeString": "int152" + } + }, + "src": "24335:26:3", + "typeDescriptions": { + "typeIdentifier": "t_int152", + "typeString": "int152" + } + }, + "id": 3658, + "nodeType": "ExpressionStatement", + "src": "24335:26:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3659, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3650, + "src": "24375:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int152", + "typeString": "int152" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3660, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3647, + "src": "24389:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "24375:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3668, + "nodeType": "IfStatement", + "src": "24371:98:3", + "trueBody": { + "id": 3667, + "nodeType": "Block", + "src": "24396:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313532", + "id": 3663, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24447:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_152_by_1", + "typeString": "int_const 152" + }, + "value": "152" + }, + { + "id": 3664, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3647, + "src": "24452:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_152_by_1", + "typeString": "int_const 152" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3662, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "24417:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 3665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24417:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3666, + "nodeType": "RevertStatement", + "src": "24410:48:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 3645, + "nodeType": "StructuredDocumentation", + "src": "23934:312:3", + "text": " @dev Returns the downcasted int152 from int256, reverting on\n overflow (when the input is less than smallest int152 or\n greater than largest int152).\n Counterpart to Solidity's `int152` operator.\n Requirements:\n - input must fit into 152 bits" + }, + "id": 3670, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt152", + "nameLocation": "24260:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3648, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3647, + "mutability": "mutable", + "name": "value", + "nameLocation": "24276:5:3", + "nodeType": "VariableDeclaration", + "scope": 3670, + "src": "24269:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3646, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "24269:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "24268:14:3" + }, + "returnParameters": { + "id": 3651, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3650, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "24313:10:3", + "nodeType": "VariableDeclaration", + "scope": 3670, + "src": "24306:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int152", + "typeString": "int152" + }, + "typeName": { + "id": 3649, + "name": "int152", + "nodeType": "ElementaryTypeName", + "src": "24306:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int152", + "typeString": "int152" + } + }, + "visibility": "internal" + } + ], + "src": "24305:19:3" + }, + "scope": 4179, + "src": "24251:224:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3695, + "nodeType": "Block", + "src": "24872:150:3", + "statements": [ + { + "expression": { + "id": 3683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3678, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3676, + "src": "24882:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int144", + "typeString": "int144" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3681, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3673, + "src": "24902:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3680, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "24895:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int144_$", + "typeString": "type(int144)" + }, + "typeName": { + "id": 3679, + "name": "int144", + "nodeType": "ElementaryTypeName", + "src": "24895:6:3", + "typeDescriptions": {} + } + }, + "id": 3682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24895:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int144", + "typeString": "int144" + } + }, + "src": "24882:26:3", + "typeDescriptions": { + "typeIdentifier": "t_int144", + "typeString": "int144" + } + }, + "id": 3684, + "nodeType": "ExpressionStatement", + "src": "24882:26:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3685, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3676, + "src": "24922:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int144", + "typeString": "int144" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3686, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3673, + "src": "24936:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "24922:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3694, + "nodeType": "IfStatement", + "src": "24918:98:3", + "trueBody": { + "id": 3693, + "nodeType": "Block", + "src": "24943:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313434", + "id": 3689, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24994:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_144_by_1", + "typeString": "int_const 144" + }, + "value": "144" + }, + { + "id": 3690, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3673, + "src": "24999:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_144_by_1", + "typeString": "int_const 144" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3688, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "24964:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 3691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24964:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3692, + "nodeType": "RevertStatement", + "src": "24957:48:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 3671, + "nodeType": "StructuredDocumentation", + "src": "24481:312:3", + "text": " @dev Returns the downcasted int144 from int256, reverting on\n overflow (when the input is less than smallest int144 or\n greater than largest int144).\n Counterpart to Solidity's `int144` operator.\n Requirements:\n - input must fit into 144 bits" + }, + "id": 3696, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt144", + "nameLocation": "24807:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3674, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3673, + "mutability": "mutable", + "name": "value", + "nameLocation": "24823:5:3", + "nodeType": "VariableDeclaration", + "scope": 3696, + "src": "24816:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3672, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "24816:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "24815:14:3" + }, + "returnParameters": { + "id": 3677, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3676, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "24860:10:3", + "nodeType": "VariableDeclaration", + "scope": 3696, + "src": "24853:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int144", + "typeString": "int144" + }, + "typeName": { + "id": 3675, + "name": "int144", + "nodeType": "ElementaryTypeName", + "src": "24853:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int144", + "typeString": "int144" + } + }, + "visibility": "internal" + } + ], + "src": "24852:19:3" + }, + "scope": 4179, + "src": "24798:224:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3721, + "nodeType": "Block", + "src": "25419:150:3", + "statements": [ + { + "expression": { + "id": 3709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3704, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3702, + "src": "25429:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int136", + "typeString": "int136" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3707, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3699, + "src": "25449:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3706, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25442:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int136_$", + "typeString": "type(int136)" + }, + "typeName": { + "id": 3705, + "name": "int136", + "nodeType": "ElementaryTypeName", + "src": "25442:6:3", + "typeDescriptions": {} + } + }, + "id": 3708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25442:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int136", + "typeString": "int136" + } + }, + "src": "25429:26:3", + "typeDescriptions": { + "typeIdentifier": "t_int136", + "typeString": "int136" + } + }, + "id": 3710, + "nodeType": "ExpressionStatement", + "src": "25429:26:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3711, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3702, + "src": "25469:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int136", + "typeString": "int136" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3712, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3699, + "src": "25483:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "25469:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3720, + "nodeType": "IfStatement", + "src": "25465:98:3", + "trueBody": { + "id": 3719, + "nodeType": "Block", + "src": "25490:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313336", + "id": 3715, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25541:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_136_by_1", + "typeString": "int_const 136" + }, + "value": "136" + }, + { + "id": 3716, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3699, + "src": "25546:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_136_by_1", + "typeString": "int_const 136" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3714, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "25511:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 3717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25511:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3718, + "nodeType": "RevertStatement", + "src": "25504:48:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 3697, + "nodeType": "StructuredDocumentation", + "src": "25028:312:3", + "text": " @dev Returns the downcasted int136 from int256, reverting on\n overflow (when the input is less than smallest int136 or\n greater than largest int136).\n Counterpart to Solidity's `int136` operator.\n Requirements:\n - input must fit into 136 bits" + }, + "id": 3722, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt136", + "nameLocation": "25354:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3700, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3699, + "mutability": "mutable", + "name": "value", + "nameLocation": "25370:5:3", + "nodeType": "VariableDeclaration", + "scope": 3722, + "src": "25363:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3698, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "25363:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "25362:14:3" + }, + "returnParameters": { + "id": 3703, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3702, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "25407:10:3", + "nodeType": "VariableDeclaration", + "scope": 3722, + "src": "25400:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int136", + "typeString": "int136" + }, + "typeName": { + "id": 3701, + "name": "int136", + "nodeType": "ElementaryTypeName", + "src": "25400:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int136", + "typeString": "int136" + } + }, + "visibility": "internal" + } + ], + "src": "25399:19:3" + }, + "scope": 4179, + "src": "25345:224:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3747, + "nodeType": "Block", + "src": "25966:150:3", + "statements": [ + { + "expression": { + "id": 3735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3730, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3728, + "src": "25976:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3733, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3725, + "src": "25996:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3732, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25989:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int128_$", + "typeString": "type(int128)" + }, + "typeName": { + "id": 3731, + "name": "int128", + "nodeType": "ElementaryTypeName", + "src": "25989:6:3", + "typeDescriptions": {} + } + }, + "id": 3734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25989:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + }, + "src": "25976:26:3", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + }, + "id": 3736, + "nodeType": "ExpressionStatement", + "src": "25976:26:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3737, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3728, + "src": "26016:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3738, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3725, + "src": "26030:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "26016:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3746, + "nodeType": "IfStatement", + "src": "26012:98:3", + "trueBody": { + "id": 3745, + "nodeType": "Block", + "src": "26037:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313238", + "id": 3741, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26088:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + { + "id": 3742, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3725, + "src": "26093:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3740, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "26058:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 3743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26058:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3744, + "nodeType": "RevertStatement", + "src": "26051:48:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 3723, + "nodeType": "StructuredDocumentation", + "src": "25575:312:3", + "text": " @dev Returns the downcasted int128 from int256, reverting on\n overflow (when the input is less than smallest int128 or\n greater than largest int128).\n Counterpart to Solidity's `int128` operator.\n Requirements:\n - input must fit into 128 bits" + }, + "id": 3748, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt128", + "nameLocation": "25901:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3726, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3725, + "mutability": "mutable", + "name": "value", + "nameLocation": "25917:5:3", + "nodeType": "VariableDeclaration", + "scope": 3748, + "src": "25910:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3724, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "25910:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "25909:14:3" + }, + "returnParameters": { + "id": 3729, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3728, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "25954:10:3", + "nodeType": "VariableDeclaration", + "scope": 3748, + "src": "25947:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + }, + "typeName": { + "id": 3727, + "name": "int128", + "nodeType": "ElementaryTypeName", + "src": "25947:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + }, + "visibility": "internal" + } + ], + "src": "25946:19:3" + }, + "scope": 4179, + "src": "25892:224:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3773, + "nodeType": "Block", + "src": "26513:150:3", + "statements": [ + { + "expression": { + "id": 3761, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3756, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3754, + "src": "26523:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int120", + "typeString": "int120" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3759, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3751, + "src": "26543:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3758, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26536:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int120_$", + "typeString": "type(int120)" + }, + "typeName": { + "id": 3757, + "name": "int120", + "nodeType": "ElementaryTypeName", + "src": "26536:6:3", + "typeDescriptions": {} + } + }, + "id": 3760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26536:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int120", + "typeString": "int120" + } + }, + "src": "26523:26:3", + "typeDescriptions": { + "typeIdentifier": "t_int120", + "typeString": "int120" + } + }, + "id": 3762, + "nodeType": "ExpressionStatement", + "src": "26523:26:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3763, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3754, + "src": "26563:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int120", + "typeString": "int120" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3764, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3751, + "src": "26577:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "26563:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3772, + "nodeType": "IfStatement", + "src": "26559:98:3", + "trueBody": { + "id": 3771, + "nodeType": "Block", + "src": "26584:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313230", + "id": 3767, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26635:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_120_by_1", + "typeString": "int_const 120" + }, + "value": "120" + }, + { + "id": 3768, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3751, + "src": "26640:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_120_by_1", + "typeString": "int_const 120" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3766, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "26605:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 3769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26605:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3770, + "nodeType": "RevertStatement", + "src": "26598:48:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 3749, + "nodeType": "StructuredDocumentation", + "src": "26122:312:3", + "text": " @dev Returns the downcasted int120 from int256, reverting on\n overflow (when the input is less than smallest int120 or\n greater than largest int120).\n Counterpart to Solidity's `int120` operator.\n Requirements:\n - input must fit into 120 bits" + }, + "id": 3774, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt120", + "nameLocation": "26448:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3752, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3751, + "mutability": "mutable", + "name": "value", + "nameLocation": "26464:5:3", + "nodeType": "VariableDeclaration", + "scope": 3774, + "src": "26457:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3750, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "26457:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "26456:14:3" + }, + "returnParameters": { + "id": 3755, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3754, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "26501:10:3", + "nodeType": "VariableDeclaration", + "scope": 3774, + "src": "26494:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int120", + "typeString": "int120" + }, + "typeName": { + "id": 3753, + "name": "int120", + "nodeType": "ElementaryTypeName", + "src": "26494:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int120", + "typeString": "int120" + } + }, + "visibility": "internal" + } + ], + "src": "26493:19:3" + }, + "scope": 4179, + "src": "26439:224:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3799, + "nodeType": "Block", + "src": "27060:150:3", + "statements": [ + { + "expression": { + "id": 3787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3782, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3780, + "src": "27070:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int112", + "typeString": "int112" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3785, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3777, + "src": "27090:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3784, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27083:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int112_$", + "typeString": "type(int112)" + }, + "typeName": { + "id": 3783, + "name": "int112", + "nodeType": "ElementaryTypeName", + "src": "27083:6:3", + "typeDescriptions": {} + } + }, + "id": 3786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27083:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int112", + "typeString": "int112" + } + }, + "src": "27070:26:3", + "typeDescriptions": { + "typeIdentifier": "t_int112", + "typeString": "int112" + } + }, + "id": 3788, + "nodeType": "ExpressionStatement", + "src": "27070:26:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3789, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3780, + "src": "27110:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int112", + "typeString": "int112" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3790, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3777, + "src": "27124:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "27110:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3798, + "nodeType": "IfStatement", + "src": "27106:98:3", + "trueBody": { + "id": 3797, + "nodeType": "Block", + "src": "27131:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313132", + "id": 3793, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27182:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_112_by_1", + "typeString": "int_const 112" + }, + "value": "112" + }, + { + "id": 3794, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3777, + "src": "27187:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_112_by_1", + "typeString": "int_const 112" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3792, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "27152:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 3795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27152:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3796, + "nodeType": "RevertStatement", + "src": "27145:48:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 3775, + "nodeType": "StructuredDocumentation", + "src": "26669:312:3", + "text": " @dev Returns the downcasted int112 from int256, reverting on\n overflow (when the input is less than smallest int112 or\n greater than largest int112).\n Counterpart to Solidity's `int112` operator.\n Requirements:\n - input must fit into 112 bits" + }, + "id": 3800, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt112", + "nameLocation": "26995:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3778, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3777, + "mutability": "mutable", + "name": "value", + "nameLocation": "27011:5:3", + "nodeType": "VariableDeclaration", + "scope": 3800, + "src": "27004:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3776, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "27004:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "27003:14:3" + }, + "returnParameters": { + "id": 3781, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3780, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "27048:10:3", + "nodeType": "VariableDeclaration", + "scope": 3800, + "src": "27041:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int112", + "typeString": "int112" + }, + "typeName": { + "id": 3779, + "name": "int112", + "nodeType": "ElementaryTypeName", + "src": "27041:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int112", + "typeString": "int112" + } + }, + "visibility": "internal" + } + ], + "src": "27040:19:3" + }, + "scope": 4179, + "src": "26986:224:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3825, + "nodeType": "Block", + "src": "27607:150:3", + "statements": [ + { + "expression": { + "id": 3813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3808, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3806, + "src": "27617:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int104", + "typeString": "int104" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3811, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3803, + "src": "27637:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3810, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27630:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int104_$", + "typeString": "type(int104)" + }, + "typeName": { + "id": 3809, + "name": "int104", + "nodeType": "ElementaryTypeName", + "src": "27630:6:3", + "typeDescriptions": {} + } + }, + "id": 3812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27630:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int104", + "typeString": "int104" + } + }, + "src": "27617:26:3", + "typeDescriptions": { + "typeIdentifier": "t_int104", + "typeString": "int104" + } + }, + "id": 3814, + "nodeType": "ExpressionStatement", + "src": "27617:26:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3815, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3806, + "src": "27657:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int104", + "typeString": "int104" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3816, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3803, + "src": "27671:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "27657:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3824, + "nodeType": "IfStatement", + "src": "27653:98:3", + "trueBody": { + "id": 3823, + "nodeType": "Block", + "src": "27678:73:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313034", + "id": 3819, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27729:3:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_104_by_1", + "typeString": "int_const 104" + }, + "value": "104" + }, + { + "id": 3820, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3803, + "src": "27734:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_104_by_1", + "typeString": "int_const 104" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3818, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "27699:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 3821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27699:41:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3822, + "nodeType": "RevertStatement", + "src": "27692:48:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 3801, + "nodeType": "StructuredDocumentation", + "src": "27216:312:3", + "text": " @dev Returns the downcasted int104 from int256, reverting on\n overflow (when the input is less than smallest int104 or\n greater than largest int104).\n Counterpart to Solidity's `int104` operator.\n Requirements:\n - input must fit into 104 bits" + }, + "id": 3826, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt104", + "nameLocation": "27542:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3804, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3803, + "mutability": "mutable", + "name": "value", + "nameLocation": "27558:5:3", + "nodeType": "VariableDeclaration", + "scope": 3826, + "src": "27551:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3802, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "27551:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "27550:14:3" + }, + "returnParameters": { + "id": 3807, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3806, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "27595:10:3", + "nodeType": "VariableDeclaration", + "scope": 3826, + "src": "27588:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int104", + "typeString": "int104" + }, + "typeName": { + "id": 3805, + "name": "int104", + "nodeType": "ElementaryTypeName", + "src": "27588:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int104", + "typeString": "int104" + } + }, + "visibility": "internal" + } + ], + "src": "27587:19:3" + }, + "scope": 4179, + "src": "27533:224:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3851, + "nodeType": "Block", + "src": "28147:148:3", + "statements": [ + { + "expression": { + "id": 3839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3834, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3832, + "src": "28157:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int96", + "typeString": "int96" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3837, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3829, + "src": "28176:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3836, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28170:5:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int96_$", + "typeString": "type(int96)" + }, + "typeName": { + "id": 3835, + "name": "int96", + "nodeType": "ElementaryTypeName", + "src": "28170:5:3", + "typeDescriptions": {} + } + }, + "id": 3838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28170:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int96", + "typeString": "int96" + } + }, + "src": "28157:25:3", + "typeDescriptions": { + "typeIdentifier": "t_int96", + "typeString": "int96" + } + }, + "id": 3840, + "nodeType": "ExpressionStatement", + "src": "28157:25:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3841, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3832, + "src": "28196:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int96", + "typeString": "int96" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3842, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3829, + "src": "28210:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "28196:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3850, + "nodeType": "IfStatement", + "src": "28192:97:3", + "trueBody": { + "id": 3849, + "nodeType": "Block", + "src": "28217:72:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3936", + "id": 3845, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28268:2:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_96_by_1", + "typeString": "int_const 96" + }, + "value": "96" + }, + { + "id": 3846, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3829, + "src": "28272:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_96_by_1", + "typeString": "int_const 96" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3844, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "28238:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 3847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28238:40:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3848, + "nodeType": "RevertStatement", + "src": "28231:47:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 3827, + "nodeType": "StructuredDocumentation", + "src": "27763:307:3", + "text": " @dev Returns the downcasted int96 from int256, reverting on\n overflow (when the input is less than smallest int96 or\n greater than largest int96).\n Counterpart to Solidity's `int96` operator.\n Requirements:\n - input must fit into 96 bits" + }, + "id": 3852, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt96", + "nameLocation": "28084:7:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3830, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3829, + "mutability": "mutable", + "name": "value", + "nameLocation": "28099:5:3", + "nodeType": "VariableDeclaration", + "scope": 3852, + "src": "28092:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3828, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "28092:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "28091:14:3" + }, + "returnParameters": { + "id": 3833, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3832, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "28135:10:3", + "nodeType": "VariableDeclaration", + "scope": 3852, + "src": "28129:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int96", + "typeString": "int96" + }, + "typeName": { + "id": 3831, + "name": "int96", + "nodeType": "ElementaryTypeName", + "src": "28129:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int96", + "typeString": "int96" + } + }, + "visibility": "internal" + } + ], + "src": "28128:18:3" + }, + "scope": 4179, + "src": "28075:220:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3877, + "nodeType": "Block", + "src": "28685:148:3", + "statements": [ + { + "expression": { + "id": 3865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3860, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3858, + "src": "28695:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int88", + "typeString": "int88" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3863, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3855, + "src": "28714:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3862, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28708:5:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int88_$", + "typeString": "type(int88)" + }, + "typeName": { + "id": 3861, + "name": "int88", + "nodeType": "ElementaryTypeName", + "src": "28708:5:3", + "typeDescriptions": {} + } + }, + "id": 3864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28708:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int88", + "typeString": "int88" + } + }, + "src": "28695:25:3", + "typeDescriptions": { + "typeIdentifier": "t_int88", + "typeString": "int88" + } + }, + "id": 3866, + "nodeType": "ExpressionStatement", + "src": "28695:25:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3867, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3858, + "src": "28734:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int88", + "typeString": "int88" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3868, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3855, + "src": "28748:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "28734:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3876, + "nodeType": "IfStatement", + "src": "28730:97:3", + "trueBody": { + "id": 3875, + "nodeType": "Block", + "src": "28755:72:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3838", + "id": 3871, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28806:2:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_88_by_1", + "typeString": "int_const 88" + }, + "value": "88" + }, + { + "id": 3872, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3855, + "src": "28810:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_88_by_1", + "typeString": "int_const 88" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3870, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "28776:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 3873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28776:40:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3874, + "nodeType": "RevertStatement", + "src": "28769:47:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 3853, + "nodeType": "StructuredDocumentation", + "src": "28301:307:3", + "text": " @dev Returns the downcasted int88 from int256, reverting on\n overflow (when the input is less than smallest int88 or\n greater than largest int88).\n Counterpart to Solidity's `int88` operator.\n Requirements:\n - input must fit into 88 bits" + }, + "id": 3878, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt88", + "nameLocation": "28622:7:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3856, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3855, + "mutability": "mutable", + "name": "value", + "nameLocation": "28637:5:3", + "nodeType": "VariableDeclaration", + "scope": 3878, + "src": "28630:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3854, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "28630:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "28629:14:3" + }, + "returnParameters": { + "id": 3859, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3858, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "28673:10:3", + "nodeType": "VariableDeclaration", + "scope": 3878, + "src": "28667:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int88", + "typeString": "int88" + }, + "typeName": { + "id": 3857, + "name": "int88", + "nodeType": "ElementaryTypeName", + "src": "28667:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int88", + "typeString": "int88" + } + }, + "visibility": "internal" + } + ], + "src": "28666:18:3" + }, + "scope": 4179, + "src": "28613:220:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3903, + "nodeType": "Block", + "src": "29223:148:3", + "statements": [ + { + "expression": { + "id": 3891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3886, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3884, + "src": "29233:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int80", + "typeString": "int80" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3889, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3881, + "src": "29252:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3888, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29246:5:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int80_$", + "typeString": "type(int80)" + }, + "typeName": { + "id": 3887, + "name": "int80", + "nodeType": "ElementaryTypeName", + "src": "29246:5:3", + "typeDescriptions": {} + } + }, + "id": 3890, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29246:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int80", + "typeString": "int80" + } + }, + "src": "29233:25:3", + "typeDescriptions": { + "typeIdentifier": "t_int80", + "typeString": "int80" + } + }, + "id": 3892, + "nodeType": "ExpressionStatement", + "src": "29233:25:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3893, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3884, + "src": "29272:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int80", + "typeString": "int80" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3894, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3881, + "src": "29286:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "29272:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3902, + "nodeType": "IfStatement", + "src": "29268:97:3", + "trueBody": { + "id": 3901, + "nodeType": "Block", + "src": "29293:72:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3830", + "id": 3897, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29344:2:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_80_by_1", + "typeString": "int_const 80" + }, + "value": "80" + }, + { + "id": 3898, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3881, + "src": "29348:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_80_by_1", + "typeString": "int_const 80" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3896, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "29314:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 3899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29314:40:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3900, + "nodeType": "RevertStatement", + "src": "29307:47:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 3879, + "nodeType": "StructuredDocumentation", + "src": "28839:307:3", + "text": " @dev Returns the downcasted int80 from int256, reverting on\n overflow (when the input is less than smallest int80 or\n greater than largest int80).\n Counterpart to Solidity's `int80` operator.\n Requirements:\n - input must fit into 80 bits" + }, + "id": 3904, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt80", + "nameLocation": "29160:7:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3882, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3881, + "mutability": "mutable", + "name": "value", + "nameLocation": "29175:5:3", + "nodeType": "VariableDeclaration", + "scope": 3904, + "src": "29168:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3880, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "29168:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "29167:14:3" + }, + "returnParameters": { + "id": 3885, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3884, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "29211:10:3", + "nodeType": "VariableDeclaration", + "scope": 3904, + "src": "29205:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int80", + "typeString": "int80" + }, + "typeName": { + "id": 3883, + "name": "int80", + "nodeType": "ElementaryTypeName", + "src": "29205:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int80", + "typeString": "int80" + } + }, + "visibility": "internal" + } + ], + "src": "29204:18:3" + }, + "scope": 4179, + "src": "29151:220:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3929, + "nodeType": "Block", + "src": "29761:148:3", + "statements": [ + { + "expression": { + "id": 3917, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3912, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3910, + "src": "29771:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int72", + "typeString": "int72" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3915, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3907, + "src": "29790:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3914, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29784:5:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int72_$", + "typeString": "type(int72)" + }, + "typeName": { + "id": 3913, + "name": "int72", + "nodeType": "ElementaryTypeName", + "src": "29784:5:3", + "typeDescriptions": {} + } + }, + "id": 3916, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29784:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int72", + "typeString": "int72" + } + }, + "src": "29771:25:3", + "typeDescriptions": { + "typeIdentifier": "t_int72", + "typeString": "int72" + } + }, + "id": 3918, + "nodeType": "ExpressionStatement", + "src": "29771:25:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3919, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3910, + "src": "29810:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int72", + "typeString": "int72" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3920, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3907, + "src": "29824:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "29810:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3928, + "nodeType": "IfStatement", + "src": "29806:97:3", + "trueBody": { + "id": 3927, + "nodeType": "Block", + "src": "29831:72:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3732", + "id": 3923, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29882:2:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_72_by_1", + "typeString": "int_const 72" + }, + "value": "72" + }, + { + "id": 3924, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3907, + "src": "29886:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_72_by_1", + "typeString": "int_const 72" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3922, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "29852:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 3925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29852:40:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3926, + "nodeType": "RevertStatement", + "src": "29845:47:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 3905, + "nodeType": "StructuredDocumentation", + "src": "29377:307:3", + "text": " @dev Returns the downcasted int72 from int256, reverting on\n overflow (when the input is less than smallest int72 or\n greater than largest int72).\n Counterpart to Solidity's `int72` operator.\n Requirements:\n - input must fit into 72 bits" + }, + "id": 3930, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt72", + "nameLocation": "29698:7:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3908, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3907, + "mutability": "mutable", + "name": "value", + "nameLocation": "29713:5:3", + "nodeType": "VariableDeclaration", + "scope": 3930, + "src": "29706:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3906, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "29706:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "29705:14:3" + }, + "returnParameters": { + "id": 3911, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3910, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "29749:10:3", + "nodeType": "VariableDeclaration", + "scope": 3930, + "src": "29743:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int72", + "typeString": "int72" + }, + "typeName": { + "id": 3909, + "name": "int72", + "nodeType": "ElementaryTypeName", + "src": "29743:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int72", + "typeString": "int72" + } + }, + "visibility": "internal" + } + ], + "src": "29742:18:3" + }, + "scope": 4179, + "src": "29689:220:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3955, + "nodeType": "Block", + "src": "30299:148:3", + "statements": [ + { + "expression": { + "id": 3943, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3938, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3936, + "src": "30309:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int64", + "typeString": "int64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3941, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3933, + "src": "30328:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3940, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "30322:5:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int64_$", + "typeString": "type(int64)" + }, + "typeName": { + "id": 3939, + "name": "int64", + "nodeType": "ElementaryTypeName", + "src": "30322:5:3", + "typeDescriptions": {} + } + }, + "id": 3942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30322:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int64", + "typeString": "int64" + } + }, + "src": "30309:25:3", + "typeDescriptions": { + "typeIdentifier": "t_int64", + "typeString": "int64" + } + }, + "id": 3944, + "nodeType": "ExpressionStatement", + "src": "30309:25:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3945, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3936, + "src": "30348:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int64", + "typeString": "int64" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3946, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3933, + "src": "30362:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "30348:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3954, + "nodeType": "IfStatement", + "src": "30344:97:3", + "trueBody": { + "id": 3953, + "nodeType": "Block", + "src": "30369:72:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3634", + "id": 3949, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30420:2:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + { + "id": 3950, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3933, + "src": "30424:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3948, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "30390:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 3951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30390:40:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3952, + "nodeType": "RevertStatement", + "src": "30383:47:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 3931, + "nodeType": "StructuredDocumentation", + "src": "29915:307:3", + "text": " @dev Returns the downcasted int64 from int256, reverting on\n overflow (when the input is less than smallest int64 or\n greater than largest int64).\n Counterpart to Solidity's `int64` operator.\n Requirements:\n - input must fit into 64 bits" + }, + "id": 3956, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt64", + "nameLocation": "30236:7:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3934, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3933, + "mutability": "mutable", + "name": "value", + "nameLocation": "30251:5:3", + "nodeType": "VariableDeclaration", + "scope": 3956, + "src": "30244:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3932, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "30244:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "30243:14:3" + }, + "returnParameters": { + "id": 3937, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3936, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "30287:10:3", + "nodeType": "VariableDeclaration", + "scope": 3956, + "src": "30281:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int64", + "typeString": "int64" + }, + "typeName": { + "id": 3935, + "name": "int64", + "nodeType": "ElementaryTypeName", + "src": "30281:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int64", + "typeString": "int64" + } + }, + "visibility": "internal" + } + ], + "src": "30280:18:3" + }, + "scope": 4179, + "src": "30227:220:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3981, + "nodeType": "Block", + "src": "30837:148:3", + "statements": [ + { + "expression": { + "id": 3969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3964, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3962, + "src": "30847:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int56", + "typeString": "int56" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3967, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3959, + "src": "30866:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3966, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "30860:5:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int56_$", + "typeString": "type(int56)" + }, + "typeName": { + "id": 3965, + "name": "int56", + "nodeType": "ElementaryTypeName", + "src": "30860:5:3", + "typeDescriptions": {} + } + }, + "id": 3968, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30860:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int56", + "typeString": "int56" + } + }, + "src": "30847:25:3", + "typeDescriptions": { + "typeIdentifier": "t_int56", + "typeString": "int56" + } + }, + "id": 3970, + "nodeType": "ExpressionStatement", + "src": "30847:25:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3971, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3962, + "src": "30886:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int56", + "typeString": "int56" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3972, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3959, + "src": "30900:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "30886:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3980, + "nodeType": "IfStatement", + "src": "30882:97:3", + "trueBody": { + "id": 3979, + "nodeType": "Block", + "src": "30907:72:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3536", + "id": 3975, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30958:2:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_56_by_1", + "typeString": "int_const 56" + }, + "value": "56" + }, + { + "id": 3976, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3959, + "src": "30962:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_56_by_1", + "typeString": "int_const 56" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3974, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "30928:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 3977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30928:40:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 3978, + "nodeType": "RevertStatement", + "src": "30921:47:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 3957, + "nodeType": "StructuredDocumentation", + "src": "30453:307:3", + "text": " @dev Returns the downcasted int56 from int256, reverting on\n overflow (when the input is less than smallest int56 or\n greater than largest int56).\n Counterpart to Solidity's `int56` operator.\n Requirements:\n - input must fit into 56 bits" + }, + "id": 3982, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt56", + "nameLocation": "30774:7:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3960, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3959, + "mutability": "mutable", + "name": "value", + "nameLocation": "30789:5:3", + "nodeType": "VariableDeclaration", + "scope": 3982, + "src": "30782:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3958, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "30782:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "30781:14:3" + }, + "returnParameters": { + "id": 3963, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3962, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "30825:10:3", + "nodeType": "VariableDeclaration", + "scope": 3982, + "src": "30819:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int56", + "typeString": "int56" + }, + "typeName": { + "id": 3961, + "name": "int56", + "nodeType": "ElementaryTypeName", + "src": "30819:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int56", + "typeString": "int56" + } + }, + "visibility": "internal" + } + ], + "src": "30818:18:3" + }, + "scope": 4179, + "src": "30765:220:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4007, + "nodeType": "Block", + "src": "31375:148:3", + "statements": [ + { + "expression": { + "id": 3995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3990, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3988, + "src": "31385:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int48", + "typeString": "int48" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3993, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3985, + "src": "31404:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 3992, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "31398:5:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int48_$", + "typeString": "type(int48)" + }, + "typeName": { + "id": 3991, + "name": "int48", + "nodeType": "ElementaryTypeName", + "src": "31398:5:3", + "typeDescriptions": {} + } + }, + "id": 3994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31398:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int48", + "typeString": "int48" + } + }, + "src": "31385:25:3", + "typeDescriptions": { + "typeIdentifier": "t_int48", + "typeString": "int48" + } + }, + "id": 3996, + "nodeType": "ExpressionStatement", + "src": "31385:25:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 3999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3997, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3988, + "src": "31424:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int48", + "typeString": "int48" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 3998, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3985, + "src": "31438:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "31424:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4006, + "nodeType": "IfStatement", + "src": "31420:97:3", + "trueBody": { + "id": 4005, + "nodeType": "Block", + "src": "31445:72:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3438", + "id": 4001, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31496:2:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + "value": "48" + }, + { + "id": 4002, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3985, + "src": "31500:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 4000, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "31466:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 4003, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31466:40:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 4004, + "nodeType": "RevertStatement", + "src": "31459:47:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 3983, + "nodeType": "StructuredDocumentation", + "src": "30991:307:3", + "text": " @dev Returns the downcasted int48 from int256, reverting on\n overflow (when the input is less than smallest int48 or\n greater than largest int48).\n Counterpart to Solidity's `int48` operator.\n Requirements:\n - input must fit into 48 bits" + }, + "id": 4008, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt48", + "nameLocation": "31312:7:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3986, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3985, + "mutability": "mutable", + "name": "value", + "nameLocation": "31327:5:3", + "nodeType": "VariableDeclaration", + "scope": 4008, + "src": "31320:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 3984, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "31320:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "31319:14:3" + }, + "returnParameters": { + "id": 3989, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3988, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "31363:10:3", + "nodeType": "VariableDeclaration", + "scope": 4008, + "src": "31357:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int48", + "typeString": "int48" + }, + "typeName": { + "id": 3987, + "name": "int48", + "nodeType": "ElementaryTypeName", + "src": "31357:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int48", + "typeString": "int48" + } + }, + "visibility": "internal" + } + ], + "src": "31356:18:3" + }, + "scope": 4179, + "src": "31303:220:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4033, + "nodeType": "Block", + "src": "31913:148:3", + "statements": [ + { + "expression": { + "id": 4021, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4016, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4014, + "src": "31923:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int40", + "typeString": "int40" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 4019, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4011, + "src": "31942:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 4018, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "31936:5:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int40_$", + "typeString": "type(int40)" + }, + "typeName": { + "id": 4017, + "name": "int40", + "nodeType": "ElementaryTypeName", + "src": "31936:5:3", + "typeDescriptions": {} + } + }, + "id": 4020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31936:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int40", + "typeString": "int40" + } + }, + "src": "31923:25:3", + "typeDescriptions": { + "typeIdentifier": "t_int40", + "typeString": "int40" + } + }, + "id": 4022, + "nodeType": "ExpressionStatement", + "src": "31923:25:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 4025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4023, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4014, + "src": "31962:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int40", + "typeString": "int40" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 4024, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4011, + "src": "31976:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "31962:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4032, + "nodeType": "IfStatement", + "src": "31958:97:3", + "trueBody": { + "id": 4031, + "nodeType": "Block", + "src": "31983:72:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3430", + "id": 4027, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32034:2:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_40_by_1", + "typeString": "int_const 40" + }, + "value": "40" + }, + { + "id": 4028, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4011, + "src": "32038:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_40_by_1", + "typeString": "int_const 40" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 4026, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "32004:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 4029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32004:40:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 4030, + "nodeType": "RevertStatement", + "src": "31997:47:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 4009, + "nodeType": "StructuredDocumentation", + "src": "31529:307:3", + "text": " @dev Returns the downcasted int40 from int256, reverting on\n overflow (when the input is less than smallest int40 or\n greater than largest int40).\n Counterpart to Solidity's `int40` operator.\n Requirements:\n - input must fit into 40 bits" + }, + "id": 4034, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt40", + "nameLocation": "31850:7:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4012, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4011, + "mutability": "mutable", + "name": "value", + "nameLocation": "31865:5:3", + "nodeType": "VariableDeclaration", + "scope": 4034, + "src": "31858:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 4010, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "31858:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "31857:14:3" + }, + "returnParameters": { + "id": 4015, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4014, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "31901:10:3", + "nodeType": "VariableDeclaration", + "scope": 4034, + "src": "31895:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int40", + "typeString": "int40" + }, + "typeName": { + "id": 4013, + "name": "int40", + "nodeType": "ElementaryTypeName", + "src": "31895:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int40", + "typeString": "int40" + } + }, + "visibility": "internal" + } + ], + "src": "31894:18:3" + }, + "scope": 4179, + "src": "31841:220:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4059, + "nodeType": "Block", + "src": "32451:148:3", + "statements": [ + { + "expression": { + "id": 4047, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4042, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4040, + "src": "32461:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int32", + "typeString": "int32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 4045, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4037, + "src": "32480:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 4044, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "32474:5:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int32_$", + "typeString": "type(int32)" + }, + "typeName": { + "id": 4043, + "name": "int32", + "nodeType": "ElementaryTypeName", + "src": "32474:5:3", + "typeDescriptions": {} + } + }, + "id": 4046, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32474:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int32", + "typeString": "int32" + } + }, + "src": "32461:25:3", + "typeDescriptions": { + "typeIdentifier": "t_int32", + "typeString": "int32" + } + }, + "id": 4048, + "nodeType": "ExpressionStatement", + "src": "32461:25:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 4051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4049, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4040, + "src": "32500:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int32", + "typeString": "int32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 4050, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4037, + "src": "32514:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "32500:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4058, + "nodeType": "IfStatement", + "src": "32496:97:3", + "trueBody": { + "id": 4057, + "nodeType": "Block", + "src": "32521:72:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3332", + "id": 4053, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32572:2:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + { + "id": 4054, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4037, + "src": "32576:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 4052, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "32542:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 4055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32542:40:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 4056, + "nodeType": "RevertStatement", + "src": "32535:47:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 4035, + "nodeType": "StructuredDocumentation", + "src": "32067:307:3", + "text": " @dev Returns the downcasted int32 from int256, reverting on\n overflow (when the input is less than smallest int32 or\n greater than largest int32).\n Counterpart to Solidity's `int32` operator.\n Requirements:\n - input must fit into 32 bits" + }, + "id": 4060, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt32", + "nameLocation": "32388:7:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4038, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4037, + "mutability": "mutable", + "name": "value", + "nameLocation": "32403:5:3", + "nodeType": "VariableDeclaration", + "scope": 4060, + "src": "32396:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 4036, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "32396:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "32395:14:3" + }, + "returnParameters": { + "id": 4041, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4040, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "32439:10:3", + "nodeType": "VariableDeclaration", + "scope": 4060, + "src": "32433:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int32", + "typeString": "int32" + }, + "typeName": { + "id": 4039, + "name": "int32", + "nodeType": "ElementaryTypeName", + "src": "32433:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int32", + "typeString": "int32" + } + }, + "visibility": "internal" + } + ], + "src": "32432:18:3" + }, + "scope": 4179, + "src": "32379:220:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4085, + "nodeType": "Block", + "src": "32989:148:3", + "statements": [ + { + "expression": { + "id": 4073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4068, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4066, + "src": "32999:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 4071, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4063, + "src": "33018:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 4070, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33012:5:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int24_$", + "typeString": "type(int24)" + }, + "typeName": { + "id": 4069, + "name": "int24", + "nodeType": "ElementaryTypeName", + "src": "33012:5:3", + "typeDescriptions": {} + } + }, + "id": 4072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "33012:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "src": "32999:25:3", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "id": 4074, + "nodeType": "ExpressionStatement", + "src": "32999:25:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 4077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4075, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4066, + "src": "33038:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 4076, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4063, + "src": "33052:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "33038:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4084, + "nodeType": "IfStatement", + "src": "33034:97:3", + "trueBody": { + "id": 4083, + "nodeType": "Block", + "src": "33059:72:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3234", + "id": 4079, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33110:2:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_24_by_1", + "typeString": "int_const 24" + }, + "value": "24" + }, + { + "id": 4080, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4063, + "src": "33114:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_24_by_1", + "typeString": "int_const 24" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 4078, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "33080:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 4081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "33080:40:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 4082, + "nodeType": "RevertStatement", + "src": "33073:47:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 4061, + "nodeType": "StructuredDocumentation", + "src": "32605:307:3", + "text": " @dev Returns the downcasted int24 from int256, reverting on\n overflow (when the input is less than smallest int24 or\n greater than largest int24).\n Counterpart to Solidity's `int24` operator.\n Requirements:\n - input must fit into 24 bits" + }, + "id": 4086, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt24", + "nameLocation": "32926:7:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4064, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4063, + "mutability": "mutable", + "name": "value", + "nameLocation": "32941:5:3", + "nodeType": "VariableDeclaration", + "scope": 4086, + "src": "32934:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 4062, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "32934:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "32933:14:3" + }, + "returnParameters": { + "id": 4067, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4066, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "32977:10:3", + "nodeType": "VariableDeclaration", + "scope": 4086, + "src": "32971:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + }, + "typeName": { + "id": 4065, + "name": "int24", + "nodeType": "ElementaryTypeName", + "src": "32971:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "visibility": "internal" + } + ], + "src": "32970:18:3" + }, + "scope": 4179, + "src": "32917:220:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4111, + "nodeType": "Block", + "src": "33527:148:3", + "statements": [ + { + "expression": { + "id": 4099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4094, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4092, + "src": "33537:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 4097, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4089, + "src": "33556:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 4096, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33550:5:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int16_$", + "typeString": "type(int16)" + }, + "typeName": { + "id": 4095, + "name": "int16", + "nodeType": "ElementaryTypeName", + "src": "33550:5:3", + "typeDescriptions": {} + } + }, + "id": 4098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "33550:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + } + }, + "src": "33537:25:3", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + } + }, + "id": 4100, + "nodeType": "ExpressionStatement", + "src": "33537:25:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 4103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4101, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4092, + "src": "33576:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 4102, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4089, + "src": "33590:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "33576:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4110, + "nodeType": "IfStatement", + "src": "33572:97:3", + "trueBody": { + "id": 4109, + "nodeType": "Block", + "src": "33597:72:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3136", + "id": 4105, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33648:2:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + { + "id": 4106, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4089, + "src": "33652:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 4104, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "33618:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 4107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "33618:40:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 4108, + "nodeType": "RevertStatement", + "src": "33611:47:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 4087, + "nodeType": "StructuredDocumentation", + "src": "33143:307:3", + "text": " @dev Returns the downcasted int16 from int256, reverting on\n overflow (when the input is less than smallest int16 or\n greater than largest int16).\n Counterpart to Solidity's `int16` operator.\n Requirements:\n - input must fit into 16 bits" + }, + "id": 4112, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt16", + "nameLocation": "33464:7:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4090, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4089, + "mutability": "mutable", + "name": "value", + "nameLocation": "33479:5:3", + "nodeType": "VariableDeclaration", + "scope": 4112, + "src": "33472:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 4088, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "33472:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "33471:14:3" + }, + "returnParameters": { + "id": 4093, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4092, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "33515:10:3", + "nodeType": "VariableDeclaration", + "scope": 4112, + "src": "33509:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + }, + "typeName": { + "id": 4091, + "name": "int16", + "nodeType": "ElementaryTypeName", + "src": "33509:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + } + }, + "visibility": "internal" + } + ], + "src": "33508:18:3" + }, + "scope": 4179, + "src": "33455:220:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4137, + "nodeType": "Block", + "src": "34058:146:3", + "statements": [ + { + "expression": { + "id": 4125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4120, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4118, + "src": "34068:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int8", + "typeString": "int8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 4123, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4115, + "src": "34086:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 4122, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "34081:4:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int8_$", + "typeString": "type(int8)" + }, + "typeName": { + "id": 4121, + "name": "int8", + "nodeType": "ElementaryTypeName", + "src": "34081:4:3", + "typeDescriptions": {} + } + }, + "id": 4124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34081:11:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int8", + "typeString": "int8" + } + }, + "src": "34068:24:3", + "typeDescriptions": { + "typeIdentifier": "t_int8", + "typeString": "int8" + } + }, + "id": 4126, + "nodeType": "ExpressionStatement", + "src": "34068:24:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 4129, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4127, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4118, + "src": "34106:10:3", + "typeDescriptions": { + "typeIdentifier": "t_int8", + "typeString": "int8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 4128, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4115, + "src": "34120:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "34106:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4136, + "nodeType": "IfStatement", + "src": "34102:96:3", + "trueBody": { + "id": 4135, + "nodeType": "Block", + "src": "34127:71:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "38", + "id": 4131, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34178:1:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + { + "id": 4132, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4115, + "src": "34181:5:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 4130, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "34148:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$", + "typeString": "function (uint8,int256) pure returns (error)" + } + }, + "id": 4133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34148:39:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 4134, + "nodeType": "RevertStatement", + "src": "34141:46:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 4113, + "nodeType": "StructuredDocumentation", + "src": "33681:302:3", + "text": " @dev Returns the downcasted int8 from int256, reverting on\n overflow (when the input is less than smallest int8 or\n greater than largest int8).\n Counterpart to Solidity's `int8` operator.\n Requirements:\n - input must fit into 8 bits" + }, + "id": 4138, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt8", + "nameLocation": "33997:6:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4116, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4115, + "mutability": "mutable", + "name": "value", + "nameLocation": "34011:5:3", + "nodeType": "VariableDeclaration", + "scope": 4138, + "src": "34004:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 4114, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "34004:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "34003:14:3" + }, + "returnParameters": { + "id": 4119, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4118, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "34046:10:3", + "nodeType": "VariableDeclaration", + "scope": 4138, + "src": "34041:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int8", + "typeString": "int8" + }, + "typeName": { + "id": 4117, + "name": "int8", + "nodeType": "ElementaryTypeName", + "src": "34041:4:3", + "typeDescriptions": { + "typeIdentifier": "t_int8", + "typeString": "int8" + } + }, + "visibility": "internal" + } + ], + "src": "34040:17:3" + }, + "scope": 4179, + "src": "33988:216:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4167, + "nodeType": "Block", + "src": "34444:250:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4146, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4141, + "src": "34557:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "arguments": [ + { + "expression": { + "arguments": [ + { + "id": 4151, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "34578:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int256_$", + "typeString": "type(int256)" + }, + "typeName": { + "id": 4150, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "34578:6:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_int256_$", + "typeString": "type(int256)" + } + ], + "id": 4149, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "34573:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 4152, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34573:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_int256", + "typeString": "type(int256)" + } + }, + "id": 4153, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "34586:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "34573:16:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 4148, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "34565:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 4147, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "34565:7:3", + "typeDescriptions": {} + } + }, + "id": 4154, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34565:25:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34557:33:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4161, + "nodeType": "IfStatement", + "src": "34553:105:3", + "trueBody": { + "id": 4160, + "nodeType": "Block", + "src": "34592:66:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 4157, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4141, + "src": "34641:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4156, + "name": "SafeCastOverflowedUintToInt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2441, + "src": "34613:27:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint256) pure returns (error)" + } + }, + "id": 4158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34613:34:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 4159, + "nodeType": "RevertStatement", + "src": "34606:41:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 4164, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4141, + "src": "34681:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4163, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "34674:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int256_$", + "typeString": "type(int256)" + }, + "typeName": { + "id": 4162, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "34674:6:3", + "typeDescriptions": {} + } + }, + "id": 4165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34674:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 4145, + "id": 4166, + "nodeType": "Return", + "src": "34667:20:3" + } + ] + }, + "documentation": { + "id": 4139, + "nodeType": "StructuredDocumentation", + "src": "34210:165:3", + "text": " @dev Converts an unsigned uint256 into a signed int256.\n Requirements:\n - input must be less than or equal to maxInt256." + }, + "id": 4168, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt256", + "nameLocation": "34389:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4142, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4141, + "mutability": "mutable", + "name": "value", + "nameLocation": "34406:5:3", + "nodeType": "VariableDeclaration", + "scope": 4168, + "src": "34398:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4140, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "34398:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "34397:15:3" + }, + "returnParameters": { + "id": 4145, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4144, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4168, + "src": "34436:6:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 4143, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "34436:6:3", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "34435:8:3" + }, + "scope": 4179, + "src": "34380:314:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4177, + "nodeType": "Block", + "src": "34853:87:3", + "statements": [ + { + "AST": { + "nativeSrc": "34888:46:3", + "nodeType": "YulBlock", + "src": "34888:46:3", + "statements": [ + { + "nativeSrc": "34902:22:3", + "nodeType": "YulAssignment", + "src": "34902:22:3", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "b", + "nativeSrc": "34921:1:3", + "nodeType": "YulIdentifier", + "src": "34921:1:3" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "34914:6:3", + "nodeType": "YulIdentifier", + "src": "34914:6:3" + }, + "nativeSrc": "34914:9:3", + "nodeType": "YulFunctionCall", + "src": "34914:9:3" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "34907:6:3", + "nodeType": "YulIdentifier", + "src": "34907:6:3" + }, + "nativeSrc": "34907:17:3", + "nodeType": "YulFunctionCall", + "src": "34907:17:3" + }, + "variableNames": [ + { + "name": "u", + "nativeSrc": "34902:1:3", + "nodeType": "YulIdentifier", + "src": "34902:1:3" + } + ] + } + ] + }, + "evmVersion": "prague", + "externalReferences": [ + { + "declaration": 4171, + "isOffset": false, + "isSlot": false, + "src": "34921:1:3", + "valueSize": 1 + }, + { + "declaration": 4174, + "isOffset": false, + "isSlot": false, + "src": "34902:1:3", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 4176, + "nodeType": "InlineAssembly", + "src": "34863:71:3" + } + ] + }, + "documentation": { + "id": 4169, + "nodeType": "StructuredDocumentation", + "src": "34700:90:3", + "text": " @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump." + }, + "id": 4178, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint", + "nameLocation": "34804:6:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4172, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4171, + "mutability": "mutable", + "name": "b", + "nameLocation": "34816:1:3", + "nodeType": "VariableDeclaration", + "scope": 4178, + "src": "34811:6:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4170, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "34811:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "34810:8:3" + }, + "returnParameters": { + "id": 4175, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4174, + "mutability": "mutable", + "name": "u", + "nameLocation": "34850:1:3", + "nodeType": "VariableDeclaration", + "scope": 4178, + "src": "34842:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4173, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "34842:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "34841:11:3" + }, + "scope": 4179, + "src": "34795:145:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 4180, + "src": "769:34173:3", + "usedErrors": [ + 2424, + 2429, + 2436, + 2441 + ], + "usedEvents": [] + } + ], + "src": "192:34751:3" + }, + "id": 3 + } + } + } +} \ No newline at end of file