#
tokens: 108281/50000 1/1140 files (page 94/94)
lines: off (toggle) GitHub
raw markdown copy
This is page 94 of 94. Use http://codebase.md/cyfrin/aderyn?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/templegold-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: Unsafe Casting of integers](#h-1-unsafe-casting-of-integers)
  - [H-2: Contract Name Reused in Different Files](#h-2-contract-name-reused-in-different-files)
  - [H-3: ETH transferred without address checks](#h-3-eth-transferred-without-address-checks)
  - [H-4: Weak Randomness](#h-4-weak-randomness)
  - [H-5: Deletion from a nested mapping](#h-5-deletion-from-a-nested-mapping)
  - [H-6: Contract locks Ether without a withdraw function](#h-6-contract-locks-ether-without-a-withdraw-function)
  - [H-7: Reentrancy: State change after external call](#h-7-reentrancy-state-change-after-external-call)
- [Low Issues](#low-issues)
  - [L-1: Centralization Risk](#l-1-centralization-risk)
  - [L-2: `ecrecover` Signature Malleability](#l-2-ecrecover-signature-malleability)
  - [L-3: Unsafe ERC20 Operation](#l-3-unsafe-erc20-operation)
  - [L-4: Unspecific Solidity Pragma](#l-4-unspecific-solidity-pragma)
  - [L-5: Address State Variable Set Without Checks](#l-5-address-state-variable-set-without-checks)
  - [L-6: Public Function Not Used Internally](#l-6-public-function-not-used-internally)
  - [L-7: Literal Instead of Constant](#l-7-literal-instead-of-constant)
  - [L-8: Empty `require()` / `revert()` Statement](#l-8-empty-require--revert-statement)
  - [L-9: Modifier Invoked Only Once](#l-9-modifier-invoked-only-once)
  - [L-10: Empty Block](#l-10-empty-block)
  - [L-11: Large Numeric Literal](#l-11-large-numeric-literal)
  - [L-12: Internal Function Used Only Once](#l-12-internal-function-used-only-once)
  - [L-13: Inconsistent uint256/uint (or) int256/int types](#l-13-inconsistent-uint256uint-or-int256int-types)
  - [L-14: Unused Error](#l-14-unused-error)
  - [L-15: Loop Contains `require`/`revert`](#l-15-loop-contains-requirerevert)
  - [L-16: Incorrect Order of Division and Multiplication](#l-16-incorrect-order-of-division-and-multiplication)
  - [L-17: Redundant Statement](#l-17-redundant-statement)
  - [L-18: Unused State Variable](#l-18-unused-state-variable)
  - [L-19: Boolean equality is not required](#l-19-boolean-equality-is-not-required)
  - [L-20: Local Variable Shadows State Variable](#l-20-local-variable-shadows-state-variable)
  - [L-21: Uninitialized Local Variable](#l-21-uninitialized-local-variable)
  - [L-22: Costly operations inside loop](#l-22-costly-operations-inside-loop)
  - [L-23: Missing Inheritance](#l-23-missing-inheritance)
  - [L-24: Unused Import](#l-24-unused-import)
  - [L-25: State Change Without Event](#l-25-state-change-without-event)
  - [L-26: State Variable Could Be Immutable](#l-26-state-variable-could-be-immutable)
  - [L-27: Unchecked Return](#l-27-unchecked-return)


# Summary

## Files Summary

| Key | Value |
| --- | --- |
| .sol Files | 129 |
| Total nSLOC | 10226 |


## Files Details

| Filepath | nSLOC |
| --- | --- |
| contracts/admin/TempleTeamPayments.sol | 81 |
| contracts/admin/TempleTeamPaymentsFactory.sol | 113 |
| contracts/admin/TempleTeamPaymentsV2.sol | 68 |
| contracts/amm/TempleStableAMMRouter.sol | 174 |
| contracts/amm/TempleUniswapV2Pair.sol | 146 |
| contracts/amm/TreasuryIV.sol | 17 |
| contracts/amo/AuraStaking.sol | 99 |
| contracts/amo/Ramos.sol | 350 |
| contracts/amo/helpers/AMOCommon.sol | 17 |
| contracts/amo/helpers/BalancerPoolHelper.sol | 329 |
| contracts/amo/test/RamosTestnetAuraStaking.sol | 79 |
| contracts/amo/test/RamosTestnetTempleTokenVault.sol | 28 |
| contracts/amo/test/external/IAuraStakingProxy.sol | 6 |
| contracts/amo/test/external/IAuraToken.sol | 4 |
| contracts/amo/test/external/IBalancerAuthorizer.sol | 13 |
| contracts/amo/test/external/IBalancerAuthorizerAdapter.sol | 7 |
| contracts/amo/test/external/IBalancerHelpers.sol | 27 |
| contracts/amo/test/external/IBalancerVotingEscrow.sol | 4 |
| contracts/amo/test/external/IGaugeAdder.sol | 4 |
| contracts/amo/test/external/IGaugeController.sol | 7 |
| contracts/amo/test/external/ILiquidityGaugeFactory.sol | 4 |
| contracts/amo/test/external/IPoolManagerProxy.sol | 4 |
| contracts/amo/test/external/IPoolManagerV3.sol | 5 |
| contracts/amo/test/external/IStashRewards.sol | 7 |
| contracts/amo/test/external/IWeightPool2Tokens.sol | 4 |
| contracts/amo/test/external/goerli/Goerli_ILiquidityGaugeFactory.sol | 5 |
| contracts/common/CommonEventsAndErrors.sol | 11 |
| contracts/common/SafeCast.sol | 10 |
| contracts/common/TempleMath.sol | 10 |
| contracts/core/Exposure.sol | 68 |
| contracts/core/JoiningFee.sol | 30 |
| contracts/core/MultiOtcOffer.sol | 163 |
| contracts/core/OpsManager.sol | 110 |
| contracts/core/OpsManagerLib.sol | 76 |
| contracts/core/OtcOffer.sol | 91 |
| contracts/core/Rational.sol | 5 |
| contracts/core/RebasingERC20.sol | 45 |
| contracts/core/TempleERC20Token.sol | 23 |
| contracts/core/TreasuryFarmingRevenue.sol | 44 |
| contracts/core/Vault.sol | 117 |
| contracts/core/VaultEarlyWithdraw.sol | 49 |
| contracts/core/VaultProxy.sol | 84 |
| contracts/core/VaultedTemple.sol | 26 |
| contracts/deprecated/Faith.sol | 41 |
| contracts/deprecated/IExitQueue.sol | 4 |
| contracts/deprecated/InstantExitQueue.sol | 20 |
| contracts/deprecated/LockedOGTemple.sol | 61 |
| contracts/deprecated/OGTemple.sol | 13 |
| contracts/deprecated/TempleStaking.sol | 98 |
| contracts/fakes/FakeERC20.sol | 20 |
| contracts/fakes/FakeERC20CustomDecimals.sol | 26 |
| contracts/fakes/NoopLiquidator.sol | 13 |
| contracts/fakes/NoopVaultedTempleLiquidator.sol | 16 |
| contracts/fakes/UniswapV2Factory.sol | 2 |
| contracts/fakes/UniswapV2Router02NoEth.sol | 354 |
| contracts/fakes/governance/DummyTimelockController.sol | 28 |
| contracts/fakes/templegold/TempleGoldMock.sol | 78 |
| contracts/fakes/templegold/TempleGoldStakingMock.sol | 436 |
| contracts/fakes/templegold/TempleTokenMock.sol | 21 |
| contracts/fakes/v2/TempleDebtTokenTestnetAdmin.sol | 45 |
| contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol | 116 |
| contracts/governance/ElderElection.sol | 109 |
| contracts/governance/Templar.sol | 49 |
| contracts/governance/TemplarMetadata.sol | 23 |
| contracts/interfaces/amo/IAuraStaking.sol | 40 |
| contracts/interfaces/amo/IRamos.sol | 106 |
| contracts/interfaces/amo/helpers/IBalancerPoolHelper.sol | 86 |
| contracts/interfaces/amo/helpers/IRamosTokenVault.sol | 7 |
| contracts/interfaces/core/IMultiOtcOffer.sol | 60 |
| contracts/interfaces/core/ITempleERC20Token.sol | 7 |
| contracts/interfaces/external/aura/IAuraBaseRewardPool.sol | 15 |
| contracts/interfaces/external/aura/IAuraBooster.sol | 21 |
| contracts/interfaces/external/balancer/IBalancerBptToken.sol | 5 |
| contracts/interfaces/external/balancer/IBalancerHelpers.sol | 16 |
| contracts/interfaces/external/balancer/IBalancerVault.sol | 66 |
| contracts/interfaces/external/makerDao/IMakerDaoDaiJoinLike.sol | 7 |
| contracts/interfaces/external/makerDao/IMakerDaoPotLike.sol | 10 |
| contracts/interfaces/external/makerDao/IMakerDaoVatLike.sol | 5 |
| contracts/interfaces/templegold/IAuctionBase.sol | 26 |
| contracts/interfaces/templegold/IDaiGoldAuction.sol | 33 |
| contracts/interfaces/templegold/ISpiceAuction.sol | 37 |
| contracts/interfaces/templegold/ISpiceAuctionFactory.sol | 10 |
| contracts/interfaces/templegold/ITempleGold.sol | 57 |
| contracts/interfaces/templegold/ITempleGoldAdmin.sol | 19 |
| contracts/interfaces/templegold/ITempleGoldStaking.sol | 86 |
| contracts/interfaces/templegold/ITempleTeleporter.sol | 24 |
| contracts/interfaces/v2/ITempleDebtToken.sol | 60 |
| contracts/interfaces/v2/ITreasuryPriceIndexOracle.sol | 20 |
| contracts/interfaces/v2/ITreasuryReservesVault.sol | 118 |
| contracts/interfaces/v2/access/ITempleElevatedAccess.sol | 23 |
| contracts/interfaces/v2/circuitBreaker/ITempleCircuitBreaker.sol | 5 |
| contracts/interfaces/v2/circuitBreaker/ITempleCircuitBreakerProxy.sol | 27 |
| contracts/interfaces/v2/interestRate/IInterestRateModel.sol | 6 |
| contracts/interfaces/v2/safeGuards/IThresholdSafeGuard.sol | 16 |
| contracts/interfaces/v2/strategies/ITempleBaseStrategy.sol | 8 |
| contracts/interfaces/v2/strategies/ITempleStrategy.sol | 35 |
| contracts/interfaces/v2/strategies/ITlcStrategy.sol | 5 |
| contracts/interfaces/v2/templeLineOfCredit/ITempleLineOfCredit.sol | 54 |
| contracts/interfaces/v2/templeLineOfCredit/ITlcDataTypes.sol | 38 |
| contracts/interfaces/v2/templeLineOfCredit/ITlcEventsAndErrors.sol | 19 |
| contracts/templegold/AuctionBase.sol | 10 |
| contracts/templegold/DaiGoldAuction.sol | 162 |
| contracts/templegold/EpochLib.sol | 13 |
| contracts/templegold/SpiceAuction.sol | 197 |
| contracts/templegold/SpiceAuctionFactory.sol | 42 |
| contracts/templegold/TempleGold.sol | 172 |
| contracts/templegold/TempleGoldAdmin.sol | 50 |
| contracts/templegold/TempleGoldStaking.sol | 355 |
| contracts/templegold/TempleTeleporter.sol | 58 |
| contracts/util/ABDKMath64x64.sol | 478 |
| contracts/util/ABDKMathQuad.sol | 793 |
| contracts/v2/TempleDebtToken.sol | 421 |
| contracts/v2/TreasuryPriceIndexOracle.sol | 58 |
| contracts/v2/TreasuryReservesVault.sol | 448 |
| contracts/v2/access/TempleElevatedAccess.sol | 78 |
| contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol | 96 |
| contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol | 49 |
| contracts/v2/interestRate/BaseInterestRateModel.sol | 16 |
| contracts/v2/interestRate/CompoundedInterest.sol | 15 |
| contracts/v2/interestRate/LinearWithKinkInterestRateModel.sol | 97 |
| contracts/v2/safeGuards/SafeForked.sol | 65 |
| contracts/v2/safeGuards/ThresholdSafeGuard.sol | 124 |
| contracts/v2/strategies/AbstractStrategy.sol | 106 |
| contracts/v2/strategies/DsrBaseStrategy.sol | 163 |
| contracts/v2/strategies/GnosisStrategy.sol | 104 |
| contracts/v2/strategies/RamosStrategy.sol | 156 |
| contracts/v2/strategies/TempleTokenBaseStrategy.sol | 62 |
| contracts/v2/strategies/TlcStrategy.sol | 56 |
| contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol | 468 |
| **Total** | **10226** |


## Issue Summary

| Category | No. of Issues |
| --- | --- |
| High | 7 |
| Low | 27 |


# High Issues

## H-1: 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>2 Found Instances</summary>


- Found in contracts/util/ABDKMath64x64.sol [Line: 483](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L483)

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

- Found in contracts/v2/interestRate/LinearWithKinkInterestRateModel.sol [Line: 140](../tests/2024-07-templegold/protocol/contracts/v2/interestRate/LinearWithKinkInterestRateModel.sol#L140)

	```solidity
	        return uint96(interestRate);
	```

</details>



## H-2: 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>4 Found Instances</summary>


- Found in contracts/amo/helpers/BalancerPoolHelper.sol [Line: 13](../tests/2024-07-templegold/protocol/contracts/amo/helpers/BalancerPoolHelper.sol#L13)

	```solidity
	interface IWeightPool2Tokens {
	```

- Found in contracts/amo/test/external/IBalancerHelpers.sol [Line: 5](../tests/2024-07-templegold/protocol/contracts/amo/test/external/IBalancerHelpers.sol#L5)

	```solidity
	interface IBalancerHelpers {
	```

- Found in contracts/amo/test/external/IWeightPool2Tokens.sol [Line: 5](../tests/2024-07-templegold/protocol/contracts/amo/test/external/IWeightPool2Tokens.sol#L5)

	```solidity
	interface IWeightPool2Tokens {
	```

- Found in contracts/interfaces/external/balancer/IBalancerHelpers.sol [Line: 7](../tests/2024-07-templegold/protocol/contracts/interfaces/external/balancer/IBalancerHelpers.sol#L7)

	```solidity
	interface IBalancerHelpers {
	```

</details>



## H-3: ETH transferred without address checks

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

<details><summary>29 Found Instances</summary>


- Found in contracts/admin/TempleTeamPayments.sol [Line: 74](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPayments.sol#L74)

	```solidity
	    function claim() external addressExists(msg.sender) {
	```

- Found in contracts/admin/TempleTeamPaymentsV2.sol [Line: 74](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsV2.sol#L74)

	```solidity
	    function claim(uint256 _claimAmount) external {
	```

- Found in contracts/amo/test/RamosTestnetTempleTokenVault.sol [Line: 27](../tests/2024-07-templegold/protocol/contracts/amo/test/RamosTestnetTempleTokenVault.sol#L27)

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

- Found in contracts/amo/test/RamosTestnetTempleTokenVault.sol [Line: 31](../tests/2024-07-templegold/protocol/contracts/amo/test/RamosTestnetTempleTokenVault.sol#L31)

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

- Found in contracts/amo/test/RamosTestnetTempleTokenVault.sol [Line: 36](../tests/2024-07-templegold/protocol/contracts/amo/test/RamosTestnetTempleTokenVault.sol#L36)

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

- Found in contracts/core/MultiOtcOffer.sol [Line: 156](../tests/2024-07-templegold/protocol/contracts/core/MultiOtcOffer.sol#L156)

	```solidity
	    function swap(bytes32 marketId, uint256 sellTokenAmount) external override whenNotPaused returns (uint256) {
	```

- Found in contracts/core/MultiOtcOffer.sol [Line: 168](../tests/2024-07-templegold/protocol/contracts/core/MultiOtcOffer.sol#L168)

	```solidity
	    function swap(
	```

- Found in contracts/core/OtcOffer.sol [Line: 131](../tests/2024-07-templegold/protocol/contracts/core/OtcOffer.sol#L131)

	```solidity
	    function swap(uint256 sellTokenAmount) external whenNotPaused returns (uint256 buyTokenAmount) {
	```

- Found in contracts/core/VaultEarlyWithdraw.sol [Line: 57](../tests/2024-07-templegold/protocol/contracts/core/VaultEarlyWithdraw.sol#L57)

	```solidity
	    function withdraw(address _vault, uint256 _templeAmount) external whenNotPaused {
	```

- Found in contracts/core/VaultProxy.sol [Line: 58](../tests/2024-07-templegold/protocol/contracts/core/VaultProxy.sol#L58)

	```solidity
	    function depositTempleWithFaith(uint256 _amountTemple, uint112 _amountFaith, Vault vault) public {
	```

- Found in contracts/core/VaultProxy.sol [Line: 71](../tests/2024-07-templegold/protocol/contracts/core/VaultProxy.sol#L71)

	```solidity
	    function unstakeAndDepositTempleWithFaith(uint256 _amountOGT, uint112 _amountFaith, Vault vault) external {
	```

- Found in contracts/core/VaultProxy.sol [Line: 83](../tests/2024-07-templegold/protocol/contracts/core/VaultProxy.sol#L83)

	```solidity
	    function unstakeAndDepositIntoVault(uint256 _amountOGT, Vault vault) external {
	```

- Found in contracts/core/VaultProxy.sol [Line: 109](../tests/2024-07-templegold/protocol/contracts/core/VaultProxy.sol#L109)

	```solidity
	    function depositTempleFor(uint256 _amount, Vault vault) public {
	```

- Found in contracts/deprecated/LockedOGTemple.sol [Line: 35](../tests/2024-07-templegold/protocol/contracts/deprecated/LockedOGTemple.sol#L35)

	```solidity
	  function lockFor(
	```

- Found in contracts/deprecated/LockedOGTemple.sol [Line: 55](../tests/2024-07-templegold/protocol/contracts/deprecated/LockedOGTemple.sol#L55)

	```solidity
	  function lock(uint256 _amountOGTemple, uint256 _lockedUntilTimestamp)
	```

- Found in contracts/deprecated/LockedOGTemple.sol [Line: 62](../tests/2024-07-templegold/protocol/contracts/deprecated/LockedOGTemple.sol#L62)

	```solidity
	  function withdrawFor(address _staker, uint256 _idx) public {
	```

- Found in contracts/deprecated/LockedOGTemple.sol [Line: 83](../tests/2024-07-templegold/protocol/contracts/deprecated/LockedOGTemple.sol#L83)

	```solidity
	  function withdraw(uint256 _idx) external {
	```

- Found in contracts/deprecated/TempleStaking.sol [Line: 123](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L123)

	```solidity
	    function stakeFor(address _staker, uint256 _amountTemple) public returns(uint256 amountOgTemple) {
	```

- Found in contracts/deprecated/TempleStaking.sol [Line: 139](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L139)

	```solidity
	    function stake(uint256 _amountTemple) external returns(uint256 amountOgTemple) {
	```

- Found in contracts/deprecated/TempleStaking.sol [Line: 144](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L144)

	```solidity
	    function unstake(uint256 _amountOgTemple) external {      
	```

- Found in contracts/templegold/DaiGoldAuction.sol [Line: 132](../tests/2024-07-templegold/protocol/contracts/templegold/DaiGoldAuction.sol#L132)

	```solidity
	    function bid(uint256 amount) external virtual override onlyWhenLive {
	```

- Found in contracts/templegold/DaiGoldAuction.sol [Line: 150](../tests/2024-07-templegold/protocol/contracts/templegold/DaiGoldAuction.sol#L150)

	```solidity
	    function claim(uint256 epochId) external virtual override {
	```

- Found in contracts/templegold/SpiceAuction.sol [Line: 183](../tests/2024-07-templegold/protocol/contracts/templegold/SpiceAuction.sol#L183)

	```solidity
	    function bid(uint256 amount) external virtual override {
	```

- Found in contracts/templegold/SpiceAuction.sol [Line: 209](../tests/2024-07-templegold/protocol/contracts/templegold/SpiceAuction.sol#L209)

	```solidity
	    function claim(uint256 epochId) external virtual override {
	```

- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 145](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L145)

	```solidity
	    function addCollateral(uint128 collateralAmount, address onBehalfOf) external override notInRescueMode {
	```

- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 166](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L166)

	```solidity
	    function removeCollateral(uint128 amount, address recipient) external override notInRescueMode {
	```

- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 253](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L253)

	```solidity
	    function repay(uint128 repayAmount, address onBehalfOf) external override notInRescueMode {
	```

- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 287](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L287)

	```solidity
	    function repayAll(address onBehalfOf) external override notInRescueMode {
	```

- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 318](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L318)

	```solidity
	    function batchLiquidate(
	```

</details>



## H-4: 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>1 Found Instances</summary>


- Found in contracts/amm/TempleUniswapV2Pair.sol [Line: 82](../tests/2024-07-templegold/protocol/contracts/amm/TempleUniswapV2Pair.sol#L82)

	```solidity
	        uint32 blockTimestamp = uint32(block.timestamp % 2**32);
	```

</details>



## H-5: 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 contracts/v2/TreasuryReservesVault.sol [Line: 317](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L317)

	```solidity
	        delete strategies[strategy];
	```

</details>



## H-6: 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>1 Found Instances</summary>


- Found in contracts/fakes/UniswapV2Router02NoEth.sol [Line: 21](../tests/2024-07-templegold/protocol/contracts/fakes/UniswapV2Router02NoEth.sol#L21)

	```solidity
	contract UniswapV2Router02NoEth is IUniswapV2Router02 {
	```

</details>



## H-7: 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>23 Found Instances</summary>


- Found in contracts/amo/Ramos.sol [Line: 195](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L195)

	State is changed at: `tokenVault = IRamosTokenVault(vault)`
	```solidity
	            protocolToken.approve(previousVault, 0);
	```

- Found in contracts/amo/Ramos.sol [Line: 196](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L196)

	State is changed at: `tokenVault = IRamosTokenVault(vault)`
	```solidity
	            quoteToken.approve(previousVault, 0);
	```

- Found in contracts/core/MultiOtcOffer.sol [Line: 68](../tests/2024-07-templegold/protocol/contracts/core/MultiOtcOffer.sol#L68)

	State is changed at: `marketInfo.scalar = 10 ** scaleDecimals`
	```solidity
	        uint256 scaleDecimals = marketInfo.offerPricingToken == OfferPricingToken.UserBuyToken
	```

- Found in contracts/core/OpsManager.sol [Line: 36](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L36)

	State is changed at: `vaultedTemple = new VaultedTemple(_templeToken, address(templeExposure))`
	```solidity
	        templeExposure.setMinterState(address(this), true);
	```

- Found in contracts/core/OtcOffer.sol [Line: 91](../tests/2024-07-templegold/protocol/contracts/core/OtcOffer.sol#L91)

	State is changed at: `scalar = 10 ** scaleDecimals`
	```solidity
	        uint256 scaleDecimals = offerPricingToken == OfferPricingToken.UserBuyToken
	```

- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 158](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L158)

	State is changed at: `_accountLastStakeIndex[msg.sender] = ++_lastIndex`
	```solidity
	        uint256 amount = previousStaking.migrateWithdraw(msg.sender, index);
	```

- Found in contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol [Line: 52](../tests/2024-07-templegold/protocol/contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol#L52)

	State is changed at: `daiSavingsRate = _newRate`
	```solidity
	        _checkpointDaiBalance(daiToken.balanceOf(address(this)));
	```

- Found in contracts/governance/ElderElection.sol [Line: 74](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L74)

	State is changed at: `candidates[discordId] = true`, `numCandidates += 1`
	```solidity
	        templars.checkExists(discordId);
	```

- Found in contracts/governance/ElderElection.sol [Line: 87](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L87)

	State is changed at: `candidates[discordId] = false`, `numCandidates -= 1`
	```solidity
	        templars.checkExists(discordId);
	```

- Found in contracts/governance/TemplarMetadata.sol [Line: 32](../tests/2024-07-templegold/protocol/contracts/governance/TemplarMetadata.sol#L32)

	State is changed at: `templeRole[discordId] = _templeRole`
	```solidity
	        templars.checkExists(discordId);
	```

- Found in contracts/templegold/SpiceAuction.sol [Line: 159](../tests/2024-07-templegold/protocol/contracts/templegold/SpiceAuction.sol#L159)

	State is changed at: `uint128 startTime = info.startTime = uint128(block.timestamp) + config.startCooldown`, `uint128 endTime = info.endTime = startTime + config.duration`, `info.totalAuctionTokenAmount = epochAuctionTokenAmount`, `_totalAuctionTokenAllocation[auctionToken] = totalAuctionTokenAllocation + epochAuctionTokenAmount`
	```solidity
	        uint256 balance = IERC20(auctionToken).balanceOf(address(this));
	```

- Found in contracts/templegold/SpiceAuction.sol [Line: 194](../tests/2024-07-templegold/protocol/contracts/templegold/SpiceAuction.sol#L194)

	State is changed at: `info.totalBidTokenAmount += amount`
	```solidity
	        uint256 _bidTokenAmountBefore = IERC20(bidToken).balanceOf(_recipient);
	```

- Found in contracts/templegold/SpiceAuction.sol [Line: 196](../tests/2024-07-templegold/protocol/contracts/templegold/SpiceAuction.sol#L196)

	State is changed at: `info.totalBidTokenAmount += amount`
	```solidity
	        uint256 _bidTokenAmountAfter = IERC20(bidToken).balanceOf(_recipient);
	```

- Found in contracts/v2/TreasuryReservesVault.sol [Line: 148](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L148)

	State is changed at: `tpiOracle = _tpiOracle`
	```solidity
	        if (_tpiOracle.treasuryPriceIndex() == 0) revert CommonEventsAndErrors.InvalidParam();
	```

- Found in contracts/v2/TreasuryReservesVault.sol [Line: 296](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L296)

	State is changed at: `delete strategies[strategy]`, `delete _strategyConfig.debtCeiling[_token]`, `delete _strategyConfig.enabledBorrowTokens[_token]`, `delete credits[_token]`
	```solidity
	            _outstandingDebt = borrowTokens[_token].dToken.burnAll(strategy);
	```

- Found in contracts/v2/strategies/DsrBaseStrategy.sol [Line: 55](../tests/2024-07-templegold/protocol/contracts/v2/strategies/DsrBaseStrategy.sol#L55)

	State is changed at: `pot = IMakerDaoPotLike(_pot)`, `daiToken = IERC20(_daiToken)`
	```solidity
	        IMakerDaoVatLike vat = IMakerDaoVatLike(daiJoin.vat());
	```

- Found in contracts/v2/strategies/DsrBaseStrategy.sol [Line: 57](../tests/2024-07-templegold/protocol/contracts/v2/strategies/DsrBaseStrategy.sol#L57)

	State is changed at: `daiToken = IERC20(_daiToken)`
	```solidity
	        vat.hope(address(daiJoin));
	```

- Found in contracts/v2/strategies/DsrBaseStrategy.sol [Line: 58](../tests/2024-07-templegold/protocol/contracts/v2/strategies/DsrBaseStrategy.sol#L58)

	State is changed at: `daiToken = IERC20(_daiToken)`
	```solidity
	        vat.hope(address(pot));
	```

- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 173](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L173)

	State is changed at: `_accountData.collateral = _collateral - amount`, `totalCollateral -= amount`
	```solidity
	        circuitBreakerProxy.preCheck(
	```

- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 213](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L213)

	State is changed at: `_accountData.debtCheckpoint = _totalDebt`, `_accountData.interestAccumulator = _cache.interestAccumulator`, `debtTokenData.totalDebt = _cache.totalDebt = _cache.totalDebt + amount`
	```solidity
	        circuitBreakerProxy.preCheck(
	```

- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 351](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L351)

	State is changed at: `totalCollateral -= totalCollateralClaimed`
	```solidity
	            treasuryReservesVault.repay(templeToken, totalCollateralClaimed, address(tlcStrategy));
	```

- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 394](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L394)

	State is changed at: `treasuryReservesVault = ITreasuryReservesVault(_trv)`
	```solidity
	            daiToken.approve(previousTrv, 0);
	```

- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 397](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L397)

	State is changed at: `treasuryReservesVault = ITreasuryReservesVault(_trv)`
	```solidity
	        address _trv = address(tlcStrategy.treasuryReservesVault());
	```

</details>



# Low Issues

## L-1: 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>91 Found Instances</summary>


- Found in contracts/admin/TempleTeamPayments.sol [Line: 8](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPayments.sol#L8)

	```solidity
	contract TempleTeamPayments is Ownable {
	```

- Found in contracts/admin/TempleTeamPayments.sol [Line: 32](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPayments.sol#L32)

	```solidity
	    ) external onlyOwner {
	```

- Found in contracts/admin/TempleTeamPayments.sol [Line: 44](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPayments.sol#L44)

	```solidity
	    function setAllocation(address _address, uint256 _amount) external onlyOwner {
	```

- Found in contracts/admin/TempleTeamPayments.sol [Line: 51](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPayments.sol#L51)

	```solidity
	        onlyOwner
	```

- Found in contracts/admin/TempleTeamPayments.sol [Line: 83](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPayments.sol#L83)

	```solidity
	    function adhocPayment(address _to, uint256 _amount) external onlyOwner {
	```

- Found in contracts/admin/TempleTeamPayments.sol [Line: 92](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPayments.sol#L92)

	```solidity
	        onlyOwner
	```

- Found in contracts/admin/TempleTeamPaymentsFactory.sol [Line: 9](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsFactory.sol#L9)

	```solidity
	contract TempleTeamPaymentsFactory is Ownable {
	```

- Found in contracts/admin/TempleTeamPaymentsFactory.sol [Line: 58](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsFactory.sol#L58)

	```solidity
	    function withdrawToken(IERC20 _token, uint256 _amount) external onlyOwner {
	```

- Found in contracts/admin/TempleTeamPaymentsFactory.sol [Line: 66](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsFactory.sol#L66)

	```solidity
	    ) external onlyOwner {
	```

- Found in contracts/admin/TempleTeamPaymentsFactory.sol [Line: 84](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsFactory.sol#L84)

	```solidity
	    ) external onlyOwner returns (TempleTeamPaymentsV2) {
	```

- Found in contracts/admin/TempleTeamPaymentsFactory.sol [Line: 123](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsFactory.sol#L123)

	```solidity
	    ) external onlyOwner {
	```

- Found in contracts/admin/TempleTeamPaymentsV2.sol [Line: 39](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsV2.sol#L39)

	```solidity
	    ) external onlyOwner {
	```

- Found in contracts/admin/TempleTeamPaymentsV2.sol [Line: 46](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsV2.sol#L46)

	```solidity
	    ) external onlyOwner {
	```

- Found in contracts/admin/TempleTeamPaymentsV2.sol [Line: 59](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsV2.sol#L59)

	```solidity
	    function withdrawToken(IERC20 _token, uint256 _amount) external onlyOwner {
	```

- Found in contracts/admin/TempleTeamPaymentsV2.sol [Line: 65](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsV2.sol#L65)

	```solidity
	    function toggleMember(address _address) external onlyOwner {
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 22](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L22)

	```solidity
	contract TempleStableAMMRouter is Ownable {
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 48](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L48)

	```solidity
	    function addPair(address _token, address _pair) external onlyOwner {
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 52](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L52)

	```solidity
	    function setTreasury(ITreasuryIV _templeTreasury) external onlyOwner {
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 56](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L56)

	```solidity
	    function setDefendStable(address _defendStable) external onlyOwner {
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 226](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L226)

	```solidity
	  function withdraw(address token, address to, uint256 amount) external onlyOwner {
	```

- Found in contracts/amm/TreasuryIV.sol [Line: 9](../tests/2024-07-templegold/protocol/contracts/amm/TreasuryIV.sol#L9)

	```solidity
	contract TreasuryIV is Ownable {
	```

- Found in contracts/amm/TreasuryIV.sol [Line: 23](../tests/2024-07-templegold/protocol/contracts/amm/TreasuryIV.sol#L23)

	```solidity
	    function setIV(uint256 frax, uint256 temple) external onlyOwner {
	```

- Found in contracts/core/Exposure.sol [Line: 15](../tests/2024-07-templegold/protocol/contracts/core/Exposure.sol#L15)

	```solidity
	contract Exposure is Ownable, RebasingERC20 {
	```

- Found in contracts/core/Exposure.sol [Line: 47](../tests/2024-07-templegold/protocol/contracts/core/Exposure.sol#L47)

	```solidity
	    function increaseReval(uint256 amount) external onlyOwner {
	```

- Found in contracts/core/Exposure.sol [Line: 57](../tests/2024-07-templegold/protocol/contracts/core/Exposure.sol#L57)

	```solidity
	    function decreaseReval(uint256 amount) external onlyOwner {
	```

- Found in contracts/core/Exposure.sol [Line: 67](../tests/2024-07-templegold/protocol/contracts/core/Exposure.sol#L67)

	```solidity
	    function setLiqidator(ILiquidator _liquidator) external onlyOwner {
	```

- Found in contracts/core/Exposure.sol [Line: 76](../tests/2024-07-templegold/protocol/contracts/core/Exposure.sol#L76)

	```solidity
	    function setMinterState(address account, bool state) external onlyOwner {
	```

- Found in contracts/core/JoiningFee.sol [Line: 16](../tests/2024-07-templegold/protocol/contracts/core/JoiningFee.sol#L16)

	```solidity
	contract JoiningFee is Ownable {
	```

- Found in contracts/core/JoiningFee.sol [Line: 41](../tests/2024-07-templegold/protocol/contracts/core/JoiningFee.sol#L41)

	```solidity
	    function setHourlyJoiningFeeFor(address vault, uint256 amount) external onlyOwner {
	```

- Found in contracts/core/OpsManager.sol [Line: 17](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L17)

	```solidity
	contract OpsManager is Ownable {
	```

- Found in contracts/core/OpsManager.sol [Line: 49](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L49)

	```solidity
	    ) external onlyOwner  {
	```

- Found in contracts/core/OpsManager.sol [Line: 70](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L70)

	```solidity
	    ) external onlyOwner {
	```

- Found in contracts/core/OpsManager.sol [Line: 110](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L110)

	```solidity
	    function addRevenue(IERC20[] memory exposureTokens, uint256[] memory amounts) external onlyOwner {
	```

- Found in contracts/core/OpsManager.sol [Line: 121](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L121)

	```solidity
	    function updateExposureReval(IERC20[] memory exposureTokens, uint256[] memory revals) external onlyOwner {
	```

- Found in contracts/core/OpsManager.sol [Line: 130](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L130)

	```solidity
	    function increaseVaultTemple(Vault[] memory vaults, uint256[] memory amountsTemple) external onlyOwner {
	```

- Found in contracts/core/OpsManager.sol [Line: 144](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L144)

	```solidity
	    function liquidateExposures(Vault[] memory vaults, IERC20[] memory exposureTokens) external onlyOwner {
	```

- Found in contracts/core/OpsManager.sol [Line: 170](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L170)

	```solidity
	    function setExposureLiquidator(IERC20 exposureToken, ILiquidator _liquidator) external onlyOwner {
	```

- Found in contracts/core/OpsManager.sol [Line: 178](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L178)

	```solidity
	    function setExposureMinterState(IERC20 exposureToken, address account, bool state) external onlyOwner {
	```

- Found in contracts/core/OtcOffer.sol [Line: 19](../tests/2024-07-templegold/protocol/contracts/core/OtcOffer.sol#L19)

	```solidity
	contract OtcOffer is Pausable, Ownable {
	```

- Found in contracts/core/OtcOffer.sol [Line: 98](../tests/2024-07-templegold/protocol/contracts/core/OtcOffer.sol#L98)

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

- Found in contracts/core/OtcOffer.sol [Line: 103](../tests/2024-07-templegold/protocol/contracts/core/OtcOffer.sol#L103)

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

- Found in contracts/core/OtcOffer.sol [Line: 108](../tests/2024-07-templegold/protocol/contracts/core/OtcOffer.sol#L108)

	```solidity
	    function setFundsOwner(address _fundsOwner) external onlyOwner {
	```

- Found in contracts/core/OtcOffer.sol [Line: 116](../tests/2024-07-templegold/protocol/contracts/core/OtcOffer.sol#L116)

	```solidity
	    function setOfferPrice(uint256 _offerPrice) external onlyOwner {
	```

- Found in contracts/core/OtcOffer.sol [Line: 123](../tests/2024-07-templegold/protocol/contracts/core/OtcOffer.sol#L123)

	```solidity
	    function setOfferPriceRange(uint128 _minValidOfferPrice, uint128 _maxValidOfferPrice) external onlyOwner {
	```

- Found in contracts/core/TempleERC20Token.sol [Line: 11](../tests/2024-07-templegold/protocol/contracts/core/TempleERC20Token.sol#L11)

	```solidity
	contract TempleERC20Token is ERC20, ERC20Burnable, Ownable, AccessControl {
	```

- Found in contracts/core/TempleERC20Token.sol [Line: 23](../tests/2024-07-templegold/protocol/contracts/core/TempleERC20Token.sol#L23)

	```solidity
	    function addMinter(address account) external onlyOwner {
	```

- Found in contracts/core/TempleERC20Token.sol [Line: 27](../tests/2024-07-templegold/protocol/contracts/core/TempleERC20Token.sol#L27)

	```solidity
	    function removeMinter(address account) external onlyOwner {
	```

- Found in contracts/core/TreasuryFarmingRevenue.sol [Line: 17](../tests/2024-07-templegold/protocol/contracts/core/TreasuryFarmingRevenue.sol#L17)

	```solidity
	contract TreasuryFarmingRevenue is Ownable {
	```

- Found in contracts/core/TreasuryFarmingRevenue.sol [Line: 48](../tests/2024-07-templegold/protocol/contracts/core/TreasuryFarmingRevenue.sol#L48)

	```solidity
	    function addRevenue(uint256 revenueEarned) onlyOwner public {
	```

- Found in contracts/core/TreasuryFarmingRevenue.sol [Line: 56](../tests/2024-07-templegold/protocol/contracts/core/TreasuryFarmingRevenue.sol#L56)

	```solidity
	    function increaseShares(address account, uint256 amount) onlyOwner external {
	```

- Found in contracts/core/TreasuryFarmingRevenue.sol [Line: 69](../tests/2024-07-templegold/protocol/contracts/core/TreasuryFarmingRevenue.sol#L69)

	```solidity
	    function decreaseShares(address account, uint256 amount) onlyOwner external {
	```

- Found in contracts/core/Vault.sol [Line: 29](../tests/2024-07-templegold/protocol/contracts/core/Vault.sol#L29)

	```solidity
	contract Vault is Nonces, EIP712, Ownable, RebasingERC20 {
	```

- Found in contracts/core/Vault.sol [Line: 113](../tests/2024-07-templegold/protocol/contracts/core/Vault.sol#L113)

	```solidity
	    function redeemExposures(Exposure[] memory exposures) external onlyOwner {
	```

- Found in contracts/core/VaultEarlyWithdraw.sol [Line: 15](../tests/2024-07-templegold/protocol/contracts/core/VaultEarlyWithdraw.sol#L15)

	```solidity
	contract VaultEarlyWithdraw is Pausable, Ownable {
	```

- Found in contracts/core/VaultEarlyWithdraw.sol [Line: 41](../tests/2024-07-templegold/protocol/contracts/core/VaultEarlyWithdraw.sol#L41)

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

- Found in contracts/core/VaultEarlyWithdraw.sol [Line: 45](../tests/2024-07-templegold/protocol/contracts/core/VaultEarlyWithdraw.sol#L45)

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

- Found in contracts/core/VaultEarlyWithdraw.sol [Line: 49](../tests/2024-07-templegold/protocol/contracts/core/VaultEarlyWithdraw.sol#L49)

	```solidity
	    function setMinWithdrawAmount(uint256 amount) external onlyOwner {
	```

- Found in contracts/core/VaultEarlyWithdraw.sol [Line: 73](../tests/2024-07-templegold/protocol/contracts/core/VaultEarlyWithdraw.sol#L73)

	```solidity
	    function recoverToken(address token, address to, uint256 amount) external onlyOwner {
	```

- Found in contracts/core/VaultProxy.sol [Line: 16](../tests/2024-07-templegold/protocol/contracts/core/VaultProxy.sol#L16)

	```solidity
	contract VaultProxy is Ownable {
	```

- Found in contracts/core/VaultProxy.sol [Line: 118](../tests/2024-07-templegold/protocol/contracts/core/VaultProxy.sol#L118)

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

- Found in contracts/core/VaultProxy.sol [Line: 125](../tests/2024-07-templegold/protocol/contracts/core/VaultProxy.sol#L125)

	```solidity
	    function withdraw(address token, address to, uint256 amount) external onlyOwner {
	```

- Found in contracts/core/VaultedTemple.sol [Line: 35](../tests/2024-07-templegold/protocol/contracts/core/VaultedTemple.sol#L35)

	```solidity
	contract VaultedTemple is ILiquidator, Ownable {
	```

- Found in contracts/core/VaultedTemple.sol [Line: 52](../tests/2024-07-templegold/protocol/contracts/core/VaultedTemple.sol#L52)

	```solidity
	    function withdraw(address token, address to, uint256 amount) external onlyOwner {
	```

- Found in contracts/deprecated/Faith.sol [Line: 6](../tests/2024-07-templegold/protocol/contracts/deprecated/Faith.sol#L6)

	```solidity
	contract Faith is Ownable {
	```

- Found in contracts/deprecated/Faith.sol [Line: 50](../tests/2024-07-templegold/protocol/contracts/deprecated/Faith.sol#L50)

	```solidity
	    function addManager(address account) external onlyOwner {
	```

- Found in contracts/deprecated/Faith.sol [Line: 54](../tests/2024-07-templegold/protocol/contracts/deprecated/Faith.sol#L54)

	```solidity
	    function removeManager(address account) external onlyOwner {
	```

- Found in contracts/deprecated/OGTemple.sol [Line: 16](../tests/2024-07-templegold/protocol/contracts/deprecated/OGTemple.sol#L16)

	```solidity
	contract OGTemple is ERC20, ERC20Burnable, Ownable {
	```

- Found in contracts/deprecated/OGTemple.sol [Line: 19](../tests/2024-07-templegold/protocol/contracts/deprecated/OGTemple.sol#L19)

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

- Found in contracts/deprecated/TempleStaking.sol [Line: 18](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L18)

	```solidity
	contract TempleStaking is Ownable {
	```

- Found in contracts/deprecated/TempleStaking.sol [Line: 67](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L67)

	```solidity
	    function setExitQueue(IExitQueue _EXIT_QUEUE) external onlyOwner {
	```

- Found in contracts/deprecated/TempleStaking.sol [Line: 72](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L72)

	```solidity
	    function setEpy(uint256 _numerator, uint256 _denominator) external onlyOwner {
	```

- Found in contracts/fakes/templegold/TempleGoldMock.sol [Line: 58](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldMock.sol#L58)

	```solidity
	    function authorizeContract(address _contract, bool _whitelist) external onlyOwner {
	```

- Found in contracts/fakes/templegold/TempleTokenMock.sol [Line: 9](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleTokenMock.sol#L9)

	```solidity
	contract TempleTokenMock is ERC20, ERC20Burnable, Ownable, AccessControl {
	```

- Found in contracts/fakes/templegold/TempleTokenMock.sol [Line: 21](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleTokenMock.sol#L21)

	```solidity
	    function addMinter(address account) external onlyOwner {
	```

- Found in contracts/fakes/templegold/TempleTokenMock.sol [Line: 25](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleTokenMock.sol#L25)

	```solidity
	    function removeMinter(address account) external onlyOwner {
	```

- Found in contracts/governance/ElderElection.sol [Line: 24](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L24)

	```solidity
	contract ElderElection is Nonces, AccessControl {
	```

- Found in contracts/governance/ElderElection.sol [Line: 73](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L73)

	```solidity
	    function nominate(uint256 discordId) external onlyRole(CAN_NOMINATE) {
	```

- Found in contracts/governance/ElderElection.sol [Line: 86](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L86)

	```solidity
	    function resign(uint256 discordId) external onlyRole(CAN_NOMINATE) {
	```

- Found in contracts/governance/Templar.sol [Line: 12](../tests/2024-07-templegold/protocol/contracts/governance/Templar.sol#L12)

	```solidity
	contract Templar is ERC721, AccessControl {
	```

- Found in contracts/governance/Templar.sol [Line: 35](../tests/2024-07-templegold/protocol/contracts/governance/Templar.sol#L35)

	```solidity
	    function setBaseUri(string calldata _baseUri) external onlyRole(OWNER) {
	```

- Found in contracts/governance/Templar.sol [Line: 49](../tests/2024-07-templegold/protocol/contracts/governance/Templar.sol#L49)

	```solidity
	    ) external onlyRole(CAN_ASSIGN) {
	```

- Found in contracts/governance/TemplarMetadata.sol [Line: 10](../tests/2024-07-templegold/protocol/contracts/governance/TemplarMetadata.sol#L10)

	```solidity
	contract TemplarMetadata is AccessControl {
	```

- Found in contracts/governance/TemplarMetadata.sol [Line: 31](../tests/2024-07-templegold/protocol/contracts/governance/TemplarMetadata.sol#L31)

	```solidity
	    ) external onlyRole(CAN_UPDATE) {
	```

- Found in contracts/templegold/TempleGold.sol [Line: 79](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGold.sol#L79)

	```solidity
	    function setStaking(address _staking) external override onlyOwner {
	```

- Found in contracts/templegold/TempleGold.sol [Line: 89](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGold.sol#L89)

	```solidity
	    function setEscrow(address _escrow) external override onlyOwner {
	```

- Found in contracts/templegold/TempleGold.sol [Line: 99](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGold.sol#L99)

	```solidity
	    function setTeamGnosis(address _gnosis) external override onlyOwner {
	```

- Found in contracts/templegold/TempleGold.sol [Line: 110](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGold.sol#L110)

	```solidity
	    function authorizeContract(address _contract, bool _whitelist) external override onlyOwner {
	```

- Found in contracts/templegold/TempleGold.sol [Line: 120](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGold.sol#L120)

	```solidity
	    function setDistributionParams(DistributionParams calldata _params) external override onlyOwner {
	```

- Found in contracts/templegold/TempleGold.sol [Line: 130](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGold.sol#L130)

	```solidity
	    function setVestingFactor(VestingFactor calldata _factor) external override onlyOwner {
	```

</details>



## L-2: `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>2 Found Instances</summary>


- Found in contracts/v2/safeGuards/SafeForked.sol [Line: 120](../tests/2024-07-templegold/protocol/contracts/v2/safeGuards/SafeForked.sol#L120)

	```solidity
	                currentOwner = ecrecover(keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", dataHash)), v - 4, r, s);
	```

- Found in contracts/v2/safeGuards/SafeForked.sol [Line: 124](../tests/2024-07-templegold/protocol/contracts/v2/safeGuards/SafeForked.sol#L124)

	```solidity
	                currentOwner = ecrecover(dataHash, v, r, s);
	```

</details>



## L-3: 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>4 Found Instances</summary>


- Found in contracts/amo/Ramos.sol [Line: 195](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L195)

	```solidity
	            protocolToken.approve(previousVault, 0);
	```

- Found in contracts/amo/Ramos.sol [Line: 196](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L196)

	```solidity
	            quoteToken.approve(previousVault, 0);
	```

- Found in contracts/amo/Ramos.sol [Line: 489](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L489)

	```solidity
	                quoteToken.approve(address(balancerVault), 0);
	```

- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 394](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L394)

	```solidity
	            daiToken.approve(previousTrv, 0);
	```

</details>



## L-4: 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>71 Found Instances</summary>


- Found in contracts/admin/TempleTeamPayments.sol [Line: 2](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPayments.sol#L2)

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

- Found in contracts/admin/TempleTeamPaymentsFactory.sol [Line: 2](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsFactory.sol#L2)

	```solidity
	pragma solidity ^0.8.4;
	```

- Found in contracts/admin/TempleTeamPaymentsV2.sol [Line: 2](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsV2.sol#L2)

	```solidity
	pragma solidity ^0.8.4;
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L1)

	```solidity
	pragma solidity ^0.8.4;
	```

- Found in contracts/amm/TreasuryIV.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/amm/TreasuryIV.sol#L1)

	```solidity
	pragma solidity ^0.8.4;
	```

- Found in contracts/amo/AuraStaking.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/amo/AuraStaking.sol#L1)

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

- Found in contracts/amo/Ramos.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L1)

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

- Found in contracts/core/Exposure.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/core/Exposure.sol#L1)

	```solidity
	pragma solidity ^0.8.4;
	```

- Found in contracts/core/JoiningFee.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/core/JoiningFee.sol#L1)

	```solidity
	pragma solidity ^0.8.4;
	```

- Found in contracts/core/MultiOtcOffer.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/core/MultiOtcOffer.sol#L1)

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

- Found in contracts/core/OpsManager.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L1)

	```solidity
	pragma solidity ^0.8.4;
	```

- Found in contracts/core/OtcOffer.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/core/OtcOffer.sol#L1)

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

- Found in contracts/core/Rational.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/core/Rational.sol#L1)

	```solidity
	pragma solidity ^0.8.4;
	```

- Found in contracts/core/RebasingERC20.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/core/RebasingERC20.sol#L1)

	```solidity
	pragma solidity ^0.8.4;
	```

- Found in contracts/core/TempleERC20Token.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/core/TempleERC20Token.sol#L1)

	```solidity
	pragma solidity ^0.8.4;
	```

- Found in contracts/core/TreasuryFarmingRevenue.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/core/TreasuryFarmingRevenue.sol#L1)

	```solidity
	pragma solidity ^0.8.4;
	```

- Found in contracts/core/Vault.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/core/Vault.sol#L1)

	```solidity
	pragma solidity ^0.8.4;
	```

- Found in contracts/core/VaultEarlyWithdraw.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/core/VaultEarlyWithdraw.sol#L1)

	```solidity
	pragma solidity ^0.8.4;
	```

- Found in contracts/core/VaultProxy.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/core/VaultProxy.sol#L1)

	```solidity
	pragma solidity ^0.8.4;
	```

- Found in contracts/core/VaultedTemple.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/core/VaultedTemple.sol#L1)

	```solidity
	pragma solidity ^0.8.4;
	```

- Found in contracts/deprecated/Faith.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/deprecated/Faith.sol#L1)

	```solidity
	pragma solidity ^0.8.4;
	```

- Found in contracts/deprecated/IExitQueue.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/deprecated/IExitQueue.sol#L1)

	```solidity
	pragma solidity ^0.8.4;
	```

- Found in contracts/deprecated/InstantExitQueue.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/deprecated/InstantExitQueue.sol#L1)

	```solidity
	pragma solidity ^0.8.4;
	```

- Found in contracts/deprecated/LockedOGTemple.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/deprecated/LockedOGTemple.sol#L1)

	```solidity
	pragma solidity ^0.8.4;
	```

- Found in contracts/deprecated/OGTemple.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/deprecated/OGTemple.sol#L1)

	```solidity
	pragma solidity ^0.8.4;
	```

- Found in contracts/deprecated/TempleStaking.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L1)

	```solidity
	pragma solidity ^0.8.4;
	```

- Found in contracts/fakes/FakeERC20.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/fakes/FakeERC20.sol#L1)

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

- Found in contracts/fakes/FakeERC20CustomDecimals.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/fakes/FakeERC20CustomDecimals.sol#L1)

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

- Found in contracts/fakes/NoopLiquidator.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/fakes/NoopLiquidator.sol#L1)

	```solidity
	pragma solidity ^0.8.4;
	```

- Found in contracts/fakes/NoopVaultedTempleLiquidator.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/fakes/NoopVaultedTempleLiquidator.sol#L1)

	```solidity
	pragma solidity ^0.8.4;
	```

- Found in contracts/fakes/templegold/TempleGoldMock.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldMock.sol#L1)

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

- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L1)

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

- Found in contracts/fakes/templegold/TempleTokenMock.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleTokenMock.sol#L1)

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

- Found in contracts/fakes/v2/TempleDebtTokenTestnetAdmin.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/fakes/v2/TempleDebtTokenTestnetAdmin.sol#L1)

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

- Found in contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol#L1)

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

- Found in contracts/governance/ElderElection.sol [Line: 2](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L2)

	```solidity
	pragma solidity ^0.8.4;
	```

- Found in contracts/governance/Templar.sol [Line: 2](../tests/2024-07-templegold/protocol/contracts/governance/Templar.sol#L2)

	```solidity
	pragma solidity ^0.8.4;
	```

- Found in contracts/governance/TemplarMetadata.sol [Line: 2](../tests/2024-07-templegold/protocol/contracts/governance/TemplarMetadata.sol#L2)

	```solidity
	pragma solidity ^0.8.4;
	```

- Found in contracts/interfaces/core/ITempleERC20Token.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/interfaces/core/ITempleERC20Token.sol#L1)

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

- Found in contracts/interfaces/templegold/IAuctionBase.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/interfaces/templegold/IAuctionBase.sol#L1)

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

- Found in contracts/interfaces/templegold/IDaiGoldAuction.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/interfaces/templegold/IDaiGoldAuction.sol#L1)

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

- Found in contracts/interfaces/templegold/ISpiceAuction.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/interfaces/templegold/ISpiceAuction.sol#L1)

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

- Found in contracts/interfaces/templegold/ISpiceAuctionFactory.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/interfaces/templegold/ISpiceAuctionFactory.sol#L1)

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

- Found in contracts/interfaces/templegold/ITempleGold.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/interfaces/templegold/ITempleGold.sol#L1)

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

- Found in contracts/interfaces/templegold/ITempleGoldAdmin.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/interfaces/templegold/ITempleGoldAdmin.sol#L1)

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

- Found in contracts/interfaces/templegold/ITempleGoldStaking.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/interfaces/templegold/ITempleGoldStaking.sol#L1)

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

- Found in contracts/interfaces/templegold/ITempleTeleporter.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/interfaces/templegold/ITempleTeleporter.sol#L1)

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

- Found in contracts/templegold/AuctionBase.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/templegold/AuctionBase.sol#L1)

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

- Found in contracts/templegold/DaiGoldAuction.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/templegold/DaiGoldAuction.sol#L1)

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

- Found in contracts/templegold/SpiceAuction.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/templegold/SpiceAuction.sol#L1)

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

- Found in contracts/templegold/SpiceAuctionFactory.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/templegold/SpiceAuctionFactory.sol#L1)

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

- Found in contracts/templegold/TempleGold.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGold.sol#L1)

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

- Found in contracts/templegold/TempleGoldAdmin.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldAdmin.sol#L1)

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

- Found in contracts/templegold/TempleGoldStaking.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldStaking.sol#L1)

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

- Found in contracts/templegold/TempleTeleporter.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/templegold/TempleTeleporter.sol#L1)

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

- Found in contracts/v2/TempleDebtToken.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L1)

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

- Found in contracts/v2/TreasuryPriceIndexOracle.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryPriceIndexOracle.sol#L1)

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

- Found in contracts/v2/TreasuryReservesVault.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L1)

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

- Found in contracts/v2/access/TempleElevatedAccess.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/access/TempleElevatedAccess.sol#L1)

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

- Found in contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L1)

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

- Found in contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol#L1)

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

- Found in contracts/v2/interestRate/BaseInterestRateModel.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/interestRate/BaseInterestRateModel.sol#L1)

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

- Found in contracts/v2/interestRate/LinearWithKinkInterestRateModel.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/interestRate/LinearWithKinkInterestRateModel.sol#L1)

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

- Found in contracts/v2/safeGuards/ThresholdSafeGuard.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/safeGuards/ThresholdSafeGuard.sol#L1)

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

- Found in contracts/v2/strategies/AbstractStrategy.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/strategies/AbstractStrategy.sol#L1)

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

- Found in contracts/v2/strategies/DsrBaseStrategy.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/strategies/DsrBaseStrategy.sol#L1)

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

- Found in contracts/v2/strategies/GnosisStrategy.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/strategies/GnosisStrategy.sol#L1)

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

- Found in contracts/v2/strategies/RamosStrategy.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/strategies/RamosStrategy.sol#L1)

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

- Found in contracts/v2/strategies/TempleTokenBaseStrategy.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/strategies/TempleTokenBaseStrategy.sol#L1)

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

- Found in contracts/v2/strategies/TlcStrategy.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/strategies/TlcStrategy.sol#L1)

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

- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 1](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L1)

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

</details>



## L-5: Address State Variable Set Without Checks

Check for `address(0)` when assigning values to address state variables.

<details><summary>43 Found Instances</summary>


- Found in contracts/admin/TempleTeamPaymentsFactory.sol [Line: 41](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsFactory.sol#L41)

	```solidity
	        templeTeamPaymentsImplementation = _implementation;
	```

- Found in contracts/admin/TempleTeamPaymentsV2.sol [Line: 27](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsV2.sol#L27)

	```solidity
	        temple = _temple;
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 44](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L44)

	```solidity
	        templeTreasury = _templeTreasury;
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 45](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L45)

	```solidity
	        defendStable  = _defendStable;
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 53](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L53)

	```solidity
	        templeTreasury = _templeTreasury;
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 57](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L57)

	```solidity
	        defendStable = _defendStable;
	```

- Found in contracts/amm/TempleUniswapV2Pair.sol [Line: 68](../tests/2024-07-templegold/protocol/contracts/amm/TempleUniswapV2Pair.sol#L68)

	```solidity
	        owner = _owner;
	```

- Found in contracts/amm/TempleUniswapV2Pair.sol [Line: 69](../tests/2024-07-templegold/protocol/contracts/amm/TempleUniswapV2Pair.sol#L69)

	```solidity
	        token0 = _token0;
	```

- Found in contracts/amm/TempleUniswapV2Pair.sol [Line: 70](../tests/2024-07-templegold/protocol/contracts/amm/TempleUniswapV2Pair.sol#L70)

	```solidity
	        token1 = _token1;
	```

- Found in contracts/amm/TempleUniswapV2Pair.sol [Line: 76](../tests/2024-07-templegold/protocol/contracts/amm/TempleUniswapV2Pair.sol#L76)

	```solidity
	        router = _router;
	```

- Found in contracts/amo/AuraStaking.sol [Line: 49](../tests/2024-07-templegold/protocol/contracts/amo/AuraStaking.sol#L49)

	```solidity
	        rewardsRecipient = _recipient;
	```

- Found in contracts/amo/Ramos.sol [Line: 123](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L123)

	```solidity
	        feeCollector = _feeCollector;
	```

- Found in contracts/amo/Ramos.sol [Line: 135](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L135)

	```solidity
	        poolHelper = IBalancerPoolHelper(_poolHelper);
	```

- Found in contracts/amo/Ramos.sol [Line: 183](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L183)

	```solidity
	        tpiOracle = ITreasuryPriceIndexOracle(newTpiOracle);
	```

- Found in contracts/amo/Ramos.sol [Line: 199](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L199)

	```solidity
	        tokenVault = IRamosTokenVault(vault);
	```

- Found in contracts/core/Exposure.sol [Line: 41](../tests/2024-07-templegold/protocol/contracts/core/Exposure.sol#L41)

	```solidity
	        revalToken = _revalToken;
	```

- Found in contracts/core/Exposure.sol [Line: 68](../tests/2024-07-templegold/protocol/contracts/core/Exposure.sol#L68)

	```solidity
	        liquidator = _liquidator;
	```

- Found in contracts/core/OpsManager.sol [Line: 35](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L35)

	```solidity
	        templeExposure = new Exposure("vaulted temple", "V_TEMPLE", _templeToken);
	```

- Found in contracts/core/OpsManager.sol [Line: 37](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L37)

	```solidity
	        vaultedTemple = new VaultedTemple(_templeToken, address(templeExposure));
	```

- Found in contracts/core/OtcOffer.sol [Line: 80](../tests/2024-07-templegold/protocol/contracts/core/OtcOffer.sol#L80)

	```solidity
	        fundsOwner = _fundsOwner;
	```

- Found in contracts/deprecated/InstantExitQueue.sol [Line: 18](../tests/2024-07-templegold/protocol/contracts/deprecated/InstantExitQueue.sol#L18)

	```solidity
	        templeStaking = _templeStaking;
	```

- Found in contracts/deprecated/InstantExitQueue.sol [Line: 19](../tests/2024-07-templegold/protocol/contracts/deprecated/InstantExitQueue.sol#L19)

	```solidity
	        templeToken = _templeToken;
	```

- Found in contracts/deprecated/LockedOGTemple.sol [Line: 27](../tests/2024-07-templegold/protocol/contracts/deprecated/LockedOGTemple.sol#L27)

	```solidity
	    OG_TEMPLE = _OG_TEMPLE;
	```

- Found in contracts/deprecated/TempleStaking.sol [Line: 55](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L55)

	```solidity
	        EXIT_QUEUE = _EXIT_QUEUE;
	```

- Found in contracts/deprecated/TempleStaking.sol [Line: 68](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L68)

	```solidity
	        EXIT_QUEUE = _EXIT_QUEUE;
	```

- Found in contracts/fakes/NoopLiquidator.sol [Line: 16](../tests/2024-07-templegold/protocol/contracts/fakes/NoopLiquidator.sol#L16)

	```solidity
	        templeToken = _templeToken;
	```

- Found in contracts/fakes/NoopVaultedTempleLiquidator.sol [Line: 18](../tests/2024-07-templegold/protocol/contracts/fakes/NoopVaultedTempleLiquidator.sol#L18)

	```solidity
	        templeToken = _templeToken;
	```

- Found in contracts/fakes/NoopVaultedTempleLiquidator.sol [Line: 19](../tests/2024-07-templegold/protocol/contracts/fakes/NoopVaultedTempleLiquidator.sol#L19)

	```solidity
	        vaultedTemple = _vaultedTemple;
	```

- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 143](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L143)

	```solidity
	        previousStaking = ITempleGoldStaking(_previousStaking);
	```

- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 192](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L192)

	```solidity
	        distributionStarter = _starter;
	```

- Found in contracts/governance/ElderElection.sol [Line: 60](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L60)

	```solidity
	        templars = _templars;
	```

- Found in contracts/governance/TemplarMetadata.sol [Line: 21](../tests/2024-07-templegold/protocol/contracts/governance/TemplarMetadata.sol#L21)

	```solidity
	        templars = _templars;
	```

- Found in contracts/templegold/DaiGoldAuction.sol [Line: 56](../tests/2024-07-templegold/protocol/contracts/templegold/DaiGoldAuction.sol#L56)

	```solidity
	        bidToken = IERC20(_bidToken);
	```

- Found in contracts/templegold/DaiGoldAuction.sol [Line: 81](../tests/2024-07-templegold/protocol/contracts/templegold/DaiGoldAuction.sol#L81)

	```solidity
	        auctionStarter = _starter;
	```

- Found in contracts/templegold/SpiceAuction.sol [Line: 63](../tests/2024-07-templegold/protocol/contracts/templegold/SpiceAuction.sol#L63)

	```solidity
	        daoExecutor = _daoExecutor;
	```

- Found in contracts/templegold/TempleGold.sol [Line: 69](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGold.sol#L69)

	```solidity
	       staking = ITempleGoldStaking(_initArgs.staking);
	```

- Found in contracts/templegold/TempleGold.sol [Line: 70](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGold.sol#L70)

	```solidity
	       escrow = IDaiGoldAuction(_initArgs.escrow);
	```

- Found in contracts/templegold/TempleGold.sol [Line: 71](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGold.sol#L71)

	```solidity
	       teamGnosis = _initArgs.gnosis;
	```

- Found in contracts/templegold/TempleGoldStaking.sol [Line: 127](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldStaking.sol#L127)

	```solidity
	        distributionStarter = _starter;
	```

- Found in contracts/v2/TreasuryReservesVault.sol [Line: 101](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L101)

	```solidity
	        tpiOracle = ITreasuryPriceIndexOracle(_tpiOracle);
	```

- Found in contracts/v2/TreasuryReservesVault.sol [Line: 120](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L120)

	```solidity
	        borrowTokens[token] = BorrowTokenConfig({
	```

- Found in contracts/v2/strategies/AbstractStrategy.sol [Line: 46](../tests/2024-07-templegold/protocol/contracts/v2/strategies/AbstractStrategy.sol#L46)

	```solidity
	        treasuryReservesVault = ITreasuryReservesVault(_treasuryReservesVault);
	```

- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 389](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L389)

	```solidity
	        tlcStrategy = ITlcStrategy(newTlcStrategy);
	```

</details>



## L-6: Public Function Not Used Internally

If a function is marked public but is not used internally, consider marking it as `external`.

<details><summary>17 Found Instances</summary>


- Found in contracts/admin/TempleTeamPaymentsV2.sol [Line: 25](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsV2.sol#L25)

	```solidity
	    function initialize(IERC20 _temple) public initializer {
	```

- Found in contracts/core/OpsManagerLib.sol [Line: 12](../tests/2024-07-templegold/protocol/contracts/core/OpsManagerLib.sol#L12)

	```solidity
	    function createExposure(
	```

- Found in contracts/core/OpsManagerLib.sol [Line: 32](../tests/2024-07-templegold/protocol/contracts/core/OpsManagerLib.sol#L32)

	```solidity
	    function setExposureLiquidator(
	```

- Found in contracts/core/OpsManagerLib.sol [Line: 45](../tests/2024-07-templegold/protocol/contracts/core/OpsManagerLib.sol#L45)

	```solidity
	    function setExposureMinterState(
	```

- Found in contracts/core/OpsManagerLib.sol [Line: 55](../tests/2024-07-templegold/protocol/contracts/core/OpsManagerLib.sol#L55)

	```solidity
	    function rebalance(
	```

- Found in contracts/core/OpsManagerLib.sol [Line: 79](../tests/2024-07-templegold/protocol/contracts/core/OpsManagerLib.sol#L79)

	```solidity
	    function requiresRebalance(
	```

- Found in contracts/core/OpsManagerLib.sol [Line: 97](../tests/2024-07-templegold/protocol/contracts/core/OpsManagerLib.sol#L97)

	```solidity
	    function updateExposureReval(IERC20[] memory exposureTokens, uint256[] memory revals, mapping(IERC20 => TreasuryFarmingRevenue) storage pools) public {
	```

- Found in contracts/core/TreasuryFarmingRevenue.sol [Line: 48](../tests/2024-07-templegold/protocol/contracts/core/TreasuryFarmingRevenue.sol#L48)

	```solidity
	    function addRevenue(uint256 revenueEarned) onlyOwner public {
	```

- Found in contracts/core/Vault.sol [Line: 86](../tests/2024-07-templegold/protocol/contracts/core/Vault.sol#L86)

	```solidity
	    function withdraw(uint256 amount) public {
	```

- Found in contracts/core/Vault.sol [Line: 96](../tests/2024-07-templegold/protocol/contracts/core/Vault.sol#L96)

	```solidity
	    function withdrawFor(address owner, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {
	```

- Found in contracts/core/Vault.sol [Line: 167](../tests/2024-07-templegold/protocol/contracts/core/Vault.sol#L167)

	```solidity
	    function deposit(uint256 amount) public {
	```

- Found in contracts/core/VaultProxy.sol [Line: 58](../tests/2024-07-templegold/protocol/contracts/core/VaultProxy.sol#L58)

	```solidity
	    function depositTempleWithFaith(uint256 _amountTemple, uint112 _amountFaith, Vault vault) public {
	```

- Found in contracts/core/VaultProxy.sol [Line: 109](../tests/2024-07-templegold/protocol/contracts/core/VaultProxy.sol#L109)

	```solidity
	    function depositTempleFor(uint256 _amount, Vault vault) public {
	```

- Found in contracts/fakes/templegold/TempleGoldMock.sol [Line: 77](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldMock.sol#L77)

	```solidity
	    function circulatingSupply() public view returns (uint256) {
	```

- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 431](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L431)

	```solidity
	    function balanceOf(address account) public view returns (uint256) {
	```

- Found in contracts/governance/Templar.sol [Line: 65](../tests/2024-07-templegold/protocol/contracts/governance/Templar.sol#L65)

	```solidity
	    function checkExists(uint256 discordId) public view {
	```

- Found in contracts/templegold/TempleGoldAdmin.sol [Line: 107](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldAdmin.sol#L107)

	```solidity
	    function setDelegate(address _delegate) public onlyElevatedAccess {
	```

</details>



## L-7: 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>712 Found Instances</summary>


- Found in contracts/amm/TempleUniswapV2Pair.sol [Line: 163](../tests/2024-07-templegold/protocol/contracts/amm/TempleUniswapV2Pair.sol#L163)

	```solidity
	        uint balance0Adjusted = balance0.mul(1000).sub(amount0In.mul(3));
	```

- Found in contracts/amm/TempleUniswapV2Pair.sol [Line: 164](../tests/2024-07-templegold/protocol/contracts/amm/TempleUniswapV2Pair.sol#L164)

	```solidity
	        uint balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(3));
	```

- Found in contracts/amm/TempleUniswapV2Pair.sol [Line: 165](../tests/2024-07-templegold/protocol/contracts/amm/TempleUniswapV2Pair.sol#L165)

	```solidity
	        require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(1000**2), 'UniswapV2: K');
	```

- Found in contracts/deprecated/TempleStaking.sol [Line: 52](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L52)

	```solidity
	        require(_startTimestamp > (block.timestamp - (24 * 2 * 60 * 60)), "Start timestamp can't be more than 2 days in the past");
	```

- Found in contracts/deprecated/TempleStaking.sol [Line: 100](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L100)

	```solidity
	            ABDKMath64x64.divu(amountOgTemple, 1e18).mul(_accumulationFactorAt(currentEpoch()))
	```

- Found in contracts/deprecated/TempleStaking.sol [Line: 129](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L129)

	```solidity
	        amountOgTemple = _overflowSafeMul1e18(ABDKMath64x64.divu(_amountTemple, 1e18).div(accumulationFactor));
	```

- Found in contracts/deprecated/TempleStaking.sol [Line: 159](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L159)

	```solidity
	        uint256 fractionalDigits = amountFixedPoint.sub(ABDKMath64x64.fromUInt(integralDigits)).mul(ABDKMath64x64.fromUInt(1e18)).toUInt();
	```

- Found in contracts/deprecated/TempleStaking.sol [Line: 160](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L160)

	```solidity
	        return (integralDigits * 1e18) + fractionalDigits;
	```

- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 537](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L537)

	```solidity
	            vestingRate = 1e18;
	```

- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 539](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L539)

	```solidity
	            vestingRate = (block.timestamp - _stakeInfo.stakeTime) * 1e18 / vestingPeriod;
	```

- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 542](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L542)

	```solidity
	        if (vestingRate == 1e18) { 
	```

- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 545](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L545)

	```solidity
	            _perTokenReward = _rewardPerToken() * vestingRate / 1e18;
	```

- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 549](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L549)

	```solidity
	            (_balance * (_perTokenReward - userRewardPerTokenPaid[_account][_index])) / 1e18 +
	```

- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 558](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L558)

	```solidity
	            vestingRate = 1e18;
	```

- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 560](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L560)

	```solidity
	            vestingRate = (block.timestamp - _stakeInfo.stakeTime) * 1e18 / vestingPeriod;
	```

- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 580](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L580)

	```solidity
	                rewardData.rewardRate * 1e18)
	```

- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 680](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L680)

	```solidity
	                userRewardPerTokenPaid[_account][_index] = vestingRate * uint256(rewardData.rewardPerTokenStored) / 1e18;
	```

- Found in contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol [Line: 76](../tests/2024-07-templegold/protocol/contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol#L76)

	```solidity
	        return existingBalance * (1e18 + (daiSavingsRate * elapsed / 365 days)) / 1e18;
	```

- Found in contracts/templegold/TempleGoldStaking.sol [Line: 473](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldStaking.sol#L473)

	```solidity
	        if (vestingRate == 1e18) { 
	```

- Found in contracts/templegold/TempleGoldStaking.sol [Line: 476](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldStaking.sol#L476)

	```solidity
	            _perTokenReward = _rewardPerToken() * vestingRate / 1e18;
	```

- Found in contracts/templegold/TempleGoldStaking.sol [Line: 480](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldStaking.sol#L480)

	```solidity
	            (_stakeInfo.amount * (_perTokenReward - userRewardPerTokenPaid[_account][_index])) / 1e18 +
	```

- Found in contracts/templegold/TempleGoldStaking.sol [Line: 489](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldStaking.sol#L489)

	```solidity
	            vestingRate = 1e18;
	```

- Found in contracts/templegold/TempleGoldStaking.sol [Line: 491](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldStaking.sol#L491)

	```solidity
	            vestingRate = (block.timestamp - _stakeInfo.stakeTime) * 1e18 / vestingPeriod;
	```

- Found in contracts/templegold/TempleGoldStaking.sol [Line: 511](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldStaking.sol#L511)

	```solidity
	                rewardData.rewardRate * 1e18)
	```

- Found in contracts/templegold/TempleGoldStaking.sol [Line: 598](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldStaking.sol#L598)

	```solidity
	                userRewardPerTokenPaid[_account][_index] = vestingRate * uint256(rewardData.rewardPerTokenStored) / 1e18;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 36](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L36)

	```solidity
	      require (x >= -0x8000000000000000 && x <= 0x7FFFFFFFFFFFFFFF);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 37](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L37)

	```solidity
	      return int128 (x << 64);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 50](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L50)

	```solidity
	      return int64 (x >> 64);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 63](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L63)

	```solidity
	      require (x <= 0x7FFFFFFFFFFFFFFF);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 64](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L64)

	```solidity
	      return int128 (int256 (x << 64));
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 78](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L78)

	```solidity
	      return uint64 (uint128 (x >> 64));
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 91](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L91)

	```solidity
	      int256 result = x >> 64;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 106](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L106)

	```solidity
	      return int256 (x) << 64;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 149](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L149)

	```solidity
	      int256 result = int256(x) * y >> 64;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 166](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L166)

	```solidity
	        require (y >= -0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF &&
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 168](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L168)

	```solidity
	        return -y << 63;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 207](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L207)

	```solidity
	      uint256 lo = (uint256 (int256 (x)) * (y & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)) >> 64;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 208](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L208)

	```solidity
	      uint256 hi = uint256 (int256 (x)) * (y >> 128);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 210](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L210)

	```solidity
	      require (hi <= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 211](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L211)

	```solidity
	      hi <<= 64;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 230](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L230)

	```solidity
	      int256 result = (int256 (x) << 64) / y;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 259](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L259)

	```solidity
	        require (absoluteResult <= 0x80000000000000000000000000000000);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 321](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L321)

	```solidity
	      int256 result = int256 (0x100000000000000000000000000000000) / x;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 372](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L372)

	```solidity
	      absResult = 0x100000000000000000000000000000000;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 374](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L374)

	```solidity
	      if (absX <= 0x10000000000000000) {
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 375](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L375)

	```solidity
	        absX <<= 63;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 377](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L377)

	```solidity
	          if (y & 0x1 != 0) {
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 378](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L378)

	```solidity
	            absResult = absResult * absX >> 127;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 380](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L380)

	```solidity
	          absX = absX * absX >> 127;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 382](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L382)

	```solidity
	          if (y & 0x2 != 0) {
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 383](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L383)

	```solidity
	            absResult = absResult * absX >> 127;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 385](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L385)

	```solidity
	          absX = absX * absX >> 127;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 387](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L387)

	```solidity
	          if (y & 0x4 != 0) {
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 388](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L388)

	```solidity
	            absResult = absResult * absX >> 127;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 390](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L390)

	```solidity
	          absX = absX * absX >> 127;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 392](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L392)

	```solidity
	          if (y & 0x8 != 0) {
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 393](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L393)

	```solidity
	            absResult = absResult * absX >> 127;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 395](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L395)

	```solidity
	          absX = absX * absX >> 127;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 397](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L397)

	```solidity
	          y >>= 4;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 400](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L400)

	```solidity
	        absResult >>= 64;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 402](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L402)

	```solidity
	        uint256 absXShift = 63;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 403](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L403)

	```solidity
	        if (absX < 0x1000000000000000000000000) { absX <<= 32; absXShift -= 32; }
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 404](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L404)

	```solidity
	        if (absX < 0x10000000000000000000000000000) { absX <<= 16; absXShift -= 16; }
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 405](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L405)

	```solidity
	        if (absX < 0x1000000000000000000000000000000) { absX <<= 8; absXShift -= 8; }
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 406](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L406)

	```solidity
	        if (absX < 0x10000000000000000000000000000000) { absX <<= 4; absXShift -= 4; }
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 408](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L408)

	```solidity
	        if (absX < 0x80000000000000000000000000000000) { absX <<= 1; absXShift -= 1; }
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 412](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L412)

	```solidity
	          require (absXShift < 64);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 414](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L414)

	```solidity
	          if (y & 0x1 != 0) {
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 415](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L415)

	```solidity
	            absResult = absResult * absX >> 127;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 417](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L417)

	```solidity
	            if (absResult > 0x100000000000000000000000000000000) {
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 422](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L422)

	```solidity
	          absX = absX * absX >> 127;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 424](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L424)

	```solidity
	          if (absX >= 0x100000000000000000000000000000000) {
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 432](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L432)

	```solidity
	        require (resultShift < 64);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 433](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L433)

	```solidity
	        absResult >>= 64 - resultShift;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 450](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L450)

	```solidity
	      return int128 (sqrtu (uint256 (int256 (x)) << 64));
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 466](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L466)

	```solidity
	      if (xc >= 0x10000000000000000) { xc >>= 64; msb += 64; }
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 467](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L467)

	```solidity
	      if (xc >= 0x100000000) { xc >>= 32; msb += 32; }
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 468](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L468)

	```solidity
	      if (xc >= 0x10000) { xc >>= 16; msb += 16; }
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 469](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L469)

	```solidity
	      if (xc >= 0x100) { xc >>= 8; msb += 8; }
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 470](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L470)

	```solidity
	      if (xc >= 0x10) { xc >>= 4; msb += 4; }
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 471](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L471)

	```solidity
	      if (xc >= 0x4) { xc >>= 2; msb += 2; }
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 472](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L472)

	```solidity
	      if (xc >= 0x2) msb += 1;  // No need to shift xc anymore
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 474](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L474)

	```solidity
	      int256 result = msb - 64 << 64;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 475](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L475)

	```solidity
	      uint256 ux = uint256 (int256 (x)) << uint256 (127 - msb);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 476](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L476)

	```solidity
	      for (int256 bit = 0x8000000000000000; bit > 0; bit >>= 1) {
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 478](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L478)

	```solidity
	        uint256 b = ux >> 255;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 479](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L479)

	```solidity
	        ux >>= 127 + b;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 498](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L498)

	```solidity
	          uint256 (int256 (log_2 (x))) * 0xB17217F7D1CF79ABC9E3B39803F2F6AF >> 128));
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 510](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L510)

	```solidity
	      require (x < 0x400000000000000000); // Overflow
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 512](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L512)

	```solidity
	      if (x < -0x400000000000000000) return 0; // Underflow
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 514](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L514)

	```solidity
	      uint256 result = 0x80000000000000000000000000000000;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 516](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L516)

	```solidity
	      if (x & 0x8000000000000000 > 0)
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 517](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L517)

	```solidity
	        result = result * 0x16A09E667F3BCC908B2FB1366EA957D3E >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 519](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L519)

	```solidity
	        result = result * 0x1306FE0A31B7152DE8D5A46305C85EDEC >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 521](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L521)

	```solidity
	        result = result * 0x1172B83C7D517ADCDF7C8C50EB14A791F >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 523](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L523)

	```solidity
	        result = result * 0x10B5586CF9890F6298B92B71842A98363 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 525](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L525)

	```solidity
	        result = result * 0x1059B0D31585743AE7C548EB68CA417FD >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 527](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L527)

	```solidity
	        result = result * 0x102C9A3E778060EE6F7CACA4F7A29BDE8 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 529](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L529)

	```solidity
	        result = result * 0x10163DA9FB33356D84A66AE336DCDFA3F >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 531](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L531)

	```solidity
	        result = result * 0x100B1AFA5ABCBED6129AB13EC11DC9543 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 533](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L533)

	```solidity
	        result = result * 0x10058C86DA1C09EA1FF19D294CF2F679B >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 535](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L535)

	```solidity
	        result = result * 0x1002C605E2E8CEC506D21BFC89A23A00F >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 537](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L537)

	```solidity
	        result = result * 0x100162F3904051FA128BCA9C55C31E5DF >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 539](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L539)

	```solidity
	        result = result * 0x1000B175EFFDC76BA38E31671CA939725 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 541](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L541)

	```solidity
	        result = result * 0x100058BA01FB9F96D6CACD4B180917C3D >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 543](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L543)

	```solidity
	        result = result * 0x10002C5CC37DA9491D0985C348C68E7B3 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 545](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L545)

	```solidity
	        result = result * 0x1000162E525EE054754457D5995292026 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 547](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L547)

	```solidity
	        result = result * 0x10000B17255775C040618BF4A4ADE83FC >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 549](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L549)

	```solidity
	        result = result * 0x1000058B91B5BC9AE2EED81E9B7D4CFAB >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 551](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L551)

	```solidity
	        result = result * 0x100002C5C89D5EC6CA4D7C8ACC017B7C9 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 553](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L553)

	```solidity
	        result = result * 0x10000162E43F4F831060E02D839A9D16D >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 555](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L555)

	```solidity
	        result = result * 0x100000B1721BCFC99D9F890EA06911763 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 557](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L557)

	```solidity
	        result = result * 0x10000058B90CF1E6D97F9CA14DBCC1628 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 559](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L559)

	```solidity
	        result = result * 0x1000002C5C863B73F016468F6BAC5CA2B >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 561](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L561)

	```solidity
	        result = result * 0x100000162E430E5A18F6119E3C02282A5 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 563](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L563)

	```solidity
	        result = result * 0x1000000B1721835514B86E6D96EFD1BFE >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 565](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L565)

	```solidity
	        result = result * 0x100000058B90C0B48C6BE5DF846C5B2EF >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 567](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L567)

	```solidity
	        result = result * 0x10000002C5C8601CC6B9E94213C72737A >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 569](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L569)

	```solidity
	        result = result * 0x1000000162E42FFF037DF38AA2B219F06 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 571](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L571)

	```solidity
	        result = result * 0x10000000B17217FBA9C739AA5819F44F9 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 573](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L573)

	```solidity
	        result = result * 0x1000000058B90BFCDEE5ACD3C1CEDC823 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 575](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L575)

	```solidity
	        result = result * 0x100000002C5C85FE31F35A6A30DA1BE50 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 577](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L577)

	```solidity
	        result = result * 0x10000000162E42FF0999CE3541B9FFFCF >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 578](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L578)

	```solidity
	      if (x & 0x100000000 > 0)
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 579](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L579)

	```solidity
	        result = result * 0x100000000B17217F80F4EF5AADDA45554 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 581](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L581)

	```solidity
	        result = result * 0x10000000058B90BFBF8479BD5A81B51AD >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 583](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L583)

	```solidity
	        result = result * 0x1000000002C5C85FDF84BD62AE30A74CC >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 585](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L585)

	```solidity
	        result = result * 0x100000000162E42FEFB2FED257559BDAA >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 587](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L587)

	```solidity
	        result = result * 0x1000000000B17217F7D5A7716BBA4A9AE >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 589](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L589)

	```solidity
	        result = result * 0x100000000058B90BFBE9DDBAC5E109CCE >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 591](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L591)

	```solidity
	        result = result * 0x10000000002C5C85FDF4B15DE6F17EB0D >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 593](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L593)

	```solidity
	        result = result * 0x1000000000162E42FEFA494F1478FDE05 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 595](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L595)

	```solidity
	        result = result * 0x10000000000B17217F7D20CF927C8E94C >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 597](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L597)

	```solidity
	        result = result * 0x1000000000058B90BFBE8F71CB4E4B33D >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 599](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L599)

	```solidity
	        result = result * 0x100000000002C5C85FDF477B662B26945 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 601](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L601)

	```solidity
	        result = result * 0x10000000000162E42FEFA3AE53369388C >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 603](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L603)

	```solidity
	        result = result * 0x100000000000B17217F7D1D351A389D40 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 605](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L605)

	```solidity
	        result = result * 0x10000000000058B90BFBE8E8B2D3D4EDE >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 607](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L607)

	```solidity
	        result = result * 0x1000000000002C5C85FDF4741BEA6E77E >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 609](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L609)

	```solidity
	        result = result * 0x100000000000162E42FEFA39FE95583C2 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 610](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L610)

	```solidity
	      if (x & 0x10000 > 0)
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 611](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L611)

	```solidity
	        result = result * 0x1000000000000B17217F7D1CFB72B45E1 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 613](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L613)

	```solidity
	        result = result * 0x100000000000058B90BFBE8E7CC35C3F0 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 615](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L615)

	```solidity
	        result = result * 0x10000000000002C5C85FDF473E242EA38 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 617](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L617)

	```solidity
	        result = result * 0x1000000000000162E42FEFA39F02B772C >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 619](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L619)

	```solidity
	        result = result * 0x10000000000000B17217F7D1CF7D83C1A >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 621](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L621)

	```solidity
	        result = result * 0x1000000000000058B90BFBE8E7BDCBE2E >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 623](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L623)

	```solidity
	        result = result * 0x100000000000002C5C85FDF473DEA871F >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 625](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L625)

	```solidity
	        result = result * 0x10000000000000162E42FEFA39EF44D91 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 626](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L626)

	```solidity
	      if (x & 0x100 > 0)
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 627](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L627)

	```solidity
	        result = result * 0x100000000000000B17217F7D1CF79E949 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 629](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L629)

	```solidity
	        result = result * 0x10000000000000058B90BFBE8E7BCE544 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 631](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L631)

	```solidity
	        result = result * 0x1000000000000002C5C85FDF473DE6ECA >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 633](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L633)

	```solidity
	        result = result * 0x100000000000000162E42FEFA39EF366F >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 634](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L634)

	```solidity
	      if (x & 0x10 > 0)
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 635](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L635)

	```solidity
	        result = result * 0x1000000000000000B17217F7D1CF79AFA >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 636](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L636)

	```solidity
	      if (x & 0x8 > 0)
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 637](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L637)

	```solidity
	        result = result * 0x100000000000000058B90BFBE8E7BCD6D >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 638](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L638)

	```solidity
	      if (x & 0x4 > 0)
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 639](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L639)

	```solidity
	        result = result * 0x10000000000000002C5C85FDF473DE6B2 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 640](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L640)

	```solidity
	      if (x & 0x2 > 0)
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 641](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L641)

	```solidity
	        result = result * 0x1000000000000000162E42FEFA39EF358 >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 642](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L642)

	```solidity
	      if (x & 0x1 > 0)
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 643](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L643)

	```solidity
	        result = result * 0x10000000000000000B17217F7D1CF79AB >> 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 645](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L645)

	```solidity
	      result >>= uint256 (int256 (63 - (x >> 64)));
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 660](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L660)

	```solidity
	      require (x < 0x400000000000000000); // Overflow
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 662](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L662)

	```solidity
	      if (x < -0x400000000000000000) return 0; // Underflow
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 665](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L665)

	```solidity
	          int128 (int256 (x) * 0x171547652B82FE1777D0FFDA0D23A7D12 >> 128));
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 683](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L683)

	```solidity
	      if (x <= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 684](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L684)

	```solidity
	        result = (x << 64) / y;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 686](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L686)

	```solidity
	        uint256 msb = 192;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 687](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L687)

	```solidity
	        uint256 xc = x >> 192;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 688](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L688)

	```solidity
	        if (xc >= 0x100000000) { xc >>= 32; msb += 32; }
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 689](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L689)

	```solidity
	        if (xc >= 0x10000) { xc >>= 16; msb += 16; }
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 690](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L690)

	```solidity
	        if (xc >= 0x100) { xc >>= 8; msb += 8; }
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 691](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L691)

	```solidity
	        if (xc >= 0x10) { xc >>= 4; msb += 4; }
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 692](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L692)

	```solidity
	        if (xc >= 0x4) { xc >>= 2; msb += 2; }
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 693](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L693)

	```solidity
	        if (xc >= 0x2) msb += 1;  // No need to shift xc anymore
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 695](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L695)

	```solidity
	        result = (x << 255 - msb) / ((y - 1 >> msb - 191) + 1);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 696](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L696)

	```solidity
	        require (result <= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 698](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L698)

	```solidity
	        uint256 hi = result * (y >> 128);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 699](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L699)

	```solidity
	        uint256 lo = result * (y & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 701](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L701)

	```solidity
	        uint256 xh = x >> 192;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 702](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L702)

	```solidity
	        uint256 xl = x << 64;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 706](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L706)

	```solidity
	        lo = hi << 128;
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 710](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L710)

	```solidity
	        assert (xh == hi >> 128);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 715](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L715)

	```solidity
	      require (result <= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 733](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L733)

	```solidity
	        if (xx >= 0x100000000000000000000000000000000) { xx >>= 128; r <<= 64; }
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 734](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L734)

	```solidity
	        if (xx >= 0x10000000000000000) { xx >>= 64; r <<= 32; }
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 735](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L735)

	```solidity
	        if (xx >= 0x100000000) { xx >>= 32; r <<= 16; }
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 736](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L736)

	```solidity
	        if (xx >= 0x10000) { xx >>= 16; r <<= 8; }
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 737](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L737)

	```solidity
	        if (xx >= 0x100) { xx >>= 8; r <<= 4; }
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 738](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L738)

	```solidity
	        if (xx >= 0x10) { xx >>= 4; r <<= 2; }
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 739](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L739)

	```solidity
	        if (xx >= 0x8) { r <<= 1; }
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 54](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L54)

	```solidity
	        if (msb < 112) result <<= 112 - msb;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 55](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L55)

	```solidity
	        else if (msb > 112) result >>= msb - 112;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 57](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L57)

	```solidity
	        result = result & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF | 16383 + msb << 112;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 58](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L58)

	```solidity
	        if (x < 0) result |= 0x80000000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 74](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L74)

	```solidity
	      uint256 exponent = uint128 (x) >> 112 & 0x7FFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 76](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L76)

	```solidity
	      require (exponent <= 16638); // Overflow
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 77](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L77)

	```solidity
	      if (exponent < 16383) return 0; // Underflow
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 79](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L79)

	```solidity
	      uint256 result = uint256 (uint128 (x)) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF |
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 80](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L80)

	```solidity
	        0x10000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 82](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L82)

	```solidity
	      if (exponent < 16495) result >>= 16495 - exponent;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 83](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L83)

	```solidity
	      else if (exponent > 16495) result <<= exponent - 16495;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 85](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L85)

	```solidity
	      if (uint128 (x) >= 0x80000000000000000000000000000000) { // Negative
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 86](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L86)

	```solidity
	        require (result <= 0x8000000000000000000000000000000000000000000000000000000000000000);
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 89](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L89)

	```solidity
	        require (result <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 108](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L108)

	```solidity
	        if (msb < 112) result <<= 112 - msb;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 109](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L109)

	```solidity
	        else if (msb > 112) result >>= msb - 112;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 111](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L111)

	```solidity
	        result = result & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF | 16383 + msb << 112;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 129](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L129)

	```solidity
	      uint256 exponent = uint128 (x) >> 112 & 0x7FFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 131](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L131)

	```solidity
	      if (exponent < 16383) return 0; // Underflow
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 133](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L133)

	```solidity
	      require (uint128 (x) < 0x80000000000000000000000000000000); // Negative
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 135](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L135)

	```solidity
	      require (exponent <= 16638); // Overflow
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 136](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L136)

	```solidity
	      uint256 result = uint256 (uint128 (x)) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF |
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 137](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L137)

	```solidity
	        0x10000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 139](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L139)

	```solidity
	      if (exponent < 16495) result >>= 16495 - exponent;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 140](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L140)

	```solidity
	      else if (exponent > 16495) result <<= exponent - 16495;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 161](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L161)

	```solidity
	        if (msb < 112) result <<= 112 - msb;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 162](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L162)

	```solidity
	        else if (msb > 112) result >>= msb - 112;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 164](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L164)

	```solidity
	        result = result & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF | 16255 + msb << 112;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 165](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L165)

	```solidity
	        if (x < 0) result |= 0x80000000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 181](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L181)

	```solidity
	      uint256 exponent = uint128 (x) >> 112 & 0x7FFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 184](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L184)

	```solidity
	      if (exponent < 16255) return 0; // Underflow
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 186](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L186)

	```solidity
	      uint256 result = uint256 (uint128 (x)) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF |
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 187](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L187)

	```solidity
	        0x10000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 189](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L189)

	```solidity
	      if (exponent < 16367) result >>= 16367 - exponent;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 190](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L190)

	```solidity
	      else if (exponent > 16367) result <<= exponent - 16367;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 192](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L192)

	```solidity
	      if (uint128 (x) >= 0x80000000000000000000000000000000) { // Negative
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 193](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L193)

	```solidity
	        require (result <= 0x8000000000000000000000000000000000000000000000000000000000000000);
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 196](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L196)

	```solidity
	        require (result <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 217](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L217)

	```solidity
	        if (msb < 112) result <<= 112 - msb;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 218](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L218)

	```solidity
	        else if (msb > 112) result >>= msb - 112;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 220](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L220)

	```solidity
	        result = result & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF | 16319 + msb << 112;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 221](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L221)

	```solidity
	        if (x < 0) result |= 0x80000000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 237](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L237)

	```solidity
	      uint256 exponent = uint128 (x) >> 112 & 0x7FFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 240](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L240)

	```solidity
	      if (exponent < 16319) return 0; // Underflow
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 242](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L242)

	```solidity
	      uint256 result = uint256 (uint128 (x)) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF |
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 243](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L243)

	```solidity
	        0x10000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 245](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L245)

	```solidity
	      if (exponent < 16431) result >>= 16431 - exponent;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 246](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L246)

	```solidity
	      else if (exponent > 16431) result <<= exponent - 16431;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 248](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L248)

	```solidity
	      if (uint128 (x) >= 0x80000000000000000000000000000000) { // Negative
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 249](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L249)

	```solidity
	        require (result <= 0x80000000000000000000000000000000);
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 252](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L252)

	```solidity
	        require (result <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 266](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L266)

	```solidity
	      bool negative = x & 0x8000000000000000000000000000000000000000000000000000000000000000 > 0;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 268](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L268)

	```solidity
	      uint256 exponent = uint256 (x) >> 236 & 0x7FFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 269](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L269)

	```solidity
	      uint256 significand = uint256 (x) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 271](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L271)

	```solidity
	      if (exponent == 0x7FFFF) {
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 278](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L278)

	```solidity
	      else if (exponent < 245649)
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 284](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L284)

	```solidity
	        significand >>= 124;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 285](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L285)

	```solidity
	        exponent -= 245760;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 288](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L288)

	```solidity
	      uint128 result = uint128 (significand | exponent << 112);
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 289](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L289)

	```solidity
	      if (negative) result |= 0x80000000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 303](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L303)

	```solidity
	      uint256 exponent = uint128 (x) >> 112 & 0x7FFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 305](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L305)

	```solidity
	      uint256 result = uint128 (x) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 307](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L307)

	```solidity
	      if (exponent == 0x7FFF) exponent = 0x7FFFF; // Infinity or NaN
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 311](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L311)

	```solidity
	          result = result << 236 - msb & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 312](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L312)

	```solidity
	          exponent = 245649 + msb;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 315](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L315)

	```solidity
	        result <<= 124;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 316](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L316)

	```solidity
	        exponent += 245760;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 319](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L319)

	```solidity
	      result |= exponent << 236;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 320](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L320)

	```solidity
	      if (uint128 (x) >= 0x80000000000000000000000000000000)
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 321](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L321)

	```solidity
	        result |= 0x8000000000000000000000000000000000000000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 335](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L335)

	```solidity
	      uint256 exponent = uint64 (x) >> 52 & 0x7FF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 339](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L339)

	```solidity
	      if (exponent == 0x7FF) exponent = 0x7FFF; // Infinity or NaN
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 343](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L343)

	```solidity
	          result = result << 112 - msb & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 344](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L344)

	```solidity
	          exponent = 15309 + msb;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 347](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L347)

	```solidity
	        result <<= 60;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 348](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L348)

	```solidity
	        exponent += 15360;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 351](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L351)

	```solidity
	      result |= exponent << 112;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 352](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L352)

	```solidity
	      if (x & 0x8000000000000000 > 0)
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 353](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L353)

	```solidity
	        result |= 0x80000000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 367](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L367)

	```solidity
	      bool negative = uint128 (x) >= 0x80000000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 369](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L369)

	```solidity
	      uint256 exponent = uint128 (x) >> 112 & 0x7FFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 370](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L370)

	```solidity
	      uint256 significand = uint128 (x) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 372](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L372)

	```solidity
	      if (exponent == 0x7FFF) {
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 375](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L375)

	```solidity
	            bytes8 (0xFFF0000000000000) : // -Infinity
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 376](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L376)

	```solidity
	            bytes8 (0x7FF0000000000000); // Infinity
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 381](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L381)

	```solidity
	            bytes8 (0xFFF0000000000000) : // -Infinity
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 382](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L382)

	```solidity
	            bytes8 (0x7FF0000000000000); // Infinity
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 383](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L383)

	```solidity
	      else if (exponent < 15309)
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 385](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L385)

	```solidity
	            bytes8 (0x8000000000000000) : // -0
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 388](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L388)

	```solidity
	        significand = (significand | 0x10000000000000000000000000000) >> 15421 - exponent;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 391](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L391)

	```solidity
	        significand >>= 60;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 392](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L392)

	```solidity
	        exponent -= 15360;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 395](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L395)

	```solidity
	      uint64 result = uint64 (significand | exponent << 52);
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 396](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L396)

	```solidity
	      if (negative) result |= 0x8000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 410](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L410)

	```solidity
	      return uint128 (x) & 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF >
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 411](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L411)

	```solidity
	        0x7FFF0000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 424](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L424)

	```solidity
	      return uint128 (x) & 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ==
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 425](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L425)

	```solidity
	        0x7FFF0000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 438](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L438)

	```solidity
	      uint128 absoluteX = uint128 (x) & 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 440](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L440)

	```solidity
	      require (absoluteX <= 0x7FFF0000000000000000000000000000); // Not NaN
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 443](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L443)

	```solidity
	      else if (uint128 (x) >= 0x80000000000000000000000000000000) return -1;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 458](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L458)

	```solidity
	      uint128 absoluteX = uint128 (x) & 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 460](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L460)

	```solidity
	      require (absoluteX <= 0x7FFF0000000000000000000000000000); // Not NaN
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 462](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L462)

	```solidity
	      uint128 absoluteY = uint128 (y) & 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 464](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L464)

	```solidity
	      require (absoluteY <= 0x7FFF0000000000000000000000000000); // Not NaN
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 467](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L467)

	```solidity
	      require (x != y || absoluteX < 0x7FFF0000000000000000000000000000);
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 471](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L471)

	```solidity
	        bool negativeX = uint128 (x) >= 0x80000000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 472](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L472)

	```solidity
	        bool negativeY = uint128 (y) >= 0x80000000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 496](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L496)

	```solidity
	        return uint128 (x) & 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF <
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 497](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L497)

	```solidity
	          0x7FFF0000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 518](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L518)

	```solidity
	      uint256 xExponent = uint128 (x) >> 112 & 0x7FFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 519](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L519)

	```solidity
	      uint256 yExponent = uint128 (y) >> 112 & 0x7FFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 521](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L521)

	```solidity
	      if (xExponent == 0x7FFF) {
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 522](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L522)

	```solidity
	        if (yExponent == 0x7FFF) { 
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 526](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L526)

	```solidity
	      } else if (yExponent == 0x7FFF) return y;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 528](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L528)

	```solidity
	        bool xSign = uint128 (x) >= 0x80000000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 529](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L529)

	```solidity
	        uint256 xSignifier = uint128 (x) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 531](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L531)

	```solidity
	        else xSignifier |= 0x10000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 533](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L533)

	```solidity
	        bool ySign = uint128 (y) >= 0x80000000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 534](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L534)

	```solidity
	        uint256 ySignifier = uint128 (y) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 536](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L536)

	```solidity
	        else ySignifier |= 0x10000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 544](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L544)

	```solidity
	            if (delta > 112) return x;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 546](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L546)

	```solidity
	            else if (delta < -112) return y;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 554](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L554)

	```solidity
	            if (xSignifier >= 0x20000000000000000000000000000) {
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 559](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L559)

	```solidity
	            if (xExponent == 0x7FFF)
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 562](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L562)

	```solidity
	              if (xSignifier < 0x10000000000000000000000000000) xExponent = 0;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 563](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L563)

	```solidity
	              else xSignifier &= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 566](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L566)

	```solidity
	                  (xSign ? 0x80000000000000000000000000000000 : 0) |
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 567](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L567)

	```solidity
	                  (xExponent << 112) |
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 579](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L579)

	```solidity
	            if (delta > 112) ySignifier = 1;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 581](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L581)

	```solidity
	            else if (delta < -112) xSignifier = 1;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 595](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L595)

	```solidity
	            if (msb == 113) {
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 596](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L596)

	```solidity
	              xSignifier = xSignifier >> 1 & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 598](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L598)

	```solidity
	            } else if (msb < 112) {
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 599](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L599)

	```solidity
	              uint256 shift = 112 - msb;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 601](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L601)

	```solidity
	                xSignifier = xSignifier << shift & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 607](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L607)

	```solidity
	            } else xSignifier &= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 609](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L609)

	```solidity
	            if (xExponent == 0x7FFF)
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 612](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L612)

	```solidity
	                (xSign ? 0x80000000000000000000000000000000 : 0) |
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 613](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L613)

	```solidity
	                (xExponent << 112) |
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 637](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L637)

	```solidity
	      return add (x, y ^ 0x80000000000000000000000000000000);
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 662](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L662)

	```solidity
	      uint256 xExponent = uint128 (x) >> 112 & 0x7FFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 663](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L663)

	```solidity
	      uint256 yExponent = uint128 (y) >> 112 & 0x7FFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 665](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L665)

	```solidity
	      if (xExponent == 0x7FFF) {
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 666](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L666)

	```solidity
	        if (yExponent == 0x7FFF) {
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 667](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L667)

	```solidity
	          if (x == y) return x ^ y & 0x80000000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 668](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L668)

	```solidity
	          else if (x ^ y == 0x80000000000000000000000000000000) return x | y;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 671](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L671)

	```solidity
	          if (y & 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF == 0) return NaN;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 672](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L672)

	```solidity
	          else return x ^ y & 0x80000000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 674](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L674)

	```solidity
	      } else if (yExponent == 0x7FFF) {
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 675](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L675)

	```solidity
	          if (x & 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF == 0) return NaN;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 676](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L676)

	```solidity
	          else return y ^ x & 0x80000000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 678](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L678)

	```solidity
	        uint256 xSignifier = uint128 (x) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 680](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L680)

	```solidity
	        else xSignifier |= 0x10000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 682](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L682)

	```solidity
	        uint256 ySignifier = uint128 (y) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 684](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L684)

	```solidity
	        else ySignifier |= 0x10000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 688](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L688)

	```solidity
	          return (x ^ y) & 0x80000000000000000000000000000000 > 0 ?
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 694](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L694)

	```solidity
	          xSignifier >= 0x200000000000000000000000000000000000000000000000000000000 ? 225 :
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 698](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L698)

	```solidity
	        if (xExponent + msb < 16496) { // Underflow
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 702](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L702)

	```solidity
	          if (xExponent < 16496)
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 703](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L703)

	```solidity
	            xSignifier >>= 16496 - xExponent;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 704](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L704)

	```solidity
	          else if (xExponent > 16496)
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 705](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L705)

	```solidity
	            xSignifier <<= xExponent - 16496;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 708](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L708)

	```solidity
	          xExponent = 0x7FFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 711](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L711)

	```solidity
	          if (msb > 112)
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 712](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L712)

	```solidity
	            xSignifier >>= msb - 112;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 713](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L713)

	```solidity
	          else if (msb < 112)
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 714](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L714)

	```solidity
	            xSignifier <<= 112 - msb;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 716](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L716)

	```solidity
	          xSignifier &= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 721](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L721)

	```solidity
	        return bytes16 (uint128 (uint128 ((x ^ y) & 0x80000000000000000000000000000000) |
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 722](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L722)

	```solidity
	            xExponent << 112 | xSignifier));
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 763](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L763)

	```solidity
	      uint256 xExponent = uint128 (x) >> 112 & 0x7FFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 764](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L764)

	```solidity
	      uint256 yExponent = uint128 (y) >> 112 & 0x7FFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 766](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L766)

	```solidity
	      if (xExponent == 0x7FFF) {
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 767](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L767)

	```solidity
	        if (yExponent == 0x7FFF) return NaN;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 768](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L768)

	```solidity
	        else return x ^ y & 0x80000000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 769](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L769)

	```solidity
	      } else if (yExponent == 0x7FFF) {
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 771](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L771)

	```solidity
	        else return POSITIVE_ZERO | (x ^ y) & 0x80000000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 772](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L772)

	```solidity
	      } else if (y & 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF == 0) {
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 773](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L773)

	```solidity
	        if (x & 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF == 0) return NaN;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 774](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L774)

	```solidity
	        else return POSITIVE_INFINITY | (x ^ y) & 0x80000000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 776](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L776)

	```solidity
	        uint256 ySignifier = uint128 (y) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 778](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L778)

	```solidity
	        else ySignifier |= 0x10000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 780](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L780)

	```solidity
	        uint256 xSignifier = uint128 (x) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 783](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L783)

	```solidity
	            uint shift = 226 - mostSignificantBit (xSignifier);
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 788](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L788)

	```solidity
	            yExponent += shift - 114;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 792](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L792)

	```solidity
	          xSignifier = (xSignifier | 0x10000000000000000000000000000) << 114;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 797](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L797)

	```solidity
	          return (x ^ y) & 0x80000000000000000000000000000000 > 0 ?
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 800](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L800)

	```solidity
	        assert (xSignifier >= 0x1000000000000000000000000000);
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 803](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L803)

	```solidity
	          xSignifier >= 0x80000000000000000000000000000 ? mostSignificantBit (xSignifier) :
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 804](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L804)

	```solidity
	          xSignifier >= 0x40000000000000000000000000000 ? 114 :
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 805](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L805)

	```solidity
	          xSignifier >= 0x20000000000000000000000000000 ? 113 : 112;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 808](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L808)

	```solidity
	          xExponent = 0x7FFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 810](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L810)

	```solidity
	        } else if (xExponent + msb + 16380  < yExponent) { // Underflow
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 814](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L814)

	```solidity
	          if (xExponent + 16380 > yExponent)
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 815](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L815)

	```solidity
	            xSignifier <<= xExponent + 16380 - yExponent;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 816](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L816)

	```solidity
	          else if (xExponent + 16380 < yExponent)
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 817](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L817)

	```solidity
	            xSignifier >>= yExponent - xExponent - 16380;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 821](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L821)

	```solidity
	          if (msb > 112)
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 822](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L822)

	```solidity
	            xSignifier >>= msb - 112;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 824](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L824)

	```solidity
	          xSignifier &= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 829](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L829)

	```solidity
	        return bytes16 (uint128 (uint128 ((x ^ y) & 0x80000000000000000000000000000000) |
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 830](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L830)

	```solidity
	            xExponent << 112 | xSignifier));
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 843](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L843)

	```solidity
	      return x ^ 0x80000000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 855](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L855)

	```solidity
	      return x & 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 867](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L867)

	```solidity
	      if (uint128 (x) >  0x80000000000000000000000000000000) return NaN;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 869](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L869)

	```solidity
	        uint256 xExponent = uint128 (x) >> 112 & 0x7FFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 870](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L870)

	```solidity
	        if (xExponent == 0x7FFF) return x;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 872](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L872)

	```solidity
	          uint256 xSignifier = uint128 (x) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 874](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L874)

	```solidity
	          else xSignifier |= 0x10000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 879](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L879)

	```solidity
	          xExponent = xExponent + 16383 >> 1;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 882](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L882)

	```solidity
	            if (xSignifier >= 0x10000000000000000000000000000)
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 883](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L883)

	```solidity
	              xSignifier <<= 113;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 886](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L886)

	```solidity
	              uint256 shift = (226 - msb) & 0xFE;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 888](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L888)

	```solidity
	              xExponent -= shift - 112 >> 1;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 891](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L891)

	```solidity
	            if (xSignifier >= 0x10000000000000000000000000000)
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 892](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L892)

	```solidity
	              xSignifier <<= 112;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 895](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L895)

	```solidity
	              uint256 shift = (225 - msb) & 0xFE;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 897](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L897)

	```solidity
	              xExponent -= shift - 112 >> 1;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 901](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L901)

	```solidity
	          uint256 r = 0x10000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 912](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L912)

	```solidity
	          return bytes16 (uint128 (xExponent << 112 | r & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF));
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 926](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L926)

	```solidity
	      if (uint128 (x) > 0x80000000000000000000000000000000) return NaN;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 927](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L927)

	```solidity
	      else if (x == 0x3FFF0000000000000000000000000000) return POSITIVE_ZERO; 
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 929](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L929)

	```solidity
	        uint256 xExponent = uint128 (x) >> 112 & 0x7FFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 930](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L930)

	```solidity
	        if (xExponent == 0x7FFF) return x;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 932](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L932)

	```solidity
	          uint256 xSignifier = uint128 (x) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 934](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L934)

	```solidity
	          else xSignifier |= 0x10000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 939](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L939)

	```solidity
	          uint256 resultExponent = 16495;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 942](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L942)

	```solidity
	          if (xExponent >= 0x3FFF) {
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 944](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L944)

	```solidity
	            resultSignifier = xExponent - 0x3FFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 945](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L945)

	```solidity
	            xSignifier <<= 15;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 948](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L948)

	```solidity
	            if (xSignifier >= 0x10000000000000000000000000000) {
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 949](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L949)

	```solidity
	              resultSignifier = 0x3FFE - xExponent;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 950](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L950)

	```solidity
	              xSignifier <<= 15;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 954](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L954)

	```solidity
	              xSignifier <<= 127 - msb;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 958](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L958)

	```solidity
	          if (xSignifier == 0x80000000000000000000000000000000) {
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 960](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L960)

	```solidity
	            uint256 shift = 112 - mostSignificantBit (resultSignifier);
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 965](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L965)

	```solidity
	            while (resultSignifier < 0x10000000000000000000000000000) {
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 972](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L972)

	```solidity
	              xSignifier >>= 127 + b;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 976](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L976)

	```solidity
	          return bytes16 (uint128 ((resultNegative ? 0x80000000000000000000000000000000 : 0) |
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 977](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L977)

	```solidity
	              resultExponent << 112 | resultSignifier & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF));
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1003](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1003)

	```solidity
	      bool xNegative = uint128 (x) > 0x80000000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1004](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1004)

	```solidity
	      uint256 xExponent = uint128 (x) >> 112 & 0x7FFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1005](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1005)

	```solidity
	      uint256 xSignifier = uint128 (x) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1007](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1007)

	```solidity
	      if (xExponent == 0x7FFF && xSignifier != 0) return NaN;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1010](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1010)

	```solidity
	      else if (xExponent < 16255)
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1011](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1011)

	```solidity
	        return 0x3FFF0000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1014](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1014)

	```solidity
	        else xSignifier |= 0x10000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1016](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1016)

	```solidity
	        if (xExponent > 16367)
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1017](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1017)

	```solidity
	          xSignifier <<= xExponent - 16367;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1018](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1018)

	```solidity
	        else if (xExponent < 16367)
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1019](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1019)

	```solidity
	          xSignifier >>= 16367 - xExponent;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1027](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1027)

	```solidity
	        uint256 resultExponent = xSignifier >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1034](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1034)

	```solidity
	        uint256 resultSignifier = 0x80000000000000000000000000000000;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1035](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1035)

	```solidity
	        if (xSignifier & 0x80000000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x16A09E667F3BCC908B2FB1366EA957D3E >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1036](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1036)

	```solidity
	        if (xSignifier & 0x40000000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1306FE0A31B7152DE8D5A46305C85EDEC >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1037](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1037)

	```solidity
	        if (xSignifier & 0x20000000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1172B83C7D517ADCDF7C8C50EB14A791F >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1038](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1038)

	```solidity
	        if (xSignifier & 0x10000000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10B5586CF9890F6298B92B71842A98363 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1039](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1039)

	```solidity
	        if (xSignifier & 0x8000000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1059B0D31585743AE7C548EB68CA417FD >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1040](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1040)

	```solidity
	        if (xSignifier & 0x4000000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x102C9A3E778060EE6F7CACA4F7A29BDE8 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1041](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1041)

	```solidity
	        if (xSignifier & 0x2000000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10163DA9FB33356D84A66AE336DCDFA3F >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1042](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1042)

	```solidity
	        if (xSignifier & 0x1000000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x100B1AFA5ABCBED6129AB13EC11DC9543 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1043](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1043)

	```solidity
	        if (xSignifier & 0x800000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10058C86DA1C09EA1FF19D294CF2F679B >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1044](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1044)

	```solidity
	        if (xSignifier & 0x400000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1002C605E2E8CEC506D21BFC89A23A00F >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1045](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1045)

	```solidity
	        if (xSignifier & 0x200000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x100162F3904051FA128BCA9C55C31E5DF >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1046](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1046)

	```solidity
	        if (xSignifier & 0x100000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000B175EFFDC76BA38E31671CA939725 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1047](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1047)

	```solidity
	        if (xSignifier & 0x80000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x100058BA01FB9F96D6CACD4B180917C3D >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1048](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1048)

	```solidity
	        if (xSignifier & 0x40000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10002C5CC37DA9491D0985C348C68E7B3 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1049](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1049)

	```solidity
	        if (xSignifier & 0x20000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000162E525EE054754457D5995292026 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1050](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1050)

	```solidity
	        if (xSignifier & 0x10000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000B17255775C040618BF4A4ADE83FC >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1051](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1051)

	```solidity
	        if (xSignifier & 0x8000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000058B91B5BC9AE2EED81E9B7D4CFAB >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1052](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1052)

	```solidity
	        if (xSignifier & 0x4000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x100002C5C89D5EC6CA4D7C8ACC017B7C9 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1053](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1053)

	```solidity
	        if (xSignifier & 0x2000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000162E43F4F831060E02D839A9D16D >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1054](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1054)

	```solidity
	        if (xSignifier & 0x1000000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x100000B1721BCFC99D9F890EA06911763 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1055](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1055)

	```solidity
	        if (xSignifier & 0x800000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000058B90CF1E6D97F9CA14DBCC1628 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1056](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1056)

	```solidity
	        if (xSignifier & 0x400000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000002C5C863B73F016468F6BAC5CA2B >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1057](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1057)

	```solidity
	        if (xSignifier & 0x200000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x100000162E430E5A18F6119E3C02282A5 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1058](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1058)

	```solidity
	        if (xSignifier & 0x100000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000B1721835514B86E6D96EFD1BFE >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1059](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1059)

	```solidity
	        if (xSignifier & 0x80000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x100000058B90C0B48C6BE5DF846C5B2EF >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1060](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1060)

	```solidity
	        if (xSignifier & 0x40000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000002C5C8601CC6B9E94213C72737A >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1061](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1061)

	```solidity
	        if (xSignifier & 0x20000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000162E42FFF037DF38AA2B219F06 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1062](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1062)

	```solidity
	        if (xSignifier & 0x10000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000B17217FBA9C739AA5819F44F9 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1063](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1063)

	```solidity
	        if (xSignifier & 0x8000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000058B90BFCDEE5ACD3C1CEDC823 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1064](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1064)

	```solidity
	        if (xSignifier & 0x4000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x100000002C5C85FE31F35A6A30DA1BE50 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1065](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1065)

	```solidity
	        if (xSignifier & 0x2000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000162E42FF0999CE3541B9FFFCF >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1066](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1066)

	```solidity
	        if (xSignifier & 0x1000000000000000000000000 > 0) resultSignifier = resultSignifier * 0x100000000B17217F80F4EF5AADDA45554 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1067](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1067)

	```solidity
	        if (xSignifier & 0x800000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000058B90BFBF8479BD5A81B51AD >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1068](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1068)

	```solidity
	        if (xSignifier & 0x400000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000002C5C85FDF84BD62AE30A74CC >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1069](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1069)

	```solidity
	        if (xSignifier & 0x200000000000000000000000 > 0) resultSignifier = resultSignifier * 0x100000000162E42FEFB2FED257559BDAA >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1070](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1070)

	```solidity
	        if (xSignifier & 0x100000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000B17217F7D5A7716BBA4A9AE >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1071](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1071)

	```solidity
	        if (xSignifier & 0x80000000000000000000000 > 0) resultSignifier = resultSignifier * 0x100000000058B90BFBE9DDBAC5E109CCE >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1072](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1072)

	```solidity
	        if (xSignifier & 0x40000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000002C5C85FDF4B15DE6F17EB0D >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1073](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1073)

	```solidity
	        if (xSignifier & 0x20000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000162E42FEFA494F1478FDE05 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1074](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1074)

	```solidity
	        if (xSignifier & 0x10000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000B17217F7D20CF927C8E94C >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1075](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1075)

	```solidity
	        if (xSignifier & 0x8000000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000058B90BFBE8F71CB4E4B33D >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1076](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1076)

	```solidity
	        if (xSignifier & 0x4000000000000000000000 > 0) resultSignifier = resultSignifier * 0x100000000002C5C85FDF477B662B26945 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1077](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1077)

	```solidity
	        if (xSignifier & 0x2000000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000162E42FEFA3AE53369388C >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1078](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1078)

	```solidity
	        if (xSignifier & 0x1000000000000000000000 > 0) resultSignifier = resultSignifier * 0x100000000000B17217F7D1D351A389D40 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1079](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1079)

	```solidity
	        if (xSignifier & 0x800000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000058B90BFBE8E8B2D3D4EDE >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1080](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1080)

	```solidity
	        if (xSignifier & 0x400000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000002C5C85FDF4741BEA6E77E >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1081](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1081)

	```solidity
	        if (xSignifier & 0x200000000000000000000 > 0) resultSignifier = resultSignifier * 0x100000000000162E42FEFA39FE95583C2 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1082](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1082)

	```solidity
	        if (xSignifier & 0x100000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000B17217F7D1CFB72B45E1 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1083](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1083)

	```solidity
	        if (xSignifier & 0x80000000000000000000 > 0) resultSignifier = resultSignifier * 0x100000000000058B90BFBE8E7CC35C3F0 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1084](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1084)

	```solidity
	        if (xSignifier & 0x40000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000002C5C85FDF473E242EA38 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1085](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1085)

	```solidity
	        if (xSignifier & 0x20000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000162E42FEFA39F02B772C >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1086](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1086)

	```solidity
	        if (xSignifier & 0x10000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000B17217F7D1CF7D83C1A >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1087](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1087)

	```solidity
	        if (xSignifier & 0x8000000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000058B90BFBE8E7BDCBE2E >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1088](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1088)

	```solidity
	        if (xSignifier & 0x4000000000000000000 > 0) resultSignifier = resultSignifier * 0x100000000000002C5C85FDF473DEA871F >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1089](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1089)

	```solidity
	        if (xSignifier & 0x2000000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000162E42FEFA39EF44D91 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1090](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1090)

	```solidity
	        if (xSignifier & 0x1000000000000000000 > 0) resultSignifier = resultSignifier * 0x100000000000000B17217F7D1CF79E949 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1091](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1091)

	```solidity
	        if (xSignifier & 0x800000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000058B90BFBE8E7BCE544 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1092](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1092)

	```solidity
	        if (xSignifier & 0x400000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000002C5C85FDF473DE6ECA >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1093](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1093)

	```solidity
	        if (xSignifier & 0x200000000000000000 > 0) resultSignifier = resultSignifier * 0x100000000000000162E42FEFA39EF366F >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1094](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1094)

	```solidity
	        if (xSignifier & 0x100000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000B17217F7D1CF79AFA >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1095](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1095)

	```solidity
	        if (xSignifier & 0x80000000000000000 > 0) resultSignifier = resultSignifier * 0x100000000000000058B90BFBE8E7BCD6D >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1096](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1096)

	```solidity
	        if (xSignifier & 0x40000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000002C5C85FDF473DE6B2 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1097](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1097)

	```solidity
	        if (xSignifier & 0x20000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000162E42FEFA39EF358 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1098](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1098)

	```solidity
	        if (xSignifier & 0x10000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000B17217F7D1CF79AB >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1099](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1099)

	```solidity
	        if (xSignifier & 0x8000000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000058B90BFBE8E7BCD5 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1100](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1100)

	```solidity
	        if (xSignifier & 0x4000000000000000 > 0) resultSignifier = resultSignifier * 0x100000000000000002C5C85FDF473DE6A >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1101](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1101)

	```solidity
	        if (xSignifier & 0x2000000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000162E42FEFA39EF34 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1102](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1102)

	```solidity
	        if (xSignifier & 0x1000000000000000 > 0) resultSignifier = resultSignifier * 0x100000000000000000B17217F7D1CF799 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1103](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1103)

	```solidity
	        if (xSignifier & 0x800000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000058B90BFBE8E7BCC >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1104](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1104)

	```solidity
	        if (xSignifier & 0x400000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000002C5C85FDF473DE5 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1105](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1105)

	```solidity
	        if (xSignifier & 0x200000000000000 > 0) resultSignifier = resultSignifier * 0x100000000000000000162E42FEFA39EF2 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1106](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1106)

	```solidity
	        if (xSignifier & 0x100000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000B17217F7D1CF78 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1107](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1107)

	```solidity
	        if (xSignifier & 0x80000000000000 > 0) resultSignifier = resultSignifier * 0x100000000000000000058B90BFBE8E7BB >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1108](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1108)

	```solidity
	        if (xSignifier & 0x40000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000002C5C85FDF473DD >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1109](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1109)

	```solidity
	        if (xSignifier & 0x20000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000162E42FEFA39EE >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1110](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1110)

	```solidity
	        if (xSignifier & 0x10000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000B17217F7D1CF6 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1111](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1111)

	```solidity
	        if (xSignifier & 0x8000000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000058B90BFBE8E7A >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1112](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1112)

	```solidity
	        if (xSignifier & 0x4000000000000 > 0) resultSignifier = resultSignifier * 0x100000000000000000002C5C85FDF473C >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1113](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1113)

	```solidity
	        if (xSignifier & 0x2000000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000162E42FEFA39D >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1114](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1114)

	```solidity
	        if (xSignifier & 0x1000000000000 > 0) resultSignifier = resultSignifier * 0x100000000000000000000B17217F7D1CE >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1115](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1115)

	```solidity
	        if (xSignifier & 0x800000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000058B90BFBE8E6 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1116](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1116)

	```solidity
	        if (xSignifier & 0x400000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000002C5C85FDF472 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1117](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1117)

	```solidity
	        if (xSignifier & 0x200000000000 > 0) resultSignifier = resultSignifier * 0x100000000000000000000162E42FEFA38 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1118](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1118)

	```solidity
	        if (xSignifier & 0x100000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000000B17217F7D1B >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1119](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1119)

	```solidity
	        if (xSignifier & 0x80000000000 > 0) resultSignifier = resultSignifier * 0x100000000000000000000058B90BFBE8D >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1120](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1120)

	```solidity
	        if (xSignifier & 0x40000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000002C5C85FDF46 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1121](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1121)

	```solidity
	        if (xSignifier & 0x20000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000000162E42FEFA2 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1122](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1122)

	```solidity
	        if (xSignifier & 0x10000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000000B17217F7D0 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1123](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1123)

	```solidity
	        if (xSignifier & 0x8000000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000000058B90BFBE7 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1124](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1124)

	```solidity
	        if (xSignifier & 0x4000000000 > 0) resultSignifier = resultSignifier * 0x100000000000000000000002C5C85FDF3 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1125](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1125)

	```solidity
	        if (xSignifier & 0x2000000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000000162E42FEF9 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1126](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1126)

	```solidity
	        if (xSignifier & 0x1000000000 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000B17217F7C >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1127](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1127)

	```solidity
	        if (xSignifier & 0x800000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000000058B90BFBD >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1128](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1128)

	```solidity
	        if (xSignifier & 0x400000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000000002C5C85FDE >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1129](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1129)

	```solidity
	        if (xSignifier & 0x200000000 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000162E42FEE >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1130](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1130)

	```solidity
	        if (xSignifier & 0x100000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000000000B17217F6 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1131](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1131)

	```solidity
	        if (xSignifier & 0x80000000 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000058B90BFA >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1132](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1132)

	```solidity
	        if (xSignifier & 0x40000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000000002C5C85FC >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1133](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1133)

	```solidity
	        if (xSignifier & 0x20000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000000000162E42FD >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1134](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1134)

	```solidity
	        if (xSignifier & 0x10000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000000000B17217E >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1135](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1135)

	```solidity
	        if (xSignifier & 0x8000000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000000000058B90BE >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1136](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1136)

	```solidity
	        if (xSignifier & 0x4000000 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000002C5C85E >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1137](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1137)

	```solidity
	        if (xSignifier & 0x2000000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000000000162E42E >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1138](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1138)

	```solidity
	        if (xSignifier & 0x1000000 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000000B17216 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1139](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1139)

	```solidity
	        if (xSignifier & 0x800000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000000000058B90A >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1140](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1140)

	```solidity
	        if (xSignifier & 0x400000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000000000002C5C84 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1141](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1141)

	```solidity
	        if (xSignifier & 0x200000 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000000162E41 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1142](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1142)

	```solidity
	        if (xSignifier & 0x100000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000000000000B1720 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1143](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1143)

	```solidity
	        if (xSignifier & 0x80000 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000000058B8F >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1144](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1144)

	```solidity
	        if (xSignifier & 0x40000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000000000002C5C7 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1145](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1145)

	```solidity
	        if (xSignifier & 0x20000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000000000000162E3 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1146](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1146)

	```solidity
	        if (xSignifier & 0x10000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000000000000B171 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1147](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1147)

	```solidity
	        if (xSignifier & 0x8000 > 0) resultSignifier = resultSignifier * 0x1000000000000000000000000000058B8 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1148](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1148)

	```solidity
	        if (xSignifier & 0x4000 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000000002C5B >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1149](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1149)

	```solidity
	        if (xSignifier & 0x2000 > 0) resultSignifier = resultSignifier * 0x10000000000000000000000000000162D >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1150](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1150)

	```solidity
	        if (xSignifier & 0x1000 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000000000B16 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1151](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1151)

	```solidity
	        if (xSignifier & 0x800 > 0) resultSignifier = resultSignifier * 0x10000000000000000000000000000058A >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1152](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1152)

	```solidity
	        if (xSignifier & 0x400 > 0) resultSignifier = resultSignifier * 0x1000000000000000000000000000002C4 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1153](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1153)

	```solidity
	        if (xSignifier & 0x200 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000000000161 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1154](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1154)

	```solidity
	        if (xSignifier & 0x100 > 0) resultSignifier = resultSignifier * 0x1000000000000000000000000000000B0 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1155](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1155)

	```solidity
	        if (xSignifier & 0x80 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000000000057 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1156](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1156)

	```solidity
	        if (xSignifier & 0x40 > 0) resultSignifier = resultSignifier * 0x10000000000000000000000000000002B >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1157](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1157)

	```solidity
	        if (xSignifier & 0x20 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000000000015 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1158](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1158)

	```solidity
	        if (xSignifier & 0x10 > 0) resultSignifier = resultSignifier * 0x10000000000000000000000000000000A >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1159](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1159)

	```solidity
	        if (xSignifier & 0x8 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000000000004 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1160](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1160)

	```solidity
	        if (xSignifier & 0x4 > 0) resultSignifier = resultSignifier * 0x100000000000000000000000000000001 >> 128;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1163](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1163)

	```solidity
	          resultSignifier = resultSignifier >> 15 & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1164](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1164)

	```solidity
	          resultExponent += 0x3FFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1165](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1165)

	```solidity
	        } else if (resultExponent <= 0x3FFE) {
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1166](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1166)

	```solidity
	          resultSignifier = resultSignifier >> 15 & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1167](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1167)

	```solidity
	          resultExponent = 0x3FFF - resultExponent;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1169](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1169)

	```solidity
	          resultSignifier = resultSignifier >> resultExponent - 16367;
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1173](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1173)

	```solidity
	        return bytes16 (uint128 (resultExponent << 112 | resultSignifier));
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1203](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1203)

	```solidity
	      if (x >= 0x100000000000000000000000000000000) { x >>= 128; result += 128; }
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1204](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1204)

	```solidity
	      if (x >= 0x10000000000000000) { x >>= 64; result += 64; }
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1205](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1205)

	```solidity
	      if (x >= 0x100000000) { x >>= 32; result += 32; }
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1206](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1206)

	```solidity
	      if (x >= 0x10000) { x >>= 16; result += 16; }
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1207](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1207)

	```solidity
	      if (x >= 0x100) { x >>= 8; result += 8; }
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1208](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1208)

	```solidity
	      if (x >= 0x10) { x >>= 4; result += 4; }
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1209](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1209)

	```solidity
	      if (x >= 0x4) { x >>= 2; result += 2; }
	```

