#
tokens: 84570/50000 1/1140 files (page 92/94)
lines: off (toggle) GitHub
raw markdown copy
This is page 92 of 94. Use http://codebase.md/cyfrin/aderyn?lines=false&page={x} to view the full context.

# Directory Structure

```
├── .cargo
│   └── config.toml
├── .git-blame-ignore-revs
├── .gitattributes
├── .github
│   ├── images
│   │   ├── aderyn_logo.png
│   │   ├── poweredbycyfrinblack.png
│   │   └── poweredbycyfrinblue.png
│   ├── ISSUE_TEMPLATE
│   │   ├── bug_report.md
│   │   ├── false_positive_issue.md
│   │   └── feature_request.md
│   └── workflows
│       ├── cargo.yml
│       ├── dependencies.yml
│       ├── release.yml
│       ├── reports.yml
│       └── toml.yml
├── .gitignore
├── .gitmodules
├── .vscode
│   └── settings.json
├── aderyn
│   ├── Cargo.toml
│   ├── oranda.json
│   ├── README.md
│   ├── src
│   │   ├── birdsong.rs
│   │   ├── completions.rs
│   │   ├── lib.rs
│   │   ├── lsp.rs
│   │   ├── main.rs
│   │   ├── mcp.rs
│   │   └── panic.rs
│   └── templates
│       └── aderyn.toml
├── aderyn_core
│   ├── .gitignore
│   ├── Cargo.toml
│   ├── README.md
│   ├── src
│   │   ├── ast
│   │   │   ├── ast_nodes.rs
│   │   │   ├── ast.rs
│   │   │   ├── impls
│   │   │   │   ├── ctx
│   │   │   │   │   ├── utils.rs
│   │   │   │   │   └── workspace.rs
│   │   │   │   ├── ctx.rs
│   │   │   │   ├── disp
│   │   │   │   │   ├── blocks.rs
│   │   │   │   │   ├── contracts.rs
│   │   │   │   │   ├── enumerations.rs
│   │   │   │   │   ├── errors.rs
│   │   │   │   │   ├── events.rs
│   │   │   │   │   ├── expressions.rs
│   │   │   │   │   ├── functions.rs
│   │   │   │   │   ├── identifiers.rs
│   │   │   │   │   ├── literals.rs
│   │   │   │   │   ├── modifiers.rs
│   │   │   │   │   ├── statements.rs
│   │   │   │   │   ├── structures.rs
│   │   │   │   │   ├── types.rs
│   │   │   │   │   ├── user_defined_value_types.rs
│   │   │   │   │   ├── using_for_directives.rs
│   │   │   │   │   └── variables.rs
│   │   │   │   ├── disp.rs
│   │   │   │   ├── node
│   │   │   │   │   ├── blocks.rs
│   │   │   │   │   ├── contracts.rs
│   │   │   │   │   ├── documentation.rs
│   │   │   │   │   ├── enumerations.rs
│   │   │   │   │   ├── errors.rs
│   │   │   │   │   ├── events.rs
│   │   │   │   │   ├── expressions.rs
│   │   │   │   │   ├── functions.rs
│   │   │   │   │   ├── identifiers.rs
│   │   │   │   │   ├── import_directives.rs
│   │   │   │   │   ├── literals.rs
│   │   │   │   │   ├── modifiers.rs
│   │   │   │   │   ├── pragma_directives.rs
│   │   │   │   │   ├── source_units.rs
│   │   │   │   │   ├── statements.rs
│   │   │   │   │   ├── structures.rs
│   │   │   │   │   ├── types.rs
│   │   │   │   │   ├── user_defined_value_types.rs
│   │   │   │   │   ├── using_for_directives.rs
│   │   │   │   │   └── variables.rs
│   │   │   │   ├── node.rs
│   │   │   │   ├── own
│   │   │   │   │   ├── hashing.rs
│   │   │   │   │   ├── node_id.rs
│   │   │   │   │   ├── source_units.rs
│   │   │   │   │   └── utils.rs
│   │   │   │   └── own.rs
│   │   │   ├── impls.rs
│   │   │   ├── macros.rs
│   │   │   ├── magic.rs
│   │   │   ├── node_type.rs
│   │   │   └── yul.rs
│   │   ├── ast.rs
│   │   ├── audit
│   │   │   ├── attack_surface.rs
│   │   │   ├── auditor.rs
│   │   │   ├── entrypoint.rs
│   │   │   └── public_functions_no_sender.rs
│   │   ├── audit.rs
│   │   ├── context
│   │   │   ├── browser
│   │   │   │   ├── ancestral_line.rs
│   │   │   │   ├── closest_ancestor.rs
│   │   │   │   ├── external_calls.rs
│   │   │   │   ├── extractor.rs
│   │   │   │   ├── immediate_children.rs
│   │   │   │   ├── location.rs
│   │   │   │   ├── macros.rs
│   │   │   │   ├── parent.rs
│   │   │   │   ├── peek_over.rs
│   │   │   │   ├── peek_under.rs
│   │   │   │   ├── peek.rs
│   │   │   │   ├── siblings.rs
│   │   │   │   ├── sort_nodes.rs
│   │   │   │   └── storage_vars.rs
│   │   │   ├── browser.rs
│   │   │   ├── capturable.rs
│   │   │   ├── flow
│   │   │   │   ├── display.rs
│   │   │   │   ├── error.rs
│   │   │   │   ├── kind.rs
│   │   │   │   ├── primitives.rs
│   │   │   │   ├── reducibles.rs
│   │   │   │   ├── tests.rs
│   │   │   │   ├── utils.rs
│   │   │   │   ├── visualizer.rs
│   │   │   │   └── voids.rs
│   │   │   ├── flow.rs
│   │   │   ├── graph
│   │   │   │   ├── callgraph
│   │   │   │   │   ├── legacy.rs
│   │   │   │   │   ├── new.rs
│   │   │   │   │   ├── tests.rs
│   │   │   │   │   ├── utils.rs
│   │   │   │   │   └── visit.rs
│   │   │   │   ├── callgraph.rs
│   │   │   │   ├── preprocess
│   │   │   │   │   ├── legacy.rs
│   │   │   │   │   └── new.rs
│   │   │   │   ├── preprocess.rs
│   │   │   │   ├── traits.rs
│   │   │   │   └── utils.rs
│   │   │   ├── graph.rs
│   │   │   ├── macros.rs
│   │   │   ├── mcp
│   │   │   │   ├── callgraph
│   │   │   │   │   ├── render.rs
│   │   │   │   │   ├── tool.rs
│   │   │   │   │   └── utils.rs
│   │   │   │   ├── callgraph.rs
│   │   │   │   ├── contract_surface
│   │   │   │   │   ├── render.rs
│   │   │   │   │   ├── tool.rs
│   │   │   │   │   └── util.rs
│   │   │   │   ├── contract_surface.rs
│   │   │   │   ├── list_contracts
│   │   │   │   │   ├── render.rs
│   │   │   │   │   └── tool.rs
│   │   │   │   ├── list_contracts.rs
│   │   │   │   ├── node_finder
│   │   │   │   │   ├── render.rs
│   │   │   │   │   ├── tool.rs
│   │   │   │   │   └── utils.rs
│   │   │   │   ├── node_finder.rs
│   │   │   │   ├── node_summarizer
│   │   │   │   │   ├── render.rs
│   │   │   │   │   ├── tool.rs
│   │   │   │   │   └── utils.rs
│   │   │   │   ├── node_summarizer.rs
│   │   │   │   ├── project_overview
│   │   │   │   │   ├── render.rs
│   │   │   │   │   └── tool.rs
│   │   │   │   ├── project_overview.rs
│   │   │   │   ├── tool_guide
│   │   │   │   │   └── tool.rs
│   │   │   │   └── tool_guide.rs
│   │   │   ├── mcp.rs
│   │   │   ├── router
│   │   │   │   ├── external_calls.rs
│   │   │   │   ├── internal_calls.rs
│   │   │   │   ├── modifier_calls.rs
│   │   │   │   └── tests.rs
│   │   │   ├── router.rs
│   │   │   └── workspace.rs
│   │   ├── context.rs
│   │   ├── detect
│   │   │   ├── detector.rs
│   │   │   ├── entrypoint.rs
│   │   │   ├── helpers.rs
│   │   │   ├── high
│   │   │   │   ├── _template.rs
│   │   │   │   ├── abi_encode_packed_hash_collision.rs
│   │   │   │   ├── arbitrary_transfer_from.rs
│   │   │   │   ├── const_func_changes_state.rs
│   │   │   │   ├── contract_locks_ether.rs
│   │   │   │   ├── dangerous_unary_operator.rs
│   │   │   │   ├── delegate_call_unchecked_address.rs
│   │   │   │   ├── delete_nested_mapping.rs
│   │   │   │   ├── dynamic_array_length_assignment.rs
│   │   │   │   ├── enumerable_loop_removal.rs
│   │   │   │   ├── eth_send_unchecked_address.rs
│   │   │   │   ├── experimental_encoder.rs
│   │   │   │   ├── function_selector_collision.rs
│   │   │   │   ├── incorrect_caret_operator.rs
│   │   │   │   ├── incorrect_erc20_interface.rs
│   │   │   │   ├── incorrect_erc721_interface.rs
│   │   │   │   ├── incorrect_shift_order.rs
│   │   │   │   ├── misused_boolean.rs
│   │   │   │   ├── msg_value_in_loops.rs
│   │   │   │   ├── multiple_constructors.rs
│   │   │   │   ├── nested_struct_in_mapping.rs
│   │   │   │   ├── out_of_order_retryable.rs
│   │   │   │   ├── pre_declared_variable_usage.rs
│   │   │   │   ├── reentrancy_state_change.rs
│   │   │   │   ├── reused_contract_name.rs
│   │   │   │   ├── rtlo.rs
│   │   │   │   ├── selfdestruct.rs
│   │   │   │   ├── signed_integer_storage_array.rs
│   │   │   │   ├── state_variable_shadowing.rs
│   │   │   │   ├── storage_array_memory_edit.rs
│   │   │   │   ├── strict_equality_contract_balance.rs
│   │   │   │   ├── tautological_compare.rs
│   │   │   │   ├── tautology_or_contradiction.rs
│   │   │   │   ├── tx_origin_used_for_auth.rs
│   │   │   │   ├── unchecked_low_level_call.rs
│   │   │   │   ├── unchecked_send.rs
│   │   │   │   ├── unprotected_initializer.rs
│   │   │   │   ├── unsafe_casting.rs
│   │   │   │   ├── weak_randomness.rs
│   │   │   │   └── yul_return.rs
│   │   │   ├── high.rs
│   │   │   ├── low
│   │   │   │   ├── _template.rs
│   │   │   │   ├── assert_state_change.rs
│   │   │   │   ├── block_timestamp_deadline.rs
│   │   │   │   ├── boolean_equality.rs
│   │   │   │   ├── builtin_symbol_shadowing.rs
│   │   │   │   ├── centralization_risk.rs
│   │   │   │   ├── constant_function_contains_assembly.rs
│   │   │   │   ├── costly_loop.rs
│   │   │   │   ├── dead_code.rs
│   │   │   │   ├── delegatecall_in_loop.rs
│   │   │   │   ├── deprecated_oz_function.rs
│   │   │   │   ├── division_before_multiplication.rs
│   │   │   │   ├── ecrecover.rs
│   │   │   │   ├── empty_block.rs
│   │   │   │   ├── empty_require_revert.rs
│   │   │   │   ├── function_initializing_state.rs
│   │   │   │   ├── function_pointer_in_constructor.rs
│   │   │   │   ├── inconsistent_type_names.rs
│   │   │   │   ├── incorrect_modifier.rs
│   │   │   │   ├── internal_function_used_once.rs
│   │   │   │   ├── large_numeric_literal.rs
│   │   │   │   ├── literal_instead_of_constant.rs
│   │   │   │   ├── local_variable_shadowing.rs
│   │   │   │   ├── missing_inheritance.rs
│   │   │   │   ├── modifier_used_only_once.rs
│   │   │   │   ├── multiple_placeholders.rs
│   │   │   │   ├── non_reentrant_not_first.rs
│   │   │   │   ├── push_0_opcode.rs
│   │   │   │   ├── redundant_statement.rs
│   │   │   │   ├── require_revert_in_loop.rs
│   │   │   │   ├── return_bomb.rs
│   │   │   │   ├── solmate_safe_transfer_lib.rs
│   │   │   │   ├── state_change_without_event.rs
│   │   │   │   ├── state_no_address_check.rs
│   │   │   │   ├── state_variable_could_be_constant.rs
│   │   │   │   ├── state_variable_could_be_immutable.rs
│   │   │   │   ├── state_variable_read_external.rs
│   │   │   │   ├── storage_array_length_not_cached.rs
│   │   │   │   ├── todo.rs
│   │   │   │   ├── unchecked_return.rs
│   │   │   │   ├── uninitialized_local_variable.rs
│   │   │   │   ├── unsafe_erc20_operation.rs
│   │   │   │   ├── unsafe_oz_erc721_mint.rs
│   │   │   │   ├── unspecific_solidity_pragma.rs
│   │   │   │   ├── unused_error.rs
│   │   │   │   ├── unused_import.rs
│   │   │   │   ├── unused_public_function.rs
│   │   │   │   ├── unused_state_variable.rs
│   │   │   │   └── void_constructor.rs
│   │   │   ├── low.rs
│   │   │   └── test_utils.rs
│   │   ├── detect.rs
│   │   ├── lib.rs
│   │   ├── stats
│   │   │   ├── cloc.rs
│   │   │   ├── dbg_tips.txt
│   │   │   ├── ignore.rs
│   │   │   ├── token.rs
│   │   │   └── util.rs
│   │   ├── stats.rs
│   │   ├── test_utils
│   │   │   └── load_source_unit.rs
│   │   ├── test_utils.rs
│   │   ├── visitor
│   │   │   ├── ast_visitor.rs
│   │   │   ├── macros.rs
│   │   │   └── workspace_visitor.rs
│   │   └── visitor.rs
│   ├── templates
│   │   └── mcp-tool-response
│   │       ├── callgraph.md
│   │       ├── contract_surface.md
│   │       ├── list_contracts.md
│   │       ├── node_finder_get_all.md
│   │       ├── node_finder_grep.md
│   │       ├── node_finder_search.md
│   │       ├── node_summarizer.md
│   │       ├── project_overview.md
│   │       └── tool_guide.md
│   └── tests
│       ├── common
│       │   ├── ancestral_line.rs
│       │   ├── closest_ancestor.rs
│       │   ├── immediate_children.rs
│       │   ├── immediate_parent.rs
│       │   ├── mod.rs
│       │   ├── new_ast_nodes.rs
│       │   ├── peek_over.rs
│       │   └── sibling.rs
│       └── traversal.rs
├── aderyn_driver
│   ├── .gitignore
│   ├── benches
│   │   └── detectors.rs
│   ├── Cargo.toml
│   ├── README.md
│   ├── src
│   │   ├── compile.rs
│   │   ├── config.rs
│   │   ├── display.rs
│   │   ├── driver.rs
│   │   ├── interface
│   │   │   ├── json.rs
│   │   │   ├── lsp.rs
│   │   │   ├── markdown.rs
│   │   │   ├── mod.rs
│   │   │   ├── sarif.rs
│   │   │   ├── tables.rs
│   │   │   └── util.rs
│   │   ├── lib.rs
│   │   ├── mcp.rs
│   │   ├── process.rs
│   │   └── runner.rs
│   └── tests
│       └── astgen.rs
├── bacon.toml
├── benchmarks
│   ├── aderyn
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── iteration_times.svg
│   │       │   └── pdf.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── iteration_times_small.svg
│   │       ├── iteration_times.svg
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── relative_iteration_times_small.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── SD.svg
│   │       └── typical.svg
│   ├── arbitrary-transfer-from
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── avoid-abi-encode-packed
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── block-timestamp-deadline
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── centralization-risk
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── constants-instead-of-literals
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── delegate-call-in-loop
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── deprecated-oz-functions
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── ecrecover
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── empty-block
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── hello_world
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── inconsistent-type-names
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── large-numeric-literal
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── non-reentrant-before-others
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── push-zero-opcode
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── report
│   │   └── index.html
│   ├── require-with-string
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── solmate-safe-transfer-lib
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── unindexed-events
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── unprotected-initializer
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── unsafe-erc20-functions
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── unsafe-oz-erc721-mint
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── unspecific-solidity-pragma
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── useless-internal-function
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── useless-modifier
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── useless-public-function
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   └── zero-address-check
│       ├── base
│       │   ├── benchmark.json
│       │   ├── estimates.json
│       │   ├── sample.json
│       │   └── tukey.json
│       ├── change
│       │   └── estimates.json
│       ├── new
│       │   ├── benchmark.json
│       │   ├── estimates.json
│       │   ├── sample.json
│       │   └── tukey.json
│       └── report
│           ├── both
│           │   ├── pdf.svg
│           │   └── regression.svg
│           ├── change
│           │   ├── mean.svg
│           │   ├── median.svg
│           │   └── t-test.svg
│           ├── index.html
│           ├── MAD.svg
│           ├── mean.svg
│           ├── median.svg
│           ├── pdf_small.svg
│           ├── pdf.svg
│           ├── regression_small.svg
│           ├── regression.svg
│           ├── relative_pdf_small.svg
│           ├── relative_regression_small.svg
│           ├── SD.svg
│           ├── slope.svg
│           └── typical.svg
├── Cargo.lock
├── Cargo.toml
├── cli
│   ├── benchmarks.sh
│   └── reportgen.sh
├── CODEOWNERS
├── CONTRIBUTING.md
├── cyfrinup
│   ├── dynamic_script
│   └── why.md
├── deny.toml
├── dist-workspace.toml
├── funding.json
├── LICENSE
├── Makefile
├── package-lock.json
├── package.json
├── README.md
├── RELEASE_CHECKLIST.md
├── reports
│   ├── adhoc-sol-files-highs-only-report.json
│   ├── adhoc-sol-files-report.md
│   ├── ccip-functions-report.md
│   ├── empty_report.md
│   ├── hardhat-playground-report.md
│   ├── nft-report-icm.md
│   ├── nft-report.md
│   ├── prb-math-report.md
│   ├── report.json
│   ├── report.md
│   ├── report.sarif
│   ├── sablier-aderyn-toml-nested-root.md
│   ├── templegold-report.md
│   └── uniswap_profile.md
├── rust-toolchain.toml
├── rustfmt.toml
├── tests
│   ├── adhoc-sol-files
│   │   ├── aderyn.toml
│   │   ├── Counter.sol
│   │   ├── DemoASTNodes.sol
│   │   ├── Helper.sol
│   │   ├── InconsistentUints.sol
│   │   ├── inheritance
│   │   │   ├── ExtendedInheritance.sol
│   │   │   ├── IContractInheritance.sol
│   │   │   └── InheritanceBase.sol
│   │   ├── InternalFunctions.sol
│   │   ├── lib
│   │   │   └── ThisShouldBeExcluded.sol
│   │   ├── multiple-versions
│   │   │   ├── 0.4
│   │   │   │   ├── A.sol
│   │   │   │   └── B.sol
│   │   │   ├── 0.5
│   │   │   │   ├── A.sol
│   │   │   │   └── B.sol
│   │   │   ├── 0.6
│   │   │   │   ├── A.sol
│   │   │   │   └── B.sol
│   │   │   ├── 0.7
│   │   │   │   ├── A.sol
│   │   │   │   └── B.sol
│   │   │   └── 0.8
│   │   │       ├── A.sol
│   │   │       └── B.sol
│   │   ├── OnceModifierExample.sol
│   │   └── StateVariables.sol
│   ├── ast
│   │   ├── abstract_contract.json
│   │   ├── address_payable.json
│   │   ├── array_type_name.json
│   │   ├── ast-erc4626.json
│   │   ├── base_constructor_call.json
│   │   ├── bit_not.json
│   │   ├── call.json
│   │   ├── constructor.json
│   │   ├── contract_dep_order.json
│   │   ├── do_while.json
│   │   ├── documentation_1.json
│   │   ├── documentation_2.json
│   │   ├── documentation_3.json
│   │   ├── documentation_local_variable.json
│   │   ├── documentation_on_statements.json
│   │   ├── documentation_triple.json
│   │   ├── empty_block.json
│   │   ├── enum_value_declaration.json
│   │   ├── enum_value.json
│   │   ├── event_definition.json
│   │   ├── experimental_encoder_pragma.json
│   │   ├── fallback_and_reveice_ether.json
│   │   ├── fallback_payable.json
│   │   ├── fallback.json
│   │   ├── function_type.json
│   │   ├── function.json
│   │   ├── global_enum.json
│   │   ├── global_struct.json
│   │   ├── inheritance_specifier.json
│   │   ├── leave.json
│   │   ├── license.json
│   │   ├── long_type_name_binary_operation.json
│   │   ├── long_type_name_identifier.json
│   │   ├── loop.json
│   │   ├── mappings.json
│   │   ├── modifier_definition.json
│   │   ├── modifier_invocation.json
│   │   ├── mutability.json
│   │   ├── nested_functions.json
│   │   ├── non_utf8.json
│   │   ├── override.json
│   │   ├── placeholder_statement.json
│   │   ├── receive_ether.json
│   │   ├── short_type_name_ref.json
│   │   ├── short_type_name.json
│   │   ├── slot_offset.json
│   │   ├── smoke.json
│   │   ├── source_location.json
│   │   ├── string.json
│   │   ├── stringlit.json
│   │   ├── switch_default.json
│   │   ├── switch.json
│   │   ├── try_catch.json
│   │   ├── two_base_functions.json
│   │   ├── unicode.json
│   │   ├── used_errors.json
│   │   ├── userDefinedValueType.json
│   │   ├── using_for_directive.json
│   │   ├── var_access.json
│   │   └── yul_hex_literal.json
│   ├── contract-playground
│   │   ├── .github
│   │   │   └── workflows
│   │   │       └── test.yml
│   │   ├── .gitignore
│   │   ├── dot
│   │   │   └── .gitkeep
│   │   ├── foundry.toml
│   │   ├── README.md
│   │   ├── script
│   │   │   └── Counter.s.sol
│   │   ├── src
│   │   │   ├── AbstractContract.sol
│   │   │   ├── AderynIgnoreCustomDetectors.sol
│   │   │   ├── AdminContract.sol
│   │   │   ├── ArbitraryTransferFrom.sol
│   │   │   ├── AssemblyExample.sol
│   │   │   ├── AssertStateChange.sol
│   │   │   ├── auditor_mode
│   │   │   │   ├── ExternalCalls.sol
│   │   │   │   └── PublicFunctionsWithoutSenderCheck.sol
│   │   │   ├── BooleanEquality.sol
│   │   │   ├── BuiltinSymbolShadow.sol
│   │   │   ├── CacheArrayLength.sol
│   │   │   ├── CallGraphTests.sol
│   │   │   ├── Casting.sol
│   │   │   ├── cloc
│   │   │   │   ├── AnotherHeavilyCommentedContract.sol
│   │   │   │   ├── EmptyContractFile.sol
│   │   │   │   └── HeavilyCommentedContract.sol
│   │   │   ├── CompilerBugStorageSignedIntegerArray.sol
│   │   │   ├── ConstantFuncsAssembly.sol
│   │   │   ├── ConstantsLiterals.sol
│   │   │   ├── ConstFuncChangeState.sol
│   │   │   ├── ContractLocksEther.sol
│   │   │   ├── ContractWithTodo.sol
│   │   │   ├── control_flow
│   │   │   │   └── SimpleProgram.sol
│   │   │   ├── CostlyOperationsInsideLoops.sol
│   │   │   ├── Counter.sol
│   │   │   ├── CrazyPragma.sol
│   │   │   ├── DangerousStrictEquality1.sol
│   │   │   ├── DangerousStrictEquality2.sol
│   │   │   ├── DangerousUnaryOperator.sol
│   │   │   ├── DeadCode.sol
│   │   │   ├── DelegateCallWithoutAddressCheck.sol
│   │   │   ├── DeletionNestedMappingStructureContract.sol
│   │   │   ├── DeprecatedOZFunctions.sol
│   │   │   ├── DivisionBeforeMultiplication.sol
│   │   │   ├── DynamicArrayLengthAssignment.sol
│   │   │   ├── EmitAfterExternalCall.sol
│   │   │   ├── EmptyBlocks.sol
│   │   │   ├── EnumerableSetIteration.sol
│   │   │   ├── eth2
│   │   │   │   └── DepositContract.sol
│   │   │   ├── ExperimentalEncoder.sol
│   │   │   ├── ExternalCalls.sol
│   │   │   ├── FunctionInitializingState.sol
│   │   │   ├── FunctionPointers.sol
│   │   │   ├── FunctionSignatureCollision.sol
│   │   │   ├── HugeConstants.sol
│   │   │   ├── IgnoreEverything.sol
│   │   │   ├── InconsistentUints.sol
│   │   │   ├── IncorrectCaretOperator.sol
│   │   │   ├── IncorrectERC20.sol
│   │   │   ├── IncorrectERC721.sol
│   │   │   ├── IncorrectModifier.sol
│   │   │   ├── IncorrectShift.sol
│   │   │   ├── inheritance
│   │   │   │   ├── ExtendedInheritance.sol
│   │   │   │   ├── IContractInheritance.sol
│   │   │   │   └── InheritanceBase.sol
│   │   │   ├── InternalFunctions.sol
│   │   │   ├── KeccakContract.sol
│   │   │   ├── LocalVariableShadow.sol
│   │   │   ├── MissingInheritance.sol
│   │   │   ├── MisusedBoolean.sol
│   │   │   ├── MsgValueInLoop.sol
│   │   │   ├── MultipleConstructorSchemes.sol
│   │   │   ├── MultiplePlaceholders.sol
│   │   │   ├── nested
│   │   │   │   ├── 1
│   │   │   │   │   └── Nested.sol
│   │   │   │   └── 2
│   │   │   │       └── Nested.sol
│   │   │   ├── nested_mappings
│   │   │   │   ├── LaterVersion.sol
│   │   │   │   └── NestedMappings.sol
│   │   │   ├── OnceModifierExample.sol
│   │   │   ├── OnlyLibrary.sol
│   │   │   ├── OutOfOrderRetryable.sol
│   │   │   ├── parent_chain
│   │   │   │   └── ParentChainContract.sol
│   │   │   ├── PragmaRange.sol
│   │   │   ├── PreDeclaredVarUsage.sol
│   │   │   ├── PublicFunction.sol
│   │   │   ├── PublicVariableReadInExternalContext.sol
│   │   │   ├── RedundantStatements.sol
│   │   │   ├── ReturnBomb.sol
│   │   │   ├── reused_contract_name
│   │   │   │   ├── ContractA.sol
│   │   │   │   └── ContractB.sol
│   │   │   ├── RevertsAndRequriesInLoops.sol
│   │   │   ├── router
│   │   │   │   ├── ExternalCalls.sol
│   │   │   │   ├── FallbackAndReceiveOverrides.sol
│   │   │   │   ├── InternalCalls.sol
│   │   │   │   ├── ModifierCalls.sol
│   │   │   │   └── VarOverridesFunction.sol
│   │   │   ├── RTLO.sol
│   │   │   ├── SendEtherNoChecks.sol
│   │   │   ├── SendEtherNoChecksLibImport.sol
│   │   │   ├── StateChangeAfterExternalCall.sol
│   │   │   ├── StateShadowing.sol
│   │   │   ├── StateVariableCouldBeDeclaredConstant.sol
│   │   │   ├── StateVariableCouldBeDeclaredImmutable.sol
│   │   │   ├── StateVariables.sol
│   │   │   ├── StateVariablesChangesWithoutEvents.sol
│   │   │   ├── StateVariablesManipulation.sol
│   │   │   ├── StorageConditionals.sol
│   │   │   ├── StorageParameters.sol
│   │   │   ├── T11sTranferer.sol
│   │   │   ├── TautologicalCompare.sol
│   │   │   ├── TautologyOrContradiction.sol
│   │   │   ├── TestERC20.sol
│   │   │   ├── TransientKeyword.sol
│   │   │   ├── Trump.sol
│   │   │   ├── TxOriginUsedForAuth.sol
│   │   │   ├── U2.sol
│   │   │   ├── U3.sol
│   │   │   ├── U4.sol
│   │   │   ├── U5.sol
│   │   │   ├── UncheckedCalls.sol
│   │   │   ├── UncheckedReturn.sol
│   │   │   ├── UncheckedSend.sol
│   │   │   ├── UninitializedLocalVariables.sol
│   │   │   ├── UninitializedStateVariable.sol
│   │   │   ├── uniswap
│   │   │   │   ├── UniswapV2Swapper.sol
│   │   │   │   └── UniswapV3Swapper.sol
│   │   │   ├── UnprotectedInitialize.sol
│   │   │   ├── UnsafeERC721Mint.sol
│   │   │   ├── UnusedError.sol
│   │   │   ├── UnusedImport.sol
│   │   │   ├── UnusedStateVariables.sol
│   │   │   ├── UsingSelfdestruct.sol
│   │   │   ├── VoidConstructor.sol
│   │   │   ├── WeakRandomness.sol
│   │   │   ├── WrongOrderOfLayout.sol
│   │   │   ├── YulReturn.sol
│   │   │   └── ZeroAddressCheck.sol
│   │   └── test
│   │       └── Counter.t.sol
│   ├── foundry-nft-f23
│   │   ├── .github
│   │   │   └── workflows
│   │   │       └── test.yml
│   │   ├── .gitignore
│   │   ├── foundry.lock
│   │   ├── foundry.toml
│   │   ├── README.md
│   │   ├── remappings.txt
│   │   └── src
│   │       ├── BasicNft.sol
│   │       ├── F1.sol
│   │       ├── F2.sol
│   │       ├── Initializer.sol
│   │       └── inner-core-modules
│   │           └── ICM.sol
│   ├── foundry-nft-f23-icm
│   │   ├── .github
│   │   │   └── workflows
│   │   │       └── test.yml
│   │   ├── .gitignore
│   │   ├── aderyn.toml
│   │   ├── foundry.toml
│   │   ├── README.md
│   │   ├── remappings.txt
│   │   └── src
│   │       ├── BasicNft.sol
│   │       ├── F1.sol
│   │       ├── F2.sol
│   │       ├── Initializer.sol
│   │       └── inner-core-modules
│   │           └── ICM.sol
│   ├── hardhat-js-playground
│   │   ├── .gitignore
│   │   ├── artifacts
│   │   │   ├── build-info
│   │   │   │   └── cee6fe9a9a2f03f7ff10a27ab2746af6.json
│   │   │   └── contracts
│   │   │       ├── Counter.sol
│   │   │       │   ├── Counter.dbg.json
│   │   │       │   └── Counter.json
│   │   │       ├── ExtendedInheritance.sol
│   │   │       │   ├── ExtendedInheritance.dbg.json
│   │   │       │   └── ExtendedInheritance.json
│   │   │       ├── IContractInheritance.sol
│   │   │       │   ├── IContractInheritance.dbg.json
│   │   │       │   └── IContractInheritance.json
│   │   │       ├── InheritanceBase.sol
│   │   │       │   ├── InheritanceBase.dbg.json
│   │   │       │   └── InheritanceBase.json
│   │   │       ├── KeccakContract.sol
│   │   │       │   ├── KeccakContract.dbg.json
│   │   │       │   └── KeccakContract.json
│   │   │       ├── Lock.sol
│   │   │       │   ├── Lock.dbg.json
│   │   │       │   └── Lock.json
│   │   │       └── StateVariables.sol
│   │   │           ├── StateVariables.dbg.json
│   │   │           └── StateVariables.json
│   │   ├── contracts
│   │   │   ├── Counter.sol
│   │   │   ├── ExtendedInheritance.sol
│   │   │   ├── IContractInheritance.sol
│   │   │   ├── InheritanceBase.sol
│   │   │   ├── KeccakContract.sol
│   │   │   ├── Lock.sol
│   │   │   └── StateVariables.sol
│   │   ├── hardhat.config.js
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── scripts
│   │   │   └── deploy.js
│   │   ├── test
│   │   │   └── Lock.js
│   │   └── yarn.lock
│   ├── no-sol-files
│   │   ├── extra
│   │   │   └── HelloAgain.md
│   │   ├── Hello.txt
│   │   └── Hello.yul
│   └── toml
│       ├── nested_project1
│       │   ├── aderyn.toml
│       │   ├── folder1
│       │   │   └── hardhat.config.ts
│       │   ├── folder2
│       │   │   └── hardhat.config.ts
│       │   └── folder3
│       │       └── file.txt
│       └── nested_project2
│           ├── aderyn.toml
│           ├── folder1
│           │   └── foundry.toml
│           └── folder2
│               └── file1.txt
├── tools
│   └── xtask
│       ├── Cargo.toml
│       └── src
│           ├── blesspr.rs
│           ├── cut_release.rs
│           ├── flags.rs
│           ├── main.rs
│           ├── reportgen.rs
│           └── tomlgen.rs
└── typos.toml
```

