{
  "contracts":
  {
    "combined_json_generated_sources/input.sol:C":
    {
      "generated-sources": [],
      "generated-sources-runtime":
      [
        {
          "ast":
          {
            "nodeType": "YulBlock",
            "src": "0:1856:1",
            "statements":
            [
              {
                "body":
                {
                  "nodeType": "YulBlock",
                  "src": "114:478:1",
                  "statements":
                  [
                    {
                      "body":
                      {
                        "nodeType": "YulBlock",
                        "src": "163:83:1",
                        "statements":
                        [
                          {
                            "expression":
                            {
                              "arguments": [],
                              "functionName":
                              {
                                "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
                                "nodeType": "YulIdentifier",
                                "src": "165:77:1"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "165:79:1"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "165:79:1"
                          }
                        ]
                      },
                      "condition":
                      {
                        "arguments":
                        [
                          {
                            "arguments":
                            [
                              {
                                "arguments":
                                [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "142:6:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "150:4:1",
                                    "type": "",
                                    "value": "0x1f"
                                  }
                                ],
                                "functionName":
                                {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "138:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "138:17:1"
                              },
                              {
                                "name": "end",
                                "nodeType": "YulIdentifier",
                                "src": "157:3:1"
                              }
                            ],
                            "functionName":
                            {
                              "name": "slt",
                              "nodeType": "YulIdentifier",
                              "src": "134:3:1"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "134:27:1"
                          }
                        ],
                        "functionName":
                        {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "127:6:1"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "127:35:1"
                      },
                      "nodeType": "YulIf",
                      "src": "124:2:1"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "255:30:1",
                      "value":
                      {
                        "arguments":
                        [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "278:6:1"
                          }
                        ],
                        "functionName":
                        {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "265:12:1"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "265:20:1"
                      },
                      "variableNames":
                      [
                        {
                          "name": "length",
                          "nodeType": "YulIdentifier",
                          "src": "255:6:1"
                        }
                      ]
                    },
                    {
                      "body":
                      {
                        "nodeType": "YulBlock",
                        "src": "328:83:1",
                        "statements":
                        [
                          {
                            "expression":
                            {
                              "arguments": [],
                              "functionName":
                              {
                                "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490",
                                "nodeType": "YulIdentifier",
                                "src": "330:77:1"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "330:79:1"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "330:79:1"
                          }
                        ]
                      },
                      "condition":
                      {
                        "arguments":
                        [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "300:6:1"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "308:18:1",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName":
                        {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "297:2:1"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "297:30:1"
                      },
                      "nodeType": "YulIf",
                      "src": "294:2:1"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "420:29:1",
                      "value":
                      {
                        "arguments":
                        [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "436:6:1"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "444:4:1",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName":
                        {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "432:3:1"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "432:17:1"
                      },
                      "variableNames":
                      [
                        {
                          "name": "arrayPos",
                          "nodeType": "YulIdentifier",
                          "src": "420:8:1"
                        }
                      ]
                    },
                    {
                      "body":
                      {
                        "nodeType": "YulBlock",
                        "src": "503:83:1",
                        "statements":
                        [
                          {
                            "expression":
                            {
                              "arguments": [],
                              "functionName":
                              {
                                "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef",
                                "nodeType": "YulIdentifier",
                                "src": "505:77:1"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "505:79:1"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "505:79:1"
                          }
                        ]
                      },
                      "condition":
                      {
                        "arguments":
                        [
                          {
                            "arguments":
                            [
                              {
                                "name": "arrayPos",
                                "nodeType": "YulIdentifier",
                                "src": "468:8:1"
                              },
                              {
                                "arguments":
                                [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "482:6:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "490:4:1",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName":
                                {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "478:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "478:17:1"
                              }
                            ],
                            "functionName":
                            {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "464:3:1"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "464:32:1"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "498:3:1"
                          }
                        ],
                        "functionName":
                        {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "461:2:1"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "461:41:1"
                      },
                      "nodeType": "YulIf",
                      "src": "458:2:1"
                    }
                  ]
                },
                "name": "abi_decode_t_array$_t_uint256_$dyn_calldata_ptr",
                "nodeType": "YulFunctionDefinition",
                "parameters":
                [
                  {
                    "name": "offset",
                    "nodeType": "YulTypedName",
                    "src": "81:6:1",
                    "type": ""
                  },
                  {
                    "name": "end",
                    "nodeType": "YulTypedName",
                    "src": "89:3:1",
                    "type": ""
                  }
                ],
                "returnVariables":
                [
                  {
                    "name": "arrayPos",
                    "nodeType": "YulTypedName",
                    "src": "97:8:1",
                    "type": ""
                  },
                  {
                    "name": "length",
                    "nodeType": "YulTypedName",
                    "src": "107:6:1",
                    "type": ""
                  }
                ],
                "src": "24:568:1"
              },
              {
                "body":
                {
                  "nodeType": "YulBlock",
                  "src": "699:458:1",
                  "statements":
                  [
                    {
                      "body":
                      {
                        "nodeType": "YulBlock",
                        "src": "745:83:1",
                        "statements":
                        [
                          {
                            "expression":
                            {
                              "arguments": [],
                              "functionName":
                              {
                                "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                                "nodeType": "YulIdentifier",
                                "src": "747:77:1"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "747:79:1"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "747:79:1"
                          }
                        ]
                      },
                      "condition":
                      {
                        "arguments":
                        [
                          {
                            "arguments":
                            [
                              {
                                "name": "dataEnd",
                                "nodeType": "YulIdentifier",
                                "src": "720:7:1"
                              },
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "729:9:1"
                              }
                            ],
                            "functionName":
                            {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "716:3:1"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "716:23:1"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "741:2:1",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName":
                        {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "712:3:1"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "712:32:1"
                      },
                      "nodeType": "YulIf",
                      "src": "709:2:1"
                    },
                    {
                      "nodeType": "YulBlock",
                      "src": "838:312:1",
                      "statements":
                      [
                        {
                          "nodeType": "YulVariableDeclaration",
                          "src": "853:45:1",
                          "value":
                          {
                            "arguments":
                            [
                              {
                                "arguments":
                                [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "884:9:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "895:1:1",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName":
                                {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "880:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "880:17:1"
                              }
                            ],
                            "functionName":
                            {
                              "name": "calldataload",
                              "nodeType": "YulIdentifier",
                              "src": "867:12:1"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "867:31:1"
                          },
                          "variables":
                          [
                            {
                              "name": "offset",
                              "nodeType": "YulTypedName",
                              "src": "857:6:1",
                              "type": ""
                            }
                          ]
                        },
                        {
                          "body":
                          {
                            "nodeType": "YulBlock",
                            "src": "945:83:1",
                            "statements":
                            [
                              {
                                "expression":
                                {
                                  "arguments": [],
                                  "functionName":
                                  {
                                    "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
                                    "nodeType": "YulIdentifier",
                                    "src": "947:77:1"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "947:79:1"
                                },
                                "nodeType": "YulExpressionStatement",
                                "src": "947:79:1"
                              }
                            ]
                          },
                          "condition":
                          {
                            "arguments":
                            [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "917:6:1"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "925:18:1",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              }
                            ],
                            "functionName":
                            {
                              "name": "gt",
                              "nodeType": "YulIdentifier",
                              "src": "914:2:1"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "914:30:1"
                          },
                          "nodeType": "YulIf",
                          "src": "911:2:1"
                        },
                        {
                          "nodeType": "YulAssignment",
                          "src": "1042:98:1",
                          "value":
                          {
                            "arguments":
                            [
                              {
                                "arguments":
                                [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1112:9:1"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1123:6:1"
                                  }
                                ],
                                "functionName":
                                {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1108:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1108:22:1"
                              },
                              {
                                "name": "dataEnd",
                                "nodeType": "YulIdentifier",
                                "src": "1132:7:1"
                              }
                            ],
                            "functionName":
                            {
                              "name": "abi_decode_t_array$_t_uint256_$dyn_calldata_ptr",
                              "nodeType": "YulIdentifier",
                              "src": "1060:47:1"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1060:80:1"
                          },
                          "variableNames":
                          [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "1042:6:1"
                            },
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "1050:6:1"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                "name": "abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr",
                "nodeType": "YulFunctionDefinition",
                "parameters":
                [
                  {
                    "name": "headStart",
                    "nodeType": "YulTypedName",
                    "src": "661:9:1",
                    "type": ""
                  },
                  {
                    "name": "dataEnd",
                    "nodeType": "YulTypedName",
                    "src": "672:7:1",
                    "type": ""
                  }
                ],
                "returnVariables":
                [
                  {
                    "name": "value0",
                    "nodeType": "YulTypedName",
                    "src": "684:6:1",
                    "type": ""
                  },
                  {
                    "name": "value1",
                    "nodeType": "YulTypedName",
                    "src": "692:6:1",
                    "type": ""
                  }
                ],
                "src": "598:559:1"
              },
              {
                "body":
                {
                  "nodeType": "YulBlock",
                  "src": "1203:35:1",
                  "statements":
                  [
                    {
                      "nodeType": "YulAssignment",
                      "src": "1213:19:1",
                      "value":
                      {
                        "arguments":
                        [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1229:2:1",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName":
                        {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "1223:5:1"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1223:9:1"
                      },
                      "variableNames":
                      [
                        {
                          "name": "memPtr",
                          "nodeType": "YulIdentifier",
                          "src": "1213:6:1"
                        }
                      ]
                    }
                  ]
                },
                "name": "allocate_unbounded",
                "nodeType": "YulFunctionDefinition",
                "returnVariables":
                [
                  {
                    "name": "memPtr",
                    "nodeType": "YulTypedName",
                    "src": "1196:6:1",
                    "type": ""
                  }
                ],
                "src": "1163:75:1"
              },
              {
                "body":
                {
                  "nodeType": "YulBlock",
                  "src": "1333:28:1",
                  "statements":
                  [
                    {
                      "expression":
                      {
                        "arguments":
                        [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1350:1:1",
                            "type": "",
                            "value": "0"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1353:1:1",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName":
                        {
                          "name": "revert",
                          "nodeType": "YulIdentifier",
                          "src": "1343:6:1"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1343:12:1"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "1343:12:1"
                    }
                  ]
                },
                "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490",
                "nodeType": "YulFunctionDefinition",
                "src": "1244:117:1"
              },
              {
                "body":
                {
                  "nodeType": "YulBlock",
                  "src": "1456:28:1",
                  "statements":
                  [
                    {
                      "expression":
                      {
                        "arguments":
                        [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1473:1:1",
                            "type": "",
                            "value": "0"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1476:1:1",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName":
                        {
                          "name": "revert",
                          "nodeType": "YulIdentifier",
                          "src": "1466:6:1"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1466:12:1"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "1466:12:1"
                    }
                  ]
                },
                "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
                "nodeType": "YulFunctionDefinition",
                "src": "1367:117:1"
              },
              {
                "body":
                {
                  "nodeType": "YulBlock",
                  "src": "1579:28:1",
                  "statements":
                  [
                    {
                      "expression":
                      {
                        "arguments":
                        [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1596:1:1",
                            "type": "",
                            "value": "0"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1599:1:1",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName":
                        {
                          "name": "revert",
                          "nodeType": "YulIdentifier",
                          "src": "1589:6:1"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1589:12:1"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "1589:12:1"
                    }
                  ]
                },
                "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef",
                "nodeType": "YulFunctionDefinition",
                "src": "1490:117:1"
              },
              {
                "body":
                {
                  "nodeType": "YulBlock",
                  "src": "1702:28:1",
                  "statements":
                  [
                    {
                      "expression":
                      {
                        "arguments":
                        [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1719:1:1",
                            "type": "",
                            "value": "0"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1722:1:1",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName":
                        {
                          "name": "revert",
                          "nodeType": "YulIdentifier",
                          "src": "1712:6:1"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1712:12:1"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "1712:12:1"
                    }
                  ]
                },
                "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
                "nodeType": "YulFunctionDefinition",
                "src": "1613:117:1"
              },
              {
                "body":
                {
                  "nodeType": "YulBlock",
                  "src": "1825:28:1",
                  "statements":
                  [
                    {
                      "expression":
                      {
                        "arguments":
                        [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1842:1:1",
                            "type": "",
                            "value": "0"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1845:1:1",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName":
                        {
                          "name": "revert",
                          "nodeType": "YulIdentifier",
                          "src": "1835:6:1"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1835:12:1"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "1835:12:1"
                    }
                  ]
                },
                "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                "nodeType": "YulFunctionDefinition",
                "src": "1736:117:1"
              }
            ]
          },
          "contents": "{\n\n    // uint256[]\n    function abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(offset, end) -> arrayPos, length {\n        if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n        arrayPos := add(offset, 0x20)\n        if gt(add(arrayPos, mul(length, 0x20)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n    }\n\n    function abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1 {\n        if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := calldataload(add(headStart, 0))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value0, value1 := abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function allocate_unbounded() -> memPtr {\n        memPtr := mload(64)\n    }\n\n    function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n        revert(0, 0)\n    }\n\n    function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n        revert(0, 0)\n    }\n\n    function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n        revert(0, 0)\n    }\n\n    function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n        revert(0, 0)\n    }\n\n    function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n        revert(0, 0)\n    }\n\n}\n",
          "id": 1,
          "language": "Yul",
          "name": "#utility.yul"
        }
      ]
    }
  },
  "version": "<VERSION REMOVED>"
}