- Found in contracts/v2/safeGuards/SafeForked.sol [Line: 69](../tests/2024-07-templegold/protocol/contracts/v2/safeGuards/SafeForked.sol#L69)

	```solidity
	        require(signatures.length >= requiredSignatures * 65, "!Dynamic Signature Threshold");
	```

- Found in contracts/v2/safeGuards/SafeForked.sol [Line: 88](../tests/2024-07-templegold/protocol/contracts/v2/safeGuards/SafeForked.sol#L88)

	```solidity
	                require(uint256(s) >= (requiredSignatures * 65), "GS021");
	```

- Found in contracts/v2/safeGuards/SafeForked.sol [Line: 91](../tests/2024-07-templegold/protocol/contracts/v2/safeGuards/SafeForked.sol#L91)

	```solidity
	                require((uint256(s) + 32) <= signatures.length, "GS022");
	```

- Found in contracts/v2/safeGuards/SafeForked.sol [Line: 100](../tests/2024-07-templegold/protocol/contracts/v2/safeGuards/SafeForked.sol#L100)

	```solidity
	                require((uint256(s) + 32 + contractSignatureLen) <= signatures.length, "GS023");
	```

</details>



## L-8: Empty `require()` / `revert()` Statement

Use descriptive reason strings or custom errors for revert paths.

<details><summary>55 Found Instances</summary>


- Found in contracts/core/OpsManager.sol [Line: 50](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L50)

	```solidity
	        require(address(pools[revalToken]) == address(0));
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 36](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L36)

	```solidity
	      require (x >= -0x8000000000000000 && x <= 0x7FFFFFFFFFFFFFFF);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 63](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L63)

	```solidity
	      require (x <= 0x7FFFFFFFFFFFFFFF);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 77](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L77)

	```solidity
	      require (x >= 0);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 92](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L92)

	```solidity
	      require (result >= MIN_64x64 && result <= MAX_64x64);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 120](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L120)

	```solidity
	      require (result >= MIN_64x64 && result <= MAX_64x64);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 135](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L135)

	```solidity
	      require (result >= MIN_64x64 && result <= MAX_64x64);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 150](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L150)

	```solidity
	      require (result >= MIN_64x64 && result <= MAX_64x64);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 166](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L166)

	```solidity
	        require (y >= -0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF &&
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 181](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L181)

	```solidity
	          require (absoluteResult <=
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 185](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L185)

	```solidity
	          require (absoluteResult <=
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 205](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L205)

	```solidity
	      require (x >= 0);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 210](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L210)

	```solidity
	      require (hi <= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 213](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L213)

	```solidity
	      require (hi <=
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 229](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L229)

	```solidity
	      require (y != 0);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 231](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L231)

	```solidity
	      require (result >= MIN_64x64 && result <= MAX_64x64);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 246](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L246)

	```solidity
	      require (y != 0);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 259](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L259)

	```solidity
	        require (absoluteResult <= 0x80000000000000000000000000000000);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 262](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L262)

	```solidity
	        require (absoluteResult <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 278](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L278)

	```solidity
	      require (y != 0);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 280](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L280)

	```solidity
	      require (result <= uint128 (MAX_64x64));
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 293](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L293)

	```solidity
	      require (x != MIN_64x64);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 306](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L306)

	```solidity
	      require (x != MIN_64x64);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 320](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L320)

	```solidity
	      require (x != 0);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 322](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L322)

	```solidity
	      require (result >= MIN_64x64 && result <= MAX_64x64);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 351](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L351)

	```solidity
	      require (m >= 0);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 352](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L352)

	```solidity
	      require (m <
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 412](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L412)

	```solidity
	          require (absXShift < 64);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 432](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L432)

	```solidity
	        require (resultShift < 64);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 436](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L436)

	```solidity
	      require (result >= MIN_64x64 && result <= MAX_64x64);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 449](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L449)

	```solidity
	      require (x >= 0);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 462](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L462)

	```solidity
	      require (x > 0);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 495](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L495)

	```solidity
	      require (x > 0);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 510](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L510)

	```solidity
	      require (x < 0x400000000000000000); // Overflow
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 646](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L646)

	```solidity
	      require (result <= uint256 (int256 (MAX_64x64)));
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 660](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L660)

	```solidity
	      require (x < 0x400000000000000000); // Overflow
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 679](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L679)

	```solidity
	      require (y != 0);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 696](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L696)

	```solidity
	        require (result <= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 715](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L715)

	```solidity
	      require (result <= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 76](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L76)

	```solidity
	      require (exponent <= 16638); // Overflow
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 86](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L86)

	```solidity
	        require (result <= 0x8000000000000000000000000000000000000000000000000000000000000000);
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 89](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L89)

	```solidity
	        require (result <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 133](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L133)

	```solidity
	      require (uint128 (x) < 0x80000000000000000000000000000000); // Negative
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 135](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L135)

	```solidity
	      require (exponent <= 16638); // Overflow
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 183](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L183)

	```solidity
	      require (exponent <= 16510); // Overflow
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 193](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L193)

	```solidity
	        require (result <= 0x8000000000000000000000000000000000000000000000000000000000000000);
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 196](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L196)

	```solidity
	        require (result <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 239](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L239)

	```solidity
	      require (exponent <= 16446); // Overflow
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 249](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L249)

	```solidity
	        require (result <= 0x80000000000000000000000000000000);
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 252](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L252)

	```solidity
	        require (result <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 440](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L440)

	```solidity
	      require (absoluteX <= 0x7FFF0000000000000000000000000000); // Not NaN
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 460](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L460)

	```solidity
	      require (absoluteX <= 0x7FFF0000000000000000000000000000); // Not NaN
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 464](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L464)

	```solidity
	      require (absoluteY <= 0x7FFF0000000000000000000000000000); // Not NaN
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 467](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L467)

	```solidity
	      require (x != y || absoluteX < 0x7FFF0000000000000000000000000000);
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1199](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1199)

	```solidity
	      require (x > 0);
	```