# Files

--------------------------------------------------------------------------------
/reports/report.md:
--------------------------------------------------------------------------------

```markdown
# Aderyn Analysis Report

This report was generated by [Aderyn](https://github.com/Cyfrin/aderyn), a static analysis tool built by [Cyfrin](https://cyfrin.io), a blockchain security company. This report is not a substitute for manual audit or security review. It should not be relied upon for any purpose other than to assist in the identification of potential security vulnerabilities.
# Table of Contents

- [Summary](#summary)
  - [Files Summary](#files-summary)
  - [Files Details](#files-details)
  - [Issue Summary](#issue-summary)
- [High Issues](#high-issues)
  - [H-1: `abi.encodePacked()` Hash Collision](#h-1-abiencodepacked-hash-collision)
  - [H-2: Arbitrary `from` Passed to `transferFrom`](#h-2-arbitrary-from-passed-to-transferfrom)
  - [H-3: Unprotected initializer](#h-3-unprotected-initializer)
  - [H-4: Unsafe Casting of integers](#h-4-unsafe-casting-of-integers)
  - [H-5: EnumerableSet.remove Corrupts Order](#h-5-enumerablesetremove-corrupts-order)
  - [H-6: Experimental ABI Encoder](#h-6-experimental-abi-encoder)
  - [H-7: Incorrect Assembly Shift Parameter Order](#h-7-incorrect-assembly-shift-parameter-order)
  - [H-8: Storage Array Edited with Memory](#h-8-storage-array-edited-with-memory)
  - [H-9: Contract Has Multiple Constructors](#h-9-contract-has-multiple-constructors)
  - [H-10: Contract Name Reused in Different Files](#h-10-contract-name-reused-in-different-files)
  - [H-11: Nested Structs in Mappings pre-0.5.0](#h-11-nested-structs-in-mappings-pre-050)
  - [H-12: `selfdestruct` is Deprecated](#h-12-selfdestruct-is-deprecated)
  - [H-13: Direct assignment of array length](#h-13-direct-assignment-of-array-length)
  - [H-14: Incorrect use of caret operator](#h-14-incorrect-use-of-caret-operator)
  - [H-15: Yul block contains `return`](#h-15-yul-block-contains-return)
  - [H-16: Shadowed State Variable](#h-16-shadowed-state-variable)
  - [H-17: Unchecked `bool success` value for ETH send](#h-17-unchecked-bool-success-value-for-eth-send)
  - [H-18: Misused boolean with logical operators](#h-18-misused-boolean-with-logical-operators)
  - [H-19: ETH transferred without address checks](#h-19-eth-transferred-without-address-checks)
  - [H-20: `delegatecall` to an Arbitrary Address](#h-20-delegatecall-to-an-arbitrary-address)
  - [H-21: Tautological comparison](#h-21-tautological-comparison)
  - [H-22: RTLO character detected in file: \u{202e}](#h-22-rtlo-character-detected-in-file-u202e)
  - [H-23: Dangerous unary operator](#h-23-dangerous-unary-operator)
  - [H-24: Tautology or Contradiction in comparison](#h-24-tautology-or-contradiction-in-comparison)
  - [H-25: Dangerous strict equality checks on contract balances](#h-25-dangerous-strict-equality-checks-on-contract-balances)
  - [H-26: Signed integer array in storage (solc `<0.5.10`)](#h-26-signed-integer-array-in-storage-solc-0510)
  - [H-27: Weak Randomness](#h-27-weak-randomness)
  - [H-28: Usage of variable before declaration](#h-28-usage-of-variable-before-declaration)
  - [H-29: Deletion from a nested mapping](#h-29-deletion-from-a-nested-mapping)
  - [H-30: Use of `tx.origin` for authentication](#h-30-use-of-txorigin-for-authentication)
  - [H-31: Loop contains `msg.value`](#h-31-loop-contains-msgvalue)
  - [H-32: Contract locks Ether without a withdraw function](#h-32-contract-locks-ether-without-a-withdraw-function)
  - [H-33: Incorrect ERC721 interface](#h-33-incorrect-erc721-interface)
  - [H-34: Incorrect ERC20 interface](#h-34-incorrect-erc20-interface)
  - [H-35: Out of Order Retryable Transaction](#h-35-out-of-order-retryable-transaction)
  - [H-36: Constant functions changes state](#h-36-constant-functions-changes-state)
  - [H-37: Function Selector Collision](#h-37-function-selector-collision)
  - [H-38: Unchecked Low level calls](#h-38-unchecked-low-level-calls)
  - [H-39: Reentrancy: State change after external call](#h-39-reentrancy-state-change-after-external-call)
- [Low Issues](#low-issues)
  - [L-1: `delegatecall` in loop](#l-1-delegatecall-in-loop)
  - [L-2: Centralization Risk](#l-2-centralization-risk)
  - [L-3: Solmate's SafeTransferLib](#l-3-solmates-safetransferlib)
  - [L-4: `ecrecover` Signature Malleability](#l-4-ecrecover-signature-malleability)
  - [L-5: Deprecated OpenZeppelin Function](#l-5-deprecated-openzeppelin-function)
  - [L-6: Unsafe ERC20 Operation](#l-6-unsafe-erc20-operation)
  - [L-7: Unspecific Solidity Pragma](#l-7-unspecific-solidity-pragma)
  - [L-8: Address State Variable Set Without Checks](#l-8-address-state-variable-set-without-checks)
  - [L-9: Public Function Not Used Internally](#l-9-public-function-not-used-internally)
  - [L-10: Literal Instead of Constant](#l-10-literal-instead-of-constant)
  - [L-11: Empty `require()` / `revert()` Statement](#l-11-empty-require--revert-statement)
  - [L-12: `nonReentrant` is Not the First Modifier](#l-12-nonreentrant-is-not-the-first-modifier)
  - [L-13: Using `block.timestamp` for swap deadline offers no protection](#l-13-using-blocktimestamp-for-swap-deadline-offers-no-protection)
  - [L-14: Unsafe `ERC721::_mint()`](#l-14-unsafe-erc721mint)
  - [L-15: PUSH0 Opcode](#l-15-push0-opcode)
  - [L-16: Modifier Invoked Only Once](#l-16-modifier-invoked-only-once)
  - [L-17: Empty Block](#l-17-empty-block)
  - [L-18: Large Numeric Literal](#l-18-large-numeric-literal)
  - [L-19: Internal Function Used Only Once](#l-19-internal-function-used-only-once)
  - [L-20: Contract has TODO Comments](#l-20-contract-has-todo-comments)
  - [L-21: Inconsistent uint256/uint (or) int256/int types](#l-21-inconsistent-uint256uint-or-int256int-types)
  - [L-22: Unused Error](#l-22-unused-error)
  - [L-23: Loop Contains `require`/`revert`](#l-23-loop-contains-requirerevert)
  - [L-24: Incorrect Order of Division and Multiplication](#l-24-incorrect-order-of-division-and-multiplication)
  - [L-25: Redundant Statement](#l-25-redundant-statement)
  - [L-26: State Variable is Read as External](#l-26-state-variable-is-read-as-external)
  - [L-27: Unused State Variable](#l-27-unused-state-variable)
  - [L-28: Constant Function Contains Assembly](#l-28-constant-function-contains-assembly)
  - [L-29: Boolean equality is not required](#l-29-boolean-equality-is-not-required)
  - [L-30: Local Variable Shadows State Variable](#l-30-local-variable-shadows-state-variable)
  - [L-31: Uninitialized Local Variable](#l-31-uninitialized-local-variable)
  - [L-32: Return Bomb](#l-32-return-bomb)
  - [L-33: Function Used to Initialize State Variable](#l-33-function-used-to-initialize-state-variable)
  - [L-34: Dead Code](#l-34-dead-code)
  - [L-35: Storage Array Length not Cached](#l-35-storage-array-length-not-cached)
  - [L-36: State change in `assert()` statement](#l-36-state-change-in-assert-statement)
  - [L-37: Costly operations inside loop](#l-37-costly-operations-inside-loop)
  - [L-38: Builtin Symbol Shadowing](#l-38-builtin-symbol-shadowing)
  - [L-39: Void constructor](#l-39-void-constructor)
  - [L-40: Missing Inheritance](#l-40-missing-inheritance)
  - [L-41: Unused Import](#l-41-unused-import)
  - [L-42: Function Pointer in Constructor](#l-42-function-pointer-in-constructor)
  - [L-43: State Variable Could Be Constant](#l-43-state-variable-could-be-constant)
  - [L-44: State Change Without Event](#l-44-state-change-without-event)
  - [L-45: State Variable Could Be Immutable](#l-45-state-variable-could-be-immutable)
  - [L-46: Multiple Placeholders in Modifier](#l-46-multiple-placeholders-in-modifier)
  - [L-47: Incorrect Use Of Modifier](#l-47-incorrect-use-of-modifier)
  - [L-48: Unchecked Return](#l-48-unchecked-return)


# Summary

## Files Summary

| Key | Value |
| --- | --- |
| .sol Files | 126 |
| Total nSLOC | 4727 |


## Files Details

| Filepath | nSLOC |
| --- | --- |
| src/AbstractContract.sol | 12 |
| src/AderynIgnoreCustomDetectors.sol | 17 |
| src/AdminContract.sol | 11 |
| src/ArbitraryTransferFrom.sol | 37 |
| src/AssemblyExample.sol | 9 |
| src/AssertStateChange.sol | 11 |
| src/BooleanEquality.sol | 27 |
| src/BuiltinSymbolShadow.sol | 14 |
| src/CacheArrayLength.sol | 38 |
| src/CallGraphTests.sol | 49 |
| src/Casting.sol | 146 |
| src/CompilerBugStorageSignedIntegerArray.sol | 13 |
| src/ConstFuncChangeState.sol | 15 |
| src/ConstantFuncsAssembly.sol | 26 |
| src/ConstantsLiterals.sol | 28 |
| src/ContractLocksEther.sol | 142 |
| src/ContractWithTodo.sol | 7 |
| src/CostlyOperationsInsideLoops.sol | 17 |
| src/Counter.sol | 20 |
| src/CrazyPragma.sol | 4 |
| src/DangerousStrictEquality1.sol | 6 |
| src/DangerousStrictEquality2.sol | 9 |
| src/DangerousUnaryOperator.sol | 13 |
| src/DeadCode.sol | 23 |
| src/DelegateCallWithoutAddressCheck.sol | 31 |
| src/DeletionNestedMappingStructureContract.sol | 11 |
| src/DeprecatedOZFunctions.sol | 32 |
| src/DivisionBeforeMultiplication.sol | 22 |
| src/DynamicArrayLengthAssignment.sol | 16 |
| src/EmitAfterExternalCall.sol | 67 |
| src/EmptyBlocks.sol | 48 |
| src/EnumerableSetIteration.sol | 55 |
| src/ExperimentalEncoder.sol | 4 |
| src/ExternalCalls.sol | 60 |
| src/FunctionInitializingState.sol | 49 |
| src/FunctionPointers.sol | 10 |
| src/FunctionSignatureCollision.sol | 9 |
| src/HugeConstants.sol | 36 |
| src/IgnoreEverything.sol | 5 |
| src/InconsistentUints.sol | 17 |
| src/IncorrectCaretOperator.sol | 16 |
| src/IncorrectERC20.sol | 98 |
| src/IncorrectERC721.sol | 238 |
| src/IncorrectModifier.sol | 65 |
| src/IncorrectShift.sol | 17 |
| src/InternalFunctions.sol | 22 |
| src/KeccakContract.sol | 21 |
| src/LocalVariableShadow.sol | 23 |
| src/MissingInheritance.sol | 39 |
| src/MisusedBoolean.sol | 67 |
| src/MsgValueInLoop.sol | 55 |
| src/MultipleConstructorSchemes.sol | 10 |
| src/MultiplePlaceholders.sol | 40 |
| src/OnceModifierExample.sol | 8 |
| src/OnlyLibrary.sol | 2 |
| src/OutOfOrderRetryable.sol | 165 |
| src/PragmaRange.sol | 6 |
| src/PreDeclaredVarUsage.sol | 9 |
| src/PublicFunction.sol | 15 |
| src/PublicVariableReadInExternalContext.sol | 32 |
| src/RTLO.sol | 7 |
| src/RedundantStatements.sol | 14 |
| src/ReturnBomb.sol | 44 |
| src/RevertsAndRequriesInLoops.sol | 27 |
| src/SendEtherNoChecks.sol | 58 |
| src/SendEtherNoChecksLibImport.sol | 17 |
| src/StateChangeAfterExternalCall.sol | 54 |
| src/StateShadowing.sol | 17 |
| src/StateVariableCouldBeDeclaredConstant.sol | 27 |
| src/StateVariableCouldBeDeclaredImmutable.sol | 22 |
| src/StateVariables.sol | 58 |
| src/StateVariablesChangesWithoutEvents.sol | 80 |
| src/StateVariablesManipulation.sol | 250 |
| src/StorageConditionals.sol | 59 |
| src/StorageParameters.sol | 16 |
| src/T11sTranferer.sol | 8 |
| src/TautologicalCompare.sol | 17 |
| src/TautologyOrContradiction.sol | 11 |
| src/TestERC20.sol | 62 |
| src/TransientKeyword.sol | 10 |
| src/Trump.sol | 281 |
| src/TxOriginUsedForAuth.sol | 43 |
| src/U2.sol | 3 |
| src/U3.sol | 2 |
| src/U4.sol | 3 |
| src/U5.sol | 6 |
| src/UncheckedCalls.sol | 24 |
| src/UncheckedReturn.sol | 33 |
| src/UncheckedSend.sol | 18 |
| src/UninitializedLocalVariables.sol | 62 |
| src/UninitializedStateVariable.sol | 29 |
| src/UnprotectedInitialize.sol | 44 |
| src/UnsafeERC721Mint.sol | 18 |
| src/UnusedError.sol | 23 |
| src/UnusedImport.sol | 10 |
| src/UnusedStateVariables.sol | 12 |
| src/UsingSelfdestruct.sol | 6 |
| src/VoidConstructor.sol | 21 |
| src/WeakRandomness.sol | 59 |
| src/WrongOrderOfLayout.sol | 13 |
| src/YulReturn.sol | 8 |
| src/ZeroAddressCheck.sol | 41 |
| src/auditor_mode/ExternalCalls.sol | 65 |
| src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol | 45 |
| src/cloc/AnotherHeavilyCommentedContract.sol | 32 |
| src/cloc/EmptyContractFile.sol | 0 |
| src/cloc/HeavilyCommentedContract.sol | 21 |
| src/control_flow/SimpleProgram.sol | 188 |
| src/eth2/DepositContract.sol | 96 |
| src/inheritance/ExtendedInheritance.sol | 18 |
| src/inheritance/IContractInheritance.sol | 4 |
| src/inheritance/InheritanceBase.sol | 12 |
| src/nested/1/Nested.sol | 10 |
| src/nested/2/Nested.sol | 7 |
| src/nested_mappings/LaterVersion.sol | 10 |
| src/nested_mappings/NestedMappings.sol | 10 |
| src/parent_chain/ParentChainContract.sol | 29 |
| src/reused_contract_name/ContractA.sol | 7 |
| src/reused_contract_name/ContractB.sol | 7 |
| src/router/ExternalCalls.sol | 30 |
| src/router/FallbackAndReceiveOverrides.sol | 17 |
| src/router/InternalCalls.sol | 135 |
| src/router/ModifierCalls.sol | 33 |
| src/router/VarOverridesFunction.sol | 20 |
| src/uniswap/UniswapV2Swapper.sol | 50 |
| src/uniswap/UniswapV3Swapper.sol | 150 |
| **Total** | **4727** |


## Issue Summary

| Category | No. of Issues |
| --- | --- |
| High | 39 |
| Low | 48 |


# High Issues

## H-1: `abi.encodePacked()` Hash Collision

abi.encodePacked() should not be used with dynamic types when passing the result to a hash function such as `keccak256()`. Use `abi.encode()` instead which will pad items to 32 bytes, preventing hash collisions: https://docs.soliditylang.org/en/v0.8.13/abi-spec.html#non-standard-packed-mode. (e.g. `abi.encodePacked(0x123,0x456)` => `0x123456` => `abi.encodePacked(0x1,0x23456)`, but `abi.encode(0x123,0x456)` => `0x0...1230...456`). Unless there is a compelling reason, `abi.encode` should be preferred. If there is only one argument to `abi.encodePacked()` it can often be cast to `bytes()` or `bytes32()` instead: https://ethereum.stackexchange.com/questions/30912/how-to-compare-strings-in-solidity#answer-82739. If all arguments are strings and or bytes, `bytes.concat()` should be used instead.

<details><summary>3 Found Instances</summary>


- Found in src/KeccakContract.sol [Line: 18](../tests/contract-playground/src/KeccakContract.sol#L18)

	```solidity
	        return keccak256(abi.encodePacked(a, b));
	```

- Found in src/KeccakContract.sol [Line: 22](../tests/contract-playground/src/KeccakContract.sol#L22)

	```solidity
	        return keccak256(abi.encodePacked(a, b));
	```

- Found in src/KeccakContract.sol [Line: 26](../tests/contract-playground/src/KeccakContract.sol#L26)

	```solidity
	        return keccak256(abi.encodePacked(a, b));
	```

</details>



## H-2: Arbitrary `from` Passed to `transferFrom`

Passing an arbitrary `from` address to `transferFrom` (or `safeTransferFrom`) can lead to loss of funds, because anyone can transfer tokens from the `from` address if an approval is made.

<details><summary>4 Found Instances</summary>


- Found in src/ArbitraryTransferFrom.sol [Line: 24](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L24)

	```solidity
	        s_token.safeTransferFrom(from, to, amount);
	```

- Found in src/ArbitraryTransferFrom.sol [Line: 29](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L29)

	```solidity
	        SafeERC20.safeTransferFrom(s_token, from, to, amount);
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 17](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L17)

	```solidity
	        token.safeTransferFrom(from, to, value);
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 47](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L47)

	```solidity
	        token.transferFrom(from, to, value);
	```

</details>



## H-3: Unprotected initializer

Consider protecting the initializer functions with modifiers.

<details><summary>2 Found Instances</summary>


- Found in src/UnprotectedInitialize.sol [Line: 37](../tests/contract-playground/src/UnprotectedInitialize.sol#L37)

	```solidity
	    function initializeWithoutModifierOrRevert() external {
	```

- Found in src/UnprotectedInitialize.sol [Line: 70](../tests/contract-playground/src/UnprotectedInitialize.sol#L70)

	```solidity
	    function initializeWithoutProtection() external {
	```

</details>



## H-4: Unsafe Casting of integers

Downcasting int/uints in Solidity can be unsafe due to the potential for data loss and unintended behavior.When downcasting a larger integer type to a smaller one (e.g., uint256 to uint128), the value may exceed the range of the target type,leading to truncation and loss of significant digits. Use OpenZeppelin's SafeCast library to safely downcast integers.

<details><summary>94 Found Instances</summary>


- Found in src/Casting.sol [Line: 42](../tests/contract-playground/src/Casting.sol#L42)

	```solidity
	        uint248 b = uint248(a);
	```

- Found in src/Casting.sol [Line: 43](../tests/contract-playground/src/Casting.sol#L43)

	```solidity
	        uint240 c = uint240(b);
	```

- Found in src/Casting.sol [Line: 44](../tests/contract-playground/src/Casting.sol#L44)

	```solidity
	        uint232 d = uint232(c);
	```

- Found in src/Casting.sol [Line: 45](../tests/contract-playground/src/Casting.sol#L45)

	```solidity
	        uint224 e = uint224(d);
	```

- Found in src/Casting.sol [Line: 46](../tests/contract-playground/src/Casting.sol#L46)

	```solidity
	        uint216 f = uint216(e);
	```

- Found in src/Casting.sol [Line: 47](../tests/contract-playground/src/Casting.sol#L47)

	```solidity
	        uint208 g = uint208(f);
	```

- Found in src/Casting.sol [Line: 48](../tests/contract-playground/src/Casting.sol#L48)

	```solidity
	        uint200 h = uint200(g);
	```

- Found in src/Casting.sol [Line: 49](../tests/contract-playground/src/Casting.sol#L49)

	```solidity
	        uint192 i = uint192(h);
	```

- Found in src/Casting.sol [Line: 50](../tests/contract-playground/src/Casting.sol#L50)

	```solidity
	        uint184 j = uint184(i);
	```

- Found in src/Casting.sol [Line: 51](../tests/contract-playground/src/Casting.sol#L51)

	```solidity
	        uint176 k = uint176(j);
	```

- Found in src/Casting.sol [Line: 52](../tests/contract-playground/src/Casting.sol#L52)

	```solidity
	        uint168 l = uint168(k);
	```

- Found in src/Casting.sol [Line: 53](../tests/contract-playground/src/Casting.sol#L53)

	```solidity
	        uint160 m = uint160(l);
	```

- Found in src/Casting.sol [Line: 54](../tests/contract-playground/src/Casting.sol#L54)

	```solidity
	        uint152 n = uint152(m);
	```

- Found in src/Casting.sol [Line: 55](../tests/contract-playground/src/Casting.sol#L55)

	```solidity
	        uint144 o = uint144(n);
	```

- Found in src/Casting.sol [Line: 56](../tests/contract-playground/src/Casting.sol#L56)

	```solidity
	        uint136 p = uint136(o);
	```

- Found in src/Casting.sol [Line: 57](../tests/contract-playground/src/Casting.sol#L57)

	```solidity
	        uint128 q = uint128(p);
	```

- Found in src/Casting.sol [Line: 58](../tests/contract-playground/src/Casting.sol#L58)

	```solidity
	        uint120 r = uint120(q);
	```

- Found in src/Casting.sol [Line: 59](../tests/contract-playground/src/Casting.sol#L59)

	```solidity
	        uint112 s = uint112(r);
	```

- Found in src/Casting.sol [Line: 60](../tests/contract-playground/src/Casting.sol#L60)

	```solidity
	        uint104 t = uint104(s);
	```

- Found in src/Casting.sol [Line: 61](../tests/contract-playground/src/Casting.sol#L61)

	```solidity
	        uint96 u = uint96(t);
	```

- Found in src/Casting.sol [Line: 62](../tests/contract-playground/src/Casting.sol#L62)

	```solidity
	        uint88 v = uint88(u);
	```

- Found in src/Casting.sol [Line: 63](../tests/contract-playground/src/Casting.sol#L63)

	```solidity
	        uint80 w = uint80(v);
	```

- Found in src/Casting.sol [Line: 64](../tests/contract-playground/src/Casting.sol#L64)

	```solidity
	        uint72 x = uint72(w);
	```

- Found in src/Casting.sol [Line: 65](../tests/contract-playground/src/Casting.sol#L65)

	```solidity
	        uint64 y = uint64(x);
	```

- Found in src/Casting.sol [Line: 66](../tests/contract-playground/src/Casting.sol#L66)

	```solidity
	        uint56 z = uint56(y);
	```

- Found in src/Casting.sol [Line: 67](../tests/contract-playground/src/Casting.sol#L67)

	```solidity
	        uint48 aa = uint48(z);
	```

- Found in src/Casting.sol [Line: 68](../tests/contract-playground/src/Casting.sol#L68)

	```solidity
	        uint40 ab = uint40(aa);
	```

- Found in src/Casting.sol [Line: 69](../tests/contract-playground/src/Casting.sol#L69)

	```solidity
	        uint32 ac = uint32(ab);
	```

- Found in src/Casting.sol [Line: 70](../tests/contract-playground/src/Casting.sol#L70)

	```solidity
	        uint24 ad = uint24(ac);
	```

- Found in src/Casting.sol [Line: 71](../tests/contract-playground/src/Casting.sol#L71)

	```solidity
	        uint16 ae = uint16(ad);
	```

- Found in src/Casting.sol [Line: 72](../tests/contract-playground/src/Casting.sol#L72)

	```solidity
	        uint8Value = uint8(ae);
	```

- Found in src/Casting.sol [Line: 80](../tests/contract-playground/src/Casting.sol#L80)

	```solidity
	        int248 b = int248(a);
	```

- Found in src/Casting.sol [Line: 81](../tests/contract-playground/src/Casting.sol#L81)

	```solidity
	        int240 c = int240(b);
	```

- Found in src/Casting.sol [Line: 82](../tests/contract-playground/src/Casting.sol#L82)

	```solidity
	        int232 d = int232(c);
	```

- Found in src/Casting.sol [Line: 83](../tests/contract-playground/src/Casting.sol#L83)

	```solidity
	        int224 e = int224(d);
	```

- Found in src/Casting.sol [Line: 84](../tests/contract-playground/src/Casting.sol#L84)

	```solidity
	        int216 f = int216(e);
	```

- Found in src/Casting.sol [Line: 85](../tests/contract-playground/src/Casting.sol#L85)

	```solidity
	        int208 g = int208(f);
	```

- Found in src/Casting.sol [Line: 86](../tests/contract-playground/src/Casting.sol#L86)

	```solidity
	        int200 h = int200(g);
	```

- Found in src/Casting.sol [Line: 87](../tests/contract-playground/src/Casting.sol#L87)

	```solidity
	        int192 i = int192(h);
	```

- Found in src/Casting.sol [Line: 88](../tests/contract-playground/src/Casting.sol#L88)

	```solidity
	        int184 j = int184(i);
	```

- Found in src/Casting.sol [Line: 89](../tests/contract-playground/src/Casting.sol#L89)

	```solidity
	        int176 k = int176(j);
	```

- Found in src/Casting.sol [Line: 90](../tests/contract-playground/src/Casting.sol#L90)

	```solidity
	        int168 l = int168(k);
	```

- Found in src/Casting.sol [Line: 91](../tests/contract-playground/src/Casting.sol#L91)

	```solidity
	        int160 m = int160(l);
	```

- Found in src/Casting.sol [Line: 92](../tests/contract-playground/src/Casting.sol#L92)

	```solidity
	        int152 n = int152(m);
	```

- Found in src/Casting.sol [Line: 93](../tests/contract-playground/src/Casting.sol#L93)

	```solidity
	        int144 o = int144(n);
	```

- Found in src/Casting.sol [Line: 94](../tests/contract-playground/src/Casting.sol#L94)

	```solidity
	        int136 p = int136(o);
	```

- Found in src/Casting.sol [Line: 95](../tests/contract-playground/src/Casting.sol#L95)

	```solidity
	        int128 q = int128(p);
	```

- Found in src/Casting.sol [Line: 96](../tests/contract-playground/src/Casting.sol#L96)

	```solidity
	        int120 r = int120(q);
	```

- Found in src/Casting.sol [Line: 97](../tests/contract-playground/src/Casting.sol#L97)

	```solidity
	        int112 s = int112(r);
	```

- Found in src/Casting.sol [Line: 98](../tests/contract-playground/src/Casting.sol#L98)

	```solidity
	        int104 t = int104(s);
	```

- Found in src/Casting.sol [Line: 99](../tests/contract-playground/src/Casting.sol#L99)

	```solidity
	        int96 u = int96(t);
	```

- Found in src/Casting.sol [Line: 100](../tests/contract-playground/src/Casting.sol#L100)

	```solidity
	        int88 v = int88(u);
	```

- Found in src/Casting.sol [Line: 101](../tests/contract-playground/src/Casting.sol#L101)

	```solidity
	        int80 w = int80(v);
	```

- Found in src/Casting.sol [Line: 102](../tests/contract-playground/src/Casting.sol#L102)

	```solidity
	        int72 x = int72(w);
	```

- Found in src/Casting.sol [Line: 103](../tests/contract-playground/src/Casting.sol#L103)

	```solidity
	        int64 y = int64(x);
	```

- Found in src/Casting.sol [Line: 104](../tests/contract-playground/src/Casting.sol#L104)

	```solidity
	        int56 z = int56(y);
	```

- Found in src/Casting.sol [Line: 105](../tests/contract-playground/src/Casting.sol#L105)

	```solidity
	        int48 aa = int48(z);
	```

- Found in src/Casting.sol [Line: 106](../tests/contract-playground/src/Casting.sol#L106)

	```solidity
	        int40 ab = int40(aa);
	```

- Found in src/Casting.sol [Line: 107](../tests/contract-playground/src/Casting.sol#L107)

	```solidity
	        int32 ac = int32(ab);
	```

- Found in src/Casting.sol [Line: 108](../tests/contract-playground/src/Casting.sol#L108)

	```solidity
	        int24 ad = int24(ac);
	```

- Found in src/Casting.sol [Line: 109](../tests/contract-playground/src/Casting.sol#L109)

	```solidity
	        int16 ae = int16(ad);
	```

- Found in src/Casting.sol [Line: 110](../tests/contract-playground/src/Casting.sol#L110)

	```solidity
	        int8Value = int8(ae);
	```

- Found in src/Casting.sol [Line: 118](../tests/contract-playground/src/Casting.sol#L118)

	```solidity
	        bytes31 b = bytes31(a);
	```

- Found in src/Casting.sol [Line: 119](../tests/contract-playground/src/Casting.sol#L119)

	```solidity
	        bytes30 c = bytes30(b);
	```

- Found in src/Casting.sol [Line: 120](../tests/contract-playground/src/Casting.sol#L120)

	```solidity
	        bytes29 d = bytes29(c);
	```

- Found in src/Casting.sol [Line: 121](../tests/contract-playground/src/Casting.sol#L121)

	```solidity
	        bytes28 e = bytes28(d);
	```

- Found in src/Casting.sol [Line: 122](../tests/contract-playground/src/Casting.sol#L122)

	```solidity
	        bytes27 f = bytes27(e);
	```

- Found in src/Casting.sol [Line: 123](../tests/contract-playground/src/Casting.sol#L123)

	```solidity
	        bytes26 g = bytes26(f);
	```

- Found in src/Casting.sol [Line: 124](../tests/contract-playground/src/Casting.sol#L124)

	```solidity
	        bytes25 h = bytes25(g);
	```

- Found in src/Casting.sol [Line: 125](../tests/contract-playground/src/Casting.sol#L125)

	```solidity
	        bytes24 i = bytes24(h);
	```

- Found in src/Casting.sol [Line: 126](../tests/contract-playground/src/Casting.sol#L126)

	```solidity
	        bytes23 j = bytes23(i);
	```

- Found in src/Casting.sol [Line: 127](../tests/contract-playground/src/Casting.sol#L127)

	```solidity
	        bytes22 k = bytes22(j);
	```

- Found in src/Casting.sol [Line: 128](../tests/contract-playground/src/Casting.sol#L128)

	```solidity
	        bytes21 l = bytes21(k);
	```

- Found in src/Casting.sol [Line: 129](../tests/contract-playground/src/Casting.sol#L129)

	```solidity
	        bytes20 m = bytes20(l);
	```

- Found in src/Casting.sol [Line: 130](../tests/contract-playground/src/Casting.sol#L130)

	```solidity
	        bytes19 n = bytes19(m);
	```

- Found in src/Casting.sol [Line: 131](../tests/contract-playground/src/Casting.sol#L131)

	```solidity
	        bytes18 o = bytes18(n);
	```

- Found in src/Casting.sol [Line: 132](../tests/contract-playground/src/Casting.sol#L132)

	```solidity
	        bytes17 p = bytes17(o);
	```

- Found in src/Casting.sol [Line: 133](../tests/contract-playground/src/Casting.sol#L133)

	```solidity
	        bytes16 q = bytes16(p);
	```

- Found in src/Casting.sol [Line: 134](../tests/contract-playground/src/Casting.sol#L134)

	```solidity
	        bytes15 r = bytes15(q);
	```

- Found in src/Casting.sol [Line: 135](../tests/contract-playground/src/Casting.sol#L135)

	```solidity
	        bytes14 s = bytes14(r);
	```

- Found in src/Casting.sol [Line: 136](../tests/contract-playground/src/Casting.sol#L136)

	```solidity
	        bytes13 t = bytes13(s);
	```

- Found in src/Casting.sol [Line: 137](../tests/contract-playground/src/Casting.sol#L137)

	```solidity
	        bytes12 u = bytes12(t);
	```

- Found in src/Casting.sol [Line: 138](../tests/contract-playground/src/Casting.sol#L138)

	```solidity
	        bytes11 v = bytes11(u);
	```

- Found in src/Casting.sol [Line: 139](../tests/contract-playground/src/Casting.sol#L139)

	```solidity
	        bytes10 w = bytes10(v);
	```

- Found in src/Casting.sol [Line: 140](../tests/contract-playground/src/Casting.sol#L140)

	```solidity
	        bytes9 x = bytes9(w);
	```

- Found in src/Casting.sol [Line: 141](../tests/contract-playground/src/Casting.sol#L141)

	```solidity
	        bytes8 y = bytes8(x);
	```

- Found in src/Casting.sol [Line: 142](../tests/contract-playground/src/Casting.sol#L142)

	```solidity
	        bytes7 z = bytes7(y);
	```

- Found in src/Casting.sol [Line: 143](../tests/contract-playground/src/Casting.sol#L143)

	```solidity
	        bytes6 aa = bytes6(z);
	```

- Found in src/Casting.sol [Line: 144](../tests/contract-playground/src/Casting.sol#L144)

	```solidity
	        bytes5 ab = bytes5(aa);
	```

- Found in src/Casting.sol [Line: 145](../tests/contract-playground/src/Casting.sol#L145)

	```solidity
	        bytes4 ac = bytes4(ab);
	```

- Found in src/Casting.sol [Line: 146](../tests/contract-playground/src/Casting.sol#L146)

	```solidity
	        bytes3 ad = bytes3(ac);
	```

- Found in src/Casting.sol [Line: 147](../tests/contract-playground/src/Casting.sol#L147)

	```solidity
	        bytes2 ae = bytes2(ad);
	```

- Found in src/Casting.sol [Line: 148](../tests/contract-playground/src/Casting.sol#L148)

	```solidity
	        bytes1Value = bytes1(ae);
	```

- Found in src/Casting.sol [Line: 155](../tests/contract-playground/src/Casting.sol#L155)

	```solidity
	            return int128(result);
	```

</details>



## H-5: EnumerableSet.remove Corrupts Order

If the order of an EnumerableSet is required, removing items in a loop using `at` and `remove` corrupts this order.
Consider using a different data structure or removing items by collecting them during the loop, then removing after the loop.

<details><summary>5 Found Instances</summary>


- Found in src/EnumerableSetIteration.sol [Line: 31](../tests/contract-playground/src/EnumerableSetIteration.sol#L31)

	```solidity
	            bytes32Set.remove(thisBytes32);
	```

- Found in src/EnumerableSetIteration.sol [Line: 40](../tests/contract-playground/src/EnumerableSetIteration.sol#L40)

	```solidity
	            bytes32Set.remove(thisBytes32);
	```

- Found in src/EnumerableSetIteration.sol [Line: 50](../tests/contract-playground/src/EnumerableSetIteration.sol#L50)

	```solidity
	            bytes32Set.remove(thisBytes32);
	```

- Found in src/EnumerableSetIteration.sol [Line: 59](../tests/contract-playground/src/EnumerableSetIteration.sol#L59)

	```solidity
	            addressSet.remove(thisAddress);
	```

- Found in src/EnumerableSetIteration.sol [Line: 67](../tests/contract-playground/src/EnumerableSetIteration.sol#L67)

	```solidity
	            uintSet.remove(thisUint);
	```

</details>



## H-6: Experimental ABI Encoder

Experimental encoders should not be used in production. There are multiple known compiler bugs that are caused by the experimental encoder. Upgrade your solidity version to remove the need for experimental features.

<details><summary>1 Found Instances</summary>


- Found in src/ExperimentalEncoder.sol [Line: 2](../tests/contract-playground/src/ExperimentalEncoder.sol#L2)

	```solidity
	pragma experimental ABIEncoderV2;
	```

</details>



## H-7: Incorrect Assembly Shift Parameter Order

Example: `shl(shifted, 4)` will shift the right constant `4` by `a` bits. The correct order is `shl(4, shifted)`.

<details><summary>2 Found Instances</summary>


- Found in src/IncorrectShift.sol [Line: 7](../tests/contract-playground/src/IncorrectShift.sol#L7)

	```solidity
	            shifted := shr(shifted, 4) // BAD
	```

- Found in src/IncorrectShift.sol [Line: 8](../tests/contract-playground/src/IncorrectShift.sol#L8)

	```solidity
	            shifted := shl(shifted, 4) // BAD
	```

</details>



## H-8: Storage Array Edited with Memory

Storage reference is passed to a function with a memory parameter. This will not update the storage variable as expected. Consider using storage parameters instead.

<details><summary>1 Found Instances</summary>


- Found in src/StorageParameters.sol [Line: 11](../tests/contract-playground/src/StorageParameters.sol#L11)

	```solidity
	        editMemory(storageArray); // BAD LINE
	```

</details>



## H-9: Contract Has Multiple Constructors

In some versions of Solidity, contracts compile with multiple constructors. The first constructor takes precedence. This can lead to unexpected behavior.

<details><summary>1 Found Instances</summary>


- Found in src/MultipleConstructorSchemes.sol [Line: 3](../tests/contract-playground/src/MultipleConstructorSchemes.sol#L3)

	```solidity
	contract MultipleConstructorSchemes {
	```

</details>



## H-10: Contract Name Reused in Different Files

When compiling contracts with certain development frameworks (for example: Truffle), having contracts with the same name across different files can lead to one being overwritten.

<details><summary>26 Found Instances</summary>


- Found in src/EmitAfterExternalCall.sol [Line: 4](../tests/contract-playground/src/EmitAfterExternalCall.sol#L4)

	```solidity
	contract MaliciousActor {
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 4](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L4)

	```solidity
	contract MaliciousActor {
	```

- Found in src/Trump.sol [Line: 18](../tests/contract-playground/src/Trump.sol#L18)

	```solidity
	abstract contract Context {
	```

- Found in src/Trump.sol [Line: 24](../tests/contract-playground/src/Trump.sol#L24)

	```solidity
	interface IERC20 {
	```

- Found in src/Trump.sol [Line: 73](../tests/contract-playground/src/Trump.sol#L73)

	```solidity
	contract Ownable is Context {
	```

- Found in src/Trump.sol [Line: 103](../tests/contract-playground/src/Trump.sol#L103)

	```solidity
	interface IUniswapV2Router02 {
	```

- Found in src/ZeroAddressCheck.sol [Line: 4](../tests/contract-playground/src/ZeroAddressCheck.sol#L4)

	```solidity
	interface IERC20 {
	```

- Found in src/eth2/DepositContract.sol [Line: 44](../tests/contract-playground/src/eth2/DepositContract.sol#L44)

	```solidity
	interface ERC165 {
	```

- Found in src/nested/1/Nested.sol [Line: 7](../tests/contract-playground/src/nested/1/Nested.sol#L7)

	```solidity
	contract Nested {
	```

- Found in src/nested/2/Nested.sol [Line: 7](../tests/contract-playground/src/nested/2/Nested.sol#L7)

	```solidity
	contract Nested {
	```

- Found in src/reused_contract_name/ContractA.sol [Line: 4](../tests/contract-playground/src/reused_contract_name/ContractA.sol#L4)

	```solidity
	contract ReusedName {
	```

- Found in src/reused_contract_name/ContractB.sol [Line: 4](../tests/contract-playground/src/reused_contract_name/ContractB.sol#L4)

	```solidity
	contract ReusedName {
	```

- Found in src/router/ExternalCalls.sol [Line: 4](../tests/contract-playground/src/router/ExternalCalls.sol#L4)

	```solidity
	interface A {
	```

- Found in src/router/ExternalCalls.sol [Line: 8](../tests/contract-playground/src/router/ExternalCalls.sol#L8)

	```solidity
	contract B is A {
	```

- Found in src/router/ExternalCalls.sol [Line: 12](../tests/contract-playground/src/router/ExternalCalls.sol#L12)

	```solidity
	contract E is A {
	```

- Found in src/router/ExternalCalls.sol [Line: 31](../tests/contract-playground/src/router/ExternalCalls.sol#L31)

	```solidity
	abstract contract C {
	```

- Found in src/router/ExternalCalls.sol [Line: 35](../tests/contract-playground/src/router/ExternalCalls.sol#L35)

	```solidity
	contract D is C {
	```

- Found in src/router/ModifierCalls.sol [Line: 4](../tests/contract-playground/src/router/ModifierCalls.sol#L4)

	```solidity
	abstract contract A {
	```

- Found in src/router/ModifierCalls.sol [Line: 12](../tests/contract-playground/src/router/ModifierCalls.sol#L12)

	```solidity
	contract B is A {
	```

- Found in src/router/ModifierCalls.sol [Line: 28](../tests/contract-playground/src/router/ModifierCalls.sol#L28)

	```solidity
	contract C is B {
	```

- Found in src/router/ModifierCalls.sol [Line: 41](../tests/contract-playground/src/router/ModifierCalls.sol#L41)

	```solidity
	library D {
	```

- Found in src/router/VarOverridesFunction.sol [Line: 4](../tests/contract-playground/src/router/VarOverridesFunction.sol#L4)

	```solidity
	contract A {
	```

- Found in src/router/VarOverridesFunction.sol [Line: 9](../tests/contract-playground/src/router/VarOverridesFunction.sol#L9)

	```solidity
	contract B is A {
	```

- Found in src/router/VarOverridesFunction.sol [Line: 13](../tests/contract-playground/src/router/VarOverridesFunction.sol#L13)

	```solidity
	contract C is A {
	```

- Found in src/router/VarOverridesFunction.sol [Line: 17](../tests/contract-playground/src/router/VarOverridesFunction.sol#L17)

	```solidity
	contract D is A {
	```

- Found in src/router/VarOverridesFunction.sol [Line: 21](../tests/contract-playground/src/router/VarOverridesFunction.sol#L21)

	```solidity
	contract E is A {
	```

</details>



## H-11: Nested Structs in Mappings pre-0.5.0

Prior to updates in Solidity 0.5.0, public mappings with nested structs compiled, but produced incorrect values. Refrain from using these, or update to a more recent version of Solidity.

<details><summary>1 Found Instances</summary>


- Found in src/nested_mappings/NestedMappings.sol [Line: 17](../tests/contract-playground/src/nested_mappings/NestedMappings.sol#L17)

	```solidity
	    mapping(uint256 => structMain) public s_mapOfNestedStructs;
	```

</details>



## H-12: `selfdestruct` is Deprecated

Remove the `selfdestruct` instruction from the code.

<details><summary>1 Found Instances</summary>


- Found in src/UsingSelfdestruct.sol [Line: 7](../tests/contract-playground/src/UsingSelfdestruct.sol#L7)

	```solidity
	        selfdestruct(payable(sink));
	```

</details>



## H-13: Direct assignment of array length

If the length of a dynamic array (storage variable) is directly assigned to, it may allow access to other storage slots by tweaking it's value. This practice has been deprecated in newer Solidity versions

<details><summary>5 Found Instances</summary>


- Found in src/DynamicArrayLengthAssignment.sol [Line: 13](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L13)

	```solidity
			myArray.length = 200;
	```

- Found in src/DynamicArrayLengthAssignment.sol [Line: 14](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L14)

	```solidity
	        myArray2[7].length = 200;
	```

- Found in src/DynamicArrayLengthAssignment.sol [Line: 15](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L15)

	```solidity
	        myArray3[bytes("blah")][5].length = 100;
	```

- Found in src/DynamicArrayLengthAssignment.sol [Line: 16](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L16)

	```solidity
	        myArray4.length = 900;
	```

- Found in src/DynamicArrayLengthAssignment.sol [Line: 17](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L17)

	```solidity
	        myArray.length += 200;
	```

</details>



## H-14: Incorrect use of caret operator

The caret operator is usually mistakenly thought of as an exponentiation operator but actually, it's a bitwise xor operator.

<details><summary>5 Found Instances</summary>


- Found in src/IncorrectCaretOperator.sol [Line: 16](../tests/contract-playground/src/IncorrectCaretOperator.sol#L16)

	```solidity
	        uint256 x = 3^40 - 1;
	```

- Found in src/IncorrectCaretOperator.sol [Line: 17](../tests/contract-playground/src/IncorrectCaretOperator.sol#L17)

	```solidity
	        uint256 z = s_second^89 + 13;
	```

- Found in src/IncorrectCaretOperator.sol [Line: 18](../tests/contract-playground/src/IncorrectCaretOperator.sol#L18)

	```solidity
	        uint256 w = s_second^s_first + 13; 
	```

- Found in src/IncorrectCaretOperator.sol [Line: 19](../tests/contract-playground/src/IncorrectCaretOperator.sol#L19)

	```solidity
	        uint256 y = s_first ^ 100; // s_first is not a constant but, 100 is.
	```

- Found in src/IncorrectCaretOperator.sol [Line: 20](../tests/contract-playground/src/IncorrectCaretOperator.sol#L20)

	```solidity
	        uint256 p = s_third ^ 20;
	```

</details>



## H-15: Yul block contains `return`

This causes the transaction execution to halt, and nothing after that call will execute including code following the assembly block.

<details><summary>1 Found Instances</summary>


- Found in src/YulReturn.sol [Line: 8](../tests/contract-playground/src/YulReturn.sol#L8)

	```solidity
	            return(0, 0)
	```

</details>



## H-16: Shadowed State Variable

This vulnerability arises when a derived contract unintentionally shadows a state variable from a parent contract by declaring a variable with the same name. This can be misleading. To prevent this, ensure variable names are unique across the inheritance hierarchy or use proper visibility and scope controls.

<details><summary>1 Found Instances</summary>


- Found in src/StateShadowing.sol [Line: 15](../tests/contract-playground/src/StateShadowing.sol#L15)

	```solidity
	    address owner;
	```

</details>



## H-17: Unchecked `bool success` value for ETH send

The call `address(payable?).send(address)` may fail because of reasons like out-of-gas, invalid recipient address or revert from the recipient, but not revert the transaction. Therefore, the boolean returned by this function call must be checked to be `true` in order to verify that the transaction was successful.

<details><summary>1 Found Instances</summary>


- Found in src/UncheckedSend.sol [Line: 24](../tests/contract-playground/src/UncheckedSend.sol#L24)

	```solidity
	        recipient.send(amount); // parent of Send FunctionCall is Block (return value is unused)
	```

</details>



## H-18: Misused boolean with logical operators

The patterns `if (… || true)` and `if (.. && false)` will always evaluate to true and false respectively.

<details><summary>10 Found Instances</summary>


- Found in src/MisusedBoolean.sol [Line: 12](../tests/contract-playground/src/MisusedBoolean.sol#L12)

	```solidity
	        if (isEven(num) || true) {
	```

- Found in src/MisusedBoolean.sol [Line: 19](../tests/contract-playground/src/MisusedBoolean.sol#L19)

	```solidity
	        if (isEven(num) && false) {
	```

- Found in src/MisusedBoolean.sol [Line: 26](../tests/contract-playground/src/MisusedBoolean.sol#L26)

	```solidity
	        if (false && isEven(num)) {
	```

- Found in src/MisusedBoolean.sol [Line: 33](../tests/contract-playground/src/MisusedBoolean.sol#L33)

	```solidity
	        if (true || isEven(num)) {
	```

- Found in src/MisusedBoolean.sol [Line: 40](../tests/contract-playground/src/MisusedBoolean.sol#L40)

	```solidity
	        if (true) {
	```

- Found in src/MisusedBoolean.sol [Line: 47](../tests/contract-playground/src/MisusedBoolean.sol#L47)

	```solidity
	        if (false) {
	```

- Found in src/MisusedBoolean.sol [Line: 54](../tests/contract-playground/src/MisusedBoolean.sol#L54)

	```solidity
	        if (!false) {
	```

- Found in src/MisusedBoolean.sol [Line: 61](../tests/contract-playground/src/MisusedBoolean.sol#L61)

	```solidity
	        if (isEven(num) && !false) {
	```

- Found in src/MisusedBoolean.sol [Line: 68](../tests/contract-playground/src/MisusedBoolean.sol#L68)

	```solidity
	        if (isEven(num) && NO) {
	```

- Found in src/MisusedBoolean.sol [Line: 75](../tests/contract-playground/src/MisusedBoolean.sol#L75)

	```solidity
	        if (isEven(num) && !NO) {
	```

</details>



## H-19: ETH transferred without address checks

Consider introducing checks for `msg.sender` to ensure the recipient of the money is as intended.

<details><summary>27 Found Instances</summary>


- Found in src/ArbitraryTransferFrom.sol [Line: 23](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L23)

	```solidity
	    function bad2(address from, address to, uint256 amount) external {
	```

- Found in src/ArbitraryTransferFrom.sol [Line: 28](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L28)

	```solidity
	    function bad3(address from, address to, uint256 amount) external {
	```

- Found in src/ArbitraryTransferFrom.sol [Line: 37](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L37)

	```solidity
	    function good2(address to, uint256 amount) external {
	```

- Found in src/ArbitraryTransferFrom.sol [Line: 41](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L41)

	```solidity
	    function good3(address to, uint256 amount) external {
	```

- Found in src/ArbitraryTransferFrom.sol [Line: 45](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L45)

	```solidity
	    function good4(address to, uint256 amount) external {
	```

- Found in src/ArbitraryTransferFrom.sol [Line: 49](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L49)

	```solidity
	    function good5(address from, address to, uint256 amount) external {
	```

- Found in src/CallGraphTests.sol [Line: 38](../tests/contract-playground/src/CallGraphTests.sol#L38)

	```solidity
	    function enterTenthFloor2(address x) external passThroughNinthFloor2(x) {
	```

- Found in src/ContractLocksEther.sol [Line: 94](../tests/contract-playground/src/ContractLocksEther.sol#L94)

	```solidity
	    function takeEthBack(uint256 amount) external {
	```

- Found in src/ContractLocksEther.sol [Line: 131](../tests/contract-playground/src/ContractLocksEther.sol#L131)

	```solidity
	    function takeEthBack(uint256 amount) external {
	```

- Found in src/ContractLocksEther.sol [Line: 167](../tests/contract-playground/src/ContractLocksEther.sol#L167)

	```solidity
	    function takeEthBack(uint256 amount) external {
	```

- Found in src/ContractLocksEther.sol [Line: 194](../tests/contract-playground/src/ContractLocksEther.sol#L194)

	```solidity
	    function takeEthBack(uint256 amount) external {
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 16](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L16)

	```solidity
	    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) external {
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 26](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L26)

	```solidity
	    function safeApprove(IERC20 token, address spender, uint256 value) external {
	```

- Found in src/ExternalCalls.sol [Line: 67](../tests/contract-playground/src/ExternalCalls.sol#L67)

	```solidity
	    function ext9() external {
	```

- Found in src/OutOfOrderRetryable.sol [Line: 167](../tests/contract-playground/src/OutOfOrderRetryable.sol#L167)

	```solidity
	    function claim_rewards() public {
	```

- Found in src/OutOfOrderRetryable.sol [Line: 175](../tests/contract-playground/src/OutOfOrderRetryable.sol#L175)

	```solidity
	    function unstake() public {
	```

- Found in src/SendEtherNoChecks.sol [Line: 53](../tests/contract-playground/src/SendEtherNoChecks.sol#L53)

	```solidity
	    function func1(address x) external mod1(x) {
	```

- Found in src/SendEtherNoChecks.sol [Line: 77](../tests/contract-playground/src/SendEtherNoChecks.sol#L77)

	```solidity
	    function func1(address x) external mod1(x) {
	```

- Found in src/SendEtherNoChecks.sol [Line: 99](../tests/contract-playground/src/SendEtherNoChecks.sol#L99)

	```solidity
	    function func1(address x) external mod1(x) {
	```

- Found in src/Trump.sol [Line: 321](../tests/contract-playground/src/Trump.sol#L321)

	```solidity
	    function manualSend() external {
	```

- Found in src/UncheckedCalls.sol [Line: 6](../tests/contract-playground/src/UncheckedCalls.sol#L6)

	```solidity
	    function sendEther(address payable recipient) external payable {
	```

- Found in src/UncheckedCalls.sol [Line: 22](../tests/contract-playground/src/UncheckedCalls.sol#L22)

	```solidity
	    function testMultipleUncheckedCalls(address target) external payable {
	```

- Found in src/UncheckedSend.sol [Line: 6](../tests/contract-playground/src/UncheckedSend.sol#L6)

	```solidity
	    function send1(address payable recipient, uint256 amount) external {
	```

- Found in src/UncheckedSend.sol [Line: 12](../tests/contract-playground/src/UncheckedSend.sol#L12)

	```solidity
	    function send2(address payable recipient, uint256 amount) external {
	```

- Found in src/UncheckedSend.sol [Line: 17](../tests/contract-playground/src/UncheckedSend.sol#L17)

	```solidity
	    function send3(address payable recipient, uint256 amount) external returns(bool) {
	```

- Found in src/UncheckedSend.sol [Line: 22](../tests/contract-playground/src/UncheckedSend.sol#L22)

	```solidity
	    function send4(address payable recipient, uint256 amount) external {
	```

- Found in src/UninitializedStateVariable.sol [Line: 17](../tests/contract-playground/src/UninitializedStateVariable.sol#L17)

	```solidity
	    function transfer() payable public {
	```

</details>



## H-20: `delegatecall` to an Arbitrary Address

Making a `delegatecall` to an arbitrary address without any checks is dangerous. Consider adding requirements on the target address.

<details><summary>5 Found Instances</summary>


- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 15](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L15)

	```solidity
	    function delegate1(address to, bytes memory data) external {
	```

- Found in src/UncheckedCalls.sol [Line: 14](../tests/contract-playground/src/UncheckedCalls.sol#L14)

	```solidity
	    function delegateCallFunction(address target, bytes calldata data) external {
	```

- Found in src/UncheckedCalls.sol [Line: 22](../tests/contract-playground/src/UncheckedCalls.sol#L22)

	```solidity
	    function testMultipleUncheckedCalls(address target) external payable {
	```

- Found in src/auditor_mode/ExternalCalls.sol [Line: 38](../tests/contract-playground/src/auditor_mode/ExternalCalls.sol#L38)

	```solidity
	    function rawDelegateCallFromParameter(address myTarget, bytes calldata data) external returns (bytes memory) {
	```

- Found in src/inheritance/ExtendedInheritance.sol [Line: 14](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L14)

	```solidity
	    function doSomethingElse(address target) external {
	```

</details>



## H-21: Tautological comparison

The left hand side and the right hand side of the binary operation has the same value. This makes the condition always true or always false.

<details><summary>3 Found Instances</summary>


- Found in src/TautologicalCompare.sol [Line: 18](../tests/contract-playground/src/TautologicalCompare.sol#L18)

	```solidity
	        return (f >= 7);
	```

- Found in src/TautologicalCompare.sol [Line: 23](../tests/contract-playground/src/TautologicalCompare.sol#L23)

	```solidity
	        return (f < f);
	```

- Found in src/TautologicalCompare.sol [Line: 28](../tests/contract-playground/src/TautologicalCompare.sol#L28)

	```solidity
	        return (f < g);
	```

</details>



## H-22: RTLO character detected in file: \u{202e}

The right to left override character may be misleading and cause potential attacks by visually misordering method arguments.

<details><summary>1 Found Instances</summary>


- Found in src/RTLO.sol [Line: 3](../tests/contract-playground/src/RTLO.sol#L3)

	```solidity
	pragma solidity 0.6.4;
	```

</details>



## H-23: Dangerous unary operator

Potentially mistaken `=+` for `+=` or `=-` for `-=`. This acts as an assignment instead of an increment or decrement.Use the correct operator to increment or decrement a variable.

<details><summary>2 Found Instances</summary>


- Found in src/DangerousUnaryOperator.sol [Line: 12](../tests/contract-playground/src/DangerousUnaryOperator.sol#L12)

	```solidity
	        counter=+1; // BAD
	```

- Found in src/DangerousUnaryOperator.sol [Line: 13](../tests/contract-playground/src/DangerousUnaryOperator.sol#L13)

	```solidity
	        counter=-1; // BAD
	```

</details>



## H-24: Tautology or Contradiction in comparison

The condition has been determined to be either always true or always false due to the integer range in which we're operating.

<details><summary>3 Found Instances</summary>


- Found in src/EmitAfterExternalCall.sol [Line: 48](../tests/contract-playground/src/EmitAfterExternalCall.sol#L48)

	```solidity
	        for (uint256 i = 0; i < 0; ++i) {
	```

- Found in src/TautologyOrContradiction.sol [Line: 13](../tests/contract-playground/src/TautologyOrContradiction.sol#L13)

	```solidity
	        if (a > 258) {}
	```

- Found in src/TautologyOrContradiction.sol [Line: 16](../tests/contract-playground/src/TautologyOrContradiction.sol#L16)

	```solidity
	        if (map[67] < 0) {}
	```

</details>



## H-25: Dangerous strict equality checks on contract balances

A contract's balance can be forcibly manipulated by another selfdestructing contract. Therefore, it's recommended to use >, <, >= or <= instead of strict equality.

<details><summary>3 Found Instances</summary>


- Found in src/DangerousStrictEquality1.sol [Line: 6](../tests/contract-playground/src/DangerousStrictEquality1.sol#L6)

	```solidity
	        return this.balance == 100 ether;
	```

- Found in src/DangerousStrictEquality2.sol [Line: 6](../tests/contract-playground/src/DangerousStrictEquality2.sol#L6)

	```solidity
	        return address(this).balance == 100 ether;
	```

- Found in src/DangerousStrictEquality2.sol [Line: 10](../tests/contract-playground/src/DangerousStrictEquality2.sol#L10)

	```solidity
	        return payable(address(this)).balance == 100 ether;
	```

</details>



## H-26: Signed integer array in storage (solc `<0.5.10`)

solc versions 0.4.7-0.5.9 contain a compiler bug leading to incorrect values in signed integer arrays.Use solidity version 0.5.10 or above.

<details><summary>1 Found Instances</summary>


- Found in src/CompilerBugStorageSignedIntegerArray.sol [Line: 9](../tests/contract-playground/src/CompilerBugStorageSignedIntegerArray.sol#L9)

	```solidity
	        affectedArray = [-1, 5, 2];
	```

</details>



## H-27: Weak Randomness

The use of keccak256 hash functions on predictable values like block.timestamp, block.number, or similar data, including modulo operations on these values, should be avoided for generating randomness, as they are easily predictable and manipulable. The `PREVRANDAO` opcode also should not be used as a source of randomness. Instead, utilize Chainlink VRF for cryptographically secure and provably random values to ensure protocol integrity.

<details><summary>9 Found Instances</summary>


- Found in src/WeakRandomness.sol [Line: 6](../tests/contract-playground/src/WeakRandomness.sol#L6)

	```solidity
	        uint256 randomNumber = uint256(keccak256(abi.encodePacked(msg.sender, block.number, block.timestamp)));
	```

- Found in src/WeakRandomness.sol [Line: 11](../tests/contract-playground/src/WeakRandomness.sol#L11)

	```solidity
	        return uint256(keccak256(abi.encodePacked(block.number)));
	```

- Found in src/WeakRandomness.sol [Line: 16](../tests/contract-playground/src/WeakRandomness.sol#L16)

	```solidity
	        return uint256(keccak256(someBytes));
	```

- Found in src/WeakRandomness.sol [Line: 21](../tests/contract-playground/src/WeakRandomness.sol#L21)

	```solidity
	        return uint256(keccak256(someBytes));
	```

- Found in src/WeakRandomness.sol [Line: 25](../tests/contract-playground/src/WeakRandomness.sol#L25)

	```solidity
	        return block.timestamp % 10;
	```

- Found in src/WeakRandomness.sol [Line: 31](../tests/contract-playground/src/WeakRandomness.sol#L31)

	```solidity
	        return a % b;
	```

- Found in src/WeakRandomness.sol [Line: 35](../tests/contract-playground/src/WeakRandomness.sol#L35)

	```solidity
	        uint256 randomNumber = uint256(blockhash(block.number)) % 10;
	```

- Found in src/WeakRandomness.sol [Line: 41](../tests/contract-playground/src/WeakRandomness.sol#L41)

	```solidity
	        return hash % 10;
	```

- Found in src/WeakRandomness.sol [Line: 45](../tests/contract-playground/src/WeakRandomness.sol#L45)

	```solidity
	        uint256 randomNumber = block.prevrandao;
	```

</details>



## H-28: Usage of variable before declaration

Declare the variable before using it to avoid unintended consequences.

<details><summary>1 Found Instances</summary>


- Found in src/PreDeclaredVarUsage.sol [Line: 8](../tests/contract-playground/src/PreDeclaredVarUsage.sol#L8)

	```solidity
	        a = 100;
	```

</details>



## H-29: Deletion from a nested mapping

A deletion in a structure containing a mapping will not delete the mapping. The remaining data may be used to compromise the contract.

<details><summary>1 Found Instances</summary>


- Found in src/DeletionNestedMappingStructureContract.sol [Line: 17](../tests/contract-playground/src/DeletionNestedMappingStructureContract.sol#L17)

	```solidity
	        delete people[msg.sender];
	```

</details>



## H-30: Use of `tx.origin` for authentication

Using `tx.origin` may lead to problems when users are interacting via smart contract with your protocol. It is recommended to use `msg.sender` for authentication.

<details><summary>3 Found Instances</summary>


- Found in src/TxOriginUsedForAuth.sol [Line: 40](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L40)

	```solidity
	        if (tx.origin == owner) {
	```

- Found in src/TxOriginUsedForAuth.sol [Line: 51](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L51)

	```solidity
	        if (tx.origin == owner || authorizedUsers[tx.origin]) {
	```

- Found in src/TxOriginUsedForAuth.sol [Line: 59](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L59)

	```solidity
	        require(tx.origin == owner, "Not authorized to perform this action");
	```

</details>



## H-31: Loop contains `msg.value`

Provide an explicit array of amounts alongside the receivers array, and check that the sum of all amounts matches `msg.value`.

<details><summary>4 Found Instances</summary>


- Found in src/MsgValueInLoop.sol [Line: 12](../tests/contract-playground/src/MsgValueInLoop.sol#L12)

	```solidity
	        for (uint256 i = 0; i < receivers.length; i++) {
	```

- Found in src/MsgValueInLoop.sol [Line: 38](../tests/contract-playground/src/MsgValueInLoop.sol#L38)

	```solidity
	        for (uint256 i = 0; i < receivers.length; i++) {
	```

- Found in src/MsgValueInLoop.sol [Line: 54](../tests/contract-playground/src/MsgValueInLoop.sol#L54)

	```solidity
	        while (i < receivers.length) {
	```

- Found in src/MsgValueInLoop.sol [Line: 71](../tests/contract-playground/src/MsgValueInLoop.sol#L71)

	```solidity
	        do {
	```

</details>



## H-32: Contract locks Ether without a withdraw function

It appears that the contract includes a payable function to accept Ether but lacks a corresponding function to withdraw it, which leads to the Ether being locked in the contract. To resolve this issue, please implement a public or external function that allows for the withdrawal of Ether from the contract.

<details><summary>15 Found Instances</summary>


- Found in src/ContractLocksEther.sol [Line: 5](../tests/contract-playground/src/ContractLocksEther.sol#L5)

	```solidity
	contract NoWithdraw {
	```

- Found in src/ContractLocksEther.sol [Line: 31](../tests/contract-playground/src/ContractLocksEther.sol#L31)

	```solidity
	contract NoWithdraw2 {
	```

- Found in src/EmptyBlocks.sol [Line: 20](../tests/contract-playground/src/EmptyBlocks.sol#L20)

	```solidity
	contract EmptyBlocksNestedInReceiverAndFallbacks {
	```

- Found in src/EmptyBlocks.sol [Line: 44](../tests/contract-playground/src/EmptyBlocks.sol#L44)

	```solidity
	contract EmptyBlocks {
	```

- Found in src/ExternalCalls.sol [Line: 8](../tests/contract-playground/src/ExternalCalls.sol#L8)

	```solidity
	contract MyTarget is IMyTarget {
	```

- Found in src/MsgValueInLoop.sol [Line: 7](../tests/contract-playground/src/MsgValueInLoop.sol#L7)

	```solidity
	contract MsgValueInLoop1 {
	```

- Found in src/MsgValueInLoop.sol [Line: 19](../tests/contract-playground/src/MsgValueInLoop.sol#L19)

	```solidity
	contract MsgValueOutsideLoop {
	```

- Found in src/MsgValueInLoop.sol [Line: 33](../tests/contract-playground/src/MsgValueInLoop.sol#L33)

	```solidity
	contract MsgValueInLoop2 {
	```

- Found in src/MsgValueInLoop.sol [Line: 48](../tests/contract-playground/src/MsgValueInLoop.sol#L48)

	```solidity
	contract MsgValueInLoop3 {
	```

- Found in src/MsgValueInLoop.sol [Line: 65](../tests/contract-playground/src/MsgValueInLoop.sol#L65)

	```solidity
	contract MsgValueInLoop4 {
	```

- Found in src/OutOfOrderRetryable.sol [Line: 38](../tests/contract-playground/src/OutOfOrderRetryable.sol#L38)

	```solidity
	contract L1 {
	```

- Found in src/eth2/DepositContract.sol [Line: 58](../tests/contract-playground/src/eth2/DepositContract.sol#L58)

	```solidity
	contract DepositContract is IDepositContract, ERC165 {
	```

- Found in src/router/FallbackAndReceiveOverrides.sol [Line: 4](../tests/contract-playground/src/router/FallbackAndReceiveOverrides.sol#L4)

	```solidity
	contract A {
	```

- Found in src/router/FallbackAndReceiveOverrides.sol [Line: 10](../tests/contract-playground/src/router/FallbackAndReceiveOverrides.sol#L10)

	```solidity
	contract B is A {
	```

- Found in src/router/FallbackAndReceiveOverrides.sol [Line: 14](../tests/contract-playground/src/router/FallbackAndReceiveOverrides.sol#L14)

	```solidity
	contract C is A {}
	```

</details>



## H-33: Incorrect ERC721 interface

Incorrect return values for ERC721 functions. A contract compiled with Solidity > 0.4.22 interacting with these functions will fail to execute them, as the return value is missing. Set the appropriate return values and types for the defined ERC721 functions.

<details><summary>8 Found Instances</summary>


- Found in src/IncorrectERC721.sol [Line: 14](../tests/contract-playground/src/IncorrectERC721.sol#L14)

	```solidity
	    function balanceOf(address owner) external view returns (uint72) {
	```

- Found in src/IncorrectERC721.sol [Line: 18](../tests/contract-playground/src/IncorrectERC721.sol#L18)

	```solidity
	    function ownerOf(uint256 tokenId) public view returns (bytes4) {
	```

- Found in src/IncorrectERC721.sol [Line: 22](../tests/contract-playground/src/IncorrectERC721.sol#L22)

	```solidity
	    function approve(
	```

- Found in src/IncorrectERC721.sol [Line: 37](../tests/contract-playground/src/IncorrectERC721.sol#L37)

	```solidity
	    function getApproved(uint256 tokenId) external view returns (uint72) {
	```

- Found in src/IncorrectERC721.sol [Line: 41](../tests/contract-playground/src/IncorrectERC721.sol#L41)

	```solidity
	    function setApprovalForAll(
	```

- Found in src/IncorrectERC721.sol [Line: 49](../tests/contract-playground/src/IncorrectERC721.sol#L49)

	```solidity
	    function isApprovedForAll(
	```

- Found in src/IncorrectERC721.sol [Line: 56](../tests/contract-playground/src/IncorrectERC721.sol#L56)

	```solidity
	    function transferFrom(
	```

- Found in src/IncorrectERC721.sol [Line: 71](../tests/contract-playground/src/IncorrectERC721.sol#L71)

	```solidity
	    function safeTransferFrom(
	```

</details>



## H-34: Incorrect ERC20 interface

Incorrect return values for ERC20 functions. A contract compiled with Solidity > 0.4.22 interacting with these functions will fail to execute them, as the return value is missing. Set the appropriate return values and types for the defined ERC20 functions.

<details><summary>5 Found Instances</summary>


- Found in src/IncorrectERC20.sol [Line: 17](../tests/contract-playground/src/IncorrectERC20.sol#L17)

	```solidity
	    function transfer(address to, uint256 value) public {
	```

- Found in src/IncorrectERC20.sol [Line: 23](../tests/contract-playground/src/IncorrectERC20.sol#L23)

	```solidity
	    function approve(address spender, uint256 value) public {
	```

- Found in src/IncorrectERC20.sol [Line: 27](../tests/contract-playground/src/IncorrectERC20.sol#L27)

	```solidity
	    function transferFrom(address from, address to, uint256 value) public {
	```

- Found in src/IncorrectERC20.sol [Line: 35](../tests/contract-playground/src/IncorrectERC20.sol#L35)

	```solidity
	    function balanceOf(address account) public pure returns (address) {
	```

- Found in src/IncorrectERC20.sol [Line: 39](../tests/contract-playground/src/IncorrectERC20.sol#L39)

	```solidity
	    function allowance(
	```

</details>



## H-35: Out of Order Retryable Transaction

Do not rely on the order or successful execution of retryable tickets. Functions like createRetryableTicket, outboundTransferCustomRefund, unsafeCreateRetryableTicket are free to be re-tried in any
            order if they fail in the first go. Since this operation happens off chain, the sequencer is in control of the
            order of these transactions. Therefore, restrict the use to at most 1 ticket call per function.

<details><summary>2 Found Instances</summary>


- Found in src/OutOfOrderRetryable.sol [Line: 63](../tests/contract-playground/src/OutOfOrderRetryable.sol#L63)

	```solidity
	    function doStuffOnL2() external {
	```

- Found in src/OutOfOrderRetryable.sol [Line: 90](../tests/contract-playground/src/OutOfOrderRetryable.sol#L90)

	```solidity
	    function doStuffOnL2Alternative() external {
	```

</details>



## H-36: Constant functions changes state

Function is declared constant/view but it changes state. Ensure that the attributes of contract compiled prior to 0.5 are correct.

<details><summary>1 Found Instances</summary>


- Found in src/ConstFuncChangeState.sol [Line: 8](../tests/contract-playground/src/ConstFuncChangeState.sol#L8)

	```solidity
	    function changeState() public view returns (uint) {
	```

</details>



## H-37: Function Selector Collision

Function selector collides with other functions. This may cause the solidity function dispatcher to invoke the wrong function if the functions happen to be included in the same contract through an inheritance hierarchy later down the line. It is recommended to rename this function or change its parameters.

<details><summary>2 Found Instances</summary>


- Found in src/FunctionSignatureCollision.sol [Line: 7](../tests/contract-playground/src/FunctionSignatureCollision.sol#L7)

	collides with the following function name(s) in scope: OwnerTransferV7b711143
	```solidity
	    function withdraw(uint256) external {
	```

- Found in src/FunctionSignatureCollision.sol [Line: 13](../tests/contract-playground/src/FunctionSignatureCollision.sol#L13)

	collides with the following function name(s) in scope: withdraw
	```solidity
	    function OwnerTransferV7b711143(uint256) external {
	```

</details>



## H-38: Unchecked Low level calls

The return value of the low-level call is not checked, so if the call fails, the Ether will be locked in the contract. If the low level is used to prevent blocking operations, consider logging failed calls. Ensure that the return value of a low-level call is checked or logged.

<details><summary>14 Found Instances</summary>


- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 16](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L16)

	```solidity
	        to.delegatecall(data); // `to` is not protected, therefore BAD
	```

- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 20](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L20)

	```solidity
	        manager.delegatecall(data); // `manager` is state variable, therefore GOOD
	```

- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 36](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L36)

	```solidity
	        to.delegatecall(data); // `to` is protected, therefore GOOD
	```

- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 42](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L42)

	```solidity
	            to.delegatecall(data);
	```

- Found in src/UncheckedCalls.sol [Line: 7](../tests/contract-playground/src/UncheckedCalls.sol#L7)

	```solidity
	        recipient.call{value: 100}("");
	```

- Found in src/UncheckedCalls.sol [Line: 11](../tests/contract-playground/src/UncheckedCalls.sol#L11)

	```solidity
	        target.call(data);
	```

- Found in src/UncheckedCalls.sol [Line: 15](../tests/contract-playground/src/UncheckedCalls.sol#L15)

	```solidity
	        target.delegatecall(data);
	```

- Found in src/UncheckedCalls.sol [Line: 19](../tests/contract-playground/src/UncheckedCalls.sol#L19)

	```solidity
	        target.staticcall(data);
	```

- Found in src/UncheckedCalls.sol [Line: 23](../tests/contract-playground/src/UncheckedCalls.sol#L23)

	```solidity
	        target.call{value: 100}("");
	```

- Found in src/UncheckedCalls.sol [Line: 25](../tests/contract-playground/src/UncheckedCalls.sol#L25)

	```solidity
	        target.call(abi.encodeWithSignature("someFunction(uint256)", 123));
	```

- Found in src/UncheckedCalls.sol [Line: 27](../tests/contract-playground/src/UncheckedCalls.sol#L27)

	```solidity
	        target.delegatecall(abi.encodeWithSignature("someOtherFunction(address)", msg.sender));
	```

- Found in src/UncheckedCalls.sol [Line: 29](../tests/contract-playground/src/UncheckedCalls.sol#L29)

	```solidity
	        target.staticcall(abi.encodeWithSignature("aViewFunction()"));
	```

- Found in src/UncheckedCalls.sol [Line: 34](../tests/contract-playground/src/UncheckedCalls.sol#L34)

	```solidity
	        dst.call.value(100)("");
	```

- Found in src/inheritance/ExtendedInheritance.sol [Line: 16](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L16)

	```solidity
	            target.delegatecall(abi.encodeWithSignature("doSomething(uint256)", i));
	```

</details>



## H-39: Reentrancy: State change after external call

Changing state after an external call can lead to re-entrancy attacks.Use the checks-effects-interactions pattern to avoid this issue.

<details><summary>7 Found Instances</summary>


- Found in src/StateChangeAfterExternalCall.sol [Line: 24](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L24)

	State is changed at: `s_useMe += 1`
	```solidity
	        s_actor.hello();
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 33](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L33)

	State is changed at: `s_useMe -= 1`
	```solidity
	        s_actor.hello();
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 52](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L52)

	State is changed at: `s_useMe += 4`
	```solidity
	            s_actor.hello();
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 82](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L82)

	State is changed at: `s_useMe += 1`
	```solidity
	        s_actor.hello();
	```

- Found in src/Trump.sol [Line: 342](../tests/contract-playground/src/Trump.sol#L342)

	State is changed at: `swapEnabled = true`, `tradingOpen = true`, `firstBlock = block.number`
	```solidity
	        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
	```

- Found in src/Trump.sol [Line: 343](../tests/contract-playground/src/Trump.sol#L343)

	State is changed at: `swapEnabled = true`, `tradingOpen = true`, `firstBlock = block.number`
	```solidity
	        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
	```

- Found in src/Trump.sol [Line: 344](../tests/contract-playground/src/Trump.sol#L344)

	State is changed at: `swapEnabled = true`, `tradingOpen = true`, `firstBlock = block.number`
	```solidity
	        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
	```

</details>



# Low Issues

## L-1: `delegatecall` in loop

Using `delegatecall` in loop may consume excessive gas, or worse, lead to more severe issues.

<details><summary>1 Found Instances</summary>


- Found in src/inheritance/ExtendedInheritance.sol [Line: 15](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L15)

	```solidity
	        for (uint256 i = 0; i < 3; i++) {
	```

</details>



## L-2: Centralization Risk

Contracts have owners with privileged rights to perform admin tasks and need to be trusted to not perform malicious updates or drain funds.

<details><summary>23 Found Instances</summary>


- Found in src/AdminContract.sol [Line: 7](../tests/contract-playground/src/AdminContract.sol#L7)

	```solidity
	contract AdminContract is Ownable, ReentrancyGuard {
	```

- Found in src/AdminContract.sol [Line: 10](../tests/contract-playground/src/AdminContract.sol#L10)

	```solidity
	    function setOwner(address _owner) external onlyOwner nonReentrant {
	```

- Found in src/AdminContract.sol [Line: 14](../tests/contract-playground/src/AdminContract.sol#L14)

	```solidity
	    function someOtherImportantThing() external nonReentrant onlyOwner {
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 7](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L7)

	```solidity
	contract DeprecatedOZFunctions is AccessControl {
	```

- Found in src/EmptyBlocks.sol [Line: 6](../tests/contract-playground/src/EmptyBlocks.sol#L6)

	```solidity
	contract EmptyBlocksWithOwnableConstructor is Ownable {
	```

- Found in src/InternalFunctions.sol [Line: 12](../tests/contract-playground/src/InternalFunctions.sol#L12)

	```solidity
	    function setValue(uint256 _newValue) external onlyOwner {
	```

- Found in src/SendEtherNoChecksLibImport.sol [Line: 7](../tests/contract-playground/src/SendEtherNoChecksLibImport.sol#L7)

	```solidity
	contract SendEtherCheckOZOnlyOWner is Ownable, AccessControl {
	```

- Found in src/SendEtherNoChecksLibImport.sol [Line: 16](../tests/contract-playground/src/SendEtherNoChecksLibImport.sol#L16)

	```solidity
	    function send(address x) external onlyOwner {
	```

- Found in src/SendEtherNoChecksLibImport.sol [Line: 20](../tests/contract-playground/src/SendEtherNoChecksLibImport.sol#L20)

	```solidity
	    function sendWithRole(address x) external onlyRole(DEFAULT_ADMIN_ROLE) {
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 81](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L81)

	```solidity
	    function badSituation4() external onlyOwner {
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 87](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L87)

	```solidity
	    function goodSituation3() external onlyOwner {
	```

- Found in src/Trump.sol [Line: 92](../tests/contract-playground/src/Trump.sol#L92)

	```solidity
	    function renounceOwnership() public virtual onlyOwner {
	```

- Found in src/Trump.sol [Line: 123](../tests/contract-playground/src/Trump.sol#L123)

	```solidity
	contract MAGA is Context, IERC20, Ownable {
	```

- Found in src/Trump.sol [Line: 299](../tests/contract-playground/src/Trump.sol#L299)

	```solidity
	    function removeLimits() external onlyOwner{
	```

- Found in src/Trump.sol [Line: 338](../tests/contract-playground/src/Trump.sol#L338)

	```solidity
	    function openTrading() external onlyOwner() {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 9](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L9)

	```solidity
	contract OwnableExamples is Ownable {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 11](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L11)

	```solidity
	    function onlyOwnerFunction() external onlyOwner {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 35](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L35)

	```solidity
	contract AccessControlExamples is AccessControl {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 38](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L38)

	```solidity
	    function onlyRoleFunction() external onlyRole(ROLE) {
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 7](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L7)

	```solidity
	contract ParentChainContract is Ownable, ReentrancyGuard {
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 28](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L28)

	```solidity
	    function setOwner(address _owner) external onlyOwner nonReentrant {
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 32](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L32)

	```solidity
	    function someOtherImportantThing() external nonReentrant onlyOwner {
	```

</details>



## L-3: Solmate's SafeTransferLib

There is a subtle difference between the implementation of solmate's SafeTransferLib and OZ's SafeERC20: OZ's SafeERC20 checks if the token is a contract or not, solmate's SafeTransferLib does not.
https://github.com/transmissions11/solmate/blob/main/src/utils/SafeTransferLib.sol#L9 
`@dev Note that none of the functions in this library check that a token has code at all! That responsibility is delegated to the caller`


<details><summary>1 Found Instances</summary>


- Found in src/T11sTranferer.sol [Line: 4](../tests/contract-playground/src/T11sTranferer.sol#L4)

	```solidity
	import {ERC20, SafeTransferLib} from "../lib/solmate/src/utils/SafeTransferLib.sol";
	```

</details>



## L-4: `ecrecover` Signature Malleability

The `ecrecover` function is susceptible to signature malleability. This means that the same message can be signed in multiple ways, allowing an attacker to change the message signature without invalidating it. This can lead to unexpected behavior in smart contracts, such as the loss of funds or the ability to bypass access control. Consider using OpenZeppelin's ECDSA library instead of the built-in function.

<details><summary>1 Found Instances</summary>


- Found in src/inheritance/ExtendedInheritance.sol [Line: 22](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L22)

	```solidity
	        return ecrecover(theHash, v, r, s);
	```

</details>



## L-5: Deprecated OpenZeppelin Function

Openzeppelin has deprecated several functions and replaced with newer versions. Please consult https://docs.openzeppelin.com/

<details><summary>2 Found Instances</summary>


- Found in src/DeprecatedOZFunctions.sol [Line: 22](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L22)

	```solidity
	        _setupRole(role, account);
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 27](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L27)

	```solidity
	        token.safeApprove(spender, value);
	```

</details>



## L-6: Unsafe ERC20 Operation

ERC20 functions may not behave as expected. For example: return values are not always meaningful. It is recommended to use OpenZeppelin's SafeERC20 library.

<details><summary>20 Found Instances</summary>


- Found in src/ArbitraryTransferFrom.sol [Line: 19](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L19)

	```solidity
	        s_token.transferFrom(from, to, amount);
	```

- Found in src/ArbitraryTransferFrom.sol [Line: 34](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L34)

	```solidity
	        s_token.transferFrom(from_msgsender, to, am);
	```

- Found in src/ArbitraryTransferFrom.sol [Line: 54](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L54)

	```solidity
	        s_token.transferFrom(msg.sender, to, amount);
	```

- Found in src/ContractLocksEther.sol [Line: 162](../tests/contract-playground/src/ContractLocksEther.sol#L162)

	```solidity
	        recipient.transfer(amount);
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 32](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L32)

	```solidity
	        token.approve(spender, value);
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 37](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L37)

	```solidity
	        require(token.approve(spender, value));
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 38](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L38)

	```solidity
	        success = token.approve(spender, value);
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 42](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L42)

	```solidity
	        return token.approve(spender, value);
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 47](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L47)

	```solidity
	        token.transferFrom(from, to, value);
	```

- Found in src/IncorrectModifier.sol [Line: 83](../tests/contract-playground/src/IncorrectModifier.sol#L83)

	```solidity
	            payable(owner).transfer(USEME);
	```

- Found in src/OutOfOrderRetryable.sol [Line: 171](../tests/contract-playground/src/OutOfOrderRetryable.sol#L171)

	```solidity
	        payable(msg.sender).transfer(unclaimed_rewards);
	```

- Found in src/OutOfOrderRetryable.sol [Line: 180](../tests/contract-playground/src/OutOfOrderRetryable.sol#L180)

	```solidity
	        payable(msg.sender).transfer(user_balance);
	```

- Found in src/SendEtherNoChecks.sol [Line: 67](../tests/contract-playground/src/SendEtherNoChecks.sol#L67)

	```solidity
	        payable(x).transfer(BAL);
	```

- Found in src/StateShadowing.sol [Line: 22](../tests/contract-playground/src/StateShadowing.sol#L22)

	```solidity
	        msg.sender.transfer(address(this).balance);
	```

- Found in src/Trump.sol [Line: 309](../tests/contract-playground/src/Trump.sol#L309)

	```solidity
	        _taxWallet.transfer(taxWalletShare);
	```

- Found in src/Trump.sol [Line: 310](../tests/contract-playground/src/Trump.sol#L310)

	```solidity
	        _teamWallet.transfer(teamWalletShare);
	```

- Found in src/Trump.sol [Line: 318](../tests/contract-playground/src/Trump.sol#L318)

	```solidity
	        return IERC20(tokenAddress).transfer(_taxWallet, tokens);
	```

- Found in src/Trump.sol [Line: 324](../tests/contract-playground/src/Trump.sol#L324)

	```solidity
	        payable(_taxWallet).transfer(balance);
	```

- Found in src/Trump.sol [Line: 344](../tests/contract-playground/src/Trump.sol#L344)

	```solidity
	        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
	```

- Found in src/UninitializedStateVariable.sol [Line: 18](../tests/contract-playground/src/UninitializedStateVariable.sol#L18)

	```solidity
	        payable(destination).transfer(msg.value); // `destination` does not have any assignments.
	```

</details>



## L-7: Unspecific Solidity Pragma

Consider using a specific version of Solidity in your contracts instead of a wide version. For example, instead of `pragma solidity ^0.8.0;`, use `pragma solidity 0.8.0;`

<details><summary>36 Found Instances</summary>


- Found in src/BuiltinSymbolShadow.sol [Line: 2](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L2)

	```solidity
	pragma solidity ^0.4.0;
	```

- Found in src/CompilerBugStorageSignedIntegerArray.sol [Line: 2](../tests/contract-playground/src/CompilerBugStorageSignedIntegerArray.sol#L2)

	```solidity
	pragma solidity ^0.4.0;
	```

- Found in src/ConstFuncChangeState.sol [Line: 2](../tests/contract-playground/src/ConstFuncChangeState.sol#L2)

	```solidity
	pragma solidity ^0.4.0;
	```

- Found in src/ConstantFuncsAssembly.sol [Line: 2](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L2)

	```solidity
	pragma solidity ^0.4.0;
	```

- Found in src/ContractLocksEther.sol [Line: 2](../tests/contract-playground/src/ContractLocksEther.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/ContractWithTodo.sol [Line: 2](../tests/contract-playground/src/ContractWithTodo.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/CostlyOperationsInsideLoops.sol [Line: 2](../tests/contract-playground/src/CostlyOperationsInsideLoops.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/Counter.sol [Line: 2](../tests/contract-playground/src/Counter.sol#L2)

	```solidity
	pragma solidity ^0.8.13;
	```

- Found in src/CrazyPragma.sol [Line: 2](../tests/contract-playground/src/CrazyPragma.sol#L2)

	```solidity
	pragma solidity >=0.8.19 <0.9.1;
	```

- Found in src/DangerousStrictEquality1.sol [Line: 2](../tests/contract-playground/src/DangerousStrictEquality1.sol#L2)

	```solidity
	pragma solidity ^0.4.0;
	```

- Found in src/DangerousUnaryOperator.sol [Line: 2](../tests/contract-playground/src/DangerousUnaryOperator.sol#L2)

	```solidity
	pragma solidity ^0.4.0;
	```

- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 2](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L2)

	```solidity
	pragma solidity ^0.8;
	```

- Found in src/DeletionNestedMappingStructureContract.sol [Line: 2](../tests/contract-playground/src/DeletionNestedMappingStructureContract.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/FunctionInitializingState.sol [Line: 2](../tests/contract-playground/src/FunctionInitializingState.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/FunctionSignatureCollision.sol [Line: 2](../tests/contract-playground/src/FunctionSignatureCollision.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/InconsistentUints.sol [Line: 1](../tests/contract-playground/src/InconsistentUints.sol#L1)

	```solidity
	pragma solidity ^0.8.24;
	```

- Found in src/IncorrectERC20.sol [Line: 2](../tests/contract-playground/src/IncorrectERC20.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/IncorrectERC721.sol [Line: 2](../tests/contract-playground/src/IncorrectERC721.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/MsgValueInLoop.sol [Line: 2](../tests/contract-playground/src/MsgValueInLoop.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/OutOfOrderRetryable.sol [Line: 2](../tests/contract-playground/src/OutOfOrderRetryable.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/PragmaRange.sol [Line: 2](../tests/contract-playground/src/PragmaRange.sol#L2)

	```solidity
	pragma solidity >=0.5.0 <0.8.0;
	```

- Found in src/PreDeclaredVarUsage.sol [Line: 2](../tests/contract-playground/src/PreDeclaredVarUsage.sol#L2)

	```solidity
	pragma solidity ^0.4.0;
	```

- Found in src/RedundantStatements.sol [Line: 2](../tests/contract-playground/src/RedundantStatements.sol#L2)

	```solidity
	pragma solidity ^0.4.0;
	```

- Found in src/TautologyOrContradiction.sol [Line: 2](../tests/contract-playground/src/TautologyOrContradiction.sol#L2)

	```solidity
	pragma solidity ^0.5.0;
	```

- Found in src/TxOriginUsedForAuth.sol [Line: 2](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L2)

	```solidity
	pragma solidity ^0.8.20;
	```

- Found in src/UncheckedCalls.sol [Line: 2](../tests/contract-playground/src/UncheckedCalls.sol#L2)

	```solidity
	pragma solidity ^0.6.0;
	```

- Found in src/UncheckedSend.sol [Line: 2](../tests/contract-playground/src/UncheckedSend.sol#L2)

	```solidity
	pragma solidity ^0.7.0;
	```

- Found in src/UnusedStateVariables.sol [Line: 2](../tests/contract-playground/src/UnusedStateVariables.sol#L2)

	```solidity
	pragma solidity ^0.8.20;
	```

- Found in src/UsingSelfdestruct.sol [Line: 2](../tests/contract-playground/src/UsingSelfdestruct.sol#L2)

	```solidity
	pragma solidity ^0.6.0;
	```

- Found in src/VoidConstructor.sol [Line: 2](../tests/contract-playground/src/VoidConstructor.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 6](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L6)

	```solidity
	pragma solidity ^0.8.18;
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 6](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L6)

	```solidity
	pragma solidity >=0.8.0 <0.8.25; 
	```

- Found in src/inheritance/IContractInheritance.sol [Line: 2](../tests/contract-playground/src/inheritance/IContractInheritance.sol#L2)

	```solidity
	pragma solidity >=0.8.0;
	```

- Found in src/inheritance/InheritanceBase.sol [Line: 2](../tests/contract-playground/src/inheritance/InheritanceBase.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/nested_mappings/LaterVersion.sol [Line: 2](../tests/contract-playground/src/nested_mappings/LaterVersion.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/nested_mappings/NestedMappings.sol [Line: 2](../tests/contract-playground/src/nested_mappings/NestedMappings.sol#L2)

	```solidity
	pragma solidity ^0.4.25;
	```

</details>



## L-8: Address State Variable Set Without Checks

Check for `address(0)` when assigning values to address state variables.

<details><summary>12 Found Instances</summary>


- Found in src/ArbitraryTransferFrom.sol [Line: 12](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L12)

	```solidity
	        s_token = token;
	```

- Found in src/ExternalCalls.sol [Line: 20](../tests/contract-playground/src/ExternalCalls.sol#L20)

	```solidity
	        t2 = MyTarget(x);
	```

- Found in src/ExternalCalls.sol [Line: 28](../tests/contract-playground/src/ExternalCalls.sol#L28)

	```solidity
	        t1 = t;
	```

- Found in src/OutOfOrderRetryable.sol [Line: 54](../tests/contract-playground/src/OutOfOrderRetryable.sol#L54)

	```solidity
	        inbox = _inbox;
	```

- Found in src/OutOfOrderRetryable.sol [Line: 55](../tests/contract-playground/src/OutOfOrderRetryable.sol#L55)

	```solidity
	        l2contract = _l2contract;
	```

- Found in src/StateVariables.sol [Line: 58](../tests/contract-playground/src/StateVariables.sol#L58)

	```solidity
	        addr = newAddr;
	```

- Found in src/StateVariablesManipulation.sol [Line: 56](../tests/contract-playground/src/StateVariablesManipulation.sol#L56)

	```solidity
	        simpleAddress = d;
	```

- Found in src/ZeroAddressCheck.sol [Line: 43](../tests/contract-playground/src/ZeroAddressCheck.sol#L43)

	```solidity
	        addr = newAddr;
	```

- Found in src/ZeroAddressCheck.sol [Line: 47](../tests/contract-playground/src/ZeroAddressCheck.sol#L47)

	```solidity
	        token = newToken;
	```

- Found in src/ZeroAddressCheck.sol [Line: 51](../tests/contract-playground/src/ZeroAddressCheck.sol#L51)

	```solidity
	        token = IERC20(newAddr);
	```

- Found in src/inheritance/ExtendedInheritance.sol [Line: 18](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L18)

	```solidity
	        s_baseAddress = target;
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 11](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L11)

	```solidity
	        s_router = router;
	```

</details>



## L-9: Public Function Not Used Internally

If a function is marked public but is not used internally, consider marking it as `external`.

<details><summary>72 Found Instances</summary>


- Found in src/AderynIgnoreCustomDetectors.sol [Line: 7](../tests/contract-playground/src/AderynIgnoreCustomDetectors.sol#L7)

	```solidity
	    function f1() public {
	```

- Found in src/AderynIgnoreCustomDetectors.sol [Line: 26](../tests/contract-playground/src/AderynIgnoreCustomDetectors.sol#L26)

	```solidity
	    function f4() public {
	```

- Found in src/ArbitraryTransferFrom.sol [Line: 32](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L32)

	```solidity
	    function good1(address to, uint256 am) public {
	```

- Found in src/AssemblyExample.sol [Line: 6](../tests/contract-playground/src/AssemblyExample.sol#L6)

	```solidity
	    function f(uint x) public view returns (uint r) {
	```

- Found in src/AssertStateChange.sol [Line: 8](../tests/contract-playground/src/AssertStateChange.sol#L8)

	```solidity
	    function bad() public {
	```

- Found in src/AssertStateChange.sol [Line: 12](../tests/contract-playground/src/AssertStateChange.sol#L12)

	```solidity
	    function good() public {
	```

- Found in src/BuiltinSymbolShadow.sol [Line: 8](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L8)

	```solidity
	    function assert(bool condition) public {}
	```

- Found in src/ConstFuncChangeState.sol [Line: 8](../tests/contract-playground/src/ConstFuncChangeState.sol#L8)

	```solidity
	    function changeState() public view returns (uint) {
	```

- Found in src/ConstFuncChangeState.sol [Line: 14](../tests/contract-playground/src/ConstFuncChangeState.sol#L14)

	```solidity
	    function changeState2() public returns (uint) {
	```

- Found in src/ConstFuncChangeState.sol [Line: 20](../tests/contract-playground/src/ConstFuncChangeState.sol#L20)

	```solidity
	    function dontChangeState() public view returns (uint) {
	```

- Found in src/ContractLocksEther.sol [Line: 20](../tests/contract-playground/src/ContractLocksEther.sol#L20)

	```solidity
	    function getBalance() public view returns (uint256) {
	```

- Found in src/ContractLocksEther.sol [Line: 49](../tests/contract-playground/src/ContractLocksEther.sol#L49)

	```solidity
	    function getBalance() public view returns (uint256) {
	```

- Found in src/ContractLocksEther.sol [Line: 81](../tests/contract-playground/src/ContractLocksEther.sol#L81)

	```solidity
	    function getBalance() public view returns (uint256) {
	```

- Found in src/ContractLocksEther.sol [Line: 118](../tests/contract-playground/src/ContractLocksEther.sol#L118)

	```solidity
	    function getBalance() public view returns (uint256) {
	```

- Found in src/ContractLocksEther.sol [Line: 155](../tests/contract-playground/src/ContractLocksEther.sol#L155)

	```solidity
	    function getBalance() public view returns (uint256) {
	```

- Found in src/ContractLocksEther.sol [Line: 181](../tests/contract-playground/src/ContractLocksEther.sol#L181)

	```solidity
	    function getBalance() public view returns (uint256) {
	```

- Found in src/ContractWithTodo.sol [Line: 13](../tests/contract-playground/src/ContractWithTodo.sol#L13)

	```solidity
	    function toggleCompleted(uint _taskId) public {
	```

- Found in src/Counter.sol [Line: 7](../tests/contract-playground/src/Counter.sol#L7)

	```solidity
	    function setNumber(uint256 newNumber) public {
	```

- Found in src/ExternalCalls.sol [Line: 11](../tests/contract-playground/src/ExternalCalls.sol#L11)

	```solidity
	    function extCall(uint256 m_a) public payable {
	```

- Found in src/ExternalCalls.sol [Line: 19](../tests/contract-playground/src/ExternalCalls.sol#L19)

	```solidity
	    function baseThing(address x) public {
	```

- Found in src/IncorrectERC20.sol [Line: 17](../tests/contract-playground/src/IncorrectERC20.sol#L17)

	```solidity
	    function transfer(address to, uint256 value) public {
	```

- Found in src/IncorrectERC20.sol [Line: 23](../tests/contract-playground/src/IncorrectERC20.sol#L23)

	```solidity
	    function approve(address spender, uint256 value) public {
	```

- Found in src/IncorrectERC20.sol [Line: 27](../tests/contract-playground/src/IncorrectERC20.sol#L27)

	```solidity
	    function transferFrom(address from, address to, uint256 value) public {
	```

- Found in src/IncorrectERC20.sol [Line: 35](../tests/contract-playground/src/IncorrectERC20.sol#L35)

	```solidity
	    function balanceOf(address account) public pure returns (address) {
	```

- Found in src/IncorrectERC20.sol [Line: 39](../tests/contract-playground/src/IncorrectERC20.sol#L39)

	```solidity
	    function allowance(
	```

- Found in src/LocalVariableShadow.sol [Line: 10](../tests/contract-playground/src/LocalVariableShadow.sol#L10)

	```solidity
	    function sensitiveFunction(address owner) public view {
	```

- Found in src/LocalVariableShadow.sol [Line: 16](../tests/contract-playground/src/LocalVariableShadow.sol#L16)

	```solidity
	    function alternateSensitiveFunction() public view {
	```

- Found in src/LocalVariableShadow.sol [Line: 31](../tests/contract-playground/src/LocalVariableShadow.sol#L31)

	```solidity
	    function sensitiveFfunction(address roll) public view {
	```

- Found in src/OutOfOrderRetryable.sol [Line: 167](../tests/contract-playground/src/OutOfOrderRetryable.sol#L167)

	```solidity
	    function claim_rewards() public {
	```

- Found in src/OutOfOrderRetryable.sol [Line: 175](../tests/contract-playground/src/OutOfOrderRetryable.sol#L175)

	```solidity
	    function unstake() public {
	```

- Found in src/ReturnBomb.sol [Line: 16](../tests/contract-playground/src/ReturnBomb.sol#L16)

	```solidity
	    function oops(address badGuy) public {
	```

- Found in src/ReturnBomb.sol [Line: 32](../tests/contract-playground/src/ReturnBomb.sol#L32)

	```solidity
	    function oops(address badGuy) public {
	```

- Found in src/ReturnBomb.sol [Line: 47](../tests/contract-playground/src/ReturnBomb.sol#L47)

	```solidity
	    function oops(address badGuy) public {
	```

- Found in src/ReturnBomb.sol [Line: 63](../tests/contract-playground/src/ReturnBomb.sol#L63)

	```solidity
	    function oops() public {
	```

- Found in src/StateVariables.sol [Line: 47](../tests/contract-playground/src/StateVariables.sol#L47)

	```solidity
	    function setAddrNoZeroError(address newAddr) public {
	```

- Found in src/StateVariables.sol [Line: 52](../tests/contract-playground/src/StateVariables.sol#L52)

	```solidity
	    function setAddrNoZeroRequire(address newAddr) public {
	```

- Found in src/StateVariables.sol [Line: 57](../tests/contract-playground/src/StateVariables.sol#L57)

	```solidity
	    function setAddrNoCheck(address newAddr) public {
	```

- Found in src/StateVariables.sol [Line: 61](../tests/contract-playground/src/StateVariables.sol#L61)

	```solidity
	    function setEmptyAlteredNumbers(
	```

- Found in src/StateVariables.sol [Line: 71](../tests/contract-playground/src/StateVariables.sol#L71)

	```solidity
	    function setNonEmptyAlteredNumbers(
	```

- Found in src/Trump.sol [Line: 180](../tests/contract-playground/src/Trump.sol#L180)

	```solidity
	    function name() public pure returns (string memory) {
	```

- Found in src/Trump.sol [Line: 184](../tests/contract-playground/src/Trump.sol#L184)

	```solidity
	    function symbol() public pure returns (string memory) {
	```

- Found in src/Trump.sol [Line: 188](../tests/contract-playground/src/Trump.sol#L188)

	```solidity
	    function decimals() public pure returns (uint8) {
	```

- Found in src/UninitializedLocalVariables.sol [Line: 7](../tests/contract-playground/src/UninitializedLocalVariables.sol#L7)

	```solidity
	    function testAllDataTypesBAD() public pure {
	```

- Found in src/UninitializedLocalVariables.sol [Line: 23](../tests/contract-playground/src/UninitializedLocalVariables.sol#L23)

	```solidity
	    function testAllDataTypesGOOD() public pure {
	```

- Found in src/UninitializedLocalVariables.sol [Line: 41](../tests/contract-playground/src/UninitializedLocalVariables.sol#L41)

	```solidity
	    function testAllDataTypes2() public pure {
	```

- Found in src/UninitializedStateVariable.sol [Line: 17](../tests/contract-playground/src/UninitializedStateVariable.sol#L17)

	```solidity
	    function transfer() payable public {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 16](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L16)

	```solidity
	    function onlyOwnerManualRequireCheck() public view {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 22](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L22)

	```solidity
	    function onlyOwnerManualIfRevertCheck() public view {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 45](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L45)

	```solidity
	    function onlyRoleManualRequireCheck() public view {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 53](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L53)

	```solidity
	    function onlyRoleManualIfRevertCheck() public view {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 71](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L71)

	```solidity
	    function onlyOwnerManualCheck() public view {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 77](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L77)

	```solidity
	    function onlyOwnerManualIfRevertCheck() public view {
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 31](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L31)

	```solidity
	    function foo(address bar) public pure {
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 38](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L38)

	```solidity
	    function emoji() public pure {
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 42](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L42)

	```solidity
	    function foo2(address bar) public pure {
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 31](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L31)

	```solidity
	    function foo(address bar) public pure {
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 38](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L38)

	```solidity
	    function foo2(address bar) public pure {
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 11](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L11)

	```solidity
	    function setNumber(uint256 newNumber) public {
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 15](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L15)

	```solidity
	    function increment(uint256 newNumber) public {
	```

- Found in src/router/ExternalCalls.sol [Line: 23](../tests/contract-playground/src/router/ExternalCalls.sol#L23)

	```solidity
	    function test(A a) public {
	```

- Found in src/router/ExternalCalls.sol [Line: 40](../tests/contract-playground/src/router/ExternalCalls.sol#L40)

	```solidity
	    function test(D d) public view {
	```

- Found in src/router/FallbackAndReceiveOverrides.sol [Line: 22](../tests/contract-playground/src/router/FallbackAndReceiveOverrides.sol#L22)

	```solidity
	    function test(FakeIt f) public {
	```

- Found in src/router/InternalCalls.sol [Line: 31](../tests/contract-playground/src/router/InternalCalls.sol#L31)

	```solidity
	    function main() public {
	```

- Found in src/router/InternalCalls.sol [Line: 46](../tests/contract-playground/src/router/InternalCalls.sol#L46)

	```solidity
	    function gcall() public {
	```

- Found in src/router/InternalCalls.sol [Line: 96](../tests/contract-playground/src/router/InternalCalls.sol#L96)

	```solidity
	    function aux1(uint256 a) public {}
	```

- Found in src/router/InternalCalls.sol [Line: 120](../tests/contract-playground/src/router/InternalCalls.sol#L120)

	```solidity
	    function main() public {
	```

- Found in src/router/InternalCalls.sol [Line: 161](../tests/contract-playground/src/router/InternalCalls.sol#L161)

	```solidity
	    function main() public {
	```

- Found in src/router/InternalCalls.sol [Line: 169](../tests/contract-playground/src/router/InternalCalls.sol#L169)

	```solidity
	    function main() public {
	```

- Found in src/router/InternalCalls.sol [Line: 177](../tests/contract-playground/src/router/InternalCalls.sol#L177)

	```solidity
	    function main() public {
	```

- Found in src/router/InternalCalls.sol [Line: 183](../tests/contract-playground/src/router/InternalCalls.sol#L183)

	```solidity
	    function help() public {
	```

- Found in src/router/ModifierCalls.sol [Line: 22](../tests/contract-playground/src/router/ModifierCalls.sol#L22)

	```solidity
	    function tree() public modify {
	```

- Found in src/router/ModifierCalls.sol [Line: 35](../tests/contract-playground/src/router/ModifierCalls.sol#L35)

	```solidity
	    function main() public B.modify modify {
	```

</details>



## L-10: Literal Instead of Constant

Define and use `constant` variables instead of using literals. If the same constant literal value is used multiple times, create a constant state variable and reference it throughout the contract.

<details><summary>81 Found Instances</summary>


- Found in src/AssertStateChange.sol [Line: 9](../tests/contract-playground/src/AssertStateChange.sol#L9)

	```solidity
	        assert((s_a += 1) > 10);
	```

- Found in src/AssertStateChange.sol [Line: 14](../tests/contract-playground/src/AssertStateChange.sol#L14)

	```solidity
	        assert(s_a > 10);
	```

- Found in src/BooleanEquality.sol [Line: 6](../tests/contract-playground/src/BooleanEquality.sol#L6)

	```solidity
	            return 100;
	```

- Found in src/BooleanEquality.sol [Line: 13](../tests/contract-playground/src/BooleanEquality.sol#L13)

	```solidity
	            return 200;
	```

- Found in src/BooleanEquality.sol [Line: 15](../tests/contract-playground/src/BooleanEquality.sol#L15)

	```solidity
	        return 130;
	```

- Found in src/BooleanEquality.sol [Line: 20](../tests/contract-playground/src/BooleanEquality.sol#L20)

	```solidity
	            return 100;
	```

- Found in src/BooleanEquality.sol [Line: 27](../tests/contract-playground/src/BooleanEquality.sol#L27)

	```solidity
	            return 200;
	```

- Found in src/BooleanEquality.sol [Line: 29](../tests/contract-playground/src/BooleanEquality.sol#L29)

	```solidity
	        return 130;
	```

- Found in src/CacheArrayLength.sol [Line: 26](../tests/contract-playground/src/CacheArrayLength.sol#L26)

	```solidity
	            array[i] = 100;
	```

- Found in src/CacheArrayLength.sol [Line: 27](../tests/contract-playground/src/CacheArrayLength.sol#L27)

	```solidity
	            array.push(100);
	```

- Found in src/CacheArrayLength.sol [Line: 36](../tests/contract-playground/src/CacheArrayLength.sol#L36)

	```solidity
	            array[i] = 100;
	```

- Found in src/CacheArrayLength.sol [Line: 37](../tests/contract-playground/src/CacheArrayLength.sol#L37)

	```solidity
	            array.push(100);
	```

- Found in src/Casting.sol [Line: 20](../tests/contract-playground/src/Casting.sol#L20)

	```solidity
	        uint256 a = 0x1234567890abcdef;
	```

- Found in src/Casting.sol [Line: 26](../tests/contract-playground/src/Casting.sol#L26)

	```solidity
	        int256 c = -0x1234567890abcdef;
	```

- Found in src/Casting.sol [Line: 38](../tests/contract-playground/src/Casting.sol#L38)

	```solidity
	        uint unspecificUint = 0x1234567890abcdef;
	```

- Found in src/Casting.sol [Line: 76](../tests/contract-playground/src/Casting.sol#L76)

	```solidity
	        int unspecificInt = -0x1234567890abcdef;
	```

- Found in src/CompilerBugStorageSignedIntegerArray.sol [Line: 9](../tests/contract-playground/src/CompilerBugStorageSignedIntegerArray.sol#L9)

	```solidity
	        affectedArray = [-1, 5, 2];
	```

- Found in src/CompilerBugStorageSignedIntegerArray.sol [Line: 14](../tests/contract-playground/src/CompilerBugStorageSignedIntegerArray.sol#L14)

	```solidity
	        unaffectedArray[1] = 5;
	```

- Found in src/ConstantsLiterals.sol [Line: 25](../tests/contract-playground/src/ConstantsLiterals.sol#L25)

	```solidity
	        uint multipleUseOfValue = 987;
	```

- Found in src/ConstantsLiterals.sol [Line: 26](../tests/contract-playground/src/ConstantsLiterals.sol#L26)

	```solidity
	        multipleUseOfValue = 987;
	```

- Found in src/ConstantsLiterals.sol [Line: 27](../tests/contract-playground/src/ConstantsLiterals.sol#L27)

	```solidity
	        uint multipleUseOfValue2 = 9876;
	```

- Found in src/ConstantsLiterals.sol [Line: 28](../tests/contract-playground/src/ConstantsLiterals.sol#L28)

	```solidity
	        multipleUseOfValue2 = 9876 + 1;
	```

- Found in src/ConstantsLiterals.sol [Line: 29](../tests/contract-playground/src/ConstantsLiterals.sol#L29)

	```solidity
	        address multipleUseOfAddress = 0x95222290DD7278Aa3Ddd389Cc1E1d165CC4BAfe5;
	```

- Found in src/ConstantsLiterals.sol [Line: 30](../tests/contract-playground/src/ConstantsLiterals.sol#L30)

	```solidity
	        multipleUseOfAddress = 0x95222290DD7278Aa3Ddd389Cc1E1d165CC4BAfe5;
	```

- Found in src/ConstantsLiterals.sol [Line: 31](../tests/contract-playground/src/ConstantsLiterals.sol#L31)

	```solidity
	        bytes32 multipleUseOfBytes32 = 0x8a1b3dbe6301650442bfa765d4de23775fc9a4ec4329ebb5995ec7f1e3777dc4;
	```

- Found in src/DangerousStrictEquality2.sol [Line: 6](../tests/contract-playground/src/DangerousStrictEquality2.sol#L6)

	```solidity
	        return address(this).balance == 100 ether;
	```

- Found in src/DangerousStrictEquality2.sol [Line: 10](../tests/contract-playground/src/DangerousStrictEquality2.sol#L10)

	```solidity
	        return payable(address(this)).balance == 100 ether;
	```

- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 24](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L24)

	```solidity
	        address[3] memory allowed = [address(1), address(2), address(3)];
	```

- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 26](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L26)

	```solidity
	        for (uint256 i = 0; i < 3; i++) {
	```

- Found in src/DynamicArrayLengthAssignment.sol [Line: 13](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L13)

	```solidity
			myArray.length = 200;
	```

- Found in src/DynamicArrayLengthAssignment.sol [Line: 14](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L14)

	```solidity
	        myArray2[7].length = 200;
	```

- Found in src/DynamicArrayLengthAssignment.sol [Line: 17](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L17)

	```solidity
	        myArray.length += 200;
	```

- Found in src/FunctionInitializingState.sol [Line: 23](../tests/contract-playground/src/FunctionInitializingState.sol#L23)

	```solidity
	            return 77;
	```

- Found in src/FunctionInitializingState.sol [Line: 26](../tests/contract-playground/src/FunctionInitializingState.sol#L26)

	```solidity
	        return 88;
	```

- Found in src/FunctionInitializingState.sol [Line: 34](../tests/contract-playground/src/FunctionInitializingState.sol#L34)

	```solidity
	            return 77;
	```

- Found in src/FunctionInitializingState.sol [Line: 37](../tests/contract-playground/src/FunctionInitializingState.sol#L37)

	```solidity
	        return 88;
	```

- Found in src/FunctionInitializingState.sol [Line: 42](../tests/contract-playground/src/FunctionInitializingState.sol#L42)

	```solidity
	        f = 1e10 * 1e12;
	```

- Found in src/FunctionInitializingState.sol [Line: 48](../tests/contract-playground/src/FunctionInitializingState.sol#L48)

	```solidity
	            f = 1e10 * 1e12;
	```

- Found in src/IncorrectCaretOperator.sol [Line: 17](../tests/contract-playground/src/IncorrectCaretOperator.sol#L17)

	```solidity
	        uint256 z = s_second^89 + 13;
	```

- Found in src/IncorrectCaretOperator.sol [Line: 18](../tests/contract-playground/src/IncorrectCaretOperator.sol#L18)

	```solidity
	        uint256 w = s_second^s_first + 13; 
	```

- Found in src/MultiplePlaceholders.sol [Line: 22](../tests/contract-playground/src/MultiplePlaceholders.sol#L22)

	```solidity
	        } else if (a + b < 100) {
	```

- Found in src/MultiplePlaceholders.sol [Line: 33](../tests/contract-playground/src/MultiplePlaceholders.sol#L33)

	```solidity
	        } else if (a + b < 100) {
	```

- Found in src/MultiplePlaceholders.sol [Line: 45](../tests/contract-playground/src/MultiplePlaceholders.sol#L45)

	```solidity
	        } else if (a + b < 100) {
	```

- Found in src/PreDeclaredVarUsage.sol [Line: 8](../tests/contract-playground/src/PreDeclaredVarUsage.sol#L8)

	```solidity
	        a = 100;
	```

- Found in src/PreDeclaredVarUsage.sol [Line: 9](../tests/contract-playground/src/PreDeclaredVarUsage.sol#L9)

	```solidity
	        uint b = 100; 
	```

- Found in src/RevertsAndRequriesInLoops.sol [Line: 10](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L10)

	```solidity
	        for (uint256 id = 0; id < 10; ++id) {
	```

- Found in src/RevertsAndRequriesInLoops.sol [Line: 17](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L17)

	```solidity
	        for (uint256 id = 0; id < 10; ++id) {
	```

- Found in src/RevertsAndRequriesInLoops.sol [Line: 26](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L26)

	```solidity
	        uint256[] memory failedIds = new uint256[](10);
	```

- Found in src/RevertsAndRequriesInLoops.sol [Line: 27](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L27)

	```solidity
	        for (uint256 id = 0; id < 10; ++id) {
	```

- Found in src/StateVariablesManipulation.sol [Line: 121](../tests/contract-playground/src/StateVariablesManipulation.sol#L121)

	```solidity
	        person = Person("Spiderman", 21);
	```

- Found in src/StateVariablesManipulation.sol [Line: 123](../tests/contract-playground/src/StateVariablesManipulation.sol#L123)

	```solidity
	        person2.age = 21;
	```

- Found in src/StateVariablesManipulation.sol [Line: 192](../tests/contract-playground/src/StateVariablesManipulation.sol#L192)

	```solidity
	        p.age = 200;
	```

- Found in src/StateVariablesManipulation.sol [Line: 202](../tests/contract-playground/src/StateVariablesManipulation.sol#L202)

	```solidity
	        p2.age = 200;
	```

- Found in src/StateVariablesManipulation.sol [Line: 233](../tests/contract-playground/src/StateVariablesManipulation.sol#L233)

	```solidity
	        uint256[5][1] memory m_allAges;
	```

- Found in src/StateVariablesManipulation.sol [Line: 237](../tests/contract-playground/src/StateVariablesManipulation.sol#L237)

	```solidity
	        m_person = Person("Spiderman", 21);
	```

- Found in src/StateVariablesManipulation.sol [Line: 239](../tests/contract-playground/src/StateVariablesManipulation.sol#L239)

	```solidity
	        m_person2.age = 21;
	```

- Found in src/StateVariablesManipulation.sol [Line: 244](../tests/contract-playground/src/StateVariablesManipulation.sol#L244)

	```solidity
	        Person memory m_dummy = Person("Spiderman", 21);
	```

- Found in src/StateVariablesManipulation.sol [Line: 258](../tests/contract-playground/src/StateVariablesManipulation.sol#L258)

	```solidity
	        uint256[5] storage ageRef1 = allAges[0];
	```

- Found in src/StateVariablesManipulation.sol [Line: 264](../tests/contract-playground/src/StateVariablesManipulation.sol#L264)

	```solidity
	        uint256[5] storage ageRef2 = allAges[0];
	```

- Found in src/StateVariablesManipulation.sol [Line: 333](../tests/contract-playground/src/StateVariablesManipulation.sol#L333)

	```solidity
	        p.some.push(102);
	```

- Found in src/StateVariablesManipulation.sol [Line: 339](../tests/contract-playground/src/StateVariablesManipulation.sol#L339)

	```solidity
	        that.push(102);
	```

- Found in src/Trump.sol [Line: 233](../tests/contract-playground/src/Trump.sol#L233)

	```solidity
	            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
	```

- Found in src/Trump.sol [Line: 250](../tests/contract-playground/src/Trump.sol#L250)

	```solidity
	                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
	```

- Found in src/Trump.sol [Line: 306](../tests/contract-playground/src/Trump.sol#L306)

	```solidity
	        uint256 taxWalletShare = amount * _taxWalletPercentage / 100;
	```

- Found in src/Trump.sol [Line: 307](../tests/contract-playground/src/Trump.sol#L307)

	```solidity
	        uint256 teamWalletShare = amount * _teamWalletPercentage / 100;
	```

- Found in src/UncheckedReturn.sol [Line: 27](../tests/contract-playground/src/UncheckedReturn.sol#L27)

	```solidity
	        UncheckedHelperExternal(address(0x12345)).two();
	```

- Found in src/UncheckedReturn.sol [Line: 32](../tests/contract-playground/src/UncheckedReturn.sol#L32)

	```solidity
	        uint256 _answer = UncheckedHelperExternal(address(0x12345)).two();
	```

- Found in src/UncheckedReturn.sol [Line: 37](../tests/contract-playground/src/UncheckedReturn.sol#L37)

	```solidity
	        require(UncheckedHelperExternal(address(0x12345)).two() == 2, "Not two");
	```

- Found in src/UncheckedReturn.sol [Line: 42](../tests/contract-playground/src/UncheckedReturn.sol#L42)

	```solidity
	        if (UncheckedHelperExternal(address(0x12345)).two() != 2) {
	```

- Found in src/UninitializedLocalVariables.sol [Line: 34](../tests/contract-playground/src/UninitializedLocalVariables.sol#L34)

	```solidity
	            0x0000000000000000000000000000000000000001
	```

- Found in src/UninitializedLocalVariables.sol [Line: 63](../tests/contract-playground/src/UninitializedLocalVariables.sol#L63)

	```solidity
	        delayedAddress = 0x0000000000000000000000000000000000000001;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 67](../tests/contract-playground/src/UninitializedLocalVariables.sol#L67)

	```solidity
	        delayedUintArray[0] = 21;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 70](../tests/contract-playground/src/UninitializedLocalVariables.sol#L70)

	```solidity
	        delayedIntArray[0] = -21;
	```

- Found in src/WeakRandomness.sol [Line: 25](../tests/contract-playground/src/WeakRandomness.sol#L25)

	```solidity
	        return block.timestamp % 10;
	```

- Found in src/WeakRandomness.sol [Line: 35](../tests/contract-playground/src/WeakRandomness.sol#L35)

	```solidity
	        uint256 randomNumber = uint256(blockhash(block.number)) % 10;
	```

- Found in src/WeakRandomness.sol [Line: 41](../tests/contract-playground/src/WeakRandomness.sol#L41)

	```solidity
	        return hash % 10;
	```

- Found in src/eth2/DepositContract.sol [Line: 113](../tests/contract-playground/src/eth2/DepositContract.sol#L113)

	```solidity
	            abi.encodePacked(sha256(abi.encodePacked(signature[:64])), sha256(abi.encodePacked(signature[64:], bytes32(0))))
	```

</details>



## L-11: Empty `require()` / `revert()` Statement

Use descriptive reason strings or custom errors for revert paths.

<details><summary>31 Found Instances</summary>


- Found in src/CallGraphTests.sol [Line: 7](../tests/contract-playground/src/CallGraphTests.sol#L7)

	```solidity
	        require(msg.sender == address(0x11));
	```

- Found in src/CallGraphTests.sol [Line: 28](../tests/contract-playground/src/CallGraphTests.sol#L28)

	```solidity
	            revert();
	```

- Found in src/CallGraphTests.sol [Line: 50](../tests/contract-playground/src/CallGraphTests.sol#L50)

	```solidity
	            revert();
	```

- Found in src/CallGraphTests.sol [Line: 65](../tests/contract-playground/src/CallGraphTests.sol#L65)

	```solidity
	        require(msg.sender == address(0x11));
	```

- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 31](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L31)

	```solidity
	        require(isLegit);
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 37](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L37)

	```solidity
	        require(token.approve(spender, value));
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 40](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L40)

	```solidity
	            revert();
	```

- Found in src/EmitAfterExternalCall.sol [Line: 18](../tests/contract-playground/src/EmitAfterExternalCall.sol#L18)

	```solidity
	        require(actor != address(0));
	```

- Found in src/ExternalCalls.sol [Line: 72](../tests/contract-playground/src/ExternalCalls.sol#L72)

	```solidity
	            revert();
	```

- Found in src/IncorrectModifier.sol [Line: 49](../tests/contract-playground/src/IncorrectModifier.sol#L49)

	```solidity
	            revert();
	```

- Found in src/LocalVariableShadow.sol [Line: 12](../tests/contract-playground/src/LocalVariableShadow.sol#L12)

	```solidity
	        require(owner == msg.sender);
	```

- Found in src/LocalVariableShadow.sol [Line: 19](../tests/contract-playground/src/LocalVariableShadow.sol#L19)

	```solidity
	        require(owner == msg.sender);
	```

- Found in src/LocalVariableShadow.sol [Line: 33](../tests/contract-playground/src/LocalVariableShadow.sol#L33)

	```solidity
	        require(roll == msg.sender);
	```

- Found in src/MultiplePlaceholders.sol [Line: 23](../tests/contract-playground/src/MultiplePlaceholders.sol#L23)

	```solidity
	            revert();
	```

- Found in src/MultiplePlaceholders.sol [Line: 34](../tests/contract-playground/src/MultiplePlaceholders.sol#L34)

	```solidity
	            revert();
	```

- Found in src/MultiplePlaceholders.sol [Line: 46](../tests/contract-playground/src/MultiplePlaceholders.sol#L46)

	```solidity
	            revert();
	```

- Found in src/RevertsAndRequriesInLoops.sol [Line: 19](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L19)

	```solidity
	                revert();
	```

- Found in src/SendEtherNoChecks.sol [Line: 12](../tests/contract-playground/src/SendEtherNoChecks.sol#L12)

	```solidity
	            revert();
	```

- Found in src/SendEtherNoChecks.sol [Line: 27](../tests/contract-playground/src/SendEtherNoChecks.sol#L27)

	```solidity
	        require(msg.sender == address(0x11));
	```

- Found in src/SendEtherNoChecks.sol [Line: 43](../tests/contract-playground/src/SendEtherNoChecks.sol#L43)

	```solidity
	            revert();
	```

- Found in src/SendEtherNoChecksLibImport.sol [Line: 12](../tests/contract-playground/src/SendEtherNoChecksLibImport.sol#L12)

	```solidity
	            revert();
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 17](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L17)

	```solidity
	        require(actor != address(0));
	```

- Found in src/StateShadowing.sol [Line: 8](../tests/contract-playground/src/StateShadowing.sol#L8)

	```solidity
	        require(owner == msg.sender);
	```

- Found in src/Trump.sol [Line: 240](../tests/contract-playground/src/Trump.sol#L240)

	```solidity
	                    require(!isContract(to));
	```

- Found in src/ZeroAddressCheck.sol [Line: 13](../tests/contract-playground/src/ZeroAddressCheck.sol#L13)

	```solidity
	        if (newAddr == address(0)) revert();
	```

- Found in src/ZeroAddressCheck.sol [Line: 23](../tests/contract-playground/src/ZeroAddressCheck.sol#L23)

	```solidity
	        if (newAddr == address(0)) revert();
	```

- Found in src/ZeroAddressCheck.sol [Line: 38](../tests/contract-playground/src/ZeroAddressCheck.sol#L38)

	```solidity
	        if (address(newToken) == address(0)) revert();
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 35](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L35)

	```solidity
	        require(bar != address(0));
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 56](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L56)

	```solidity
	        require(bar != address(0));
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 35](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L35)

	```solidity
	        require(bar != address(0));
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 53](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L53)

	```solidity
	        require(bar != address(0));
	```

</details>



## L-12: `nonReentrant` is Not the First Modifier

To protect against reentrancy in other modifiers, the `nonReentrant` modifier should be the first modifier in the list of modifiers.

<details><summary>2 Found Instances</summary>


- Found in src/AdminContract.sol [Line: 10](../tests/contract-playground/src/AdminContract.sol#L10)

	```solidity
	    function setOwner(address _owner) external onlyOwner nonReentrant {
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 28](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L28)

	```solidity
	    function setOwner(address _owner) external onlyOwner nonReentrant {
	```

</details>



## L-13: Using `block.timestamp` for swap deadline offers no protection

In the PoS model, proposers know well in advance if they will propose one or consecutive blocks ahead of time. In such a scenario, a malicious validator can hold back the transaction and execute it at a more favourable block number.Consider allowing function caller to specify swap deadline input parameter.

<details><summary>17 Found Instances</summary>


- Found in src/Trump.sol [Line: 290](../tests/contract-playground/src/Trump.sol#L290)

	```solidity
	        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 23](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L23)

	```solidity
	        router1.swapExactTokensForTokens(amountIn, amountOutMin, path, to, block.timestamp);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 24](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L24)

	```solidity
	        router1.swapTokensForExactTokens(amountOut, amountInMax, path, to, block.timestamp);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 25](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L25)

	```solidity
	        router1.swapExactETHForTokens(amountOutMin, path, to, block.timestamp);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 26](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L26)

	```solidity
	        router1.swapTokensForExactETH(amountOut, amountInMax, path, to, block.timestamp);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 27](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L27)

	```solidity
	        router1.swapExactTokensForETH(amountIn, amountOutMin, path, to, block.timestamp);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 31](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L31)

	```solidity
	        router2.swapExactTokensForTokensSupportingFeeOnTransferTokens(amountIn, amountOutMin, path, to, block.timestamp);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 32](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L32)

	```solidity
	        router2.swapExactETHForTokensSupportingFeeOnTransferTokens(amountOutMin, path, to, block.timestamp);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 33](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L33)

	```solidity
	        router2.swapExactTokensForETHSupportingFeeOnTransferTokens(amountIn, amountOutMin, path, to, block.timestamp);
	```

- Found in src/uniswap/UniswapV3Swapper.sol [Line: 52](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L52)

	```solidity
	        ExactInputSingleParams memory exactInputSingleParams = ExactInputSingleParams(
	```

- Found in src/uniswap/UniswapV3Swapper.sol [Line: 55](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L55)

	```solidity
	        exactInputSingleParams = ExactInputSingleParams({
	```

- Found in src/uniswap/UniswapV3Swapper.sol [Line: 66](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L66)

	```solidity
	        ExactInputParams memory exactInputParams = ExactInputParams(
	```

- Found in src/uniswap/UniswapV3Swapper.sol [Line: 69](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L69)

	```solidity
	        exactInputParams = ExactInputParams({
	```

- Found in src/uniswap/UniswapV3Swapper.sol [Line: 77](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L77)

	```solidity
	        ExactOutputSingleParams memory exactOutputSingleParams = ExactOutputSingleParams(
	```

- Found in src/uniswap/UniswapV3Swapper.sol [Line: 80](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L80)

	```solidity
	        exactOutputSingleParams = ExactOutputSingleParams({
	```

- Found in src/uniswap/UniswapV3Swapper.sol [Line: 91](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L91)

	```solidity
	        ExactOutputParams memory exactOutputParams = ExactOutputParams(
	```

- Found in src/uniswap/UniswapV3Swapper.sol [Line: 94](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L94)

	```solidity
	        exactOutputParams = ExactOutputParams({
	```

</details>



## L-14: Unsafe `ERC721::_mint()`

Using `ERC721::_mint()` can mint ERC721 tokens to addresses which don't support ERC721 tokens. Use `_safeMint()` instead of `_mint()` for ERC721 tokens.

<details><summary>1 Found Instances</summary>


- Found in src/UnsafeERC721Mint.sol [Line: 12](../tests/contract-playground/src/UnsafeERC721Mint.sol#L12)

	```solidity
	        _mint(to, tokenId);
	```

</details>



## L-15: PUSH0 Opcode

Solc compiler version 0.8.20 switches the default target EVM version to Shanghai, which means that the generated bytecode will include PUSH0 opcodes. Be sure to select the appropriate EVM version in case you intend to deploy on a chain other than mainnet like L2 chains that may not support PUSH0, otherwise deployment of your contracts will fail.

<details><summary>45 Found Instances</summary>


- Found in src/AdminContract.sol [Line: 2](../tests/contract-playground/src/AdminContract.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/AssertStateChange.sol [Line: 2](../tests/contract-playground/src/AssertStateChange.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/CacheArrayLength.sol [Line: 2](../tests/contract-playground/src/CacheArrayLength.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/ContractLocksEther.sol [Line: 2](../tests/contract-playground/src/ContractLocksEther.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/ContractWithTodo.sol [Line: 2](../tests/contract-playground/src/ContractWithTodo.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/CostlyOperationsInsideLoops.sol [Line: 2](../tests/contract-playground/src/CostlyOperationsInsideLoops.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/Counter.sol [Line: 2](../tests/contract-playground/src/Counter.sol#L2)

	```solidity
	pragma solidity ^0.8.13;
	```

- Found in src/CrazyPragma.sol [Line: 2](../tests/contract-playground/src/CrazyPragma.sol#L2)

	```solidity
	pragma solidity >=0.8.19 <0.9.1;
	```

- Found in src/DangerousStrictEquality2.sol [Line: 2](../tests/contract-playground/src/DangerousStrictEquality2.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 2](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L2)

	```solidity
	pragma solidity ^0.8;
	```

- Found in src/DeletionNestedMappingStructureContract.sol [Line: 2](../tests/contract-playground/src/DeletionNestedMappingStructureContract.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 2](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/FunctionInitializingState.sol [Line: 2](../tests/contract-playground/src/FunctionInitializingState.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/FunctionSignatureCollision.sol [Line: 2](../tests/contract-playground/src/FunctionSignatureCollision.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/InconsistentUints.sol [Line: 1](../tests/contract-playground/src/InconsistentUints.sol#L1)

	```solidity
	pragma solidity ^0.8.24;
	```

- Found in src/IncorrectERC20.sol [Line: 2](../tests/contract-playground/src/IncorrectERC20.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/IncorrectERC721.sol [Line: 2](../tests/contract-playground/src/IncorrectERC721.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/KeccakContract.sol [Line: 2](../tests/contract-playground/src/KeccakContract.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/MsgValueInLoop.sol [Line: 2](../tests/contract-playground/src/MsgValueInLoop.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/OnlyLibrary.sol [Line: 2](../tests/contract-playground/src/OnlyLibrary.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/OutOfOrderRetryable.sol [Line: 2](../tests/contract-playground/src/OutOfOrderRetryable.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/ReturnBomb.sol [Line: 2](../tests/contract-playground/src/ReturnBomb.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/StateVariables.sol [Line: 2](../tests/contract-playground/src/StateVariables.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/StateVariablesManipulation.sol [Line: 2](../tests/contract-playground/src/StateVariablesManipulation.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/StorageConditionals.sol [Line: 2](../tests/contract-playground/src/StorageConditionals.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/T11sTranferer.sol [Line: 2](../tests/contract-playground/src/T11sTranferer.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/TautologicalCompare.sol [Line: 2](../tests/contract-playground/src/TautologicalCompare.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/Trump.sol [Line: 16](../tests/contract-playground/src/Trump.sol#L16)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/TxOriginUsedForAuth.sol [Line: 2](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L2)

	```solidity
	pragma solidity ^0.8.20;
	```

- Found in src/UnsafeERC721Mint.sol [Line: 2](../tests/contract-playground/src/UnsafeERC721Mint.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/UnusedStateVariables.sol [Line: 2](../tests/contract-playground/src/UnusedStateVariables.sol#L2)

	```solidity
	pragma solidity ^0.8.20;
	```

- Found in src/VoidConstructor.sol [Line: 2](../tests/contract-playground/src/VoidConstructor.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/WeakRandomness.sol [Line: 2](../tests/contract-playground/src/WeakRandomness.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 6](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L6)

	```solidity
	pragma solidity ^0.8.18;
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 6](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L6)

	```solidity
	pragma solidity >=0.8.0 <0.8.25; 
	```

- Found in src/eth2/DepositContract.sol [Line: 12](../tests/contract-playground/src/eth2/DepositContract.sol#L12)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/inheritance/ExtendedInheritance.sol [Line: 2](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/inheritance/IContractInheritance.sol [Line: 2](../tests/contract-playground/src/inheritance/IContractInheritance.sol#L2)

	```solidity
	pragma solidity >=0.8.0;
	```

- Found in src/inheritance/InheritanceBase.sol [Line: 2](../tests/contract-playground/src/inheritance/InheritanceBase.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/nested/1/Nested.sol [Line: 5](../tests/contract-playground/src/nested/1/Nested.sol#L5)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/nested/2/Nested.sol [Line: 5](../tests/contract-playground/src/nested/2/Nested.sol#L5)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/nested_mappings/LaterVersion.sol [Line: 2](../tests/contract-playground/src/nested_mappings/LaterVersion.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 2](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 2](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/uniswap/UniswapV3Swapper.sol [Line: 2](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

</details>



## L-16: Modifier Invoked Only Once

Consider removing the modifier or inlining the logic into the calling function.

<details><summary>17 Found Instances</summary>


- Found in src/BuiltinSymbolShadow.sol [Line: 17](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L17)

	```solidity
	    modifier blockhash() {
	```

- Found in src/CallGraphTests.sol [Line: 10](../tests/contract-playground/src/CallGraphTests.sol#L10)

	```solidity
	    modifier passThroughNinthFloor1() {
	```

- Found in src/CallGraphTests.sol [Line: 32](../tests/contract-playground/src/CallGraphTests.sol#L32)

	```solidity
	    modifier passThroughNinthFloor2(address x) {
	```

- Found in src/CallGraphTests.sol [Line: 54](../tests/contract-playground/src/CallGraphTests.sol#L54)

	```solidity
	    modifier passThroughNinthFloor3(address x) {
	```

- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 23](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L23)

	```solidity
	    modifier isAllowed(address to) {
	```

- Found in src/InternalFunctions.sol [Line: 18](../tests/contract-playground/src/InternalFunctions.sol#L18)

	```solidity
	    modifier onlyOwner() {
	```

- Found in src/OnceModifierExample.sol [Line: 6](../tests/contract-playground/src/OnceModifierExample.sol#L6)

	```solidity
	    modifier onlyOnce() {
	```

- Found in src/SendEtherNoChecks.sol [Line: 16](../tests/contract-playground/src/SendEtherNoChecks.sol#L16)

	```solidity
	    modifier mod1(address x) {
	```

- Found in src/SendEtherNoChecks.sol [Line: 47](../tests/contract-playground/src/SendEtherNoChecks.sol#L47)

	```solidity
	    modifier mod1(address x) {
	```

- Found in src/SendEtherNoChecks.sol [Line: 70](../tests/contract-playground/src/SendEtherNoChecks.sol#L70)

	```solidity
	    modifier mod1(address x) {
	```

- Found in src/SendEtherNoChecks.sol [Line: 93](../tests/contract-playground/src/SendEtherNoChecks.sol#L93)

	```solidity
	    modifier mod1(address x) {
	```

- Found in src/StateShadowing.sol [Line: 7](../tests/contract-playground/src/StateShadowing.sol#L7)

	```solidity
	    modifier isOwner(){
	```

- Found in src/Trump.sol [Line: 162](../tests/contract-playground/src/Trump.sol#L162)

	```solidity
	    modifier lockTheSwap {
	```

- Found in src/UnprotectedInitialize.sol [Line: 15](../tests/contract-playground/src/UnprotectedInitialize.sol#L15)

	```solidity
	    modifier firstTimeInitializing() {
	```

- Found in src/router/ModifierCalls.sol [Line: 5](../tests/contract-playground/src/router/ModifierCalls.sol#L5)

	```solidity
	    modifier modify() virtual;
	```

- Found in src/router/ModifierCalls.sol [Line: 31](../tests/contract-playground/src/router/ModifierCalls.sol#L31)

	```solidity
	    modifier modify() override  {
	```

- Found in src/router/ModifierCalls.sol [Line: 42](../tests/contract-playground/src/router/ModifierCalls.sol#L42)

	```solidity
	    modifier modify() {
	```

</details>



## L-17: Empty Block

Consider removing empty blocks.

<details><summary>56 Found Instances</summary>


- Found in src/AderynIgnoreCustomDetectors.sol [Line: 7](../tests/contract-playground/src/AderynIgnoreCustomDetectors.sol#L7)

	```solidity
	    function f1() public {
	```

- Found in src/AdminContract.sol [Line: 14](../tests/contract-playground/src/AdminContract.sol#L14)

	```solidity
	    function someOtherImportantThing() external nonReentrant onlyOwner {
	```

- Found in src/BuiltinSymbolShadow.sol [Line: 8](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L8)

	```solidity
	    function assert(bool condition) public {}
	```

- Found in src/CacheArrayLength.sol [Line: 17](../tests/contract-playground/src/CacheArrayLength.sol#L17)

	```solidity
	    function c2() external view {
	```

- Found in src/CacheArrayLength.sol [Line: 42](../tests/contract-playground/src/CacheArrayLength.sol#L42)

	```solidity
	    function c5() external view {
	```

- Found in src/CallGraphTests.sol [Line: 16](../tests/contract-playground/src/CallGraphTests.sol#L16)

	```solidity
	    function enterTenthFloor1() external passThroughNinthFloor1() {
	```

- Found in src/CallGraphTests.sol [Line: 38](../tests/contract-playground/src/CallGraphTests.sol#L38)

	```solidity
	    function enterTenthFloor2(address x) external passThroughNinthFloor2(x) {
	```

- Found in src/ContractWithTodo.sol [Line: 7](../tests/contract-playground/src/ContractWithTodo.sol#L7)

	```solidity
	    function createTask(string memory _content) private {
	```

- Found in src/ContractWithTodo.sol [Line: 13](../tests/contract-playground/src/ContractWithTodo.sol#L13)

	```solidity
	    function toggleCompleted(uint _taskId) public {
	```

- Found in src/EmptyBlocks.sol [Line: 30](../tests/contract-playground/src/EmptyBlocks.sol#L30)

	```solidity
	        {
	```

- Found in src/EmptyBlocks.sol [Line: 38](../tests/contract-playground/src/EmptyBlocks.sol#L38)

	```solidity
	        {
	```

- Found in src/EmptyBlocks.sol [Line: 49](../tests/contract-playground/src/EmptyBlocks.sol#L49)

	```solidity
	        {
	```

- Found in src/EmptyBlocks.sol [Line: 63](../tests/contract-playground/src/EmptyBlocks.sol#L63)

	```solidity
	    function emptyFunction() external {
	```

- Found in src/EmptyBlocks.sol [Line: 67](../tests/contract-playground/src/EmptyBlocks.sol#L67)

	```solidity
	    function emptyFunctionWithComment() external {
	```

- Found in src/EmptyBlocks.sol [Line: 73](../tests/contract-playground/src/EmptyBlocks.sol#L73)

	```solidity
	    function emptyBlockInsideNormalFunction() external {
	```

- Found in src/EmptyBlocks.sol [Line: 81](../tests/contract-playground/src/EmptyBlocks.sol#L81)

	```solidity
	    function emptyBlockWithCommentInsideNormalFunction() external {
	```

- Found in src/FunctionSignatureCollision.sol [Line: 7](../tests/contract-playground/src/FunctionSignatureCollision.sol#L7)

	```solidity
	    function withdraw(uint256) external {
	```

- Found in src/FunctionSignatureCollision.sol [Line: 13](../tests/contract-playground/src/FunctionSignatureCollision.sol#L13)

	```solidity
	    function OwnerTransferV7b711143(uint256) external {
	```

- Found in src/OnceModifierExample.sol [Line: 10](../tests/contract-playground/src/OnceModifierExample.sol#L10)

	```solidity
	    function perform() external onlyOnce {
	```

- Found in src/OutOfOrderRetryable.sol [Line: 193](../tests/contract-playground/src/OutOfOrderRetryable.sol#L193)

	```solidity
	    function _free_rewards(address user) internal {
	```

- Found in src/SendEtherNoChecks.sol [Line: 53](../tests/contract-playground/src/SendEtherNoChecks.sol#L53)

	```solidity
	    function func1(address x) external mod1(x) {
	```

- Found in src/SendEtherNoChecks.sol [Line: 77](../tests/contract-playground/src/SendEtherNoChecks.sol#L77)

	```solidity
	    function func1(address x) external mod1(x) {
	```

- Found in src/SendEtherNoChecks.sol [Line: 99](../tests/contract-playground/src/SendEtherNoChecks.sol#L99)

	```solidity
	    function func1(address x) external mod1(x) {
	```

- Found in src/TautologyOrContradiction.sol [Line: 9](../tests/contract-playground/src/TautologyOrContradiction.sol#L9)

	```solidity
	    function makeUselessComparisons() external view {
	```

- Found in src/UncheckedSend.sol [Line: 27](../tests/contract-playground/src/UncheckedSend.sol#L27)

	```solidity
	    function doSomething(bool success) internal pure {
	```

- Found in src/UnprotectedInitialize.sol [Line: 43](../tests/contract-playground/src/UnprotectedInitialize.sol#L43)

	```solidity
	    function initializeWithModifierNamedInitiliazer() external initializer {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 11](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L11)

	```solidity
	    function onlyOwnerFunction() external onlyOwner {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 30](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L30)

	```solidity
	    function transferOwnershipFunction(address newOwner) external {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 38](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L38)

	```solidity
	    function onlyRoleFunction() external onlyRole(ROLE) {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 61](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L61)

	```solidity
	    function grantRoleFunction(address account) external {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 85](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L85)

	```solidity
	    function transferOwnershipFunction(address newOwner) external {
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 11](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L11)

	```solidity
	    function setNumber(uint256 newNumber) public {
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 32](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L32)

	```solidity
	    function someOtherImportantThing() external nonReentrant onlyOwner {
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 40](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L40)

	```solidity
	    function setOwner(address _owner) external {
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 44](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L44)

	```solidity
	    function someOtherImportantThing() external {
	```

- Found in src/router/ExternalCalls.sol [Line: 13](../tests/contract-playground/src/router/ExternalCalls.sol#L13)

	```solidity
	    function abc() external virtual returns (uint256) {}
	```

- Found in src/router/ExternalCalls.sol [Line: 17](../tests/contract-playground/src/router/ExternalCalls.sol#L17)

	```solidity
	    function abc() public override returns (uint256) {}
	```

- Found in src/router/InternalCalls.sol [Line: 8](../tests/contract-playground/src/router/InternalCalls.sol#L8)

	```solidity
	    function help1() private {}
	```

- Found in src/router/InternalCalls.sol [Line: 23](../tests/contract-playground/src/router/InternalCalls.sol#L23)

	```solidity
	    function help2() internal virtual {}
	```

- Found in src/router/InternalCalls.sol [Line: 38](../tests/contract-playground/src/router/InternalCalls.sol#L38)

	```solidity
	    function help2() internal override {}
	```

- Found in src/router/InternalCalls.sol [Line: 40](../tests/contract-playground/src/router/InternalCalls.sol#L40)

	```solidity
	    function g(Orange memory f) public virtual {}
	```

- Found in src/router/InternalCalls.sol [Line: 44](../tests/contract-playground/src/router/InternalCalls.sol#L44)

	```solidity
	    function g(Basic2.Orange memory f) public override {}
	```

- Found in src/router/InternalCalls.sol [Line: 54](../tests/contract-playground/src/router/InternalCalls.sol#L54)

	```solidity
	    function live() public virtual {}
	```

- Found in src/router/InternalCalls.sol [Line: 84](../tests/contract-playground/src/router/InternalCalls.sol#L84)

	```solidity
	    function live() public virtual override {}
	```

- Found in src/router/InternalCalls.sol [Line: 96](../tests/contract-playground/src/router/InternalCalls.sol#L96)

	```solidity
	    function aux1(uint256 a) public {}
	```

- Found in src/router/InternalCalls.sol [Line: 98](../tests/contract-playground/src/router/InternalCalls.sol#L98)

	```solidity
	    function aux2(uint256 a) internal {}
	```

- Found in src/router/InternalCalls.sol [Line: 111](../tests/contract-playground/src/router/InternalCalls.sol#L111)

	```solidity
	    function ext1(uint256 a) external {}
	```

- Found in src/router/InternalCalls.sol [Line: 113](../tests/contract-playground/src/router/InternalCalls.sol#L113)

	```solidity
	    function ext2(uint256 a) public {}
	```

- Found in src/router/InternalCalls.sol [Line: 136](../tests/contract-playground/src/router/InternalCalls.sol#L136)

	```solidity
	    function priv() private {}
	```

- Found in src/router/InternalCalls.sol [Line: 142](../tests/contract-playground/src/router/InternalCalls.sol#L142)

	```solidity
	    function d() external virtual returns (uint256, bool, uint256) {}
	```

- Found in src/router/InternalCalls.sol [Line: 167](../tests/contract-playground/src/router/InternalCalls.sol#L167)

	```solidity
	    function free(uint256 x) external {}
	```

- Found in src/router/InternalCalls.sol [Line: 175](../tests/contract-playground/src/router/InternalCalls.sol#L175)

	```solidity
	    function free(string memory x) public {}
	```

- Found in src/router/ModifierCalls.sol [Line: 7](../tests/contract-playground/src/router/ModifierCalls.sol#L7)

	```solidity
	    function geez() public modify {
	```

- Found in src/router/ModifierCalls.sol [Line: 22](../tests/contract-playground/src/router/ModifierCalls.sol#L22)

	```solidity
	    function tree() public modify {
	```

- Found in src/router/ModifierCalls.sol [Line: 46](../tests/contract-playground/src/router/ModifierCalls.sol#L46)

	```solidity
	    function show(uint256 a) internal modify {
	```

- Found in src/router/VarOverridesFunction.sol [Line: 5](../tests/contract-playground/src/router/VarOverridesFunction.sol#L5)

	```solidity
	    function mercy() external virtual returns (uint256) {
	```

</details>



## L-18: Large Numeric Literal

Large literal values multiples of 10000 can be replaced with scientific notation.Use `e` notation, for example: `1e18`, instead of its full numeric value.

<details><summary>27 Found Instances</summary>


- Found in src/HugeConstants.sol [Line: 6](../tests/contract-playground/src/HugeConstants.sol#L6)

	```solidity
	    uint256 constant public HUGE_NUMBER_1 = 100000000000000000000000;
	```

- Found in src/HugeConstants.sol [Line: 7](../tests/contract-playground/src/HugeConstants.sol#L7)

	```solidity
	    uint256 constant public HUGE_NUMBER_2 = 10000000000000000000000;
	```

- Found in src/HugeConstants.sol [Line: 8](../tests/contract-playground/src/HugeConstants.sol#L8)

	```solidity
	    uint256 constant public HUGE_NUMBER_3 = 1000000000000000000000;
	```

- Found in src/HugeConstants.sol [Line: 9](../tests/contract-playground/src/HugeConstants.sol#L9)

	```solidity
	    uint256 constant public HUGE_NUMBER_4 = 100000000000000000000;
	```

- Found in src/HugeConstants.sol [Line: 10](../tests/contract-playground/src/HugeConstants.sol#L10)

	```solidity
	    uint256 constant public HUGE_NUMBER_5 = 10000000000000000000;
	```

- Found in src/HugeConstants.sol [Line: 11](../tests/contract-playground/src/HugeConstants.sol#L11)

	```solidity
	    uint256 constant public HUGE_NUMBER_6 = 1000000000000000000;
	```

- Found in src/HugeConstants.sol [Line: 12](../tests/contract-playground/src/HugeConstants.sol#L12)

	```solidity
	    uint256 constant public HUGE_NUMBER_7 = 100000000000000000;
	```

- Found in src/HugeConstants.sol [Line: 13](../tests/contract-playground/src/HugeConstants.sol#L13)

	```solidity
	    uint256 constant public HUGE_NUMBER_8 = 10000000000000000;
	```

- Found in src/HugeConstants.sol [Line: 14](../tests/contract-playground/src/HugeConstants.sol#L14)

	```solidity
	    uint256 constant public HUGE_NUMBER_9 = 1000000000000000;
	```

- Found in src/HugeConstants.sol [Line: 15](../tests/contract-playground/src/HugeConstants.sol#L15)

	```solidity
	    uint256 constant public HUGE_NUMBER_10 = 100000000000000;
	```

- Found in src/HugeConstants.sol [Line: 16](../tests/contract-playground/src/HugeConstants.sol#L16)

	```solidity
	    uint256 constant public HUGE_NUMBER_11 = 10000000000000;
	```

- Found in src/HugeConstants.sol [Line: 17](../tests/contract-playground/src/HugeConstants.sol#L17)

	```solidity
	    uint256 constant public HUGE_NUMBER_12 = 1000000000000;
	```

- Found in src/HugeConstants.sol [Line: 18](../tests/contract-playground/src/HugeConstants.sol#L18)

	```solidity
	    uint256 constant public HUGE_NUMBER_13 = 100000000000;
	```

- Found in src/HugeConstants.sol [Line: 19](../tests/contract-playground/src/HugeConstants.sol#L19)

	```solidity
	    uint256 constant public HUGE_NUMBER_14 = 10000000000;
	```

- Found in src/HugeConstants.sol [Line: 20](../tests/contract-playground/src/HugeConstants.sol#L20)

	```solidity
	    uint256 constant public HUGE_NUMBER_15 = 1000000000;
	```

- Found in src/HugeConstants.sol [Line: 21](../tests/contract-playground/src/HugeConstants.sol#L21)

	```solidity
	    uint256 constant public HUGE_NUMBER_16 = 100000000;
	```

- Found in src/HugeConstants.sol [Line: 22](../tests/contract-playground/src/HugeConstants.sol#L22)

	```solidity
	    uint256 constant public HUGE_NUMBER_17 = 10000000;
	```

- Found in src/HugeConstants.sol [Line: 23](../tests/contract-playground/src/HugeConstants.sol#L23)

	```solidity
	    uint256 constant public HUGE_NUMBER_18 = 1000000;
	```

- Found in src/HugeConstants.sol [Line: 24](../tests/contract-playground/src/HugeConstants.sol#L24)

	```solidity
	    uint256 constant public HUGE_NUMBER_19 = 100000;
	```

- Found in src/HugeConstants.sol [Line: 25](../tests/contract-playground/src/HugeConstants.sol#L25)

	```solidity
	    uint256 constant public HUGE_NUMBER_20 = 10000;
	```

- Found in src/HugeConstants.sol [Line: 31](../tests/contract-playground/src/HugeConstants.sol#L31)

	```solidity
	    uint256 constant public HUGE_NUMBER_24_UNDERSCORES = 1_000_000_000_000_000_000_000;
	```

- Found in src/HugeConstants.sol [Line: 32](../tests/contract-playground/src/HugeConstants.sol#L32)

	```solidity
	    uint256 constant public HUGE_NUMBER_25_UNDERSCORES = 10_000;
	```

- Found in src/IncorrectERC20.sol [Line: 8](../tests/contract-playground/src/IncorrectERC20.sol#L8)

	```solidity
	    uint256 public totalSupply = 1000000;
	```

- Found in src/IncorrectERC20.sol [Line: 51](../tests/contract-playground/src/IncorrectERC20.sol#L51)

	```solidity
	    uint256 private _totalSupply = 1000000 * 10 ** uint(decimals);
	```

- Found in src/Trump.sol [Line: 145](../tests/contract-playground/src/Trump.sol#L145)

	```solidity
	    uint256 private constant _tTotal = 47000000 * 10**_decimals;
	```

- Found in src/Trump.sol [Line: 148](../tests/contract-playground/src/Trump.sol#L148)

	```solidity
	    uint256 public _maxTxAmount =   470000 * 10**_decimals;
	```

- Found in src/Trump.sol [Line: 151](../tests/contract-playground/src/Trump.sol#L151)

	```solidity
	    uint256 public _maxTaxSwap= 470000 * 10**_decimals;
	```

</details>



## L-19: Internal Function Used Only Once

Instead of separating the logic into a separate function, consider inlining the logic into the calling function. This can reduce the number of function calls and improve readability.

<details><summary>22 Found Instances</summary>


- Found in src/CallGraphTests.sol [Line: 6](../tests/contract-playground/src/CallGraphTests.sol#L6)

	```solidity
	    function visitEighthFloor1() internal {
	```

- Found in src/CallGraphTests.sol [Line: 25](../tests/contract-playground/src/CallGraphTests.sol#L25)

	```solidity
	    function visitEighthFloor2(address x) internal {
	```

- Found in src/CallGraphTests.sol [Line: 47](../tests/contract-playground/src/CallGraphTests.sol#L47)

	```solidity
	    function visitEighthFloor3(address x) internal {
	```

- Found in src/CallGraphTests.sol [Line: 64](../tests/contract-playground/src/CallGraphTests.sol#L64)

	```solidity
	    function visitSeventhFloor3() internal {
	```

- Found in src/ConstantFuncsAssembly.sol [Line: 26](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L26)

	```solidity
	    function useAssembly() internal pure returns (uint256) {
	```

- Found in src/InternalFunctions.sol [Line: 28](../tests/contract-playground/src/InternalFunctions.sol#L28)

	```solidity
	    function internalSet2(uint256 _newValue) internal {
	```

- Found in src/MsgValueInLoop.sol [Line: 43](../tests/contract-playground/src/MsgValueInLoop.sol#L43)

	```solidity
	    function addToBal(address[] memory receivers, uint256 index) internal {
	```

- Found in src/MsgValueInLoop.sol [Line: 60](../tests/contract-playground/src/MsgValueInLoop.sol#L60)

	```solidity
	    function addToBal(address[] memory receivers, uint256 index) internal {
	```

- Found in src/MsgValueInLoop.sol [Line: 77](../tests/contract-playground/src/MsgValueInLoop.sol#L77)

	```solidity
	    function addToBal(address[] memory receivers, uint256 index) internal {
	```

- Found in src/SendEtherNoChecks.sol [Line: 9](../tests/contract-playground/src/SendEtherNoChecks.sol#L9)

	```solidity
	    function callAndSendNativeEth(address x) internal {
	```

- Found in src/SendEtherNoChecks.sol [Line: 26](../tests/contract-playground/src/SendEtherNoChecks.sol#L26)

	```solidity
	    function func2() internal view {
	```

- Found in src/SendEtherNoChecks.sol [Line: 40](../tests/contract-playground/src/SendEtherNoChecks.sol#L40)

	```solidity
	    function callAndSendNativeEth(address x) internal {
	```

- Found in src/SendEtherNoChecks.sol [Line: 66](../tests/contract-playground/src/SendEtherNoChecks.sol#L66)

	```solidity
	    function transferBalance(address x) internal {
	```

- Found in src/SendEtherNoChecks.sol [Line: 88](../tests/contract-playground/src/SendEtherNoChecks.sol#L88)

	```solidity
	    function sendBalance(address x) internal {
	```

- Found in src/StateVariableCouldBeDeclaredImmutable.sol [Line: 26](../tests/contract-playground/src/StateVariableCouldBeDeclaredImmutable.sol#L26)

	```solidity
	    function callSecretFunc() internal {
	```

- Found in src/StorageParameters.sol [Line: 17](../tests/contract-playground/src/StorageParameters.sol#L17)

	```solidity
	    function editStorage(uint[1] storage arr) internal {
	```

- Found in src/Trump.sol [Line: 46](../tests/contract-playground/src/Trump.sol#L46)

	```solidity
	    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
	```

- Found in src/Trump.sol [Line: 65](../tests/contract-playground/src/Trump.sol#L65)

	```solidity
	    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
	```

- Found in src/UncheckedSend.sol [Line: 27](../tests/contract-playground/src/UncheckedSend.sol#L27)

	```solidity
	    function doSomething(bool success) internal pure {
	```

- Found in src/router/InternalCalls.sol [Line: 18](../tests/contract-playground/src/router/InternalCalls.sol#L18)

	```solidity
	    function help1() internal virtual {
	```

- Found in src/router/InternalCalls.sol [Line: 23](../tests/contract-playground/src/router/InternalCalls.sol#L23)

	```solidity
	    function help2() internal virtual {}
	```

- Found in src/router/InternalCalls.sol [Line: 38](../tests/contract-playground/src/router/InternalCalls.sol#L38)

	```solidity
	    function help2() internal override {}
	```

</details>



## L-20: Contract has TODO Comments

Contract contains comments with TODOS. Consider implementing or removing them.

<details><summary>3 Found Instances</summary>


- Found in src/ContractWithTodo.sol [Line: 4](../tests/contract-playground/src/ContractWithTodo.sol#L4)

	```solidity
	contract TodoList {
	```

- Found in src/Counter.sol [Line: 4](../tests/contract-playground/src/Counter.sol#L4)

	```solidity
	contract Counter {
	```

- Found in src/TautologicalCompare.sol [Line: 4](../tests/contract-playground/src/TautologicalCompare.sol#L4)

	```solidity
	contract TautologicalCompare {
	```

</details>



## L-21: Inconsistent uint256/uint (or) int256/int types

Inconsistency in declaring uint256/uint (or) int256/int variables within a contract. Use explicit size declarations (uint256 or int256). Consider keeping the naming convention consistent in a given contract. Explicit size declarations are preferred (uint256, int256) over implicit ones (uint, int) to avoid confusion.

<details><summary>29 Found Instances</summary>


- Found in src/Casting.sol [Line: 38](../tests/contract-playground/src/Casting.sol#L38)

	```solidity
	        uint unspecificUint = 0x1234567890abcdef;
	```

- Found in src/Casting.sol [Line: 76](../tests/contract-playground/src/Casting.sol#L76)

	```solidity
	        int unspecificInt = -0x1234567890abcdef;
	```

- Found in src/InconsistentUints.sol [Line: 5](../tests/contract-playground/src/InconsistentUints.sol#L5)

	```solidity
	    uint public uintVariable; // 1
	```

- Found in src/InconsistentUints.sol [Line: 7](../tests/contract-playground/src/InconsistentUints.sol#L7)

	```solidity
	    int public intVariable; // 1
	```

- Found in src/InconsistentUints.sol [Line: 11](../tests/contract-playground/src/InconsistentUints.sol#L11)

	```solidity
	        uint personUint; // 2
	```

- Found in src/InconsistentUints.sol [Line: 12](../tests/contract-playground/src/InconsistentUints.sol#L12)

	```solidity
	        mapping (uint => uint256) personMap; // 3 2
	```

- Found in src/InconsistentUints.sol [Line: 15](../tests/contract-playground/src/InconsistentUints.sol#L15)

	```solidity
	    uint[] public uintArray; // 4
	```

- Found in src/InconsistentUints.sol [Line: 16](../tests/contract-playground/src/InconsistentUints.sol#L16)

	```solidity
	    mapping(uint256 => uint other) u2uMapping; // 5 3
	```

- Found in src/InconsistentUints.sol [Line: 19](../tests/contract-playground/src/InconsistentUints.sol#L19)

	```solidity
	    constructor(uint _uintInitial, uint256 _uint256Initial) { // 6 4
	```

- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 115](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L115)

	```solidity
	    ) external pure returns (uint) {
	```

- Found in src/TautologicalCompare.sol [Line: 11](../tests/contract-playground/src/TautologicalCompare.sol#L11)

	```solidity
	    function check(uint a) external pure returns (bool) {
	```

- Found in src/TautologyOrContradiction.sol [Line: 6](../tests/contract-playground/src/TautologyOrContradiction.sol#L6)

	```solidity
	    uint x;
	```

- Found in src/Trump.sol [Line: 159](../tests/contract-playground/src/Trump.sol#L159)

	```solidity
	    event MaxTxAmountUpdated(uint _maxTxAmount);
	```

- Found in src/UninitializedLocalVariables.sol [Line: 9](../tests/contract-playground/src/UninitializedLocalVariables.sol#L9)

	```solidity
	        uint uninitializedUint;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 15](../tests/contract-playground/src/UninitializedLocalVariables.sol#L15)

	```solidity
	        uint[1] memory uninitializedUintArray;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 25](../tests/contract-playground/src/UninitializedLocalVariables.sol#L25)

	```solidity
	        uint initializedUint = 1;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 31](../tests/contract-playground/src/UninitializedLocalVariables.sol#L31)

	```solidity
	        uint[1] memory initializedUintArray = [uint(2)];
	```

- Found in src/UninitializedLocalVariables.sol [Line: 43](../tests/contract-playground/src/UninitializedLocalVariables.sol#L43)

	```solidity
	        uint delayedUint;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 49](../tests/contract-playground/src/UninitializedLocalVariables.sol#L49)

	```solidity
	        uint[1] memory delayedUintArray;
	```

- Found in src/eth2/DepositContract.sol [Line: 59](../tests/contract-playground/src/eth2/DepositContract.sol#L59)

	```solidity
	    uint constant DEPOSIT_CONTRACT_TREE_DEPTH = 32;
	```

- Found in src/eth2/DepositContract.sol [Line: 61](../tests/contract-playground/src/eth2/DepositContract.sol#L61)

	```solidity
	    uint constant MAX_DEPOSIT_COUNT = 2**DEPOSIT_CONTRACT_TREE_DEPTH - 1;
	```

- Found in src/eth2/DepositContract.sol [Line: 70](../tests/contract-playground/src/eth2/DepositContract.sol#L70)

	```solidity
	        for (uint height = 0; height < DEPOSIT_CONTRACT_TREE_DEPTH - 1; height++)
	```

- Found in src/eth2/DepositContract.sol [Line: 76](../tests/contract-playground/src/eth2/DepositContract.sol#L76)

	```solidity
	        uint size = deposit_count;
	```

- Found in src/eth2/DepositContract.sol [Line: 77](../tests/contract-playground/src/eth2/DepositContract.sol#L77)

	```solidity
	        for (uint height = 0; height < DEPOSIT_CONTRACT_TREE_DEPTH; height++) {
	```

- Found in src/eth2/DepositContract.sol [Line: 103](../tests/contract-playground/src/eth2/DepositContract.sol#L103)

	```solidity
	        uint deposit_amount = msg.value / 1 gwei;
	```

- Found in src/eth2/DepositContract.sol [Line: 133](../tests/contract-playground/src/eth2/DepositContract.sol#L133)

	```solidity
	        uint size = deposit_count;
	```

- Found in src/eth2/DepositContract.sol [Line: 134](../tests/contract-playground/src/eth2/DepositContract.sol#L134)

	```solidity
	        for (uint height = 0; height < DEPOSIT_CONTRACT_TREE_DEPTH; height++) {
	```

- Found in src/nested_mappings/LaterVersion.sol [Line: 8](../tests/contract-playground/src/nested_mappings/LaterVersion.sol#L8)

	```solidity
	        uint dummy;
	```

- Found in src/nested_mappings/NestedMappings.sol [Line: 8](../tests/contract-playground/src/nested_mappings/NestedMappings.sol#L8)

	```solidity
	        uint dummy;
	```

</details>



## L-22: Unused Error

Consider using or removing the unused error.

<details><summary>3 Found Instances</summary>


- Found in src/UnusedError.sol [Line: 5](../tests/contract-playground/src/UnusedError.sol#L5)

	```solidity
	    error UnusedLibraryError();
	```

- Found in src/UnusedError.sol [Line: 14](../tests/contract-playground/src/UnusedError.sol#L14)

	```solidity
	    error UnusedError1(address account);
	```

- Found in src/WrongOrderOfLayout.sol [Line: 13](../tests/contract-playground/src/WrongOrderOfLayout.sol#L13)

	```solidity
	    error DivideByZero();
	```

</details>



## L-23: Loop Contains `require`/`revert`

Avoid `require` / `revert` statements in a loop because a single bad item can cause the whole transaction to fail. It's better to forgive on fail and return failed elements post processing of the loop

<details><summary>2 Found Instances</summary>


- Found in src/RevertsAndRequriesInLoops.sol [Line: 10](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L10)

	```solidity
	        for (uint256 id = 0; id < 10; ++id) {
	```

- Found in src/RevertsAndRequriesInLoops.sol [Line: 17](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L17)

	```solidity
	        for (uint256 id = 0; id < 10; ++id) {
	```

</details>



## L-24: Incorrect Order of Division and Multiplication

Division operations followed directly by multiplication operations can lead to precision loss due to the way integer arithmetic is handled in Solidity./
        Consider Multiplication before Division.

<details><summary>4 Found Instances</summary>


- Found in src/DivisionBeforeMultiplication.sol [Line: 8](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L8)

	```solidity
	        result = a * d + b / c * b / d; 
	```

- Found in src/DivisionBeforeMultiplication.sol [Line: 12](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L12)

	```solidity
	        result = (a + b / c * b) * c; 
	```

- Found in src/DivisionBeforeMultiplication.sol [Line: 16](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L16)

	```solidity
	        result = (a / b * c); 
	```

- Found in src/DivisionBeforeMultiplication.sol [Line: 20](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L20)

	```solidity
	        result = a + b / c * b * c; 
	```

</details>



## L-25: Redundant Statement

Remove the redundant statement.

<details><summary>6 Found Instances</summary>


- Found in src/RedundantStatements.sol [Line: 6](../tests/contract-playground/src/RedundantStatements.sol#L6)

	```solidity
	        uint; // Elementary Type Name
	```

- Found in src/RedundantStatements.sol [Line: 7](../tests/contract-playground/src/RedundantStatements.sol#L7)

	```solidity
	        bool; // Elementary Type Name
	```

- Found in src/RedundantStatements.sol [Line: 8](../tests/contract-playground/src/RedundantStatements.sol#L8)

	```solidity
	        RedundantStatementsContract; // Identifier
	```

- Found in src/RedundantStatements.sol [Line: 12](../tests/contract-playground/src/RedundantStatements.sol#L12)

	```solidity
	        uint; // Elementary Type Name
	```

- Found in src/RedundantStatements.sol [Line: 13](../tests/contract-playground/src/RedundantStatements.sol#L13)

	```solidity
	        assert; // Identifier
	```

- Found in src/RedundantStatements.sol [Line: 14](../tests/contract-playground/src/RedundantStatements.sol#L14)

	```solidity
	        test; // Identifier
	```

</details>



## L-26: State Variable is Read as External

The contract reads it's own state variable using `this` which adds an unnecessary STATICCALL. Consider removing `this` to access the variable from storage.

<details><summary>4 Found Instances</summary>


- Found in src/PublicVariableReadInExternalContext.sol [Line: 12](../tests/contract-playground/src/PublicVariableReadInExternalContext.sol#L12)

	```solidity
	        return this.testArray(0);
	```

- Found in src/PublicVariableReadInExternalContext.sol [Line: 16](../tests/contract-playground/src/PublicVariableReadInExternalContext.sol#L16)

	```solidity
	        return this.testUint256();
	```

- Found in src/PublicVariableReadInExternalContext.sol [Line: 20](../tests/contract-playground/src/PublicVariableReadInExternalContext.sol#L20)

	```solidity
	        return this.testMap(0);
	```

- Found in src/PublicVariableReadInExternalContext.sol [Line: 42](../tests/contract-playground/src/PublicVariableReadInExternalContext.sol#L42)

	```solidity
	        return this.testArray(0);
	```

</details>



## L-27: Unused State Variable

State variable appears to be unused. No analysis has been performed to see if any inline assembly references it. Consider removing this unused variable.

<details><summary>27 Found Instances</summary>


- Found in src/AssemblyExample.sol [Line: 5](../tests/contract-playground/src/AssemblyExample.sol#L5)

	```solidity
	    uint b;
	```

- Found in src/InconsistentUints.sol [Line: 16](../tests/contract-playground/src/InconsistentUints.sol#L16)

	```solidity
	    mapping(uint256 => uint other) u2uMapping; // 5 3
	```

- Found in src/LocalVariableShadow.sol [Line: 7](../tests/contract-playground/src/LocalVariableShadow.sol#L7)

	```solidity
	    uint owner;
	```

- Found in src/StateVariables.sol [Line: 8](../tests/contract-playground/src/StateVariables.sol#L8)

	```solidity
	    uint256 private staticPrivateNumber;
	```

- Found in src/StateVariables.sol [Line: 9](../tests/contract-playground/src/StateVariables.sol#L9)

	```solidity
	    uint256 internal staticInternalNumber;
	```

- Found in src/StateVariables.sol [Line: 13](../tests/contract-playground/src/StateVariables.sol#L13)

	```solidity
	    uint256 private staticNonEmptyPrivateNumber = 1;
	```

- Found in src/StateVariables.sol [Line: 14](../tests/contract-playground/src/StateVariables.sol#L14)

	```solidity
	    uint256 internal staticNonEmptyInternalNumber = 2;
	```

- Found in src/StateVariables.sol [Line: 28](../tests/contract-playground/src/StateVariables.sol#L28)

	```solidity
	    uint256 private constant PRIVATE_CONSTANT = 1;
	```

- Found in src/StateVariables.sol [Line: 29](../tests/contract-playground/src/StateVariables.sol#L29)

	```solidity
	    uint256 internal constant INTERNAL_CONSTANT = 2;
	```

- Found in src/TautologyOrContradiction.sol [Line: 6](../tests/contract-playground/src/TautologyOrContradiction.sol#L6)

	```solidity
	    uint x;
	```

- Found in src/TautologyOrContradiction.sol [Line: 7](../tests/contract-playground/src/TautologyOrContradiction.sol#L7)

	```solidity
	    uint256 y;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 5](../tests/contract-playground/src/UninitializedLocalVariables.sol#L5)

	```solidity
	    uint256 stateVarUint;
	```

- Found in src/UninitializedStateVariable.sol [Line: 13](../tests/contract-playground/src/UninitializedStateVariable.sol#L13)

	```solidity
	    mapping(uint256 => uint256[]) private map; // GOOD
	```

- Found in src/UnusedStateVariables.sol [Line: 6](../tests/contract-playground/src/UnusedStateVariables.sol#L6)

	```solidity
	    uint256 internal unusedUint256;
	```

- Found in src/UnusedStateVariables.sol [Line: 7](../tests/contract-playground/src/UnusedStateVariables.sol#L7)

	```solidity
	    address internal unusedAddress;
	```

- Found in src/UnusedStateVariables.sol [Line: 8](../tests/contract-playground/src/UnusedStateVariables.sol#L8)

	```solidity
	    bool private unusedBool;
	```

- Found in src/UnusedStateVariables.sol [Line: 9](../tests/contract-playground/src/UnusedStateVariables.sol#L9)

	```solidity
	    string private unusedString;
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 14](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L14)

	```solidity
	    uint256 s_1 = 0;
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 16](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L16)

	```solidity
	    uint256 s_2 = 0;
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 19](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L19)

	```solidity
	    uint256 s_3 = 0; // this is a side comment
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 22](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L22)

	```solidity
	    uint256 s_4 = 0; // scc-dblah
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 29](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L29)

	```solidity
	     this is longer comment */ uint256 s_5 = 0;
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 14](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L14)

	```solidity
	    uint256 s_1 = 0;
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 16](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L16)

	```solidity
	    uint256 s_2 = 0;
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 19](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L19)

	```solidity
	    uint256 s_3 = 0; // this is a side comment
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 22](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L22)

	```solidity
	    uint256 s_4 = 0; // scc-dblah
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 29](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L29)

	```solidity
	     this is longer comment */ uint256 s_5 = 0;
	```

</details>



## L-28: Constant Function Contains Assembly

constant/pure/view was not enforced prior to Solidity 0.5. Starting from Solidity 0.5, a call to a constant/pure/view function uses the STATICCALL opcode, which reverts in case of state modification. As a result, a call to an incorrectly labeled function may trap a contract compiled with Solidity 0.5. https://docs.soliditylang.org/en/develop/050-breaking-changes.html#interoperability-with-older-contracts

<details><summary>3 Found Instances</summary>


- Found in src/ConstantFuncsAssembly.sol [Line: 9](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L9)

	```solidity
	    function setValue(uint256 _value) external view {
	```

- Found in src/ConstantFuncsAssembly.sol [Line: 17](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L17)

	```solidity
	    function getConstantValue() external pure returns (uint256) {
	```

- Found in src/ConstantFuncsAssembly.sol [Line: 36](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L36)

	```solidity
	    function getConstantValue2() external pure returns (uint256) {
	```

</details>



## L-29: Boolean equality is not required

If `x` is a boolean, use `if(x)` and `if(!x)` instead of `if(x == true)` or `if(x == false)`.

<details><summary>4 Found Instances</summary>


- Found in src/BooleanEquality.sol [Line: 5](../tests/contract-playground/src/BooleanEquality.sol#L5)

	```solidity
	        if (isEven == true) {
	```

- Found in src/BooleanEquality.sol [Line: 12](../tests/contract-playground/src/BooleanEquality.sol#L12)

	```solidity
	        if (isEven == !true) {
	```

- Found in src/BooleanEquality.sol [Line: 19](../tests/contract-playground/src/BooleanEquality.sol#L19)

	```solidity
	        if (isEven == false) {
	```

- Found in src/BooleanEquality.sol [Line: 26](../tests/contract-playground/src/BooleanEquality.sol#L26)

	```solidity
	        if (isEven == !false) {
	```

</details>



## L-30: Local Variable Shadows State Variable

Rename the local variable that shadows another state variable.

<details><summary>10 Found Instances</summary>


- Found in src/AdminContract.sol [Line: 10](../tests/contract-playground/src/AdminContract.sol#L10)

	```solidity
	    function setOwner(address _owner) external onlyOwner nonReentrant {
	```

- Found in src/FunctionInitializingState.sol [Line: 41](../tests/contract-playground/src/FunctionInitializingState.sol#L41)

	```solidity
	    function okay() public returns (uint f) {
	```

- Found in src/FunctionInitializingState.sol [Line: 46](../tests/contract-playground/src/FunctionInitializingState.sol#L46)

	```solidity
	    function okay2() public returns (uint f) {
	```

- Found in src/LocalVariableShadow.sol [Line: 10](../tests/contract-playground/src/LocalVariableShadow.sol#L10)

	```solidity
	    function sensitiveFunction(address owner) public view {
	```

- Found in src/LocalVariableShadow.sol [Line: 17](../tests/contract-playground/src/LocalVariableShadow.sol#L17)

	```solidity
	        address owner = msg.sender;
	```

- Found in src/LocalVariableShadow.sol [Line: 31](../tests/contract-playground/src/LocalVariableShadow.sol#L31)

	```solidity
	    function sensitiveFfunction(address roll) public view {
	```

- Found in src/OutOfOrderRetryable.sol [Line: 144](../tests/contract-playground/src/OutOfOrderRetryable.sol#L144)

	```solidity
	        uint256 maxSubmissionCost,
	```

- Found in src/OutOfOrderRetryable.sol [Line: 147](../tests/contract-playground/src/OutOfOrderRetryable.sol#L147)

	```solidity
	        uint256 gasLimit,
	```

- Found in src/OutOfOrderRetryable.sol [Line: 148](../tests/contract-playground/src/OutOfOrderRetryable.sol#L148)

	```solidity
	        uint256 maxFeePerGas,
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 28](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L28)

	```solidity
	    function setOwner(address _owner) external onlyOwner nonReentrant {
	```

</details>



## L-31: Uninitialized Local Variable

Initialize all the variables. If a variable is meant to be initialized to zero, explicitly set it to zero to improve code readability.

<details><summary>15 Found Instances</summary>


- Found in src/ConstantFuncsAssembly.sol [Line: 18](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L18)

	```solidity
	        uint256 result;
	```

- Found in src/ConstantFuncsAssembly.sol [Line: 27](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L27)

	```solidity
	        uint256 result;
	```

- Found in src/StorageParameters.sol [Line: 8](../tests/contract-playground/src/StorageParameters.sol#L8)

	```solidity
	        uint[1] memory memoryArray;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 9](../tests/contract-playground/src/UninitializedLocalVariables.sol#L9)

	```solidity
	        uint uninitializedUint;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 10](../tests/contract-playground/src/UninitializedLocalVariables.sol#L10)

	```solidity
	        bool uninitializedBool;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 11](../tests/contract-playground/src/UninitializedLocalVariables.sol#L11)

	```solidity
	        address uninitializedAddress;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 12](../tests/contract-playground/src/UninitializedLocalVariables.sol#L12)

	```solidity
	        int uninitializedInt;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 13](../tests/contract-playground/src/UninitializedLocalVariables.sol#L13)

	```solidity
	        bytes32 uninitializedBytes32;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 14](../tests/contract-playground/src/UninitializedLocalVariables.sol#L14)

	```solidity
	        string memory uninitializedString;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 15](../tests/contract-playground/src/UninitializedLocalVariables.sol#L15)

	```solidity
	        uint[1] memory uninitializedUintArray;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 16](../tests/contract-playground/src/UninitializedLocalVariables.sol#L16)

	```solidity
	        bool[1] memory uninitializedBoolArray;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 17](../tests/contract-playground/src/UninitializedLocalVariables.sol#L17)

	```solidity
	        address[1] memory uninitializedAddressArray;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 18](../tests/contract-playground/src/UninitializedLocalVariables.sol#L18)

	```solidity
	        int[1] memory uninitializedIntArray;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 19](../tests/contract-playground/src/UninitializedLocalVariables.sol#L19)

	```solidity
	        bytes32[1] memory uninitializedBytes32Array;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 20](../tests/contract-playground/src/UninitializedLocalVariables.sol#L20)

	```solidity
	        string[1] memory uninitializedStringArray;
	```

</details>



## L-32: Return Bomb

A low level callee may consume all callers gas unexpectedly. Avoid unlimited implicit decoding of returndata on calls to unchecked addresses. You can limit the gas by passing a gas limit as an option to the call. For example, `unknownAddress.call{gas: gasLimitHere}("calldata")` That would act as a safety net from OOG errors.
        

<details><summary>1 Found Instances</summary>


- Found in src/ReturnBomb.sol [Line: 22](../tests/contract-playground/src/ReturnBomb.sol#L22)

	```solidity
	        (success, ret) = badGuy.call(
	```

</details>



## L-33: Function Used to Initialize State Variable

Instead of using a function to initialize a state variable in its declaration; declare the state variable and initialize it in the constructor.

<details><summary>3 Found Instances</summary>


- Found in src/FunctionInitializingState.sol [Line: 6](../tests/contract-playground/src/FunctionInitializingState.sol#L6)

	```solidity
	    uint public v = set(); // Initialize from function (sets to 77)
	```

- Found in src/FunctionInitializingState.sol [Line: 8](../tests/contract-playground/src/FunctionInitializingState.sol#L8)

	```solidity
	    uint public x = set(); // Initialize from function (sets to 88)
	```

- Found in src/FunctionInitializingState.sol [Line: 9](../tests/contract-playground/src/FunctionInitializingState.sol#L9)

	```solidity
	    uint public f = tes();
	```

</details>



## L-34: Dead Code

Functions that are not used. Consider removing them.

<details><summary>12 Found Instances</summary>


- Found in src/ArbitraryTransferFrom.sol [Line: 18](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L18)

	```solidity
	    function bad1(address from, address to, uint256 amount) internal {
	```

- Found in src/ContractLocksEther.sol [Line: 54](../tests/contract-playground/src/ContractLocksEther.sol#L54)

	```solidity
	    function _sendEther(address payable recipient, uint256 amount) internal {
	```

- Found in src/DeadCode.sol [Line: 16](../tests/contract-playground/src/DeadCode.sol#L16)

	```solidity
	    function unusedInternalFunction() internal pure returns (string memory) {
	```

- Found in src/DeletionNestedMappingStructureContract.sol [Line: 14](../tests/contract-playground/src/DeletionNestedMappingStructureContract.sol#L14)

	```solidity
	    function remove() internal{
	```

- Found in src/IncorrectShift.sol [Line: 5](../tests/contract-playground/src/IncorrectShift.sol#L5)

	```solidity
	    function shiftBad() internal pure returns (uint shifted) {
	```

- Found in src/IncorrectShift.sol [Line: 13](../tests/contract-playground/src/IncorrectShift.sol#L13)

	```solidity
	    function shiftGood() internal pure returns (uint shifted) {
	```

- Found in src/UncheckedReturn.sol [Line: 12](../tests/contract-playground/src/UncheckedReturn.sol#L12)

	```solidity
	    function callOneAndDoNothing() internal pure {
	```

- Found in src/UncheckedReturn.sol [Line: 20](../tests/contract-playground/src/UncheckedReturn.sol#L20)

	```solidity
	    function callOneAndDoSomething() internal {
	```

- Found in src/UncheckedReturn.sol [Line: 25](../tests/contract-playground/src/UncheckedReturn.sol#L25)

	```solidity
	    function callTwoAndDoNothing() internal pure {
	```

- Found in src/UncheckedReturn.sol [Line: 30](../tests/contract-playground/src/UncheckedReturn.sol#L30)

	```solidity
	    function callTwoAndDoSomething() internal pure {
	```

- Found in src/UncheckedReturn.sol [Line: 35](../tests/contract-playground/src/UncheckedReturn.sol#L35)

	```solidity
	    function callTwoAndRequireSomething() internal pure {
	```

- Found in src/UncheckedReturn.sol [Line: 40](../tests/contract-playground/src/UncheckedReturn.sol#L40)

	```solidity
	    function callTwoAndEmitError() internal pure {
	```

</details>



## L-35: Storage Array Length not Cached

Calling `.length` on a storage array in a loop condition is expensive. Consider caching the length in a local variable in memory before the loop and reusing it.

<details><summary>3 Found Instances</summary>


- Found in src/CacheArrayLength.sol [Line: 12](../tests/contract-playground/src/CacheArrayLength.sol#L12)

	```solidity
	        for (uint i = 0; i < array.length; i++) {
	```

- Found in src/CacheArrayLength.sol [Line: 44](../tests/contract-playground/src/CacheArrayLength.sol#L44)

	```solidity
	        for (uint i = 0; i < array.length + anotherArray.length; i++) {}
	```

- Found in src/CacheArrayLength.sol [Line: 50](../tests/contract-playground/src/CacheArrayLength.sol#L50)

	```solidity
	        for (uint i = 0; i < array.length + anotherArray.length; i++) {
	```

</details>



## L-36: State change in `assert()` statement

An argument to `assert()` modifies the state. Use `require` for invariants modifying state.

<details><summary>1 Found Instances</summary>


- Found in src/AssertStateChange.sol [Line: 9](../tests/contract-playground/src/AssertStateChange.sol#L9)

	```solidity
	        assert((s_a += 1) > 10);
	```

</details>



## L-37: Costly operations inside loop

Invoking `SSTORE` operations in loops may waste gas. Use a local variable to hold the loop computation result.

<details><summary>19 Found Instances</summary>


- Found in src/CacheArrayLength.sol [Line: 25](../tests/contract-playground/src/CacheArrayLength.sol#L25)

	```solidity
	        for (uint i = 0; i < array.length; i++) {
	```

- Found in src/CacheArrayLength.sol [Line: 35](../tests/contract-playground/src/CacheArrayLength.sol#L35)

	```solidity
	        for (uint i = 0; i < array.length + anotherArray.length; i++) {
	```

- Found in src/CostlyOperationsInsideLoops.sol [Line: 10](../tests/contract-playground/src/CostlyOperationsInsideLoops.sol#L10)

	```solidity
	        for (uint i = 0; i < loop_count; i++) {
	```

- Found in src/EnumerableSetIteration.sol [Line: 29](../tests/contract-playground/src/EnumerableSetIteration.sol#L29)

	```solidity
	        for (uint256 i = 0; i < bytes32Set.length(); i++) {
	```

- Found in src/EnumerableSetIteration.sol [Line: 38](../tests/contract-playground/src/EnumerableSetIteration.sol#L38)

	```solidity
	        while(i < bytes32Set.length()) {
	```

- Found in src/EnumerableSetIteration.sol [Line: 48](../tests/contract-playground/src/EnumerableSetIteration.sol#L48)

	```solidity
	        do {
	```

- Found in src/EnumerableSetIteration.sol [Line: 57](../tests/contract-playground/src/EnumerableSetIteration.sol#L57)

	```solidity
	        for (uint256 i = 0; i < addressSet.length(); i++) {
	```

- Found in src/EnumerableSetIteration.sol [Line: 65](../tests/contract-playground/src/EnumerableSetIteration.sol#L65)

	```solidity
	        for (uint256 i = 0; i < uintSet.length(); i++) {
	```

- Found in src/MsgValueInLoop.sol [Line: 12](../tests/contract-playground/src/MsgValueInLoop.sol#L12)

	```solidity
	        for (uint256 i = 0; i < receivers.length; i++) {
	```

- Found in src/MsgValueInLoop.sol [Line: 25](../tests/contract-playground/src/MsgValueInLoop.sol#L25)

	```solidity
	        for (uint256 i = 0; i < receivers.length; i++) {
	```

- Found in src/MsgValueInLoop.sol [Line: 38](../tests/contract-playground/src/MsgValueInLoop.sol#L38)

	```solidity
	        for (uint256 i = 0; i < receivers.length; i++) {
	```

- Found in src/MsgValueInLoop.sol [Line: 54](../tests/contract-playground/src/MsgValueInLoop.sol#L54)

	```solidity
	        while (i < receivers.length) {
	```

- Found in src/MsgValueInLoop.sol [Line: 71](../tests/contract-playground/src/MsgValueInLoop.sol#L71)

	```solidity
	        do {
	```

- Found in src/RevertsAndRequriesInLoops.sol [Line: 10](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L10)

	```solidity
	        for (uint256 id = 0; id < 10; ++id) {
	```

- Found in src/RevertsAndRequriesInLoops.sol [Line: 17](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L17)

	```solidity
	        for (uint256 id = 0; id < 10; ++id) {
	```

- Found in src/RevertsAndRequriesInLoops.sol [Line: 27](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L27)

	```solidity
	        for (uint256 id = 0; id < 10; ++id) {
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 47](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L47)

	```solidity
	        for (uint256 i = 0; i < s_useMe; ++i) {
	```

- Found in src/eth2/DepositContract.sol [Line: 134](../tests/contract-playground/src/eth2/DepositContract.sol#L134)

	```solidity
	        for (uint height = 0; height < DEPOSIT_CONTRACT_TREE_DEPTH; height++) {
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 17](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L17)

	```solidity
	            for (uint256 j = 9; j != 0; --j) {
	```

</details>



## L-38: Builtin Symbol Shadowing

Name clashes with a built-in-symbol. Consider renaming it.

<details><summary>4 Found Instances</summary>


- Found in src/BuiltinSymbolShadow.sol [Line: 5](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L5)

	```solidity
	    uint now; // BAD
	```

- Found in src/BuiltinSymbolShadow.sol [Line: 8](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L8)

	```solidity
	    function assert(bool condition) public {}
	```

- Found in src/BuiltinSymbolShadow.sol [Line: 17](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L17)

	```solidity
	    modifier blockhash() {
	```

- Found in src/BuiltinSymbolShadow.sol [Line: 22](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L22)

	```solidity
	    event sha256();
	```

</details>



## L-39: Void constructor

Call to a constructor that is not implemented.

<details><summary>1 Found Instances</summary>


- Found in src/VoidConstructor.sol [Line: 16](../tests/contract-playground/src/VoidConstructor.sol#L16)

	```solidity
	    VoidConstructor() 
	```

</details>



## L-40: Missing Inheritance

There is an interface / abstract contract that is potentially missing (not included in) the inheritance of this contract.

<details><summary>3 Found Instances</summary>


- Found in src/MissingInheritance.sol [Line: 7](../tests/contract-playground/src/MissingInheritance.sol#L7)

	Is this contract supposed to implement an interface? Consider extending one of the following: IMissingInheritanceCounter
	```solidity
	contract MissingInheritanceCounter {
	```

- Found in src/MissingInheritance.sol [Line: 41](../tests/contract-playground/src/MissingInheritance.sol#L41)

	Is this contract supposed to implement an interface? Consider extending one of the following: IMissingChild, IMissingParent
	```solidity
	contract MissingContract2 {
	```

- Found in src/TestERC20.sol [Line: 4](../tests/contract-playground/src/TestERC20.sol#L4)

	Is this contract supposed to implement an interface? Consider extending one of the following: IERC20
	```solidity
	contract TestERC20 {
	```

</details>



## L-41: Unused Import

Redundant import statement. Consider removing it.

<details><summary>3 Found Instances</summary>


- Found in src/StateVariables.sol [Line: 4](../tests/contract-playground/src/StateVariables.sol#L4)

	```solidity
	import {Counter} from "./Counter.sol";
	```

- Found in src/UnusedImport.sol [Line: 6](../tests/contract-playground/src/UnusedImport.sol#L6)

	```solidity
	import "./U2.sol";
	```

- Found in src/UnusedImport.sol [Line: 9](../tests/contract-playground/src/UnusedImport.sol#L9)

	```solidity
	import {U3} from "./U3.sol";
	```

</details>



## L-42: Function Pointer in Constructor

solc versions below 0.5.9 contain a compiler bug leading to unexpected behavior when calling uninitialized function pointers in constructors. It is recommended to not use function pointers in constructors.

<details><summary>1 Found Instances</summary>


- Found in src/FunctionPointers.sol [Line: 13](../tests/contract-playground/src/FunctionPointers.sol#L13)

	```solidity
	        function(uint, uint) pure returns (uint) operation;
	```

</details>



## L-43: State Variable Could Be Constant

State variables that are not updated following deployment should be declared constant to save gas. Add the `constant` attribute to state variables that never change.

<details><summary>45 Found Instances</summary>


- Found in src/CostlyOperationsInsideLoops.sol [Line: 6](../tests/contract-playground/src/CostlyOperationsInsideLoops.sol#L6)

	```solidity
	    uint loop_count = 100;
	```

- Found in src/FunctionInitializingState.sol [Line: 7](../tests/contract-playground/src/FunctionInitializingState.sol#L7)

	```solidity
	    uint public w = 5;
	```

- Found in src/FunctionInitializingState.sol [Line: 58](../tests/contract-playground/src/FunctionInitializingState.sol#L58)

	```solidity
	    uint public w = 5;
	```

- Found in src/IncorrectERC20.sol [Line: 5](../tests/contract-playground/src/IncorrectERC20.sol#L5)

	```solidity
	    string public name = "IncorrectToken";
	```

- Found in src/IncorrectERC20.sol [Line: 6](../tests/contract-playground/src/IncorrectERC20.sol#L6)

	```solidity
	    string public symbol = "ICT";
	```

- Found in src/IncorrectERC20.sol [Line: 7](../tests/contract-playground/src/IncorrectERC20.sol#L7)

	```solidity
	    uint8 public decimals = 18;
	```

- Found in src/IncorrectERC20.sol [Line: 8](../tests/contract-playground/src/IncorrectERC20.sol#L8)

	```solidity
	    uint256 public totalSupply = 1000000;
	```

- Found in src/IncorrectERC20.sol [Line: 48](../tests/contract-playground/src/IncorrectERC20.sol#L48)

	```solidity
	    string public name = "CorrectToken";
	```

- Found in src/IncorrectERC20.sol [Line: 49](../tests/contract-playground/src/IncorrectERC20.sol#L49)

	```solidity
	    string public symbol = "CRT";
	```

- Found in src/IncorrectERC20.sol [Line: 50](../tests/contract-playground/src/IncorrectERC20.sol#L50)

	```solidity
	    uint8 public decimals = 18;
	```

- Found in src/IncorrectERC20.sol [Line: 51](../tests/contract-playground/src/IncorrectERC20.sol#L51)

	```solidity
	    uint256 private _totalSupply = 1000000 * 10 ** uint(decimals);
	```

- Found in src/IncorrectERC721.sol [Line: 5](../tests/contract-playground/src/IncorrectERC721.sol#L5)

	```solidity
	    string public name = "IncorrectNFT";
	```

- Found in src/IncorrectERC721.sol [Line: 6](../tests/contract-playground/src/IncorrectERC721.sol#L6)

	```solidity
	    string public symbol = "INFT";
	```

- Found in src/IncorrectERC721.sol [Line: 145](../tests/contract-playground/src/IncorrectERC721.sol#L145)

	```solidity
	    string public name = "CorrectNFT";
	```

- Found in src/IncorrectERC721.sol [Line: 146](../tests/contract-playground/src/IncorrectERC721.sol#L146)

	```solidity
	    string public symbol = "CNFT";
	```

- Found in src/StateVariableCouldBeDeclaredConstant.sol [Line: 8](../tests/contract-playground/src/StateVariableCouldBeDeclaredConstant.sol#L8)

	```solidity
	    uint256 public constantValue = 100;
	```

- Found in src/StateVariableCouldBeDeclaredConstant.sol [Line: 13](../tests/contract-playground/src/StateVariableCouldBeDeclaredConstant.sol#L13)

	```solidity
	    SVIERC20 public h = SVIERC20(address(3)); // This could be declared constant
	```

- Found in src/StateVariables.sol [Line: 13](../tests/contract-playground/src/StateVariables.sol#L13)

	```solidity
	    uint256 private staticNonEmptyPrivateNumber = 1;
	```

- Found in src/StateVariables.sol [Line: 14](../tests/contract-playground/src/StateVariables.sol#L14)

	```solidity
	    uint256 internal staticNonEmptyInternalNumber = 2;
	```

- Found in src/StateVariables.sol [Line: 15](../tests/contract-playground/src/StateVariables.sol#L15)

	```solidity
	    uint256 public staticNonEmptyPublicNumber = 3;
	```

- Found in src/StateVariablesManipulation.sol [Line: 40](../tests/contract-playground/src/StateVariablesManipulation.sol#L40)

	```solidity
	    int256 public simpleInt = 100;
	```

- Found in src/StateVariablesManipulation.sol [Line: 41](../tests/contract-playground/src/StateVariablesManipulation.sol#L41)

	```solidity
	    bool public simpleBool = true;
	```

- Found in src/StateVariablesManipulation.sol [Line: 72](../tests/contract-playground/src/StateVariablesManipulation.sol#L72)

	```solidity
	    uint256[5] public assignToMeNow = [1, 4, 5, 8, 9]; // 1 state var assigned here
	```

- Found in src/Trump.sol [Line: 130](../tests/contract-playground/src/Trump.sol#L130)

	```solidity
	    uint256 private _taxWalletPercentage = 50;
	```

- Found in src/Trump.sol [Line: 131](../tests/contract-playground/src/Trump.sol#L131)

	```solidity
	    uint256 private _teamWalletPercentage = 50;
	```

- Found in src/Trump.sol [Line: 135](../tests/contract-playground/src/Trump.sol#L135)

	```solidity
	    uint256 private _initialBuyTax=20;
	```

- Found in src/Trump.sol [Line: 136](../tests/contract-playground/src/Trump.sol#L136)

	```solidity
	    uint256 private _initialSellTax=20;
	```

- Found in src/Trump.sol [Line: 137](../tests/contract-playground/src/Trump.sol#L137)

	```solidity
	    uint256 private _finalBuyTax=1;
	```

- Found in src/Trump.sol [Line: 138](../tests/contract-playground/src/Trump.sol#L138)

	```solidity
	    uint256 private _finalSellTax=1;
	```

- Found in src/Trump.sol [Line: 139](../tests/contract-playground/src/Trump.sol#L139)

	```solidity
	    uint256 private _reduceBuyTaxAt=20;
	```

- Found in src/Trump.sol [Line: 140](../tests/contract-playground/src/Trump.sol#L140)

	```solidity
	    uint256 private _reduceSellTaxAt=20;
	```

- Found in src/Trump.sol [Line: 141](../tests/contract-playground/src/Trump.sol#L141)

	```solidity
	    uint256 private _preventSwapBefore=20;
	```

- Found in src/Trump.sol [Line: 150](../tests/contract-playground/src/Trump.sol#L150)

	```solidity
	    uint256 public _taxSwapThreshold= 47000 * 10**_decimals;
	```

- Found in src/Trump.sol [Line: 151](../tests/contract-playground/src/Trump.sol#L151)

	```solidity
	    uint256 public _maxTaxSwap= 470000 * 10**_decimals;
	```

- Found in src/UninitializedStateVariable.sol [Line: 8](../tests/contract-playground/src/UninitializedStateVariable.sol#L8)

	```solidity
	    string public s_publisher = "Blockchain Ltd."; // GOOD (because it's initialized here.)
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 14](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L14)

	```solidity
	    uint256 s_1 = 0;
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 16](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L16)

	```solidity
	    uint256 s_2 = 0;
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 19](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L19)

	```solidity
	    uint256 s_3 = 0; // this is a side comment
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 22](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L22)

	```solidity
	    uint256 s_4 = 0; // scc-dblah
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 29](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L29)

	```solidity
	     this is longer comment */ uint256 s_5 = 0;
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 14](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L14)

	```solidity
	    uint256 s_1 = 0;
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 16](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L16)

	```solidity
	    uint256 s_2 = 0;
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 19](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L19)

	```solidity
	    uint256 s_3 = 0; // this is a side comment
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 22](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L22)

	```solidity
	    uint256 s_4 = 0; // scc-dblah
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 29](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L29)

	```solidity
	     this is longer comment */ uint256 s_5 = 0;
	```

</details>



## L-44: State Change Without Event

There are state variable changes in this function but no event is emitted. Consider emitting an event to enable offchain indexers to track the changes.

<details><summary>115 Found Instances</summary>


- Found in src/AdminContract.sol [Line: 14](../tests/contract-playground/src/AdminContract.sol#L14)

	```solidity
	    function someOtherImportantThing() external nonReentrant onlyOwner {
	```

- Found in src/AssertStateChange.sol [Line: 8](../tests/contract-playground/src/AssertStateChange.sol#L8)

	```solidity
	    function bad() public {
	```

- Found in src/AssertStateChange.sol [Line: 12](../tests/contract-playground/src/AssertStateChange.sol#L12)

	```solidity
	    function good() public {
	```

- Found in src/CacheArrayLength.sol [Line: 23](../tests/contract-playground/src/CacheArrayLength.sol#L23)

	```solidity
	    function c3() external {
	```

- Found in src/CacheArrayLength.sol [Line: 32](../tests/contract-playground/src/CacheArrayLength.sol#L32)

	```solidity
	    function c4() external {
	```

- Found in src/Casting.sol [Line: 37](../tests/contract-playground/src/Casting.sol#L37)

	```solidity
	    function unsafeUintCasting() external {
	```

- Found in src/Casting.sol [Line: 75](../tests/contract-playground/src/Casting.sol#L75)

	```solidity
	    function unsafeIntCasting() external {
	```

- Found in src/Casting.sol [Line: 113](../tests/contract-playground/src/Casting.sol#L113)

	```solidity
	    function unsafeBytes32Casting() external {
	```

- Found in src/CostlyOperationsInsideLoops.sol [Line: 9](../tests/contract-playground/src/CostlyOperationsInsideLoops.sol#L9)

	```solidity
	    function bad() external {
	```

- Found in src/CostlyOperationsInsideLoops.sol [Line: 15](../tests/contract-playground/src/CostlyOperationsInsideLoops.sol#L15)

	```solidity
	    function good() external {
	```

- Found in src/Counter.sol [Line: 7](../tests/contract-playground/src/Counter.sol#L7)

	```solidity
	    function setNumber(uint256 newNumber) public {
	```

- Found in src/Counter.sol [Line: 11](../tests/contract-playground/src/Counter.sol#L11)

	```solidity
	    function increment() public {
	```

- Found in src/Counter.sol [Line: 16](../tests/contract-playground/src/Counter.sol#L16)

	```solidity
	    function callIncrement() external {
	```

- Found in src/Counter.sol [Line: 21](../tests/contract-playground/src/Counter.sol#L21)

	```solidity
	    function incrementByTwoMagic() external {
	```

- Found in src/Counter.sol [Line: 28](../tests/contract-playground/src/Counter.sol#L28)

	```solidity
	    function incrementByTwoConstant() external {
	```

- Found in src/DeadCode.sol [Line: 11](../tests/contract-playground/src/DeadCode.sol#L11)

	```solidity
	    function setValue(uint256 _value) external {
	```

- Found in src/DivisionBeforeMultiplication.sol [Line: 7](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L7)

	```solidity
	    function calculateWrong(uint a, uint b, uint c, uint d) external {
	```

- Found in src/DivisionBeforeMultiplication.sol [Line: 11](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L11)

	```solidity
	    function calculateAlsoWrong(uint a, uint b, uint c) external {
	```

- Found in src/DivisionBeforeMultiplication.sol [Line: 15](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L15)

	```solidity
	    function calculateAl(uint a, uint b, uint c) external {
	```

- Found in src/DivisionBeforeMultiplication.sol [Line: 19](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L19)

	```solidity
	    function calculateStillWrong(uint a, uint b, uint c) external {
	```

- Found in src/DivisionBeforeMultiplication.sol [Line: 23](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L23)

	```solidity
	    function calculateCorrect(uint a, uint b, uint c) external {
	```

- Found in src/DivisionBeforeMultiplication.sol [Line: 27](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L27)

	```solidity
	    function calculateAlsoCorrect(uint a, uint b, uint c, uint d) external {
	```

- Found in src/EnumerableSetIteration.sol [Line: 28](../tests/contract-playground/src/EnumerableSetIteration.sol#L28)

	```solidity
	    function badBytes32IterationInForLoop() external {
	```

- Found in src/EnumerableSetIteration.sol [Line: 36](../tests/contract-playground/src/EnumerableSetIteration.sol#L36)

	```solidity
	    function badBytes32IterationInWhileLoop() external {
	```

- Found in src/EnumerableSetIteration.sol [Line: 46](../tests/contract-playground/src/EnumerableSetIteration.sol#L46)

	```solidity
	    function badBytes32IterationInDoWhileLoop() external {
	```

- Found in src/EnumerableSetIteration.sol [Line: 56](../tests/contract-playground/src/EnumerableSetIteration.sol#L56)

	```solidity
	    function badAddressIteration() external {
	```

- Found in src/EnumerableSetIteration.sol [Line: 64](../tests/contract-playground/src/EnumerableSetIteration.sol#L64)

	```solidity
	    function badUintIteration() external {
	```

- Found in src/ExternalCalls.sol [Line: 11](../tests/contract-playground/src/ExternalCalls.sol#L11)

	```solidity
	    function extCall(uint256 m_a) public payable {
	```

- Found in src/ExternalCalls.sol [Line: 19](../tests/contract-playground/src/ExternalCalls.sol#L19)

	```solidity
	    function baseThing(address x) public {
	```

- Found in src/ExternalCalls.sol [Line: 78](../tests/contract-playground/src/ExternalCalls.sol#L78)

	```solidity
	    function notExt1() external {
	```

- Found in src/ExternalCalls.sol [Line: 82](../tests/contract-playground/src/ExternalCalls.sol#L82)

	```solidity
	    function notExt2() external {
	```

- Found in src/IncorrectERC20.sol [Line: 17](../tests/contract-playground/src/IncorrectERC20.sol#L17)

	```solidity
	    function transfer(address to, uint256 value) public {
	```

- Found in src/IncorrectERC20.sol [Line: 23](../tests/contract-playground/src/IncorrectERC20.sol#L23)

	```solidity
	    function approve(address spender, uint256 value) public {
	```

- Found in src/IncorrectERC20.sol [Line: 27](../tests/contract-playground/src/IncorrectERC20.sol#L27)

	```solidity
	    function transferFrom(address from, address to, uint256 value) public {
	```

- Found in src/IncorrectERC20.sol [Line: 68](../tests/contract-playground/src/IncorrectERC20.sol#L68)

	```solidity
	    function transfer(
	```

- Found in src/IncorrectERC20.sol [Line: 83](../tests/contract-playground/src/IncorrectERC20.sol#L83)

	```solidity
	    function approve(address spender, uint256 amount) external returns (bool) {
	```

- Found in src/IncorrectERC20.sol [Line: 88](../tests/contract-playground/src/IncorrectERC20.sol#L88)

	```solidity
	    function transferFrom(
	```

- Found in src/IncorrectERC721.sol [Line: 22](../tests/contract-playground/src/IncorrectERC721.sol#L22)

	```solidity
	    function approve(
	```

- Found in src/IncorrectERC721.sol [Line: 41](../tests/contract-playground/src/IncorrectERC721.sol#L41)

	```solidity
	    function setApprovalForAll(
	```

- Found in src/IncorrectERC721.sol [Line: 56](../tests/contract-playground/src/IncorrectERC721.sol#L56)

	```solidity
	    function transferFrom(
	```

- Found in src/IncorrectERC721.sol [Line: 86](../tests/contract-playground/src/IncorrectERC721.sol#L86)

	```solidity
	    function mint(address to, uint256 tokenId) external returns (uint72) {
	```

- Found in src/InternalFunctions.sol [Line: 12](../tests/contract-playground/src/InternalFunctions.sol#L12)

	```solidity
	    function setValue(uint256 _newValue) external onlyOwner {
	```

- Found in src/MissingInheritance.sol [Line: 10](../tests/contract-playground/src/MissingInheritance.sol#L10)

	```solidity
	    function increment() external {
	```

- Found in src/MissingInheritance.sol [Line: 25](../tests/contract-playground/src/MissingInheritance.sol#L25)

	```solidity
	    function increment() external {
	```

- Found in src/MsgValueInLoop.sol [Line: 10](../tests/contract-playground/src/MsgValueInLoop.sol#L10)

	```solidity
	    function bad(address[] memory receivers) external payable {
	```

- Found in src/MsgValueInLoop.sol [Line: 22](../tests/contract-playground/src/MsgValueInLoop.sol#L22)

	```solidity
	    function good(address[] memory receivers) external payable {
	```

- Found in src/MsgValueInLoop.sol [Line: 36](../tests/contract-playground/src/MsgValueInLoop.sol#L36)

	```solidity
	    function bad(address[] memory receivers) external payable {
	```

- Found in src/MsgValueInLoop.sol [Line: 51](../tests/contract-playground/src/MsgValueInLoop.sol#L51)

	```solidity
	    function bad(address[] memory receivers) external payable {
	```

- Found in src/MsgValueInLoop.sol [Line: 68](../tests/contract-playground/src/MsgValueInLoop.sol#L68)

	```solidity
	    function bad(address[] memory receivers) external payable {
	```

- Found in src/OutOfOrderRetryable.sol [Line: 175](../tests/contract-playground/src/OutOfOrderRetryable.sol#L175)

	```solidity
	    function unstake() public {
	```

- Found in src/RevertsAndRequriesInLoops.sol [Line: 9](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L9)

	```solidity
	    function deductMassFundsV1() external {
	```

- Found in src/RevertsAndRequriesInLoops.sol [Line: 16](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L16)

	```solidity
	    function deductMassFundsV2() external {
	```

- Found in src/RevertsAndRequriesInLoops.sol [Line: 25](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L25)

	```solidity
	     function deductMassFundsV3() external returns(uint256[] memory failedIds) {
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 22](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L22)

	```solidity
	    function badSituation1() external {
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 31](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L31)

	```solidity
	    function badSituation2() external {
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 42](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L42)

	```solidity
	    function badSituation3() external {
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 57](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L57)

	```solidity
	    function goodSituation1() external {
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 66](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L66)

	```solidity
	    function goodSituation2() external {
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 81](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L81)

	```solidity
	    function badSituation4() external onlyOwner {
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 87](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L87)

	```solidity
	    function goodSituation3() external onlyOwner {
	```

- Found in src/StateVariableCouldBeDeclaredConstant.sol [Line: 39](../tests/contract-playground/src/StateVariableCouldBeDeclaredConstant.sol#L39)

	```solidity
	    function changeIt() external {
	```

- Found in src/StateVariableCouldBeDeclaredImmutable.sol [Line: 37](../tests/contract-playground/src/StateVariableCouldBeDeclaredImmutable.sol#L37)

	```solidity
	    function changeNotImmutableVar() external {
	```

- Found in src/StateVariables.sol [Line: 47](../tests/contract-playground/src/StateVariables.sol#L47)

	```solidity
	    function setAddrNoZeroError(address newAddr) public {
	```

- Found in src/StateVariables.sol [Line: 52](../tests/contract-playground/src/StateVariables.sol#L52)

	```solidity
	    function setAddrNoZeroRequire(address newAddr) public {
	```

- Found in src/StateVariables.sol [Line: 57](../tests/contract-playground/src/StateVariables.sol#L57)

	```solidity
	    function setAddrNoCheck(address newAddr) public {
	```

- Found in src/StateVariables.sol [Line: 61](../tests/contract-playground/src/StateVariables.sol#L61)

	```solidity
	    function setEmptyAlteredNumbers(
	```

- Found in src/StateVariables.sol [Line: 71](../tests/contract-playground/src/StateVariables.sol#L71)

	```solidity
	    function setNonEmptyAlteredNumbers(
	```

- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 23](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L23)

	```solidity
	    function stateChangedNoEventEmitted(uint256 a) external {
	```

- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 28](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L28)

	```solidity
	    function stateChangedNoEventEmittedPlusEquals(uint256 a) external {
	```

- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 33](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L33)

	```solidity
	    function stateChangedToBooleanNoEventEmitted() external {
	```

- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 45](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L45)

	```solidity
	    function stateChangedToConstantNoEventEmitted() external {
	```

- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 50](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L50)

	```solidity
	    function stateChangedNoEventEmitted() external {
	```

- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 55](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L55)

	```solidity
	    function addressChangedNotEmitted(address a) external {
	```

- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 68](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L68)

	```solidity
	    function wholeStructChangedEventNotEmitted(uint256 a, uint256 b) external {
	```

- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 81](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L81)

	```solidity
	    function structMemberChangedEventNotEmitted(uint256 a, uint256 b) external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 48](../tests/contract-playground/src/StateVariablesManipulation.sol#L48)

	```solidity
	    function manipulateStateVarDirectly(
	```

- Found in src/StateVariablesManipulation.sol [Line: 80](../tests/contract-playground/src/StateVariablesManipulation.sol#L80)

	```solidity
	    function manipulateDirectly(uint256[5] calldata _values) external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 85](../tests/contract-playground/src/StateVariablesManipulation.sol#L85)

	```solidity
	    function manipulateViaIndexAccess() external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 120](../tests/contract-playground/src/StateVariablesManipulation.sol#L120)

	```solidity
	    function manipulateStateVariables() external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 126](../tests/contract-playground/src/StateVariablesManipulation.sol#L126)

	```solidity
	    function manipulateStateVariables2() external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 139](../tests/contract-playground/src/StateVariablesManipulation.sol#L139)

	```solidity
	    function manipulateStateVariables4() external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 160](../tests/contract-playground/src/StateVariablesManipulation.sol#L160)

	```solidity
	    function manipulateStateVariables6() external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 176](../tests/contract-playground/src/StateVariablesManipulation.sol#L176)

	```solidity
	    function manipulateStateVariables7() external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 182](../tests/contract-playground/src/StateVariablesManipulation.sol#L182)

	```solidity
	    function manipulateStateVariables8() external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 281](../tests/contract-playground/src/StateVariablesManipulation.sol#L281)

	```solidity
	    function manipulateDirectly() external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 286](../tests/contract-playground/src/StateVariablesManipulation.sol#L286)

	```solidity
	    function manipulateViaIndexAccess() external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 314](../tests/contract-playground/src/StateVariablesManipulation.sol#L314)

	```solidity
	    function manipulateDirectly() external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 321](../tests/contract-playground/src/StateVariablesManipulation.sol#L321)

	```solidity
	    function manipulateViaIndexAccess() external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 332](../tests/contract-playground/src/StateVariablesManipulation.sol#L332)

	```solidity
	    function manipulateViaMemberAccess() external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 337](../tests/contract-playground/src/StateVariablesManipulation.sol#L337)

	```solidity
	    function manipulateViaMemberAccess2() external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 353](../tests/contract-playground/src/StateVariablesManipulation.sol#L353)

	```solidity
	    function add(uint256 i) external {
	```

- Found in src/StorageParameters.sol [Line: 7](../tests/contract-playground/src/StorageParameters.sol#L7)

	```solidity
	    function editArrays() external {
	```

- Found in src/TxOriginUsedForAuth.sol [Line: 16](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L16)

	```solidity
	    function authorizeUser(address _user) external {
	```

- Found in src/TxOriginUsedForAuth.sol [Line: 22](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L22)

	```solidity
	    function revokeUser(address _user) external {
	```

- Found in src/UnprotectedInitialize.sol [Line: 21](../tests/contract-playground/src/UnprotectedInitialize.sol#L21)

	```solidity
	    function initializeWithModifier() external firstTimeInitializing {
	```

- Found in src/UnprotectedInitialize.sol [Line: 27](../tests/contract-playground/src/UnprotectedInitialize.sol#L27)

	```solidity
	    function initializeWithRevert() external {
	```

- Found in src/UnprotectedInitialize.sol [Line: 37](../tests/contract-playground/src/UnprotectedInitialize.sol#L37)

	```solidity
	    function initializeWithoutModifierOrRevert() external {
	```

- Found in src/UnprotectedInitialize.sol [Line: 70](../tests/contract-playground/src/UnprotectedInitialize.sol#L70)

	```solidity
	    function initializeWithoutProtection() external {
	```

- Found in src/UnusedError.sol [Line: 16](../tests/contract-playground/src/UnusedError.sol#L16)

	```solidity
	    function perform() external {
	```

- Found in src/UnusedStateVariables.sol [Line: 15](../tests/contract-playground/src/UnusedStateVariables.sol#L15)

	```solidity
	    function setValue(uint256 v) external {
	```

- Found in src/ZeroAddressCheck.sol [Line: 12](../tests/contract-playground/src/ZeroAddressCheck.sol#L12)

	```solidity
	    function goodAddress1(address newAddr) external {
	```

- Found in src/ZeroAddressCheck.sol [Line: 17](../tests/contract-playground/src/ZeroAddressCheck.sol#L17)

	```solidity
	    function goodAddress2(address newAddr) external {
	```

- Found in src/ZeroAddressCheck.sol [Line: 22](../tests/contract-playground/src/ZeroAddressCheck.sol#L22)

	```solidity
	    function goodToken1(address newAddr) external {
	```

- Found in src/ZeroAddressCheck.sol [Line: 27](../tests/contract-playground/src/ZeroAddressCheck.sol#L27)

	```solidity
	    function goodToken2(address newAddr) external {
	```

- Found in src/ZeroAddressCheck.sol [Line: 32](../tests/contract-playground/src/ZeroAddressCheck.sol#L32)

	```solidity
	    function goodToken3(IERC20 newToken) external {
	```

- Found in src/ZeroAddressCheck.sol [Line: 37](../tests/contract-playground/src/ZeroAddressCheck.sol#L37)

	```solidity
	    function goodToken4(IERC20 newToken) external {
	```

- Found in src/ZeroAddressCheck.sol [Line: 42](../tests/contract-playground/src/ZeroAddressCheck.sol#L42)

	```solidity
	    function bad1(address newAddr) external {
	```

- Found in src/ZeroAddressCheck.sol [Line: 46](../tests/contract-playground/src/ZeroAddressCheck.sol#L46)

	```solidity
	    function bad2(IERC20 newToken) external {
	```

- Found in src/ZeroAddressCheck.sol [Line: 50](../tests/contract-playground/src/ZeroAddressCheck.sol#L50)

	```solidity
	    function bad3(address newAddr) external {
	```

- Found in src/inheritance/ExtendedInheritance.sol [Line: 14](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L14)

	```solidity
	    function doSomethingElse(address target) external {
	```

- Found in src/nested/1/Nested.sol [Line: 10](../tests/contract-playground/src/nested/1/Nested.sol#L10)

	```solidity
	    function updateHorseNumber(uint256 newNumberOfHorses) external {
	```

- Found in src/nested/2/Nested.sol [Line: 10](../tests/contract-playground/src/nested/2/Nested.sol#L10)

	```solidity
	    function updateHorseNumber(uint256 newNumberOfHorses) external {
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 15](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L15)

	```solidity
	    function increment(uint256 newNumber) public {
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 32](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L32)

	```solidity
	    function someOtherImportantThing() external nonReentrant onlyOwner {
	```

- Found in src/router/InternalCalls.sol [Line: 120](../tests/contract-playground/src/router/InternalCalls.sol#L120)

	```solidity
	    function main() public {
	```

</details>



## L-45: State Variable Could Be Immutable

State variables that are only changed in the constructor should be declared immutable to save gas. Add the `immutable` attribute to state variables that are only changed in the constructor

<details><summary>36 Found Instances</summary>


- Found in src/ArbitraryTransferFrom.sol [Line: 9](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L9)

	```solidity
	    IERC20 s_token;
	```

- Found in src/EmitAfterExternalCall.sol [Line: 15](../tests/contract-playground/src/EmitAfterExternalCall.sol#L15)

	```solidity
	    MaliciousActor s_actor;
	```

- Found in src/ExternalCalls.sol [Line: 25](../tests/contract-playground/src/ExternalCalls.sol#L25)

	```solidity
	    MyTarget t1;
	```

- Found in src/FunctionInitializingState.sol [Line: 57](../tests/contract-playground/src/FunctionInitializingState.sol#L57)

	```solidity
	    uint public v;
	```

- Found in src/FunctionInitializingState.sol [Line: 59](../tests/contract-playground/src/FunctionInitializingState.sol#L59)

	```solidity
	    uint public x;
	```

- Found in src/InconsistentUints.sol [Line: 5](../tests/contract-playground/src/InconsistentUints.sol#L5)

	```solidity
	    uint public uintVariable; // 1
	```

- Found in src/InconsistentUints.sol [Line: 6](../tests/contract-playground/src/InconsistentUints.sol#L6)

	```solidity
	    uint256 public uint256Variable; // 1
	```

- Found in src/InternalFunctions.sol [Line: 5](../tests/contract-playground/src/InternalFunctions.sol#L5)

	```solidity
	    address public owner;
	```

- Found in src/MultiplePlaceholders.sol [Line: 5](../tests/contract-playground/src/MultiplePlaceholders.sol#L5)

	```solidity
	    address internal owner;
	```

- Found in src/OutOfOrderRetryable.sol [Line: 39](../tests/contract-playground/src/OutOfOrderRetryable.sol#L39)

	```solidity
	    address public inbox;
	```

- Found in src/OutOfOrderRetryable.sol [Line: 40](../tests/contract-playground/src/OutOfOrderRetryable.sol#L40)

	```solidity
	    address public l2contract;
	```

- Found in src/OutOfOrderRetryable.sol [Line: 41](../tests/contract-playground/src/OutOfOrderRetryable.sol#L41)

	```solidity
	    uint256 public maxSubmissionCost;
	```

- Found in src/OutOfOrderRetryable.sol [Line: 42](../tests/contract-playground/src/OutOfOrderRetryable.sol#L42)

	```solidity
	    uint256 public gasLimit;
	```

- Found in src/OutOfOrderRetryable.sol [Line: 43](../tests/contract-playground/src/OutOfOrderRetryable.sol#L43)

	```solidity
	    uint256 public maxFeePerGas;
	```

- Found in src/OutOfOrderRetryable.sol [Line: 44](../tests/contract-playground/src/OutOfOrderRetryable.sol#L44)

	```solidity
	    uint256 public gas;
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 14](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L14)

	```solidity
	    MaliciousActor s_actor;
	```

- Found in src/StateVariableCouldBeDeclaredConstant.sol [Line: 11](../tests/contract-playground/src/StateVariableCouldBeDeclaredConstant.sol#L11)

	```solidity
	    uint256 public variableValue; // This one cannot be marked constant. (It can be marked immutable)
	```

- Found in src/StateVariableCouldBeDeclaredConstant.sol [Line: 29](../tests/contract-playground/src/StateVariableCouldBeDeclaredConstant.sol#L29)

	```solidity
	    uint256 public variableValue;
	```

- Found in src/StateVariableCouldBeDeclaredImmutable.sol [Line: 6](../tests/contract-playground/src/StateVariableCouldBeDeclaredImmutable.sol#L6)

	```solidity
	    uint256 potentiallyImmutableUint;
	```

- Found in src/StateVariableCouldBeDeclaredImmutable.sol [Line: 9](../tests/contract-playground/src/StateVariableCouldBeDeclaredImmutable.sol#L9)

	```solidity
	    address potentiallyImmutableAddr;
	```

- Found in src/StorageConditionals.sol [Line: 5](../tests/contract-playground/src/StorageConditionals.sol#L5)

	```solidity
	    uint256 private s_sameConditionals;
	```

- Found in src/StorageConditionals.sol [Line: 6](../tests/contract-playground/src/StorageConditionals.sol#L6)

	```solidity
	    uint256 private s_differentConditionals;
	```

- Found in src/TestERC20.sol [Line: 7](../tests/contract-playground/src/TestERC20.sol#L7)

	```solidity
	    string public name;
	```

- Found in src/TestERC20.sol [Line: 8](../tests/contract-playground/src/TestERC20.sol#L8)

	```solidity
	    string public symbol;
	```

- Found in src/Trump.sol [Line: 128](../tests/contract-playground/src/Trump.sol#L128)

	```solidity
	    address payable private _taxWallet;
	```

- Found in src/Trump.sol [Line: 129](../tests/contract-playground/src/Trump.sol#L129)

	```solidity
	    address payable private _teamWallet;
	```

- Found in src/TxOriginUsedForAuth.sol [Line: 5](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L5)

	```solidity
	    address public owner;
	```

- Found in src/UninitializedStateVariable.sol [Line: 9](../tests/contract-playground/src/UninitializedStateVariable.sol#L9)

	```solidity
	    uint256 public numPages; // GOOD (because it's initialized in constructor)
	```

- Found in src/UninitializedStateVariable.sol [Line: 37](../tests/contract-playground/src/UninitializedStateVariable.sol#L37)

	```solidity
	    uint256 public myVar; // initialized in extension, hence not captured
	```

- Found in src/UnprotectedInitialize.sol [Line: 9](../tests/contract-playground/src/UnprotectedInitialize.sol#L9)

	```solidity
	    address private owner;
	```

- Found in src/auditor_mode/ExternalCalls.sol [Line: 9](../tests/contract-playground/src/auditor_mode/ExternalCalls.sol#L9)

	```solidity
	    address private target;
	```

- Found in src/auditor_mode/ExternalCalls.sol [Line: 10](../tests/contract-playground/src/auditor_mode/ExternalCalls.sol#L10)

	```solidity
	    ExternalContractInterface private targetContract;
	```

- Found in src/eth2/DepositContract.sol [Line: 66](../tests/contract-playground/src/eth2/DepositContract.sol#L66)

	```solidity
	    bytes32[DEPOSIT_CONTRACT_TREE_DEPTH] zero_hashes;
	```

- Found in src/reused_contract_name/ContractA.sol [Line: 5](../tests/contract-playground/src/reused_contract_name/ContractA.sol#L5)

	```solidity
	    uint public x;
	```

- Found in src/reused_contract_name/ContractB.sol [Line: 5](../tests/contract-playground/src/reused_contract_name/ContractB.sol#L5)

	```solidity
	    address public x;
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 8](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L8)

	```solidity
	    address private s_router;
	```

</details>



## L-46: Multiple Placeholders in Modifier

Design the modifier to only contain 1 placeholder statement. If that is not possible, split the logic into multiple modifiers.

<details><summary>3 Found Instances</summary>


- Found in src/MultiplePlaceholders.sol [Line: 12](../tests/contract-playground/src/MultiplePlaceholders.sol#L12)

	```solidity
	    modifier checkOwner() {
	```

- Found in src/MultiplePlaceholders.sol [Line: 19](../tests/contract-playground/src/MultiplePlaceholders.sol#L19)

	```solidity
	    modifier test2(uint256 a, uint256 b) {
	```

- Found in src/MultiplePlaceholders.sol [Line: 40](../tests/contract-playground/src/MultiplePlaceholders.sol#L40)

	```solidity
	    modifier test4(uint256 a, uint256 b) {
	```

</details>



## L-47: Incorrect Use Of Modifier

If a modifier does not execute `_` or revert, the execution of the function will return the default value, which can be misleading for the caller. It is recommended that all the paths in a modifier must execute _ or revert.

<details><summary>2 Found Instances</summary>


- Found in src/IncorrectModifier.sol [Line: 22](../tests/contract-playground/src/IncorrectModifier.sol#L22)

	```solidity
	    modifier modifierIfRetBAD() {
	```

- Found in src/IncorrectModifier.sol [Line: 30](../tests/contract-playground/src/IncorrectModifier.sol#L30)

	```solidity
	    modifier modifierIfPlaceBAD() {
	```

</details>



## L-48: Unchecked Return

Function returns a value but it is ignored. Consider checking the return value.

<details><summary>35 Found Instances</summary>


- Found in src/ArbitraryTransferFrom.sol [Line: 19](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L19)

	```solidity
	        s_token.transferFrom(from, to, amount);
	```

- Found in src/ArbitraryTransferFrom.sol [Line: 34](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L34)

	```solidity
	        s_token.transferFrom(from_msgsender, to, am);
	```

- Found in src/ArbitraryTransferFrom.sol [Line: 54](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L54)

	```solidity
	        s_token.transferFrom(msg.sender, to, amount);
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 32](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L32)

	```solidity
	        token.approve(spender, value);
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 47](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L47)

	```solidity
	        token.transferFrom(from, to, value);
	```

- Found in src/EnumerableSetIteration.sol [Line: 17](../tests/contract-playground/src/EnumerableSetIteration.sol#L17)

	```solidity
	            bytes32Set.add(bytes32s[i]);
	```

- Found in src/EnumerableSetIteration.sol [Line: 20](../tests/contract-playground/src/EnumerableSetIteration.sol#L20)

	```solidity
	            addressSet.add(addresses[i]);
	```

- Found in src/EnumerableSetIteration.sol [Line: 23](../tests/contract-playground/src/EnumerableSetIteration.sol#L23)

	```solidity
	            uintSet.add(uints[i]);
	```

- Found in src/EnumerableSetIteration.sol [Line: 31](../tests/contract-playground/src/EnumerableSetIteration.sol#L31)

	```solidity
	            bytes32Set.remove(thisBytes32);
	```

- Found in src/EnumerableSetIteration.sol [Line: 40](../tests/contract-playground/src/EnumerableSetIteration.sol#L40)

	```solidity
	            bytes32Set.remove(thisBytes32);
	```

- Found in src/EnumerableSetIteration.sol [Line: 50](../tests/contract-playground/src/EnumerableSetIteration.sol#L50)

	```solidity
	            bytes32Set.remove(thisBytes32);
	```

- Found in src/EnumerableSetIteration.sol [Line: 59](../tests/contract-playground/src/EnumerableSetIteration.sol#L59)

	```solidity
	            addressSet.remove(thisAddress);
	```

- Found in src/EnumerableSetIteration.sol [Line: 67](../tests/contract-playground/src/EnumerableSetIteration.sol#L67)

	```solidity
	            uintSet.remove(thisUint);
	```

- Found in src/OutOfOrderRetryable.sol [Line: 65](../tests/contract-playground/src/OutOfOrderRetryable.sol#L65)

	```solidity
	        IInbox(inbox).createRetryableTicket({
	```

- Found in src/OutOfOrderRetryable.sol [Line: 77](../tests/contract-playground/src/OutOfOrderRetryable.sol#L77)

	```solidity
	        IInbox(inbox).createRetryableTicket({
	```

- Found in src/OutOfOrderRetryable.sol [Line: 92](../tests/contract-playground/src/OutOfOrderRetryable.sol#L92)

	```solidity
	        IInbox(inbox).createRetryableTicket({
	```

- Found in src/OutOfOrderRetryable.sol [Line: 107](../tests/contract-playground/src/OutOfOrderRetryable.sol#L107)

	```solidity
	        IInbox(inbox).createRetryableTicket({
	```

- Found in src/OutOfOrderRetryable.sol [Line: 129](../tests/contract-playground/src/OutOfOrderRetryable.sol#L129)

	```solidity
	        IInbox(inbox).outboundTransferCustomRefund(
	```

- Found in src/OutOfOrderRetryable.sol [Line: 151](../tests/contract-playground/src/OutOfOrderRetryable.sol#L151)

	```solidity
	        IInbox(inbox).unsafeCreateRetryableTicket(
	```

- Found in src/StateVariablesManipulation.sol [Line: 142](../tests/contract-playground/src/StateVariablesManipulation.sol#L142)

	```solidity
	        manipulateHelper(p1);
	```

- Found in src/Trump.sol [Line: 344](../tests/contract-playground/src/Trump.sol#L344)

	```solidity
	        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
	```

- Found in src/UncheckedReturn.sol [Line: 14](../tests/contract-playground/src/UncheckedReturn.sol#L14)

	```solidity
	        one();
	```

- Found in src/UncheckedReturn.sol [Line: 27](../tests/contract-playground/src/UncheckedReturn.sol#L27)

	```solidity
	        UncheckedHelperExternal(address(0x12345)).two();
	```

- Found in src/router/ExternalCalls.sol [Line: 27](../tests/contract-playground/src/router/ExternalCalls.sol#L27)

	```solidity
	        a.abc();
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 23](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L23)

	```solidity
	        router1.swapExactTokensForTokens(amountIn, amountOutMin, path, to, block.timestamp);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 24](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L24)

	```solidity
	        router1.swapTokensForExactTokens(amountOut, amountInMax, path, to, block.timestamp);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 25](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L25)

	```solidity
	        router1.swapExactETHForTokens(amountOutMin, path, to, block.timestamp);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 26](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L26)

	```solidity
	        router1.swapTokensForExactETH(amountOut, amountInMax, path, to, block.timestamp);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 27](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L27)

	```solidity
	        router1.swapExactTokensForETH(amountIn, amountOutMin, path, to, block.timestamp);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 46](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L46)

	```solidity
	        router1.swapExactTokensForTokens(amountIn, amountOutMin, path, to, deadline);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 47](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L47)

	```solidity
	        router1.swapTokensForExactTokens(amountOut, amountInMax, path, to, deadline);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 48](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L48)

	```solidity
	        router1.swapExactETHForTokens(amountOutMin, path, to, deadline);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 49](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L49)

	```solidity
	        router1.swapTokensForExactETH(amountOut, amountInMax, path, to, deadline);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 50](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L50)

	```solidity
	        router1.swapExactTokensForETH(amountIn, amountOutMin, path, to, deadline);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 51](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L51)

	```solidity
	        router1.swapETHForExactTokens(amountOut, path, to, deadline);
	```

</details>




```
Page 92/94FirstPrevNextLast