</details>



## L-9: Modifier Invoked Only Once

Consider removing the modifier or inlining the logic into the calling function.

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


- Found in contracts/core/Exposure.sol [Line: 133](../tests/2024-07-templegold/protocol/contracts/core/Exposure.sol#L133)

	```solidity
	    modifier onlyMinter() {
	```

- Found in contracts/templegold/DaiGoldAuction.sol [Line: 308](../tests/2024-07-templegold/protocol/contracts/templegold/DaiGoldAuction.sol#L308)

	```solidity
	    modifier onlyWhenLive() {
	```

- Found in contracts/templegold/TempleGold.sol [Line: 343](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGold.sol#L343)

	```solidity
	    modifier onlyArbitrum() {
	```

- Found in contracts/templegold/TempleGoldStaking.sol [Line: 604](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldStaking.sol#L604)

	```solidity
	    modifier onlyMigrator() {
	```

- Found in contracts/v2/access/TempleElevatedAccess.sol [Line: 146](../tests/2024-07-templegold/protocol/contracts/v2/access/TempleElevatedAccess.sol#L146)

	```solidity
	    modifier onlyInRescueMode() {
	```

</details>



## L-10: Empty Block

Consider removing empty blocks.

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


- Found in contracts/amo/test/RamosTestnetAuraStaking.sol [Line: 70](../tests/2024-07-templegold/protocol/contracts/amo/test/RamosTestnetAuraStaking.sol#L70)

	```solidity
	    function depositAndStake(uint256 /*amount*/) external override {
	```

- Found in contracts/v2/safeGuards/ThresholdSafeGuard.sol [Line: 247](../tests/2024-07-templegold/protocol/contracts/v2/safeGuards/ThresholdSafeGuard.sol#L247)

	```solidity
	    function checkAfterExecution(bytes32, bool) external view {}
	```

- Found in contracts/v2/strategies/AbstractStrategy.sol [Line: 146](../tests/2024-07-templegold/protocol/contracts/v2/strategies/AbstractStrategy.sol#L146)

	```solidity
	    function populateShutdownData(
	```

- Found in contracts/v2/strategies/AbstractStrategy.sol [Line: 228](../tests/2024-07-templegold/protocol/contracts/v2/strategies/AbstractStrategy.sol#L228)

	```solidity
	    function _debtCeilingUpdated(IERC20 /*token*/, uint256 /*newDebtCeiling*/) internal virtual {}
	```

- Found in contracts/v2/strategies/GnosisStrategy.sol [Line: 51](../tests/2024-07-templegold/protocol/contracts/v2/strategies/GnosisStrategy.sol#L51)

	```solidity
	    function _updateTrvApprovals(
	```

- Found in contracts/v2/strategies/TempleTokenBaseStrategy.sol [Line: 42](../tests/2024-07-templegold/protocol/contracts/v2/strategies/TempleTokenBaseStrategy.sol#L42)

	```solidity
	    function _updateTrvApprovals(
	```

- Found in contracts/v2/strategies/TlcStrategy.sol [Line: 43](../tests/2024-07-templegold/protocol/contracts/v2/strategies/TlcStrategy.sol#L43)

	```solidity
	    function _updateTrvApprovals(
	```

</details>



## L-11: 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>6 Found Instances</summary>


- Found in contracts/amo/Ramos.sol [Line: 72](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L72)

	```solidity
	    uint256 public constant override BPS_PRECISION = 10_000;
	```

- Found in contracts/amo/helpers/BalancerPoolHelper.sol [Line: 27](../tests/2024-07-templegold/protocol/contracts/amo/helpers/BalancerPoolHelper.sol#L27)

	```solidity
	    uint256 public constant override BPS_PRECISION = 10_000;
	```

- Found in contracts/deprecated/TempleStaking.sol [Line: 119](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L119)

	```solidity
	        emit AccumulationFactorUpdated(_nUnupdatedEpochs, _currentEpoch, accumulationFactor.mul(10000).toUInt());
	```

- Found in contracts/fakes/templegold/TempleGoldMock.sol [Line: 36](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldMock.sol#L36)

	```solidity
	    uint256 public constant MAX_SUPPLY = 1_000_000_000 ether; // 1B
	```

- Found in contracts/templegold/TempleGold.sol [Line: 47](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGold.sol#L47)

	```solidity
	    uint256 public constant MAX_SUPPLY = 1_000_000_000 ether; // 1B
	```

- Found in contracts/templegold/TempleGold.sol [Line: 49](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGold.sol#L49)

	```solidity
	    uint256 public constant MINIMUM_MINT = 10_000 ether;
	```

</details>



## L-12: 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>17 Found Instances</summary>


- Found in contracts/amo/helpers/BalancerPoolHelper.sol [Line: 172](../tests/2024-07-templegold/protocol/contracts/amo/helpers/BalancerPoolHelper.sol#L172)

	```solidity
	    function createPoolExitRequest(
	```

- Found in contracts/amo/helpers/BalancerPoolHelper.sol [Line: 190](../tests/2024-07-templegold/protocol/contracts/amo/helpers/BalancerPoolHelper.sol#L190)

	```solidity
	    function createPoolJoinRequest(
	```

- Found in contracts/amo/helpers/BalancerPoolHelper.sol [Line: 283](../tests/2024-07-templegold/protocol/contracts/amo/helpers/BalancerPoolHelper.sol#L283)

	```solidity
	    function validateProtocolTokenJoin(
	```

- Found in contracts/amo/helpers/BalancerPoolHelper.sol [Line: 298](../tests/2024-07-templegold/protocol/contracts/amo/helpers/BalancerPoolHelper.sol#L298)

	```solidity
	    function validateProtocolTokenExit(
	```

- Found in contracts/amo/helpers/BalancerPoolHelper.sol [Line: 316](../tests/2024-07-templegold/protocol/contracts/amo/helpers/BalancerPoolHelper.sol#L316)

	```solidity
	    function validateQuoteTokenJoin(
	```

- Found in contracts/amo/helpers/BalancerPoolHelper.sol [Line: 331](../tests/2024-07-templegold/protocol/contracts/amo/helpers/BalancerPoolHelper.sol#L331)

	```solidity
	    function validateQuoteTokenExit(
	```

- Found in contracts/governance/ElderElection.sol [Line: 139](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L139)

	```solidity
	    function hash(EIP712Domain memory _input) internal pure returns (bytes32) {    
	```

- Found in contracts/governance/ElderElection.sol [Line: 157](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L157)

	```solidity
	    function hash(EndorsementReq memory _input) internal pure returns (bytes32) {
	```

- Found in contracts/governance/ElderElection.sol [Line: 167](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L167)

	```solidity
	    function hash(uint256[] memory _input) internal pure returns (bytes32) {
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 201](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L201)

	```solidity
	  function mulu (int128 x, uint256 y) internal pure returns (uint256) {
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 460](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L460)

	```solidity
	  function log_2 (int128 x) internal pure returns (int128) {
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 508](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L508)

	```solidity
	  function exp_2 (int128 x) internal pure returns (int128) {
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 516](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L516)

	```solidity
	  function add (bytes16 x, bytes16 y) internal pure returns (bytes16) {
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 924](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L924)

	```solidity
	  function log_2 (bytes16 x) internal pure returns (bytes16) {
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 1001](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L1001)

	```solidity
	  function pow_2 (bytes16 x) internal pure returns (bytes16) {
	```

- Found in contracts/v2/interestRate/BaseInterestRateModel.sol [Line: 19](../tests/2024-07-templegold/protocol/contracts/v2/interestRate/BaseInterestRateModel.sol#L19)

	```solidity
	    function computeInterestRateImpl(uint256) internal virtual view returns (uint96);
	```

- Found in contracts/v2/safeGuards/SafeForked.sol [Line: 22](../tests/2024-07-templegold/protocol/contracts/v2/safeGuards/SafeForked.sol#L22)

	```solidity
	    function signatureSplit(bytes memory signatures, uint256 pos)
	```

</details>



## L-13: 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>58 Found Instances</summary>


- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 32](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L32)

	```solidity
	    modifier ensure(uint deadline) {
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 62](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L62)

	```solidity
	        uint amountADesired,
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 63](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L63)

	```solidity
	        uint amountBDesired,
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 64](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L64)

	```solidity
	        uint amountAMin,
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 65](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L65)

	```solidity
	        uint amountBMin,
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 67](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L67)

	```solidity
	    ) internal virtual returns (uint amountA, uint amountB) {
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 68](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L68)

	```solidity
	        (uint reserveA, uint reserveB,) = pair.getReserves();
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 72](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L72)

	```solidity
	            uint amountBOptimal = quote(amountADesired, reserveA, reserveB);
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 77](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L77)

	```solidity
	                uint amountAOptimal = quote(amountBDesired, reserveB, reserveA);
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 86](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L86)

	```solidity
	        uint amountADesired,
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 87](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L87)

	```solidity
	        uint amountBDesired,
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 88](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L88)

	```solidity
	        uint amountAMin,
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 89](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L89)

	```solidity
	        uint amountBMin,
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 92](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L92)

	```solidity
	        uint deadline
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 93](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L93)

	```solidity
	    ) external virtual ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 106](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L106)

	```solidity
	        uint liquidity,
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 107](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L107)

	```solidity
	        uint amountAMin,
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 108](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L108)

	```solidity
	        uint amountBMin,
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 111](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L111)

	```solidity
	        uint deadline
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 112](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L112)

	```solidity
	    ) public virtual ensure(deadline) returns (uint amountA, uint amountB) {
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 123](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L123)

	```solidity
	        uint amountIn,
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 124](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L124)

	```solidity
	        uint amountOutMin,
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 127](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L127)

	```solidity
	        uint deadline
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 128](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L128)

	```solidity
	    ) external virtual ensure(deadline) returns (uint amountOut) {
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 133](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L133)

	```solidity
	        uint amountOut = swapExactStableForTempleQuote(pair, amountIn);
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 143](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L143)

	```solidity
	        uint amountIn,
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 144](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L144)

	```solidity
	        uint amountOutMin,
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 147](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L147)

	```solidity
	        uint deadline
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 148](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L148)

	```solidity
	    ) external virtual ensure(deadline) returns (uint) {
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 154](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L154)

	```solidity
	        (bool priceBelowIV, uint amountOut) = swapExactTempleForStableQuote(pair, amountIn);
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 177](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L177)

	```solidity
	    function quote(uint amountA, uint reserveA, uint reserveB) public pure returns (uint amountB) {
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 189](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L189)

	```solidity
	    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 192](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L192)

	```solidity
	        returns (uint amountOut)
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 196](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L196)

	```solidity
	        uint amountInWithFee = amountIn * 995;
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 197](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L197)

	```solidity
	        uint numerator = amountInWithFee * reserveOut;
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 198](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L198)

	```solidity
	        uint denominator = (reserveIn * 1000) + amountInWithFee;
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 202](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L202)

	```solidity
	    function swapExactStableForTempleQuote(address pair, uint amountIn) public view returns (uint amountOut ) {
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 203](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L203)

	```solidity
	        (uint reserveTemple, uint reserveFrax,) = IUniswapV2Pair(pair).getReserves();
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 207](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L207)

	```solidity
	    function swapExactTempleForStableQuote(address pair, uint amountIn) public view returns (bool priceBelowIV, uint amountOut) {
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 208](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L208)

	```solidity
	        (uint reserveTemple, uint reserveFrax,) = IUniswapV2Pair(pair).getReserves();
	```

- Found in contracts/amo/AuraStaking.sol [Line: 116](../tests/2024-07-templegold/protocol/contracts/amo/AuraStaking.sol#L116)

	```solidity
	            for (uint i; i < length; ++i) {
	```

- Found in contracts/core/RebasingERC20.sol [Line: 84](../tests/2024-07-templegold/protocol/contracts/core/RebasingERC20.sol#L84)

	```solidity
	    function toTokenAmount(uint sharesAmount) public view returns (uint256 tokenAmount) {
	```

- Found in contracts/core/RebasingERC20.sol [Line: 89](../tests/2024-07-templegold/protocol/contracts/core/RebasingERC20.sol#L89)

	```solidity
	    function toSharesAmount(uint tokenAmount) public view returns (uint256 sharesAmount) {
	```

- Found in contracts/util/ABDKMathQuad.sol [Line: 783](../tests/2024-07-templegold/protocol/contracts/util/ABDKMathQuad.sol#L783)

	```solidity
	            uint shift = 226 - mostSignificantBit (xSignifier);
	```

</details>



## L-14: Unused Error

Consider using or removing the unused error.

<details><summary>12 Found Instances</summary>


- Found in contracts/amo/helpers/AMOCommon.sol [Line: 6](../tests/2024-07-templegold/protocol/contracts/amo/helpers/AMOCommon.sol#L6)

	```solidity
	    error NotOperator();
	```

- Found in contracts/amo/helpers/AMOCommon.sol [Line: 7](../tests/2024-07-templegold/protocol/contracts/amo/helpers/AMOCommon.sol#L7)

	```solidity
	    error NotOperatorOrOwner();
	```

- Found in contracts/amo/helpers/AMOCommon.sol [Line: 11](../tests/2024-07-templegold/protocol/contracts/amo/helpers/AMOCommon.sol#L11)

	```solidity
	    error InsufficientBPTAmount(uint256 amount);
	```

- Found in contracts/amo/helpers/AMOCommon.sol [Line: 19](../tests/2024-07-templegold/protocol/contracts/amo/helpers/AMOCommon.sol#L19)

	```solidity
	    error Paused();
	```

- Found in contracts/core/VaultEarlyWithdraw.sol [Line: 31](../tests/2024-07-templegold/protocol/contracts/core/VaultEarlyWithdraw.sol#L31)

	```solidity
	    error SendFailed();
	```

- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 108](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L108)

	```solidity
	    error InvalidDelegate();
	```

- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 111](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L111)

	```solidity
	    error MinimumStakePeriod();
	```

- Found in contracts/governance/ElderElection.sol [Line: 49](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L49)

	```solidity
	    error NotFromTemplar(address account, uint256 discordId);
	```

- Found in contracts/governance/ElderElection.sol [Line: 50](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L50)

	```solidity
	    error NotCandidate(uint256 discordId);
	```

- Found in contracts/interfaces/templegold/ISpiceAuction.sol [Line: 14](../tests/2024-07-templegold/protocol/contracts/interfaces/templegold/ISpiceAuction.sol#L14)

	```solidity
	    error NoConfig();
	```

- Found in contracts/interfaces/templegold/ITempleGoldStaking.sol [Line: 21](../tests/2024-07-templegold/protocol/contracts/interfaces/templegold/ITempleGoldStaking.sol#L21)

	```solidity
	    error CannotDelegate();
	```

- Found in contracts/interfaces/v2/safeGuards/IThresholdSafeGuard.sol [Line: 16](../tests/2024-07-templegold/protocol/contracts/interfaces/v2/safeGuards/IThresholdSafeGuard.sol#L16)

	```solidity
	    error DynamicSignatureThresholdNotMet(uint256 required, uint256 found);
	```

</details>



## L-15: 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>18 Found Instances</summary>


- Found in contracts/admin/TempleTeamPayments.sol [Line: 38](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPayments.sol#L38)

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

- Found in contracts/admin/TempleTeamPaymentsFactory.sol [Line: 128](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsFactory.sol#L128)

	```solidity
	        for (uint256 i; i < _dests.length; ) {
	```

- Found in contracts/admin/TempleTeamPaymentsV2.sol [Line: 50](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsV2.sol#L50)

	```solidity
	        for (uint256 i; i < _addresses.length; ) {
	```

- Found in contracts/amo/AuraStaking.sol [Line: 116](../tests/2024-07-templegold/protocol/contracts/amo/AuraStaking.sol#L116)

	```solidity
	            for (uint i; i < length; ++i) {
	```

- Found in contracts/core/OpsManager.sol [Line: 97](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L97)

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

- Found in contracts/core/OpsManager.sol [Line: 133](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L133)

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

- Found in contracts/core/OpsManager.sol [Line: 151](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L151)

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

- Found in contracts/fakes/UniswapV2Router02NoEth.sol [Line: 178](../tests/2024-07-templegold/protocol/contracts/fakes/UniswapV2Router02NoEth.sol#L178)

	```solidity
	        for (uint i; i < path.length - 1; i++) {
	```

- Found in contracts/fakes/UniswapV2Router02NoEth.sol [Line: 259](../tests/2024-07-templegold/protocol/contracts/fakes/UniswapV2Router02NoEth.sol#L259)

	```solidity
	        for (uint i; i < path.length - 1; i++) {
	```

- Found in contracts/fakes/UniswapV2Router02NoEth.sol [Line: 362](../tests/2024-07-templegold/protocol/contracts/fakes/UniswapV2Router02NoEth.sol#L362)

	```solidity
	        for (uint i; i < path.length - 1; i++) {
	```

- Found in contracts/fakes/UniswapV2Router02NoEth.sol [Line: 378](../tests/2024-07-templegold/protocol/contracts/fakes/UniswapV2Router02NoEth.sol#L378)

	```solidity
	        for (uint i = path.length - 1; i > 0; i--) {
	```

- Found in contracts/util/ABDKMath64x64.sol [Line: 411](../tests/2024-07-templegold/protocol/contracts/util/ABDKMath64x64.sol#L411)

	```solidity
	        while (y != 0) {
	```

- Found in contracts/v2/TempleDebtToken.sol [Line: 454](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L454)

	```solidity
	        for (uint256 i; i < _length; ++i) {
	```

- Found in contracts/v2/TempleDebtToken.sol [Line: 507](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L507)

	```solidity
	        for (uint256 i; i < _length; ++i) {
	```

- Found in contracts/v2/TreasuryReservesVault.sol [Line: 187](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L187)

	```solidity
	        for (uint256 i; i < _length; ++i) {
	```

- Found in contracts/v2/TreasuryReservesVault.sol [Line: 216](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L216)

	```solidity
	        for (; i < _length; ++i) {
	```

- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 330](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L330)

	```solidity
	        for (uint256 i; i < _numAccounts; ++i) {
	```

- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 528](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L528)

	```solidity
	        for (uint256 i; i < _numAccounts; ++i) {
	```

</details>



## L-16: 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>1 Found Instances</summary>


- Found in contracts/core/JoiningFee.sol [Line: 38](../tests/2024-07-templegold/protocol/contracts/core/JoiningFee.sol#L38)

	```solidity
	        return (block.timestamp - (numCycles * periodDuration) - firstPeriodStartTimestamp) / 3600 * feePerHour;
	```

</details>



## L-17: Redundant Statement

Remove the redundant statement.

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


- Found in contracts/deprecated/InstantExitQueue.sol [Line: 28](../tests/2024-07-templegold/protocol/contracts/deprecated/InstantExitQueue.sol#L28)

	```solidity
	            _exiter;
	```

</details>



## L-18: 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>2 Found Instances</summary>


- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 71](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L71)

	```solidity
	    mapping(address delegate => uint256 balance) private _delegateBalances;
	```

- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 79](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L79)

	```solidity
	    mapping(address account => EnumerableSet.UintSet indexes) private _accountStakes;
	```

</details>



## L-19: 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>2 Found Instances</summary>


- Found in contracts/deprecated/Faith.sol [Line: 32](../tests/2024-07-templegold/protocol/contracts/deprecated/Faith.sol#L32)

	```solidity
	        require(canManageFaith[msg.sender] == true, "Faith: caller cannot manage faith");
	```

- Found in contracts/deprecated/Faith.sol [Line: 40](../tests/2024-07-templegold/protocol/contracts/deprecated/Faith.sol#L40)

	```solidity
	        require(canManageFaith[msg.sender] == true, "Faith: caller cannot manage faith");
	```

</details>



## L-20: Local Variable Shadows State Variable

Rename the local variable that shadows another state variable.

<details><summary>12 Found Instances</summary>


- Found in contracts/core/Exposure.sol [Line: 40](../tests/2024-07-templegold/protocol/contracts/core/Exposure.sol#L40)

	```solidity
	    constructor(string memory _name, string memory _symbol, IERC20 _revalToken) ERC20(_name, _symbol) Ownable(msg.sender) {
	```

- Found in contracts/core/Vault.sol [Line: 61](../tests/2024-07-templegold/protocol/contracts/core/Vault.sol#L61)

	```solidity
	        string memory _name,
	```

- Found in contracts/core/Vault.sol [Line: 62](../tests/2024-07-templegold/protocol/contracts/core/Vault.sol#L62)

	```solidity
	        string memory _symbol,
	```

- Found in contracts/fakes/templegold/TempleGoldMock.sol [Line: 49](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldMock.sol#L49)

	```solidity
	        string memory _name,
	```

- Found in contracts/fakes/templegold/TempleGoldMock.sol [Line: 50](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldMock.sol#L50)

	```solidity
	        string memory _symbol
	```

- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 116](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L116)

	```solidity
	        uint40 periodFinish;
	```

- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 118](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L118)

	```solidity
	        uint40 lastUpdateTime;
	```

- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 119](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L119)

	```solidity
	        uint216 rewardPerTokenStored;
	```

- Found in contracts/v2/TempleDebtToken.sol [Line: 588](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L588)

	```solidity
	        uint96 baseRate;
	```

- Found in contracts/v2/TempleDebtToken.sol [Line: 591](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L591)

	```solidity
	        uint128 baseShares;
	```

- Found in contracts/v2/TempleDebtToken.sol [Line: 654](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L654)

	```solidity
	        uint128 baseShares;
	```

</details>



## L-21: 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>13 Found Instances</summary>


- Found in contracts/admin/TempleTeamPaymentsFactory.sol [Line: 128](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsFactory.sol#L128)

	```solidity
	        for (uint256 i; i < _dests.length; ) {
	```

- Found in contracts/admin/TempleTeamPaymentsV2.sol [Line: 50](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsV2.sol#L50)

	```solidity
	        for (uint256 i; i < _addresses.length; ) {
	```

- Found in contracts/amo/AuraStaking.sol [Line: 116](../tests/2024-07-templegold/protocol/contracts/amo/AuraStaking.sol#L116)

	```solidity
	            for (uint i; i < length; ++i) {
	```

- Found in contracts/fakes/UniswapV2Router02NoEth.sol [Line: 178](../tests/2024-07-templegold/protocol/contracts/fakes/UniswapV2Router02NoEth.sol#L178)

	```solidity
	        for (uint i; i < path.length - 1; i++) {
	```

- Found in contracts/fakes/UniswapV2Router02NoEth.sol [Line: 259](../tests/2024-07-templegold/protocol/contracts/fakes/UniswapV2Router02NoEth.sol#L259)

	```solidity
	        for (uint i; i < path.length - 1; i++) {
	```

- Found in contracts/v2/TempleDebtToken.sol [Line: 454](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L454)

	```solidity
	        for (uint256 i; i < _length; ++i) {
	```

- Found in contracts/v2/TreasuryReservesVault.sol [Line: 187](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L187)

	```solidity
	        for (uint256 i; i < _length; ++i) {
	```

- Found in contracts/v2/TreasuryReservesVault.sol [Line: 294](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L294)

	```solidity
	        for (uint256 i; i < _length; ++i) {
	```

- Found in contracts/v2/access/TempleElevatedAccess.sol [Line: 112](../tests/2024-07-templegold/protocol/contracts/v2/access/TempleElevatedAccess.sol#L112)

	```solidity
	        for (uint256 i; i < _length; ++i) {
	```

- Found in contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol [Line: 174](../tests/2024-07-templegold/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L174)

	```solidity
	            for (uint256 i; i < _nBuckets; ++i) {
	```

- Found in contracts/v2/safeGuards/ThresholdSafeGuard.sol [Line: 126](../tests/2024-07-templegold/protocol/contracts/v2/safeGuards/ThresholdSafeGuard.sol#L126)

	```solidity
	        for (uint256 i; i < length; ++i) {
	```

- Found in contracts/v2/strategies/AbstractStrategy.sol [Line: 100](../tests/2024-07-templegold/protocol/contracts/v2/strategies/AbstractStrategy.sol#L100)

	```solidity
	        for (uint256 i; i < _length; ++i) {
	```

- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 330](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L330)

	```solidity
	        for (uint256 i; i < _numAccounts; ++i) {
	```

</details>



## L-22: Costly operations inside loop

Invoking `SSTORE` operations in loops may waste gas. Use a local variable to hold the loop computation result.

<details><summary>13 Found Instances</summary>


- Found in contracts/admin/TempleTeamPayments.sol [Line: 38](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPayments.sol#L38)

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

- Found in contracts/admin/TempleTeamPaymentsV2.sol [Line: 50](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPaymentsV2.sol#L50)

	```solidity
	        for (uint256 i; i < _addresses.length; ) {
	```

- Found in contracts/v2/TempleDebtToken.sol [Line: 454](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L454)

	```solidity
	        for (uint256 i; i < _length; ++i) {
	```

- Found in contracts/v2/TreasuryReservesVault.sol [Line: 187](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L187)

	```solidity
	        for (uint256 i; i < _length; ++i) {
	```

- Found in contracts/v2/TreasuryReservesVault.sol [Line: 216](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L216)

	```solidity
	        for (; i < _length; ++i) {
	```

- Found in contracts/v2/TreasuryReservesVault.sol [Line: 223](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L223)

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

- Found in contracts/v2/TreasuryReservesVault.sol [Line: 294](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L294)

	```solidity
	        for (uint256 i; i < _length; ++i) {
	```

- Found in contracts/v2/access/TempleElevatedAccess.sol [Line: 112](../tests/2024-07-templegold/protocol/contracts/v2/access/TempleElevatedAccess.sol#L112)

	```solidity
	        for (uint256 i; i < _length; ++i) {
	```

- Found in contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol [Line: 100](../tests/2024-07-templegold/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L100)

	```solidity
	                for (; _minBucketResetIndex < _nextBucketIndex; ++_minBucketResetIndex) {
	```

- Found in contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol [Line: 197](../tests/2024-07-templegold/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L197)

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

- Found in contracts/v2/safeGuards/ThresholdSafeGuard.sol [Line: 126](../tests/2024-07-templegold/protocol/contracts/v2/safeGuards/ThresholdSafeGuard.sol#L126)

	```solidity
	        for (uint256 i; i < length; ++i) {
	```

- Found in contracts/v2/strategies/AbstractStrategy.sol [Line: 100](../tests/2024-07-templegold/protocol/contracts/v2/strategies/AbstractStrategy.sol#L100)

	```solidity
	        for (uint256 i; i < _length; ++i) {
	```

- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 330](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L330)

	```solidity
	        for (uint256 i; i < _numAccounts; ++i) {
	```

</details>



## L-23: Missing Inheritance

There is an interface / abstract contract that is potentially missing (not included in) the inheritance of this contract.

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


- Found in contracts/fakes/v2/TempleDebtTokenTestnetAdmin.sol [Line: 7](../tests/2024-07-templegold/protocol/contracts/fakes/v2/TempleDebtTokenTestnetAdmin.sol#L7)

	Is this contract supposed to implement an interface? Consider extending one of the following: AMO_IAuraToken
	```solidity
	contract TempleDebtTokenTestnetAdmin {
	```

</details>



## L-24: Unused Import

Redundant import statement. Consider removing it.

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


- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 8](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L8)

	```solidity
	import "@openzeppelin/contracts/access/AccessControl.sol";
	```

- Found in contracts/amm/TempleUniswapV2Pair.sol [Line: 4](../tests/2024-07-templegold/protocol/contracts/amm/TempleUniswapV2Pair.sol#L4)

	```solidity
	import '@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.sol';
	```

- Found in contracts/core/TempleERC20Token.sol [Line: 7](../tests/2024-07-templegold/protocol/contracts/core/TempleERC20Token.sol#L7)

	```solidity
	import "@openzeppelin/contracts/utils/Pausable.sol";
	```

- Found in contracts/deprecated/OGTemple.sol [Line: 7](../tests/2024-07-templegold/protocol/contracts/deprecated/OGTemple.sol#L7)

	```solidity
	import "@openzeppelin/contracts/utils/Pausable.sol";
	```

- Found in contracts/deprecated/OGTemple.sol [Line: 9](../tests/2024-07-templegold/protocol/contracts/deprecated/OGTemple.sol#L9)

	```solidity
	import "@openzeppelin/contracts/access/AccessControl.sol";
	```

- Found in contracts/fakes/NoopLiquidator.sol [Line: 4](../tests/2024-07-templegold/protocol/contracts/fakes/NoopLiquidator.sol#L4)

	```solidity
	import "@openzeppelin/contracts/access/Ownable.sol";
	```

- Found in contracts/fakes/NoopVaultedTempleLiquidator.sol [Line: 4](../tests/2024-07-templegold/protocol/contracts/fakes/NoopVaultedTempleLiquidator.sol#L4)

	```solidity
	import "@openzeppelin/contracts/access/Ownable.sol";
	```

- Found in contracts/fakes/UniswapV2Factory.sol [Line: 6](../tests/2024-07-templegold/protocol/contracts/fakes/UniswapV2Factory.sol#L6)

	```solidity
	import '@uniswap/v2-core/contracts/UniswapV2Factory.sol';
	```

- Found in contracts/fakes/UniswapV2Router02NoEth.sol [Line: 17](../tests/2024-07-templegold/protocol/contracts/fakes/UniswapV2Router02NoEth.sol#L17)

	```solidity
	import '@uniswap/v2-periphery/contracts/interfaces/IWETH.sol';
	```

- Found in contracts/fakes/templegold/TempleGoldMock.sol [Line: 10](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldMock.sol#L10)

	```solidity
	import { IDaiGoldAuction } from "contracts/interfaces/templegold/IDaiGoldAuction.sol";
	```

- Found in contracts/fakes/templegold/TempleGoldMock.sol [Line: 13](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldMock.sol#L13)

	```solidity
	import { ITempleGoldStaking}  from "contracts/interfaces/templegold/ITempleGoldStaking.sol";
	```

- Found in contracts/fakes/templegold/TempleGoldMock.sol [Line: 17](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldMock.sol#L17)

	```solidity
	import { TempleMath } from "contracts/common/TempleMath.sol";
	```

- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 6](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L6)

	```solidity
	import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
	```

- Found in contracts/templegold/TempleGoldStaking.sol [Line: 6](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldStaking.sol#L6)

	```solidity
	import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
	```

</details>



## L-25: 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>18 Found Instances</summary>


- Found in contracts/admin/TempleTeamPayments.sol [Line: 29](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPayments.sol#L29)

	```solidity
	    function setAllocations(
	```

- Found in contracts/admin/TempleTeamPayments.sol [Line: 44](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPayments.sol#L44)

	```solidity
	    function setAllocation(address _address, uint256 _amount) external onlyOwner {
	```

- Found in contracts/admin/TempleTeamPayments.sol [Line: 49](../tests/2024-07-templegold/protocol/contracts/admin/TempleTeamPayments.sol#L49)

	```solidity
	    function pauseMember(address _address)
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 48](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L48)

	```solidity
	    function addPair(address _token, address _pair) external onlyOwner {
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 52](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L52)

	```solidity
	    function setTreasury(ITreasuryIV _templeTreasury) external onlyOwner {
	```

- Found in contracts/amm/TempleStableAMMRouter.sol [Line: 56](../tests/2024-07-templegold/protocol/contracts/amm/TempleStableAMMRouter.sol#L56)

	```solidity
	    function setDefendStable(address _defendStable) external onlyOwner {
	```

- Found in contracts/amm/TreasuryIV.sol [Line: 23](../tests/2024-07-templegold/protocol/contracts/amm/TreasuryIV.sol#L23)

	```solidity
	    function setIV(uint256 frax, uint256 temple) external onlyOwner {
	```

- Found in contracts/core/VaultProxy.sol [Line: 118](../tests/2024-07-templegold/protocol/contracts/core/VaultProxy.sol#L118)

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

- Found in contracts/deprecated/Faith.sol [Line: 50](../tests/2024-07-templegold/protocol/contracts/deprecated/Faith.sol#L50)

	```solidity
	    function addManager(address account) external onlyOwner {
	```

- Found in contracts/deprecated/Faith.sol [Line: 54](../tests/2024-07-templegold/protocol/contracts/deprecated/Faith.sol#L54)

	```solidity
	    function removeManager(address account) external onlyOwner {
	```

- Found in contracts/deprecated/TempleStaking.sol [Line: 67](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L67)

	```solidity
	    function setExitQueue(IExitQueue _EXIT_QUEUE) external onlyOwner {
	```

- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 268](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L268)

	```solidity
	    function distributeRewards() updateReward(address(0), 0) external {
	```

- Found in contracts/templegold/TempleGoldStaking.sol [Line: 180](../tests/2024-07-templegold/protocol/contracts/templegold/TempleGoldStaking.sol#L180)

	```solidity
	    function distributeRewards() updateReward(address(0), 0) external {
	```

- Found in contracts/v2/TempleDebtToken.sol [Line: 423](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L423)

	```solidity
	    function checkpointBaseInterest() external override returns (uint256) {
	```

- Found in contracts/v2/TempleDebtToken.sol [Line: 431](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L431)

	```solidity
	    function checkpointDebtorInterest(address debtor) external override returns (uint256) {
	```

- Found in contracts/v2/TempleDebtToken.sol [Line: 445](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L445)

	```solidity
	    function checkpointDebtorsInterest(address[] calldata _debtors) external override {
	```

- Found in contracts/v2/TreasuryReservesVault.sol [Line: 206](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L206)

	```solidity
	    function updateStrategyEnabledBorrowTokens(
	```

- Found in contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol [Line: 89](../tests/2024-07-templegold/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L89)

	```solidity
	    function preCheck(address /*onBehalfOf*/, uint256 amount) external override onlyElevatedAccess {
	```

</details>



## L-26: 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>15 Found Instances</summary>


- Found in contracts/core/Exposure.sol [Line: 18](../tests/2024-07-templegold/protocol/contracts/core/Exposure.sol#L18)

	```solidity
	    IERC20 public revalToken;
	```

- Found in contracts/core/OpsManager.sol [Line: 25](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L25)

	```solidity
	    Exposure public templeExposure;
	```

- Found in contracts/core/OpsManager.sol [Line: 26](../tests/2024-07-templegold/protocol/contracts/core/OpsManager.sol#L26)

	```solidity
	    VaultedTemple public vaultedTemple;
	```

- Found in contracts/deprecated/InstantExitQueue.sol [Line: 14](../tests/2024-07-templegold/protocol/contracts/deprecated/InstantExitQueue.sol#L14)

	```solidity
	    TempleStaking templeStaking;
	```

- Found in contracts/deprecated/InstantExitQueue.sol [Line: 15](../tests/2024-07-templegold/protocol/contracts/deprecated/InstantExitQueue.sol#L15)

	```solidity
	    IERC20 templeToken;
	```

- Found in contracts/deprecated/LockedOGTemple.sol [Line: 21](../tests/2024-07-templegold/protocol/contracts/deprecated/LockedOGTemple.sol#L21)

	```solidity
	  OGTemple public OG_TEMPLE; // The token being staked, for which TEMPLE rewards are generated
	```

- Found in contracts/deprecated/TempleStaking.sol [Line: 29](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L29)

	```solidity
	    uint256 public epochSizeSeconds; 
	```

- Found in contracts/deprecated/TempleStaking.sol [Line: 32](../tests/2024-07-templegold/protocol/contracts/deprecated/TempleStaking.sol#L32)

	```solidity
	    uint256 public startTimestamp;
	```

- Found in contracts/fakes/NoopLiquidator.sol [Line: 13](../tests/2024-07-templegold/protocol/contracts/fakes/NoopLiquidator.sol#L13)

	```solidity
	    TempleERC20Token templeToken;
	```

- Found in contracts/fakes/NoopVaultedTempleLiquidator.sol [Line: 14](../tests/2024-07-templegold/protocol/contracts/fakes/NoopVaultedTempleLiquidator.sol#L14)

	```solidity
	    TempleERC20Token templeToken;
	```

- Found in contracts/fakes/NoopVaultedTempleLiquidator.sol [Line: 15](../tests/2024-07-templegold/protocol/contracts/fakes/NoopVaultedTempleLiquidator.sol#L15)

	```solidity
	    VaultedTemple vaultedTemple;
	```

- Found in contracts/fakes/templegold/TempleGoldStakingMock.sol [Line: 31](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleGoldStakingMock.sol#L31)

	```solidity
	    ITempleGoldStaking public previousStaking;
	```

- Found in contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol [Line: 24](../tests/2024-07-templegold/protocol/contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol#L24)

	```solidity
	    uint256 public lastUpdatedAt;
	```

- Found in contracts/governance/ElderElection.sol [Line: 41](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L41)

	```solidity
	    Templar public templars;
	```

- Found in contracts/governance/TemplarMetadata.sol [Line: 18](../tests/2024-07-templegold/protocol/contracts/governance/TemplarMetadata.sol#L18)

	```solidity
	    Templar public templars;
	```

</details>



## L-27: Unchecked Return

Function returns a value but it is ignored. Consider checking the return value.

<details><summary>30 Found Instances</summary>


- Found in contracts/amo/AuraStaking.sol [Line: 83](../tests/2024-07-templegold/protocol/contracts/amo/AuraStaking.sol#L83)

	```solidity
	            booster.deposit(auraPoolInfo.pId, amount, true);
	```

- Found in contracts/amo/AuraStaking.sol [Line: 93](../tests/2024-07-templegold/protocol/contracts/amo/AuraStaking.sol#L93)

	```solidity
	            IAuraBaseRewardPool(auraPoolInfo.rewards).withdrawAndUnwrap(toUnstake, claim);
	```

- Found in contracts/amo/AuraStaking.sol [Line: 111](../tests/2024-07-templegold/protocol/contracts/amo/AuraStaking.sol#L111)

	```solidity
	        IAuraBaseRewardPool(auraPoolInfo.rewards).getReward(address(this), claimExtras);
	```

- Found in contracts/amo/Ramos.sol [Line: 195](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L195)

	```solidity
	            protocolToken.approve(previousVault, 0);
	```

- Found in contracts/amo/Ramos.sol [Line: 196](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L196)

	```solidity
	            quoteToken.approve(previousVault, 0);
	```

- Found in contracts/amo/Ramos.sol [Line: 489](../tests/2024-07-templegold/protocol/contracts/amo/Ramos.sol#L489)

	```solidity
	                quoteToken.approve(address(balancerVault), 0);
	```

- Found in contracts/core/MultiOtcOffer.sol [Line: 84](../tests/2024-07-templegold/protocol/contracts/core/MultiOtcOffer.sol#L84)

	```solidity
	        _otcMarketIds.remove(_marketId);
	```

- Found in contracts/core/TempleERC20Token.sol [Line: 15](../tests/2024-07-templegold/protocol/contracts/core/TempleERC20Token.sol#L15)

	```solidity
	        _grantRole(DEFAULT_ADMIN_ROLE, owner());
	```

- Found in contracts/fakes/UniswapV2Router02NoEth.sol [Line: 52](../tests/2024-07-templegold/protocol/contracts/fakes/UniswapV2Router02NoEth.sol#L52)

	```solidity
	            IUniswapV2Factory(factory).createPair(tokenA, tokenB);
	```

- Found in contracts/fakes/UniswapV2Router02NoEth.sol [Line: 108](../tests/2024-07-templegold/protocol/contracts/fakes/UniswapV2Router02NoEth.sol#L108)

	```solidity
	        IUniswapV2Pair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair
	```

- Found in contracts/fakes/templegold/TempleTokenMock.sol [Line: 13](../tests/2024-07-templegold/protocol/contracts/fakes/templegold/TempleTokenMock.sol#L13)

	```solidity
	        _grantRole(DEFAULT_ADMIN_ROLE, owner());
	```

- Found in contracts/fakes/v2/TempleDebtTokenTestnetAdmin.sol [Line: 28](../tests/2024-07-templegold/protocol/contracts/fakes/v2/TempleDebtTokenTestnetAdmin.sol#L28)

	```solidity
	        dUSD.burn(from, amount);
	```

- Found in contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol [Line: 52](../tests/2024-07-templegold/protocol/contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol#L52)

	```solidity
	        _checkpointDaiBalance(daiToken.balanceOf(address(this)));
	```

- Found in contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol [Line: 131](../tests/2024-07-templegold/protocol/contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol#L131)

	```solidity
	        _checkpointDaiBalance(daiToken.balanceOf(address(this)));
	```

- Found in contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol [Line: 181](../tests/2024-07-templegold/protocol/contracts/fakes/v2/strategies/DsrBaseStrategyTestnet.sol#L181)

	```solidity
	        _checkpointDaiBalance(balance - amount);
	```

- Found in contracts/governance/ElderElection.sol [Line: 61](../tests/2024-07-templegold/protocol/contracts/governance/ElderElection.sol#L61)

	```solidity
	        _grantRole(DEFAULT_ADMIN_ROLE, msg.sender);
	```

- Found in contracts/governance/Templar.sol [Line: 21](../tests/2024-07-templegold/protocol/contracts/governance/Templar.sol#L21)

	```solidity
	        _grantRole(OWNER, msg.sender);
	```

- Found in contracts/governance/Templar.sol [Line: 22](../tests/2024-07-templegold/protocol/contracts/governance/Templar.sol#L22)

	```solidity
	        _grantRole(DEFAULT_ADMIN_ROLE, msg.sender);
	```

- Found in contracts/governance/TemplarMetadata.sol [Line: 22](../tests/2024-07-templegold/protocol/contracts/governance/TemplarMetadata.sol#L22)

	```solidity
	        _grantRole(DEFAULT_ADMIN_ROLE, msg.sender);
	```

- Found in contracts/v2/TempleDebtToken.sol [Line: 149](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L149)

	```solidity
	        _getBaseCache();
	```

- Found in contracts/v2/TempleDebtToken.sol [Line: 160](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L160)

	```solidity
	        _getDebtorCache(_getBaseCache(), debtor, true);
	```

- Found in contracts/v2/TempleDebtToken.sol [Line: 638](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L638)

	```solidity
	        _initBaseCache(baseCache);
	```

- Found in contracts/v2/TempleDebtToken.sol [Line: 752](../tests/2024-07-templegold/protocol/contracts/v2/TempleDebtToken.sol#L752)

	```solidity
	        _initDebtorCache(_baseCache, _debtor, debtorCache, _roundUp);
	```

- Found in contracts/v2/TreasuryReservesVault.sol [Line: 126](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L126)

	```solidity
	        _borrowTokenSet.add(address(token));
	```

- Found in contracts/v2/TreasuryReservesVault.sol [Line: 138](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L138)

	```solidity
	        _borrowTokenSet.remove(address(token));
	```

- Found in contracts/v2/TreasuryReservesVault.sol [Line: 318](../tests/2024-07-templegold/protocol/contracts/v2/TreasuryReservesVault.sol#L318)

	```solidity
	        _strategySet.remove(strategy);
	```

- Found in contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol [Line: 56](../tests/2024-07-templegold/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol#L56)

	```solidity
	        _identifiers.add(_identifier);
	```

- Found in contracts/v2/strategies/RamosStrategy.sol [Line: 252](../tests/2024-07-templegold/protocol/contracts/v2/strategies/RamosStrategy.sol#L252)

	```solidity
	        ramos.removeLiquidity(params.requestData, params.bptAmount);
	```

- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 394](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L394)

	```solidity
	            daiToken.approve(previousTrv, 0);
	```

- Found in contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol [Line: 680](../tests/2024-07-templegold/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L680)

	```solidity
	        _initDebtTokenCache(cache);
	```

</details>




```
Page 94/94FirstPrevNextLast