diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-dap/dap_server.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-dap/dap_server.py index e8fd8e8e37e65..b8aee69bbd281 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-dap/dap_server.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-dap/dap_server.py @@ -125,6 +125,7 @@ class Breakpoint(TypedDict, total=False): def is_verified(src: "Breakpoint") -> bool: return src.get("verified", False) + def dump_dap_log(log_file: Optional[str]) -> None: print("========= DEBUG ADAPTER PROTOCOL LOGS =========", file=sys.stderr) if log_file is None: @@ -769,12 +770,13 @@ def get_scope_variables(self, scope_name, frameIndex=0, threadId=None, is_hex=No if scope["name"] == scope_name: varRef = scope["variablesReference"] variables_response = self.request_variables(varRef, is_hex=is_hex) - if variables_response: - if "body" in variables_response: - body = variables_response["body"] - if "variables" in body: - vars = body["variables"] - return vars + if not variables_response["success"]: + return variables_response + if variables_response and "body" in variables_response: + body = variables_response["body"] + if "variables" in body: + vars = body["variables"] + return vars return [] def get_global_variables(self, frameIndex=0, threadId=None): diff --git a/lldb/test/API/tools/lldb-dap/variables/TestDAP_variables.py b/lldb/test/API/tools/lldb-dap/variables/TestDAP_variables.py index 7abcec56a7880..911d8384c2a70 100644 --- a/lldb/test/API/tools/lldb-dap/variables/TestDAP_variables.py +++ b/lldb/test/API/tools/lldb-dap/variables/TestDAP_variables.py @@ -133,21 +133,13 @@ def darwin_dwarf_missing_obj(self, initCommands): self.assertEqual(len(breakpoint_ids), len(functions), "expect one breakpoint") self.continue_to_breakpoints(breakpoint_ids) - locals = self.dap_server.get_local_variables() - - verify_locals = { - "": { - "equals": {"type": "const char *"}, - "contains": { - "value": [ - "debug map object file ", - 'main.o" containing debug info does not exist, debug info will not be loaded', - ] - }, - }, - } - varref_dict = {} - self.verify_variables(verify_locals, locals, varref_dict) + resp = self.dap_server.get_local_variables() + self.assertFalse(resp["success"], "Expected to fail") + self.assertEqual( + f'debug map object file "{main_obj}" containing debug info does not exist, debug info will not be loaded', + resp["body"]["error"]["format"], + ) + self.assertTrue(resp["body"]["error"]["showUser"]) def do_test_scopes_variables_setVariable_evaluate( self, enableAutoVariableSummaries: bool diff --git a/lldb/test/API/tools/lldb-dap/variables/children/TestDAP_variables_children.py b/lldb/test/API/tools/lldb-dap/variables/children/TestDAP_variables_children.py index d288f0de028a7..7806f3817ef57 100644 --- a/lldb/test/API/tools/lldb-dap/variables/children/TestDAP_variables_children.py +++ b/lldb/test/API/tools/lldb-dap/variables/children/TestDAP_variables_children.py @@ -38,7 +38,7 @@ def test_get_num_children(self): )["body"]["result"], ) - @skipIf(archs=["arm$", "arm64", "aarch64"]) + @expectedFailureAll(archs=["arm$", "aarch64"]) def test_return_variable_with_children(self): """ Test the stepping out of a function with return value show the children correctly @@ -62,16 +62,12 @@ def test_return_variable_with_children(self): local_variables = self.dap_server.get_local_variables() - # verify has return variable as local - result_variable = list( - filter( - lambda val: val.get("name") == "(Return Value)", local_variables - ) - ) - self.assertEqual(len(result_variable), 1) - result_variable = result_variable[0] + # Verify return value is the first item in as locals. + self.assertIsNot(len(local_variables), 0) + return_variable = local_variables[0] + self.assertEqual(return_variable["name"], "(Return Value)") - result_var_ref = result_variable.get("variablesReference") + result_var_ref = return_variable.get("variablesReference") self.assertIsNot(result_var_ref, None, "There is no result value") result_value = self.dap_server.request_variables(result_var_ref) diff --git a/lldb/tools/lldb-dap/Handler/EvaluateRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/EvaluateRequestHandler.cpp index 77d9f03554a2a..f2117d81f315c 100644 --- a/lldb/tools/lldb-dap/Handler/EvaluateRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/EvaluateRequestHandler.cpp @@ -133,8 +133,8 @@ EvaluateRequestHandler::Run(const EvaluateArguments &arguments) const { body.type = desc.display_type_name; if (value.MightHaveChildren() || ValuePointsToCode(value)) - body.variablesReference = dap.reference_storage.InsertVariable( - value, /*is_permanent=*/is_repl_context); + body.variablesReference = + dap.reference_storage.Insert(value, /*is_permanent=*/is_repl_context); if (lldb::addr_t addr = value.GetLoadAddress(); addr != LLDB_INVALID_ADDRESS) body.memoryReference = EncodeMemoryReference(addr); diff --git a/lldb/tools/lldb-dap/Handler/ScopesRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/ScopesRequestHandler.cpp index 3786d583e0e87..b2b006baf8a5e 100644 --- a/lldb/tools/lldb-dap/Handler/ScopesRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/ScopesRequestHandler.cpp @@ -36,8 +36,7 @@ ScopesRequestHandler::Run(const ScopesArguments &args) const { frame.GetThread().SetSelectedFrame(frame.GetFrameID()); } - std::vector scopes = - dap.reference_storage.CreateScopes(frame); + std::vector scopes = dap.reference_storage.Insert(frame); return ScopesResponseBody{std::move(scopes)}; } diff --git a/lldb/tools/lldb-dap/Handler/SetVariableRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/SetVariableRequestHandler.cpp index 725d5de094c95..8fe424b55c9b1 100644 --- a/lldb/tools/lldb-dap/Handler/SetVariableRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/SetVariableRequestHandler.cpp @@ -67,7 +67,7 @@ SetVariableRequestHandler::Run(const SetVariableArguments &args) const { // is_permanent is false because debug console does not support // setVariable request. const var_ref_t new_var_ref = - dap.reference_storage.InsertVariable(variable, /*is_permanent=*/false); + dap.reference_storage.Insert(variable, /*is_permanent=*/false); if (variable.MightHaveChildren()) { body.variablesReference = new_var_ref; if (desc.type_obj.IsArrayType()) diff --git a/lldb/tools/lldb-dap/Handler/VariablesRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/VariablesRequestHandler.cpp index 26719b3a14d4d..7918be4983cc0 100644 --- a/lldb/tools/lldb-dap/Handler/VariablesRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/VariablesRequestHandler.cpp @@ -13,7 +13,6 @@ #include "Protocol/DAPTypes.h" #include "Protocol/ProtocolRequests.h" #include "Variables.h" -#include "llvm/Support/ErrorExtras.h" using namespace llvm; using namespace lldb_dap::protocol; @@ -38,8 +37,12 @@ VariablesRequestHandler::Run(const VariablesArguments &arguments) const { llvm::formatv("invalid variablesReference: {}.", var_ref.AsUInt32()), /*error_code=*/llvm::inconvertibleErrorCode(), /*show_user=*/false); - return VariablesResponseBody{ - store->GetVariables(dap.reference_storage, dap.configuration, arguments)}; + Expected> variables = + store->GetVariables(dap.reference_storage, dap.configuration, arguments); + if (llvm::Error err = variables.takeError()) + return err; + + return VariablesResponseBody{*variables}; } } // namespace lldb_dap diff --git a/lldb/tools/lldb-dap/Protocol/DAPTypes.h b/lldb/tools/lldb-dap/Protocol/DAPTypes.h index 5c5d279656d83..5564489cf2e69 100644 --- a/lldb/tools/lldb-dap/Protocol/DAPTypes.h +++ b/lldb/tools/lldb-dap/Protocol/DAPTypes.h @@ -28,8 +28,7 @@ namespace lldb_dap::protocol { enum ReferenceKind : uint8_t { eReferenceKindTemporary = 0, eReferenceKindPermanent = 1, - eReferenceKindScope = 1 << 1, - eReferenceKindInvalid = 0xFF + eReferenceKindInvalid = 0xFF, }; /// The var_ref_t hold two values, the `ReferenceKind` and the @@ -63,7 +62,6 @@ struct var_ref_t { switch (current_kind) { case eReferenceKindTemporary: case eReferenceKindPermanent: - case eReferenceKindScope: return current_kind; default: return eReferenceKindInvalid; diff --git a/lldb/tools/lldb-dap/SBAPIExtras.h b/lldb/tools/lldb-dap/SBAPIExtras.h index 2f7a18d1a3da1..f56d20d9c3134 100644 --- a/lldb/tools/lldb-dap/SBAPIExtras.h +++ b/lldb/tools/lldb-dap/SBAPIExtras.h @@ -14,25 +14,43 @@ #include "lldb/API/SBThread.h" #include "lldb/API/SBThreadCollection.h" #include "lldb/API/SBValue.h" +#include "lldb/API/SBValueList.h" +#include "llvm/ADT/iterator.h" #include "llvm/Support/raw_ostream.h" #include #include +#include namespace lldb { /// An iterator helper for iterating over various SB API containers. -template -struct iter { - using difference_type = Index; - using value_type = Item; +template +class iter + : public llvm::iterator_facade_base, + std::random_access_iterator_tag, Item, + Index> { +public: + iter(const Container &container, Index index) + : container(container), index(index) {} + Item operator*() { return std::invoke(Get, container, index); } + Item operator*() const { return std::invoke(Get, container, index); } + iter &operator+=(Index N) { + index += N; + return *this; + } + iter &operator-=(Index N) { + index -= N; + return *this; + } + Index operator-(const iter &other) const { return index - other.index; } + bool operator==(const iter &other) const { return index == other.index; } + bool operator!=(const iter &other) const { return !(*this == other); } + bool operator<(const iter &other) const { return index < other.index; } + +private: Container container; Index index; - - Item operator*() { return std::invoke(Get, container, index); } - void operator++() { index++; } - bool operator!=(const iter &other) { return index != other.index; } }; /// SBProcess thread iterator. @@ -57,11 +75,21 @@ inline frame_iter end(SBThread T) { return {T, T.GetNumFrames()}; } /// SBValue value iterators. /// @{ -using value_iter = iter; +using value_iter = iter( + &SBValue::GetChildAtIndex)>; inline value_iter begin(SBValue &T) { return {T, 0}; } inline value_iter end(SBValue &T) { return {T, T.GetNumChildren()}; } /// @} +/// SBValue value iterators. +/// @{ +using value_list_iter = + iter; +inline value_list_iter begin(SBValueList &T) { return {T, 0}; } +inline value_list_iter end(SBValueList &T) { return {T, T.GetSize()}; } +/// @} + // llvm::raw_ostream print helpers. inline llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, SBStream &stream) { diff --git a/lldb/tools/lldb-dap/Variables.cpp b/lldb/tools/lldb-dap/Variables.cpp index 1f429b087ac0e..50e79b0f04b93 100644 --- a/lldb/tools/lldb-dap/Variables.cpp +++ b/lldb/tools/lldb-dap/Variables.cpp @@ -1,4 +1,4 @@ -//===-- Variables.cpp ---------------------------------------------------*-===// +//===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. @@ -9,303 +9,321 @@ #include "Variables.h" #include "DAPLog.h" #include "JSONUtils.h" +#include "LLDBUtils.h" #include "Protocol/DAPTypes.h" #include "Protocol/ProtocolRequests.h" #include "Protocol/ProtocolTypes.h" #include "ProtocolUtils.h" #include "SBAPIExtras.h" +#include "lldb/API/SBDeclaration.h" #include "lldb/API/SBFrame.h" -#include "lldb/API/SBProcess.h" #include "lldb/API/SBValue.h" #include "lldb/API/SBValueList.h" +#include "lldb/lldb-types.h" #include "llvm/ADT/Sequence.h" +#include "llvm/ADT/StringMap.h" #include "llvm/Support/ErrorHandling.h" #include #include #include +using namespace llvm; using namespace lldb_dap; using namespace lldb_dap::protocol; -namespace lldb_dap { +namespace { -protocol::Scope CreateScope(ScopeKind kind, var_ref_t variablesReference, - bool expensive) { - protocol::Scope scope; - scope.variablesReference = variablesReference; - scope.expensive = expensive; +bool HasInnerVarref(lldb::SBValue &v) { + return v.MightHaveChildren() || ValuePointsToCode(v) || + v.GetDeclaration().IsValid(); +} - // TODO: Support "arguments" and "return value" scope. - // At the moment lldb-dap includes the arguments and return_value into the - // "locals" scope. - // VS Code only expands the first non-expensive scope. This causes friction - // if we add the arguments above the local scope, as the locals scope will not - // be expanded if we enter a function with arguments. It becomes more - // annoying when the scope has arguments, return_value and locals. - switch (kind) { - case eScopeKindLocals: - scope.presentationHint = protocol::Scope::eScopePresentationHintLocals; - scope.name = "Locals"; - break; - case eScopeKindGlobals: - scope.name = "Globals"; - break; - case eScopeKindRegisters: - scope.presentationHint = protocol::Scope::eScopePresentationHintRegisters; - scope.name = "Registers"; - break; +template StringMap distinct_names(T &container) { + StringMap variable_name_counts; + for (auto variable : container) { + if (!variable.IsValid()) + break; + variable_name_counts[GetNonNullVariableName(variable)]++; } - - return scope; + return variable_name_counts; } -std::vector -ScopeStore::GetVariables(VariableReferenceStorage &storage, - const Configuration &config, - const VariablesArguments &args) { - LoadVariables(); - if (m_kind == lldb_dap::eScopeKindRegisters) - SetRegistersFormat(); - - const bool format_hex = args.format ? args.format->hex : false; +template +std::vector make_variables( + VariableReferenceStorage &storage, const Configuration &config, + const VariablesArguments &args, T &container, bool is_permanent, + const std::map &name_overrides = {}) { std::vector variables; - if (m_kind == eScopeKindLocals) - AddReturnValue(storage, config, variables, format_hex); - - const uint64_t count = args.count; - const uint32_t start_idx = 0; - const uint32_t num_children = m_children.GetSize(); - const uint32_t end_idx = start_idx + ((count == 0) ? num_children : count); // We first find out which variable names are duplicated. - std::map variable_name_counts; - for (auto i = start_idx; i < end_idx; ++i) { - lldb::SBValue variable = m_children.GetValueAtIndex(i); - if (!variable.IsValid()) - break; - variable_name_counts[GetNonNullVariableName(variable)]++; - } + StringMap variable_name_counts = distinct_names(container); - // Now we construct the result with unique display variable names. - for (auto i = start_idx; i < end_idx; ++i) { - lldb::SBValue variable = m_children.GetValueAtIndex(i); + const bool format_hex = args.format ? args.format->hex : false; + auto start_it = begin(container) + args.start; + auto end_it = args.count == 0 ? end(container) : start_it + args.count; + // Now we construct the result with unique display variable names. + for (; start_it != end_it; start_it++) { + lldb::SBValue variable = *start_it; if (!variable.IsValid()) break; - const var_ref_t frame_var_ref = - storage.InsertVariable(variable, /*is_permanent=*/false); - if (LLVM_UNLIKELY(frame_var_ref.AsUInt32() >= + const var_ref_t var_ref = + HasInnerVarref(variable) + ? storage.Insert(variable, /*is_permanent=*/is_permanent) + : var_ref_t(var_ref_t::k_no_child); + if (LLVM_UNLIKELY(var_ref.AsUInt32() >= var_ref_t::k_variables_reference_threshold)) { DAP_LOG(storage.log, - "warning: scopes variablesReference threshold reached. " + "warning: variablesReference threshold reached. " "current: {} threshold: {}, maximum {}.", - frame_var_ref.AsUInt32(), - var_ref_t::k_variables_reference_threshold, + var_ref.AsUInt32(), var_ref_t::k_variables_reference_threshold, var_ref_t::k_max_variables_references); + break; } - if (LLVM_UNLIKELY(frame_var_ref.Kind() == eReferenceKindInvalid)) + if (LLVM_UNLIKELY(var_ref.Kind() == eReferenceKindInvalid)) break; + std::optional custom_name; + auto name_it = name_overrides.find(variable.GetID()); + if (name_it != name_overrides.end()) + custom_name = name_it->second; + variables.emplace_back(CreateVariable( - variable, frame_var_ref, format_hex, config.enableAutoVariableSummaries, + variable, var_ref, format_hex, config.enableAutoVariableSummaries, config.enableSyntheticChildDebugging, - variable_name_counts[GetNonNullVariableName(variable)] > 1)); + variable_name_counts[GetNonNullVariableName(variable)] > 1, + custom_name)); } + return variables; } -lldb::SBValue ScopeStore::FindVariable(llvm::StringRef name) { - LoadVariables(); - - lldb::SBValue variable; - const bool is_name_duplicated = name.contains(" @"); - // variablesReference is one of our scopes, not an actual variable it is - // asking for a variable in locals or globals or registers. - const uint32_t end_idx = m_children.GetSize(); - // Searching backward so that we choose the variable in closest scope - // among variables of the same name. - for (const uint32_t i : llvm::reverse(llvm::seq(0, end_idx))) { - lldb::SBValue curr_variable = m_children.GetValueAtIndex(i); - std::string variable_name = - CreateUniqueVariableNameForDisplay(curr_variable, is_name_duplicated); - if (variable_name == name) { - variable = curr_variable; - break; +/// A Variable store for fetching variables within a specific scope (locals, +/// globals, or registers) for a given stack frame. +class ScopeStore final : public VariableStore { +public: + explicit ScopeStore(ScopeKind kind, const lldb::SBFrame &frame) + : m_frame(frame), m_kind(kind) {} + + Expected> + GetVariables(VariableReferenceStorage &storage, const Configuration &config, + const VariablesArguments &args) override { + LoadVariables(); + if (m_error.Fail()) + return ToError(m_error); + return make_variables(storage, config, args, m_children, + /*is_permanent=*/false, m_names); + } + + lldb::SBValue FindVariable(llvm::StringRef name) override { + LoadVariables(); + + lldb::SBValue variable; + const bool is_name_duplicated = name.contains(" @"); + // variablesReference is one of our scopes, not an actual variable it is + // asking for a variable in locals or globals or registers. + const uint32_t end_idx = m_children.GetSize(); + // Searching backward so that we choose the variable in closest scope + // among variables of the same name. + for (const uint32_t i : reverse(seq(0, end_idx))) { + lldb::SBValue curr_variable = m_children.GetValueAtIndex(i); + std::string variable_name = + CreateUniqueVariableNameForDisplay(curr_variable, is_name_duplicated); + if (variable_name == name) { + variable = curr_variable; + break; + } } + return variable; } - return variable; -} -void ScopeStore::LoadVariables() { - if (m_variables_loaded) - return; + lldb::SBValue GetVariable() const override { return lldb::SBValue(); } - m_variables_loaded = true; - switch (m_kind) { - case eScopeKindLocals: - m_children = m_frame.GetVariables(/*arguments=*/true, - /*locals=*/true, - /*statics=*/false, - /*in_scope_only=*/true); - break; - case eScopeKindGlobals: - m_children = m_frame.GetVariables(/*arguments=*/false, - /*locals=*/false, - /*statics=*/true, - /*in_scope_only=*/true); - break; - case eScopeKindRegisters: - m_children = m_frame.GetRegisters(); - } -} +private: + void LoadVariables() { + if (m_variables_loaded) + return; -void ScopeStore::SetRegistersFormat() { - // Change the default format of any pointer sized registers in the first - // register set to be the lldb::eFormatAddressInfo so we show the pointer - // and resolve what the pointer resolves to. Only change the format if the - // format was set to the default format or if it was hex as some registers - // have formats set for them. - const uint32_t addr_size = - m_frame.GetThread().GetProcess().GetAddressByteSize(); - for (lldb::SBValue reg : m_children.GetValueAtIndex(0)) { - const lldb::Format format = reg.GetFormat(); - if (format == lldb::eFormatDefault || format == lldb::eFormatHex) { - if (reg.GetByteSize() == addr_size) - reg.SetFormat(lldb::eFormatAddressInfo); + m_variables_loaded = true; + + // TODO: Support "arguments" and "return value" scope. + // At the moment lldb-dap includes the arguments and return_value into the + // "locals" scope. + // VS Code only expands the first non-expensive scope. This causes friction + // if we add the arguments above the local scope, as the locals scope will + // not be expanded if we enter a function with arguments. It becomes more + // annoying when the scope has arguments, return_value and locals. + switch (m_kind) { + case eScopeKindLocals: { + // Show return value if there is any (in the local top frame) + lldb::SBValue stop_return_value; + if (m_frame.GetFrameID() == 0 && + ((stop_return_value = m_frame.GetThread().GetStopReturnValue()))) { + // FIXME: Cloning this value seems to change the type summary, see + // https://github.com/llvm/llvm-project/issues/183578 + // m_children.Append(stop_return_value.Clone("(Return Value)")); + m_names[stop_return_value.GetID()] = "(Return Value)"; + m_children.Append(stop_return_value); + } + lldb::SBValueList locals = m_frame.GetVariables(/*arguments=*/true, + /*locals=*/true, + /*statics=*/false, + /*in_scope_only=*/true); + m_children.Append(locals); + // Save the error since we cannot insert into the SBValueList + m_error = locals.GetError(); + } break; + case eScopeKindGlobals: + m_children = m_frame.GetVariables(/*arguments=*/false, + /*locals=*/false, + /*statics=*/true, + /*in_scope_only=*/true); + m_error = m_children.GetError(); + break; + case eScopeKindRegisters: + m_children = m_frame.GetRegisters(); + // Change the default format of any pointer sized registers in the first + // register set to be the lldb::eFormatAddressInfo so we show the pointer + // and resolve what the pointer resolves to. Only change the format if the + // format was set to the default format or if it was hex as some registers + // have formats set for them. + const uint32_t addr_size = + m_frame.GetThread().GetProcess().GetAddressByteSize(); + for (lldb::SBValue reg : m_children.GetValueAtIndex(0)) { + const lldb::Format format = reg.GetFormat(); + if (format == lldb::eFormatDefault || format == lldb::eFormatHex) { + if (reg.GetByteSize() == addr_size) + reg.SetFormat(lldb::eFormatAddressInfo); + } + } } } -} -void ScopeStore::AddReturnValue(VariableReferenceStorage &storage, - const Configuration &config, - std::vector &variables, - bool format_hex) { - assert(m_kind == eScopeKindLocals && - "Return Value Should only be in local scope"); - if (m_children.GetSize() == 0) { - // Check for an error in the SBValueList that might explain why we don't - // have locals. If we have an error display it as the sole value in the - // the locals. - - // "error" owns the error string so we must keep it alive as long as we - // want to use the returns "const char *". - lldb::SBError error = m_children.GetError(); - if (const char *var_err = error.GetCString()) { - // Create a fake variable named "error" to explain why variables were - // not available. This new error will help let users know when there was - // a problem that kept variables from being available for display and - // allow users to fix this issue instead of seeing no variables. The - // errors are only set when there is a problem that the user could - // fix, so no error will show up when you have no debug info, only when - // we do have debug info and something that is fixable can be done. - Variable err_var; - err_var.name = ""; - err_var.type = "const char *"; - err_var.value = var_err; - variables.push_back(std::move(err_var)); + lldb::SBFrame m_frame; + lldb::SBValueList m_children; + lldb::SBError m_error; + std::map m_names; + ScopeKind m_kind; + bool m_variables_loaded = false; +}; + +/// Variable store for expandable values. +/// +/// Manages children variables of complex types (structs, arrays, pointers, +/// etc.) that can be expanded in the debugger UI. +class ExpandableValueStore final : public VariableStore { + +public: + explicit ExpandableValueStore(const lldb::SBValue &value) : m_value(value) {} + + llvm::Expected> + GetVariables(VariableReferenceStorage &storage, + const protocol::Configuration &config, + const protocol::VariablesArguments &args) override { + std::map name_overrides; + lldb::SBValueList list; + for (auto inner : m_value) + list.Append(inner); + + // We insert a new "[raw]" child that can be used to inspect the raw version + // of a synthetic member. That eliminates the need for the user to go to the + // debug console and type `frame var to get these values. + if (config.enableSyntheticChildDebugging && m_value.IsSynthetic()) { + lldb::SBValue synthetic_value = m_value.GetSyntheticValue(); + name_overrides[synthetic_value.GetID()] = "[raw]"; + // FIXME: Cloning the value seems to affect the type summary, see + // https://github.com/llvm/llvm-project/issues/183578 + // m_value.GetSyntheticValue().Clone("[raw]"); + list.Append(synthetic_value); } - return; + + const bool is_permanent = + args.variablesReference.Kind() == eReferenceKindPermanent; + return make_variables(storage, config, args, list, is_permanent, + name_overrides); } - // Show return value if there is any ( in the local top frame ) - lldb::SBThread selected_thread = m_frame.GetThread(); - lldb::SBValue stop_return_value = selected_thread.GetStopReturnValue(); + lldb::SBValue FindVariable(llvm::StringRef name) override { + if (name == "[raw]" && m_value.IsSynthetic()) + return m_value.GetSyntheticValue(); - if (stop_return_value.IsValid() && - (selected_thread.GetSelectedFrame().GetFrameID() == 0)) { - auto renamed_return_value = stop_return_value.Clone("(Return Value)"); - var_ref_t return_var_ref{var_ref_t::k_no_child}; + // Handle mapped index + lldb::SBValue variable = m_value.GetChildMemberWithName(name.data()); + if (variable.IsValid()) + return variable; - if (stop_return_value.MightHaveChildren() || - stop_return_value.IsSynthetic()) { - return_var_ref = storage.InsertVariable(stop_return_value, - /*is_permanent=*/false); - } - variables.emplace_back( - CreateVariable(renamed_return_value, return_var_ref, format_hex, - config.enableAutoVariableSummaries, - config.enableSyntheticChildDebugging, false)); + // Handle array indexes + uint64_t index = 0; + if (name.consume_front('[') && name.consume_back("]") && + !name.consumeInteger(0, index)) + variable = m_value.GetChildAtIndex(index); + + return variable; } -} -std::vector -ExpandableValueStore::GetVariables(VariableReferenceStorage &storage, - const Configuration &config, - const VariablesArguments &args) { - const var_ref_t var_ref = args.variablesReference; - const uint64_t count = args.count; - const uint64_t start = args.start; - const bool hex = args.format ? args.format->hex : false; - - lldb::SBValue variable = storage.GetVariable(var_ref); - if (!variable) - return {}; - - // We are expanding a variable that has children, so we will return its - // children. - std::vector variables; - const bool is_permanent = var_ref.Kind() == eReferenceKindPermanent; - auto addChild = [&](lldb::SBValue child, - std::optional custom_name = {}) { - if (!child.IsValid()) - return; + [[nodiscard]] lldb::SBValue GetVariable() const override { return m_value; } - const var_ref_t child_var_ref = storage.InsertVariable(child, is_permanent); - if (LLVM_UNLIKELY(child_var_ref.AsUInt32() == - var_ref_t::k_variables_reference_threshold)) { - DAP_LOG(storage.log, - "warning: {} variablesReference threshold reached. " - "current: {} threshold: {}, maximum {}.", - (is_permanent ? "permanent" : "temporary"), - child_var_ref.AsUInt32(), - var_ref_t::k_variables_reference_threshold, - var_ref_t::k_max_variables_references); - } +private: + lldb::SBValue m_value; +}; - if (LLVM_UNLIKELY(child_var_ref.Kind() == eReferenceKindInvalid)) { - DAP_LOG(storage.log, - "error: invalid variablesReference created for {} variable {}.", - (is_permanent ? "permanent" : "temporary"), variable.GetName()); - return; - } +class ExpandableValueListStore final : public VariableStore { - variables.emplace_back(CreateVariable( - child, child_var_ref, hex, config.enableAutoVariableSummaries, - config.enableSyntheticChildDebugging, - /*is_name_duplicated=*/false, custom_name)); - }; +public: + explicit ExpandableValueListStore(const lldb::SBValueList &list) + : m_value_list(list) {} - const uint32_t num_children = variable.GetNumChildren(); - const uint32_t end_idx = start + ((count == 0) ? num_children : count); - uint32_t i = start; - for (; i < end_idx && i < num_children; ++i) - addChild(variable.GetChildAtIndex(i)); + llvm::Expected> + GetVariables(VariableReferenceStorage &storage, + const protocol::Configuration &config, + const protocol::VariablesArguments &args) override { + return make_variables(storage, config, args, m_value_list, + /*is_permanent=*/true); + } - // If we haven't filled the count quota from the request, we insert a new - // "[raw]" child that can be used to inspect the raw version of a - // synthetic member. That eliminates the need for the user to go to the - // debug console and type `frame var to get these values. - if (config.enableSyntheticChildDebugging && variable.IsSynthetic() && - i == num_children) - addChild(variable.GetNonSyntheticValue(), "[raw]"); + lldb::SBValue FindVariable(llvm::StringRef name) override { + lldb::SBValue variable = m_value_list.GetFirstValueByName(name.data()); + if (variable.IsValid()) + return variable; - return variables; -} + return lldb::SBValue(); + } -lldb::SBValue ExpandableValueStore::FindVariable(llvm::StringRef name) { - lldb::SBValue variable = m_value.GetChildMemberWithName(name.data()); - if (variable.IsValid()) - return variable; + [[nodiscard]] lldb::SBValue GetVariable() const override { + return lldb::SBValue(); + } - if (name.consume_front('[') && name.consume_back("]")) { - uint64_t index = 0; - if (!name.consumeInteger(0, index)) { - variable = m_value.GetChildAtIndex(index); - } +private: + lldb::SBValueList m_value_list; +}; + +} // namespace + +namespace lldb_dap { + +protocol::Scope CreateScope(ScopeKind kind, var_ref_t variablesReference, + bool expensive) { + protocol::Scope scope; + scope.variablesReference = variablesReference; + scope.expensive = expensive; + + switch (kind) { + case eScopeKindLocals: + scope.presentationHint = protocol::Scope::eScopePresentationHintLocals; + scope.name = "Locals"; + break; + case eScopeKindGlobals: + scope.name = "Globals"; + break; + case eScopeKindRegisters: + scope.presentationHint = protocol::Scope::eScopePresentationHintRegisters; + scope.name = "Registers"; + break; } - return variable; + + return scope; } lldb::SBValue VariableReferenceStorage::GetVariable(var_ref_t var_ref) { @@ -324,27 +342,23 @@ lldb::SBValue VariableReferenceStorage::GetVariable(var_ref_t var_ref) { return {}; } -var_ref_t -VariableReferenceStorage::InsertVariable(const lldb::SBValue &variable, - bool is_permanent) { +var_ref_t VariableReferenceStorage::Insert(const lldb::SBValue &variable, + bool is_permanent) { if (is_permanent) - return m_permanent_kind_pool.Add(variable); + return m_permanent_kind_pool.Add(variable); - return m_temporary_kind_pool.Add(variable); + return m_temporary_kind_pool.Add(variable); } -lldb::SBValue VariableReferenceStorage::FindVariable(var_ref_t var_ref, - llvm::StringRef name) { - if (VariableStore *store = GetVariableStore(var_ref)) - return store->FindVariable(name); - - return {}; +var_ref_t VariableReferenceStorage::Insert(const lldb::SBValueList &values) { + return m_permanent_kind_pool.Add(values); } std::vector -VariableReferenceStorage::CreateScopes(lldb::SBFrame &frame) { +VariableReferenceStorage::Insert(const lldb::SBFrame &frame) { auto create_scope = [&](ScopeKind kind) { - const var_ref_t var_ref = m_scope_kind_pool.Add(kind, frame); + const var_ref_t var_ref = + m_temporary_kind_pool.Add(kind, frame); const bool is_expensive = kind != eScopeKindLocals; return CreateScope(kind, var_ref, is_expensive); }; @@ -353,6 +367,14 @@ VariableReferenceStorage::CreateScopes(lldb::SBFrame &frame) { create_scope(eScopeKindRegisters)}; } +lldb::SBValue VariableReferenceStorage::FindVariable(var_ref_t var_ref, + llvm::StringRef name) { + if (VariableStore *store = GetVariableStore(var_ref)) + return store->FindVariable(name); + + return {}; +} + VariableStore *VariableReferenceStorage::GetVariableStore(var_ref_t var_ref) { const ReferenceKind kind = var_ref.Kind(); switch (kind) { @@ -360,9 +382,7 @@ VariableStore *VariableReferenceStorage::GetVariableStore(var_ref_t var_ref) { return m_permanent_kind_pool.GetVariableStore(var_ref); case eReferenceKindTemporary: return m_temporary_kind_pool.GetVariableStore(var_ref); - case eReferenceKindScope: - return m_scope_kind_pool.GetVariableStore(var_ref); - default: + case eReferenceKindInvalid: return nullptr; } llvm_unreachable("Unknown reference kind."); diff --git a/lldb/tools/lldb-dap/Variables.h b/lldb/tools/lldb-dap/Variables.h index 109e6f9077346..bc6c4637fac80 100644 --- a/lldb/tools/lldb-dap/Variables.h +++ b/lldb/tools/lldb-dap/Variables.h @@ -50,11 +50,12 @@ class VariableStore { explicit VariableStore() = default; virtual ~VariableStore() = default; - virtual std::vector + virtual llvm::Expected> GetVariables(VariableReferenceStorage &storage, const protocol::Configuration &config, const protocol::VariablesArguments &args) = 0; virtual lldb::SBValue FindVariable(llvm::StringRef name) = 0; + virtual lldb::SBValue GetVariable() const = 0; // Not copyable. VariableStore(const VariableStore &) = delete; @@ -63,52 +64,6 @@ class VariableStore { VariableStore &operator=(VariableStore &&) = default; }; -/// A Variable store for fetching variables within a specific scope (locals, -/// globals, or registers) for a given stack frame. -class ScopeStore final : public VariableStore { -public: - explicit ScopeStore(ScopeKind kind, const lldb::SBFrame &frame) - : m_frame(frame), m_kind(kind) {} - - std::vector - GetVariables(VariableReferenceStorage &storage, - const protocol::Configuration &config, - const protocol::VariablesArguments &args) override; - lldb::SBValue FindVariable(llvm::StringRef name) override; - -private: - void LoadVariables(); - void SetRegistersFormat(); - void AddReturnValue(VariableReferenceStorage &storage, - const protocol::Configuration &config, - std::vector &variables, - bool format_hex); - lldb::SBFrame m_frame; - lldb::SBValueList m_children; - ScopeKind m_kind; - bool m_variables_loaded = false; -}; - -/// Variable store for expandable values. -/// -/// Manages children variables of complex types (structs, arrays, pointers, -/// etc.) that can be expanded in the debugger UI. -class ExpandableValueStore final : public VariableStore { - -public: - explicit ExpandableValueStore(const lldb::SBValue &value) : m_value(value) {} - - std::vector - GetVariables(VariableReferenceStorage &storage, - const protocol::Configuration &config, - const protocol::VariablesArguments &args) override; - lldb::SBValue FindVariable(llvm::StringRef name) override; - [[nodiscard]] lldb::SBValue GetVariable() const { return m_value; }; - -private: - lldb::SBValue m_value; -}; - struct VariableReferenceStorage { explicit VariableReferenceStorage(Log &log) : log(log) {} /// \return a new variableReference. @@ -123,16 +78,18 @@ struct VariableReferenceStorage { /// Insert a new \p variable. /// \return variableReference assigned to this expandable variable. - var_ref_t InsertVariable(const lldb::SBValue &variable, bool is_permanent); + var_ref_t Insert(const lldb::SBValue &variable, bool is_permanent); - lldb::SBValue FindVariable(var_ref_t var_ref, llvm::StringRef name); + /// Insert a value list. Used to store references to lldb repl command + /// outputs. + var_ref_t Insert(const lldb::SBValueList &values); - std::vector CreateScopes(lldb::SBFrame &frame); + /// Insert a new frame into temporary storage. + std::vector Insert(const lldb::SBFrame &frame); - void Clear() { - m_temporary_kind_pool.Clear(); - m_scope_kind_pool.Clear(); - } + lldb::SBValue FindVariable(var_ref_t var_ref, llvm::StringRef name); + + void Clear() { m_temporary_kind_pool.Clear(); } VariableStore *GetVariableStore(var_ref_t var_ref); Log &log; @@ -142,13 +99,9 @@ struct VariableReferenceStorage { /// All references created starts from zero with the Reference kind mask /// applied, the mask is then removed when fetching a variable store /// - /// \tparam VariableStoreType - /// The type of variable store to use. - /// /// \tparam ReferenceKind /// The reference kind created in this pool - template - class ReferenceKindPool { + template class ReferenceKindPool { public: explicit ReferenceKindPool() = default; @@ -162,15 +115,15 @@ struct VariableReferenceStorage { m_pool.clear(); } - VariableStoreType *GetVariableStore(var_ref_t var_ref) { + VariableStore *GetVariableStore(var_ref_t var_ref) { const uint32_t raw_ref = var_ref.Reference(); if (raw_ref != 0 && raw_ref <= m_pool.size()) - return &m_pool[raw_ref - 1]; + return m_pool[raw_ref - 1].get(); return nullptr; } - template var_ref_t Add(Args &&...args) { + template var_ref_t Add(Args &&...args) { assert(reference_count == m_pool.size() && "Current reference_count must be the size of the pool"); @@ -180,7 +133,7 @@ struct VariableReferenceStorage { return var_ref_t(var_ref_t::k_invalid_var_ref); } - m_pool.emplace_back(std::forward(args)...); + m_pool.emplace_back(std::make_unique(std::forward(args)...)); const uint32_t raw_ref = NextRawReference(); return var_ref_t(raw_ref, Kind); } @@ -201,19 +154,15 @@ struct VariableReferenceStorage { } uint32_t reference_count = 0; - std::vector m_pool; + std::vector> m_pool; }; /// Variables that are alive in this stop state. /// Will be cleared when debuggee resumes. - ReferenceKindPool - m_temporary_kind_pool; + ReferenceKindPool m_temporary_kind_pool; /// Variables that persist across entire debug session. /// These are the variables evaluated from debug console REPL. - ReferenceKindPool - m_permanent_kind_pool; - ReferenceKindPool - m_scope_kind_pool; + ReferenceKindPool m_permanent_kind_pool; }; } // namespace lldb_dap diff --git a/lldb/unittests/DAP/DAPTypesTest.cpp b/lldb/unittests/DAP/DAPTypesTest.cpp index 0e6cd26abe2eb..81ebd3f51fa94 100644 --- a/lldb/unittests/DAP/DAPTypesTest.cpp +++ b/lldb/unittests/DAP/DAPTypesTest.cpp @@ -61,22 +61,16 @@ TEST(DAPTypesTest, DAPSymbol) { TEST(DapTypesTest, DAP_var_ref_t) { // Check the masked ref constructor. - const uint32_t scope_masked_var_ref = 0x2000001; - const var_ref_t scope_ref(scope_masked_var_ref); - EXPECT_EQ(scope_ref.AsUInt32(), scope_masked_var_ref); - EXPECT_EQ(scope_ref.Reference(), 1U); - EXPECT_EQ(scope_ref.Kind(), eReferenceKindScope); - - const uint32_t temp_masked_var_ref = 0x0000021; + const uint32_t temp_masked_var_ref = 0x00000201U; const var_ref_t temp_ref(temp_masked_var_ref); EXPECT_EQ(temp_ref.AsUInt32(), temp_masked_var_ref); - EXPECT_EQ(temp_ref.Reference(), 0x21U); + EXPECT_EQ(temp_ref.Reference(), 0x0201U); EXPECT_EQ(temp_ref.Kind(), eReferenceKindTemporary); - const uint32_t perm_masked_var_ref = 0x1000032; + const uint32_t perm_masked_var_ref = 0x1000032U; const var_ref_t perm_ref(perm_masked_var_ref); EXPECT_EQ(perm_ref.AsUInt32(), perm_masked_var_ref); - EXPECT_EQ(perm_ref.Reference(), 0x32U); + EXPECT_EQ(perm_ref.Reference(), 0x032U); EXPECT_EQ(perm_ref.Kind(), eReferenceKindPermanent); const var_ref_t invalid_ref{}; @@ -96,11 +90,11 @@ TEST(DapTypesTest, DAP_var_ref_t) { EXPECT_EQ(no_child_ref.Kind(), eReferenceKindTemporary); // Check the refkind constructor. - const uint32_t scope2_masked_ref = 0x2000003; - const var_ref_t scope_ref2(3, eReferenceKindScope); + const uint32_t scope2_masked_ref = 0x0000003; + const var_ref_t scope_ref2(3, eReferenceKindTemporary); EXPECT_EQ(scope_ref2.AsUInt32(), scope2_masked_ref); EXPECT_EQ(scope_ref2.Reference(), 3U); - EXPECT_EQ(scope_ref2.Kind(), eReferenceKindScope); + EXPECT_EQ(scope_ref2.Kind(), eReferenceKindTemporary); EXPECT_EQ(var_ref_t().AsUInt32(), var_ref_t{var_ref_t::k_invalid_var_ref}.AsUInt32()); diff --git a/lldb/unittests/DAP/Inputs/linux-x86_64.core.yaml b/lldb/unittests/DAP/Inputs/linux-x86_64.core.yaml index 392418f7e82de..30ec3b9c0a7df 100644 --- a/lldb/unittests/DAP/Inputs/linux-x86_64.core.yaml +++ b/lldb/unittests/DAP/Inputs/linux-x86_64.core.yaml @@ -1,49 +1,850 @@ +# Built using: +# clang -g sample.c # from linux-x86_64.out.yaml +# lldb a.out -b -o 'break set -l 6 -C "process save-core -s stack -pminidump a.out.core"' -o 'r' --- !minidump Streams: + - Type: LLDBGenerated + Content: '' - Type: SystemInfo Processor Arch: AMD64 Platform ID: Linux + CPU: + Vendor ID: "\0\0\0\0\0\0\0\0\0\0\0\0" + Version Info: 0x0 + Feature Info: 0x0 - Type: ModuleList Modules: - - Base of Image: 0x400000 - Size of Image: 0x1E0 - Time Date Stamp: 1747851624 - Module Name: 'linux-x86_64.out' - CodeView Record: 4C45704201DF54A6045E657D3F8FFB9CE111878914F8BD6D - Reserved0: 0xFFFFFFF800000001 - Reserved1: 0x2AE15B07FFFFFFF - - Base of Image: 0x7FFC24129000 - Size of Image: 0xA0C - Time Date Stamp: 1747851624 - Module Name: '[vdso](0x00007ffc24129000)' - CodeView Record: 4C4570428CBE1E6C351152C0C43E68C4EF417DB4C77E8EBD - Reserved0: 0xFFFFFFF800000001 - Reserved1: 0x2AE15B07FFFFFFF + - Base of Image: 0x555555554000 + Size of Image: 0x628 + Time Date Stamp: 1771959187 + Module Name: '/tmp/a.out' + CodeView Record: 4C457042768D260BD4FC15E892AAC361C910DF78AC15E194 + - Base of Image: 0x7FFFF7FC7000 + Size of Image: 0xCC8 + Time Date Stamp: 1771959187 + Module Name: '/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2' + CodeView Record: 4C45704208CCCC2A9388D5247CCB3E864F3063B975B0A15D + - Base of Image: 0x7FFFF7FC5000 + Size of Image: 0x1817 + Time Date Stamp: 1771959187 + Module Name: '[vdso](0x00007ffff7fc5000)' + CodeView Record: 4C4570429312E1299072A115C3ACA82B8640192845D0A551 + - Base of Image: 0x7FFFF7DB1000 + Size of Image: 0x274E8 + Time Date Stamp: 1771959187 + Module Name: '/lib/x86_64-linux-gnu/libc.so.6' + CodeView Record: 4C45704261E1DEA1F540B3B4B4D8EC76716E409CEC096ECE - Type: MiscInfo - Content: 1800000001000000037E000000000000509F306F01000000 + Content: 1800000001000000A72D3700000000000000000000000000 - Type: ThreadList Threads: - - Thread Id: 0x7E03 - Context: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000700100000000000FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E8150B24FC7F0000E8150B24FC7F00000C014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + - Thread Id: 0x372DA7 + Context: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000700108000000000330000000000000000002B00020200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003E40D87D55555555000008D6FFFFFF7F0000F8D5FFFFFF7F0000A0D4FFFFFF7F0000A0D4FFFFFF7F0000F8D5FFFFFF7F0000B0D4FFFFFF7F0000000000000000000080BCFCF7FF7F000020D2FFFFFF7F00000202000000000000000000000000000008D6FFFFFF7F000000D0FFF7FF7F0000D87D5555555500004851555555550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040E7DAF7FF7F00000000000000000000 Stack: - Start of Memory Range: 0x7FFC240B1568 - Content: 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006218160B24FC7F000042014000000000000C0140000000000000000000000000000000000000000000000000000000006638160B24FC7F00005F014000000000000000000000000000000000000000005F0000000000000000010000000000000002200B24FC7F00000000000000000000FE2F0B24FC7F00000000000000000000210000000000000000901224FC7F00001000000000000000FFFBEBBF0000000006000000000000000010000000000000110000000000000064000000000000000300000000000000400040000000000004000000000000003800000000000000050000000000000003000000000000000700000000000000000000000000000008000000000000000000000000000000090000000000000044014000000000000B0000000000000000000000000000000C0000000000000000000000000000000D0000000000000000000000000000000E000000000000000000000000000000170000000000000000000000000000001900000000000000A9170B24FC7F00001A0000000000000000000000000000001F00000000000000FC3F0B24FC7F00000F00000000000000B9170B24FC7F000000000000000000000000000000000000000AB340B9514A4C453C3FB52168ADE70E7838365F36340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F612E6F7574005F3D2F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F612E6F7574002F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F612E6F7574000000000000000000 + Start of Memory Range: 0x7FFFFFFFD420 + Content: 0000C000000000000000C0000000000000010000000000000000C0000000000040000000000000001000000000000000000008000000000029018C2100000000170000000000000000000000000000000000000000000000000000000000000017000000310000000000000000000000B0D4FFFFFF7F00000000000000000000E0D4FFFFFF7F0000CB515555555500000000000000001440000000000000144000000000000039400000000000003E40F8D5FFFFFF7F000001000000000000000100000000000000A8ACDDF7FF7F0000E0D5FFFFFF7F000080515555555500004040555501000000F8D5FFFFFF7F0000F8D5FFFFFF7F00005002D40952A1CA98000000000000000008D6FFFFFF7F000000D0FFF7FF7F0000D87D555555550000500236A0AD5E356750021651E94E3567000000000000000000000000000000000000000000000000F8D5FFFFFF7F00000100000000000000007B97470D7B2415F0D5FFFFFF7F000065ADDDF7FF7F00008051555555550000D87D55555555000010E3FFF7FF7F0000000000000000000000000000000000005050555555550000F0D5FFFFFF7F0000000000000000000000000000000000007150555555550000E8D5FFFFFF7F00003800000000000000010000000000000079D9FFFFFF7F0000000000000000000084D9FFFFFF7F0000B3D9FFFFFF7F0000D3D9FFFFFF7F000002DAFFFFFF7F000010DAFFFFFF7F000030DAFFFFFF7F00003FDAFFFFFF7F0000BCE1FFFFFF7F0000DAE1FFFFFF7F000000E2FFFFFF7F000010E2FFFFFF7F000048E2FFFFFF7F000055E2FFFFFF7F000078E2FFFFFF7F00008BE2FFFFFF7F00009EE2FFFFFF7F0000CFE2FFFFFF7F0000FEE2FFFFFF7F00003CE3FFFFFF7F00006DE3FFFFFF7F00007DE3FFFFFF7F0000B9E3FFFFFF7F0000ECE3FFFFFF7F000003E4FFFFFF7F000083E4FFFFFF7F000098E4FFFFFF7F0000BBE4FFFFFF7F0000F2E4FFFFFF7F000086EAFFFFFF7F00008EEAFFFFFF7F0000C1EAFFFFFF7F0000E3EAFFFFFF7F000014EBFFFFFF7F000071EBFFFFFF7F000085EBFFFFFF7F0000BAEBFFFFFF7F0000CAEBFFFFFF7F0000E6EBFFFFFF7F00003EECFFFFFF7F00009CECFFFFFF7F0000B1ECFFFFFF7F0000E2ECFFFFFF7F000019EDFFFFFF7F000048EDFFFFFF7F000079EDFFFFFF7F00008AEDFFFFFF7F0000B4EDFFFFFF7F0000E9EDFFFFFF7F00000AEEFFFFFF7F000037EEFFFFFF7F00006CEEFFFFFF7F0000AEEEFFFFFF7F0000BAEEFFFFFF7F0000F1EEFFFFFF7F000008EFFFFFFF7F000033EFFFFFFF7F000062EFFFFFFF7F00008CEFFFFFFF7F0000B0EFFFFFFF7F0000000000000000000021000000000000000050FCF7FF7F00003300000000000000F0060000000000001000000000000000FFFB8B17000000000600000000000000001000000000000011000000000000006400000000000000030000000000000040405555555500000400000000000000380000000000000005000000000000000E0000000000000007000000000000000070FCF7FF7F000008000000000000000000000000000000090000000000000050505555555500000B0000000000000014A00700000000000C0000000000000014A00700000000000D00000000000000535F0100000000000E00000000000000535F01000000000017000000000000000000000000000000190000000000000059D9FFFFFF7F00001A0000000000000002000000000000001F00000000000000EDEFFFFFFF7F00000F0000000000000069D9FFFFFF7F00001B000000000000001C000000000000001C0000000000000020000000000000000000000000000000000000000000000000C27B97470D7B2415EB04A950654C28017838365F3634000000000000000000002F746D702F612E6F757400434C4F554453444B5F434F4E544558545F41574152455F5553455F4543505F485454505F50524F58593D74727565004C4553534F50454E3D7C202F7573722F62696E2F6C6573737069706520257300424153485F46554E435F6E706D25253D2829207B20202F7573722F62696E2F67706B67206E706D20222440220A7D005253594E435F5253483D73736800504152494E49543D72546267715220423D2E3F5F415F6120513D5F733E7C3A004D4F54445F53484F574E3D70616D004C535F434F4C4F52533D72733D303A64693D30313B33343A6C6E3D30313B33363A6D683D30303A70693D34303B33333A736F3D30313B33353A646F3D30313B33353A62643D34303B33333B30313A63643D34303B33333B30313A6F723D34303B33313B30313A6D693D30303A73753D33373B34313A73673D33303B34333A63613D30303A74773D33303B34323A6F773D33343B34323A73743D33373B34343A65783D30313B33323A2A2E377A3D30313B33313A2A2E6163653D30313B33313A2A2E616C7A3D30313B33313A2A2E61706B3D30313B33313A2A2E6172633D30313B33313A2A2E61726A3D30313B33313A2A2E627A3D30313B33313A2A2E627A323D30313B33313A2A2E6361623D30313B33313A2A2E6370696F3D30313B33313A2A2E63726174653D30313B33313A2A2E6465623D30313B33313A2A2E6472706D3D30313B33313A2A2E64776D3D30313B33313A2A2E647A3D30313B33313A2A2E6561723D30313B33313A2A2E6567673D30313B33313A2A2E6573643D30313B33313A2A2E677A3D30313B33313A2A2E6A61723D30313B33313A2A2E6C68613D30313B33313A2A2E6C727A3D30313B33313A2A2E6C7A3D30313B33313A2A2E6C7A343D30313B33313A2A2E6C7A683D30313B33313A2A2E6C7A6D613D30313B33313A2A2E6C7A6F3D30313B33313A2A2E70797A3D30313B33313A2A2E7261723D30313B33313A2A2E72706D3D30313B33313A2A2E727A3D30313B33313A2A2E7361723D30313B33313A2A2E73776D3D30313B33313A2A2E74377A3D30313B33313A2A2E7461723D30313B33313A2A2E74617A3D30313B33313A2A2E74627A3D30313B33313A2A2E74627A323D30313B33313A2A2E74677A3D30313B33313A2A2E746C7A3D30313B33313A2A2E74787A3D30313B33313A2A2E747A3D30313B33313A2A2E747A6F3D30313B33313A2A2E747A73743D30313B33313A2A2E756465623D30313B33313A2A2E7761723D30313B33313A2A2E77686C3D30313B33313A2A2E77696D3D30313B33313A2A2E787A3D30313B33313A2A2E7A3D30313B33313A2A2E7A69703D30313B33313A2A2E7A6F6F3D30313B33313A2A2E7A73743D30313B33313A2A2E617669663D30313B33353A2A2E6A70673D30313B33353A2A2E6A7065673D30313B33353A2A2E6A786C3D30313B33353A2A2E6D6A70673D30313B33353A2A2E6D6A7065673D30313B33353A2A2E6769663D30313B33353A2A2E626D703D30313B33353A2A2E70626D3D30313B33353A2A2E70676D3D30313B33353A2A2E70706D3D30313B33353A2A2E7467613D30313B33353A2A2E78626D3D30313B33353A2A2E78706D3D30313B33353A2A2E7469663D30313B33353A2A2E746966663D30313B33353A2A2E706E673D30313B33353A2A2E7376673D30313B33353A2A2E7376677A3D30313B33353A2A2E6D6E673D30313B33353A2A2E7063783D30313B33353A2A2E6D6F763D30313B33353A2A2E6D70673D30313B33353A2A2E6D7065673D30313B33353A2A2E6D32763D30313B33353A2A2E6D6B763D30313B33353A2A2E7765626D3D30313B33353A2A2E776562703D30313B33353A2A2E6F676D3D30313B33353A2A2E6D70343D30313B33353A2A2E6D34763D30313B33353A2A2E6D7034763D30313B33353A2A2E766F623D30313B33353A2A2E71743D30313B33353A2A2E6E75763D30313B33353A2A2E776D763D30313B33353A2A2E6173663D30313B33353A2A2E726D3D30313B33353A2A2E726D76623D30313B33353A2A2E666C633D30313B33353A2A2E6176693D30313B33353A2A2E666C693D30313B33353A2A2E666C763D30313B33353A2A2E676C3D30313B33353A2A2E646C3D30313B33353A2A2E7863663D30313B33353A2A2E7877643D30313B33353A2A2E7975763D30313B33353A2A2E63676D3D30313B33353A2A2E656D663D30313B33353A2A2E6F67763D30313B33353A2A2E6F67783D30313B33353A2A2E6161633D30303B33363A2A2E61753D30303B33363A2A2E666C61633D30303B33363A2A2E6D34613D30303B33363A2A2E6D69643D30303B33363A2A2E6D6964693D30303B33363A2A2E6D6B613D30303B33363A2A2E6D70333D30303B33363A2A2E6D70633D30303B33363A2A2E6F67673D30303B33363A2A2E72613D30303B33363A2A2E7761763D30303B33363A2A2E6F67613D30303B33363A2A2E6F7075733D30303B33363A2A2E7370783D30303B33363A2A2E787370663D30303B33363A2A7E3D30303B39303A2A233D30303B39303A2A2E62616B3D30303B39303A2A2E6372646F776E6C6F61643D30303B39303A2A2E64706B672D646973743D30303B39303A2A2E64706B672D6E65773D30303B39303A2A2E64706B672D6F6C643D30303B39303A2A2E64706B672D746D703D30303B39303A2A2E6F6C643D30303B39303A2A2E6F7269673D30303B39303A2A2E706172743D30303B39303A2A2E72656A3D30303B39303A2A2E72706D6E65773D30303B39303A2A2E72706D6F7269673D30303B39303A2A2E72706D736176653D30303B39303A2A2E7377703D30303B39303A2A2E746D703D30303B39303A2A2E7563662D646973743D30303B39303A2A2E7563662D6E65773D30303B39303A2A2E7563662D6F6C643D30303B39303A00534B5F5349474E494E475F504C5547494E3D676E756262796167656E7400474F4F474C455F434C4F55445F44495341424C455F4449524543545F504154483D74727565005F3D2F7573722F62696E2F6C6C646200444255535F53455353494F4E5F4255535F414444524553533D756E69783A706174683D2F72756E2F757365722F3439393733322F62757300555345523D6861726A6F686E005353485F434C49454E543D3137322E3235332E33312E323337203437383431203232005034434F4E4649473D2E7034636F6E666967005353485F5454593D2F6465762F7074732F3000424153485F46554E435F7961726E25253D2829207B20202F7573722F62696E2F67706B67207961726E20222440220A7D00424153485F46554E435F6E707825253D2829207B20202F7573722F62696E2F67706B67206E707820222440220A7D0050344D455247453D2F676F6F676C652F7372632F66696C65732F686561642F6465706F742F656E672F706572666F7263652F6D6572676570342E74636C00424153485F46554E435F706E706D25253D2829207B20202F7573722F62696E2F67706B6720706E706D20222440220A7D004C4F474E414D453D6861726A6F686E00434C4F554453444B5F434F4E5441494E45525F5553455F4150504C49434154494F4E5F44454641554C545F43524544454E5449414C533D7472756500424153485F46554E435F686174636825253D2829207B20202F7573722F62696E2F67706B6720686174636820222440220A7D0048495354434F4E54524F4C3D69676E6F72656475707300504154483D2F7573722F6C69622F676F6F676C652D676F6C616E672F62696E3A2F7573722F6C6F63616C2F6275696C64746F6F6C732F6A6176612F6A646B2F62696E3A2F7573722F6C6F63616C2F7362696E3A2F7573722F6C6F63616C2F62696E3A2F7573722F7362696E3A2F7573722F62696E3A2F7362696E3A2F62696E005844475F53455353494F4E5F49443D6339303334005057443D2F7573722F6C6F63616C2F676F6F676C652F686F6D652F6861726A6F686E00424153485F46554E435F7961726E706B6725253D2829207B20202F7573722F62696E2F67706B67207961726E706B6720222440220A7D005353485F415554485F4B45593D65636473612D736861322D6E697374703235362D636572742D763031406F70656E7373682E636F6D20414141414B47566A5A484E684C584E6F59544974626D6C7A644841794E54597459325679644331324D4446416233426C626E4E7A6143356A623230414141416747477568656C4D7545582B357530682B61516D78456E366B6A50433075574E47494C2B793543766B314F6F4141414149626D6C7A644841794E545941414142424250415938413859644E6A6770617A733930786C70703835623231517841416D6C446A384432444A386976546B7648434B676748742F6759495A32306B6A70665A7142644F6C7437385A6C5674725A42453872344D2B385A4141414145414A7A38774141414145414141415861474679616D396F626B426A62334A774C6D6476623264735A53356A62323041414141644141414142326868636D7076614734414141414F5A3239765A32786C58476868636D70766147344141414141615A335A42514141414142706E764E784141414141414141414D77414141415959325679644331745A5852685A4746305955426E6232396E6247557559323974414141414B67414141435949415249677755464C345761352B4368396B4D7047676F4A764F4F4C5747456E75417759724C5073445A4265427576496742674141414256775A584A7461585174574445784C575A76636E6468636D5270626D634141414141414141414633426C636D3170644331685A3256756443316D62334A3359584A6B6157356E414141414141414141425A775A584A7461585174634739796443316D62334A3359584A6B6157356E4141414141414141414170775A584A7461585174634852354141414141414141414135775A584A746158517464584E6C6369317959774141414141414141414141414142467741414141647A63326774636E4E6841414141417745414151414141514541764E305A533562314F5A59746F4A3150534B59344749776A69733169347A5A5A324D42644E2F544559714A494F56736641746B447268433959475356757961692F6B4F58774C4C6E4663356456445257484C4453427A6F5845676C34514B436D4E75396E6E65562F634D4C4571346430336F3144504F535051474A44712B776570344B3948755277767A6F673677544441354B70306C6F436E5759384D4854627434532F4F32526F356D76463078306563397663637757314B4F74632F4379645169476D6576425A4F514F795874385A435A4B4574534F5449506841453535574B386167744D45734A6C485274637377536732424A4E4A4D5365554B674C31416E2F6F434539624B414D452F7A585659564B354675763465707163636E6433735157325438716E694F4963454449346F796244656A6D3647385650772F707869655350626146476674754C79522F72485335324F68774141415251414141414D636E4E684C584E6F595449744D6A55324141414241477A374C6357654478443770523942723178684E624A73317345744B4D7257736C65775657692F56356A34647A3268484C64384B6C57753467746367356A767370793876594E58454950576C47683037745953695744575869444D575562765544314E514F794E345548686B595576574F2B647A372B4C71776C7A574D515A38796958775234714E4A666B343070666F65424B59384E71726E776A4B52724173446E53656E4B544B4E6F646A73666E684B5A4839784C566663456F544764674831364375625947396C31666D65613750724D37714F7250554F6E6B4B565548736F6475766A6F72475A335063476258536176646E7A467836446A6251726D514462523638794F68675939746A77426B4A70627048345845452F612F777257336833595A656D59644536353063574C5364744447366444667476313148384B4B49306B477949554B52513377483367547531546D38736B3D0A0053484C564C3D3100434C4F554453444B5F434F4E544558545F41574152455F5553455F434C49454E545F43455254494649434154453D74727565004C455353434C4F53453D2F7573722F62696E2F6C6573737069706520257320257300424153485F46554E435F7069703325253D2829207B20202F7573722F62696E2F67706B67207069703320222440220A7D005353485F415554485F534F434B3D2F7573722F6C6F63616C2F676F6F676C652F686F6D652F6861726A6F686E2F2E7373682F6167656E742F732E3230524D6B6F466350352E737368642E333630383034322E63614837725067566563005445524D3D787465726D2D323536636F6C6F7200424153485F46554E435F706F6574727925253D2829207B20202F7573722F62696E2F67706B6720706F6574727920222440220A7D005348454C4C3D2F62696E2F6261736800434C4F554453444B5F494E5445524E414C5F555345523D7472756500434C4F554453444B5F434F4E544558545F41574152455F43455254494649434154455F434F4E4649475F46494C455F504154483D2F6574632F67636C6F75642F63657274696669636174655F636F6E6669672E6A736F6E004348524F4D455F52454D4F54455F4445534B544F505F44454641554C545F4445534B544F505F53495A45533D3136303078313230302C3338343078323136302C3338343078323536302C3531323078313434302C323136307833383430005844475F53455353494F4E5F545950453D74747900424153485F46554E435F706E707825253D2829207B20202F7573722F62696E2F67706B6720706E707820222440220A7D00424153485F46554E435F707974686F6E3325253D2829207B20202F7573722F62696E2F67706B6720707974686F6E3320222440220A7D00424153485F46554E435F70697025253D2829207B20202F7573722F62696E2F67706B672070697020222440220A7D00424153485F46554E435F7069707825253D2829207B20202F7573722F62696E2F67706B67207069707820222440220A7D004C414E473D656E5F55532E5554462D38005832305F484F4D453D2F676F6F676C652F646174612F72772F75736572732F68612F6861726A6F686E005353485F434F4E4E454354494F4E3D3137322E3235332E33312E323337203437383431203137322E32382E35372E313037203232005844475F52554E54494D455F4449523D2F72756E2F757365722F34393937333200424153485F46554E435F757625253D2829207B20202F7573722F62696E2F67706B6720757620222440220A7D00424153485F46554E435F707974686F6E25253D2829207B20202F7573722F62696E2F67706B6720707974686F6E20222440220A7D00474F4F474C455F4150495F43455254494649434154455F434F4E4649473D2F6574632F67636C6F75642F63657274696669636174655F636F6E6669672E6A736F6E004356535F5253483D73736800505954484F4E504154483D2F7573722F6C6F63616C2F6275696C64746F6F6C732F63757272656E742F73697465637573746F6D697A65005844475F53455353494F4E5F434C4153533D7573657200474F4F474C455F415554485F574542415554484E5F504C5547494E3D67636C6F7564776562617574686E00424153485F46554E435F70646D25253D2829207B20202F7573722F62696E2F67706B672070646D20222440220A7D0053545245414D5A5F534552564552533D5B323030313A343836303A663830323A3A37385D3A3935333000484F4D453D2F7573722F6C6F63616C2F676F6F676C652F686F6D652F6861726A6F686E005844475F444154415F444952533D2F7573722F73686172652F676E6F6D653A2F7573722F6C6F63616C2F73686172652F3A2F7573722F73686172652F002F746D702F612E6F7574000000000000000000 + - Type: LinuxCPUInfo + Text: | + processor : 0 + vendor_id : AuthenticAMD + cpu family : 23 + model : 49 + model name : AMD EPYC 7B12 + stepping : 0 + microcode : 0xffffffff + cpu MHz : 2249.998 + cache size : 512 KB + physical id : 0 + siblings : 24 + core id : 0 + cpu cores : 12 + apicid : 0 + initial apicid : 0 + fpu : yes + fpu_exception : yes + cpuid level : 13 + wp : yes + flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr arat npt nrip_save umip rdpid + bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso ibpb_no_ret spectre_v2_user + bogomips : 4499.99 + TLB size : 3072 4K pages + clflush size : 64 + cache_alignment : 64 + address sizes : 48 bits physical, 48 bits virtual + power management: + + processor : 1 + vendor_id : AuthenticAMD + cpu family : 23 + model : 49 + model name : AMD EPYC 7B12 + stepping : 0 + microcode : 0xffffffff + cpu MHz : 2249.998 + cache size : 512 KB + physical id : 0 + siblings : 24 + core id : 1 + cpu cores : 12 + apicid : 2 + initial apicid : 2 + fpu : yes + fpu_exception : yes + cpuid level : 13 + wp : yes + flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr arat npt nrip_save umip rdpid + bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso ibpb_no_ret spectre_v2_user + bogomips : 4499.99 + TLB size : 3072 4K pages + clflush size : 64 + cache_alignment : 64 + address sizes : 48 bits physical, 48 bits virtual + power management: + + processor : 2 + vendor_id : AuthenticAMD + cpu family : 23 + model : 49 + model name : AMD EPYC 7B12 + stepping : 0 + microcode : 0xffffffff + cpu MHz : 2249.998 + cache size : 512 KB + physical id : 0 + siblings : 24 + core id : 2 + cpu cores : 12 + apicid : 4 + initial apicid : 4 + fpu : yes + fpu_exception : yes + cpuid level : 13 + wp : yes + flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr arat npt nrip_save umip rdpid + bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso ibpb_no_ret spectre_v2_user + bogomips : 4499.99 + TLB size : 3072 4K pages + clflush size : 64 + cache_alignment : 64 + address sizes : 48 bits physical, 48 bits virtual + power management: + + processor : 3 + vendor_id : AuthenticAMD + cpu family : 23 + model : 49 + model name : AMD EPYC 7B12 + stepping : 0 + microcode : 0xffffffff + cpu MHz : 2249.998 + cache size : 512 KB + physical id : 0 + siblings : 24 + core id : 3 + cpu cores : 12 + apicid : 6 + initial apicid : 6 + fpu : yes + fpu_exception : yes + cpuid level : 13 + wp : yes + flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr arat npt nrip_save umip rdpid + bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso ibpb_no_ret spectre_v2_user + bogomips : 4499.99 + TLB size : 3072 4K pages + clflush size : 64 + cache_alignment : 64 + address sizes : 48 bits physical, 48 bits virtual + power management: + + processor : 4 + vendor_id : AuthenticAMD + cpu family : 23 + model : 49 + model name : AMD EPYC 7B12 + stepping : 0 + microcode : 0xffffffff + cpu MHz : 2249.998 + cache size : 512 KB + physical id : 0 + siblings : 24 + core id : 4 + cpu cores : 12 + apicid : 8 + initial apicid : 8 + fpu : yes + fpu_exception : yes + cpuid level : 13 + wp : yes + flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr arat npt nrip_save umip rdpid + bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso ibpb_no_ret spectre_v2_user + bogomips : 4499.99 + TLB size : 3072 4K pages + clflush size : 64 + cache_alignment : 64 + address sizes : 48 bits physical, 48 bits virtual + power management: + + processor : 5 + vendor_id : AuthenticAMD + cpu family : 23 + model : 49 + model name : AMD EPYC 7B12 + stepping : 0 + microcode : 0xffffffff + cpu MHz : 2249.998 + cache size : 512 KB + physical id : 0 + siblings : 24 + core id : 5 + cpu cores : 12 + apicid : 10 + initial apicid : 10 + fpu : yes + fpu_exception : yes + cpuid level : 13 + wp : yes + flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr arat npt nrip_save umip rdpid + bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso ibpb_no_ret spectre_v2_user + bogomips : 4499.99 + TLB size : 3072 4K pages + clflush size : 64 + cache_alignment : 64 + address sizes : 48 bits physical, 48 bits virtual + power management: + + processor : 6 + vendor_id : AuthenticAMD + cpu family : 23 + model : 49 + model name : AMD EPYC 7B12 + stepping : 0 + microcode : 0xffffffff + cpu MHz : 2249.998 + cache size : 512 KB + physical id : 0 + siblings : 24 + core id : 6 + cpu cores : 12 + apicid : 12 + initial apicid : 12 + fpu : yes + fpu_exception : yes + cpuid level : 13 + wp : yes + flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr arat npt nrip_save umip rdpid + bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso ibpb_no_ret spectre_v2_user + bogomips : 4499.99 + TLB size : 3072 4K pages + clflush size : 64 + cache_alignment : 64 + address sizes : 48 bits physical, 48 bits virtual + power management: + + processor : 7 + vendor_id : AuthenticAMD + cpu family : 23 + model : 49 + model name : AMD EPYC 7B12 + stepping : 0 + microcode : 0xffffffff + cpu MHz : 2249.998 + cache size : 512 KB + physical id : 0 + siblings : 24 + core id : 7 + cpu cores : 12 + apicid : 14 + initial apicid : 14 + fpu : yes + fpu_exception : yes + cpuid level : 13 + wp : yes + flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr arat npt nrip_save umip rdpid + bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso ibpb_no_ret spectre_v2_user + bogomips : 4499.99 + TLB size : 3072 4K pages + clflush size : 64 + cache_alignment : 64 + address sizes : 48 bits physical, 48 bits virtual + power management: + + processor : 8 + vendor_id : AuthenticAMD + cpu family : 23 + model : 49 + model name : AMD EPYC 7B12 + stepping : 0 + microcode : 0xffffffff + cpu MHz : 2249.998 + cache size : 512 KB + physical id : 0 + siblings : 24 + core id : 8 + cpu cores : 12 + apicid : 16 + initial apicid : 16 + fpu : yes + fpu_exception : yes + cpuid level : 13 + wp : yes + flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr arat npt nrip_save umip rdpid + bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso ibpb_no_ret spectre_v2_user + bogomips : 4499.99 + TLB size : 3072 4K pages + clflush size : 64 + cache_alignment : 64 + address sizes : 48 bits physical, 48 bits virtual + power management: + + processor : 9 + vendor_id : AuthenticAMD + cpu family : 23 + model : 49 + model name : AMD EPYC 7B12 + stepping : 0 + microcode : 0xffffffff + cpu MHz : 2249.998 + cache size : 512 KB + physical id : 0 + siblings : 24 + core id : 9 + cpu cores : 12 + apicid : 18 + initial apicid : 18 + fpu : yes + fpu_exception : yes + cpuid level : 13 + wp : yes + flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr arat npt nrip_save umip rdpid + bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso ibpb_no_ret spectre_v2_user + bogomips : 4499.99 + TLB size : 3072 4K pages + clflush size : 64 + cache_alignment : 64 + address sizes : 48 bits physical, 48 bits virtual + power management: + + processor : 10 + vendor_id : AuthenticAMD + cpu family : 23 + model : 49 + model name : AMD EPYC 7B12 + stepping : 0 + microcode : 0xffffffff + cpu MHz : 2249.998 + cache size : 512 KB + physical id : 0 + siblings : 24 + core id : 10 + cpu cores : 12 + apicid : 20 + initial apicid : 20 + fpu : yes + fpu_exception : yes + cpuid level : 13 + wp : yes + flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr arat npt nrip_save umip rdpid + bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso ibpb_no_ret spectre_v2_user + bogomips : 4499.99 + TLB size : 3072 4K pages + clflush size : 64 + cache_alignment : 64 + address sizes : 48 bits physical, 48 bits virtual + power management: + + processor : 11 + vendor_id : AuthenticAMD + cpu family : 23 + model : 49 + model name : AMD EPYC 7B12 + stepping : 0 + microcode : 0xffffffff + cpu MHz : 2249.998 + cache size : 512 KB + physical id : 0 + siblings : 24 + core id : 11 + cpu cores : 12 + apicid : 22 + initial apicid : 22 + fpu : yes + fpu_exception : yes + cpuid level : 13 + wp : yes + flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr arat npt nrip_save umip rdpid + bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso ibpb_no_ret spectre_v2_user + bogomips : 4499.99 + TLB size : 3072 4K pages + clflush size : 64 + cache_alignment : 64 + address sizes : 48 bits physical, 48 bits virtual + power management: + + processor : 12 + vendor_id : AuthenticAMD + cpu family : 23 + model : 49 + model name : AMD EPYC 7B12 + stepping : 0 + microcode : 0xffffffff + cpu MHz : 2249.998 + cache size : 512 KB + physical id : 0 + siblings : 24 + core id : 0 + cpu cores : 12 + apicid : 1 + initial apicid : 1 + fpu : yes + fpu_exception : yes + cpuid level : 13 + wp : yes + flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr arat npt nrip_save umip rdpid + bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso ibpb_no_ret spectre_v2_user + bogomips : 4499.99 + TLB size : 3072 4K pages + clflush size : 64 + cache_alignment : 64 + address sizes : 48 bits physical, 48 bits virtual + power management: + + processor : 13 + vendor_id : AuthenticAMD + cpu family : 23 + model : 49 + model name : AMD EPYC 7B12 + stepping : 0 + microcode : 0xffffffff + cpu MHz : 2249.998 + cache size : 512 KB + physical id : 0 + siblings : 24 + core id : 1 + cpu cores : 12 + apicid : 3 + initial apicid : 3 + fpu : yes + fpu_exception : yes + cpuid level : 13 + wp : yes + flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr arat npt nrip_save umip rdpid + bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso ibpb_no_ret spectre_v2_user + bogomips : 4499.99 + TLB size : 3072 4K pages + clflush size : 64 + cache_alignment : 64 + address sizes : 48 bits physical, 48 bits virtual + power management: + + processor : 14 + vendor_id : AuthenticAMD + cpu family : 23 + model : 49 + model name : AMD EPYC 7B12 + stepping : 0 + microcode : 0xffffffff + cpu MHz : 2249.998 + cache size : 512 KB + physical id : 0 + siblings : 24 + core id : 2 + cpu cores : 12 + apicid : 5 + initial apicid : 5 + fpu : yes + fpu_exception : yes + cpuid level : 13 + wp : yes + flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr arat npt nrip_save umip rdpid + bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso ibpb_no_ret spectre_v2_user + bogomips : 4499.99 + TLB size : 3072 4K pages + clflush size : 64 + cache_alignment : 64 + address sizes : 48 bits physical, 48 bits virtual + power management: + + processor : 15 + vendor_id : AuthenticAMD + cpu family : 23 + model : 49 + model name : AMD EPYC 7B12 + stepping : 0 + microcode : 0xffffffff + cpu MHz : 2249.998 + cache size : 512 KB + physical id : 0 + siblings : 24 + core id : 3 + cpu cores : 12 + apicid : 7 + initial apicid : 7 + fpu : yes + fpu_exception : yes + cpuid level : 13 + wp : yes + flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr arat npt nrip_save umip rdpid + bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso ibpb_no_ret spectre_v2_user + bogomips : 4499.99 + TLB size : 3072 4K pages + clflush size : 64 + cache_alignment : 64 + address sizes : 48 bits physical, 48 bits virtual + power management: + + processor : 16 + vendor_id : AuthenticAMD + cpu family : 23 + model : 49 + model name : AMD EPYC 7B12 + stepping : 0 + microcode : 0xffffffff + cpu MHz : 2249.998 + cache size : 512 KB + physical id : 0 + siblings : 24 + core id : 4 + cpu cores : 12 + apicid : 9 + initial apicid : 9 + fpu : yes + fpu_exception : yes + cpuid level : 13 + wp : yes + flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr arat npt nrip_save umip rdpid + bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso ibpb_no_ret spectre_v2_user + bogomips : 4499.99 + TLB size : 3072 4K pages + clflush size : 64 + cache_alignment : 64 + address sizes : 48 bits physical, 48 bits virtual + power management: + + processor : 17 + vendor_id : AuthenticAMD + cpu family : 23 + model : 49 + model name : AMD EPYC 7B12 + stepping : 0 + microcode : 0xffffffff + cpu MHz : 2249.998 + cache size : 512 KB + physical id : 0 + siblings : 24 + core id : 5 + cpu cores : 12 + apicid : 11 + initial apicid : 11 + fpu : yes + fpu_exception : yes + cpuid level : 13 + wp : yes + flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr arat npt nrip_save umip rdpid + bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso ibpb_no_ret spectre_v2_user + bogomips : 4499.99 + TLB size : 3072 4K pages + clflush size : 64 + cache_alignment : 64 + address sizes : 48 bits physical, 48 bits virtual + power management: + + processor : 18 + vendor_id : AuthenticAMD + cpu family : 23 + model : 49 + model name : AMD EPYC 7B12 + stepping : 0 + microcode : 0xffffffff + cpu MHz : 2249.998 + cache size : 512 KB + physical id : 0 + siblings : 24 + core id : 6 + cpu cores : 12 + apicid : 13 + initial apicid : 13 + fpu : yes + fpu_exception : yes + cpuid level : 13 + wp : yes + flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr arat npt nrip_save umip rdpid + bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso ibpb_no_ret spectre_v2_user + bogomips : 4499.99 + TLB size : 3072 4K pages + clflush size : 64 + cache_alignment : 64 + address sizes : 48 bits physical, 48 bits virtual + power management: + + processor : 19 + vendor_id : AuthenticAMD + cpu family : 23 + model : 49 + model name : AMD EPYC 7B12 + stepping : 0 + microcode : 0xffffffff + cpu MHz : 2249.998 + cache size : 512 KB + physical id : 0 + siblings : 24 + core id : 7 + cpu cores : 12 + apicid : 15 + initial apicid : 15 + fpu : yes + fpu_exception : yes + cpuid level : 13 + wp : yes + flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr arat npt nrip_save umip rdpid + bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso ibpb_no_ret spectre_v2_user + bogomips : 4499.99 + TLB size : 3072 4K pages + clflush size : 64 + cache_alignment : 64 + address sizes : 48 bits physical, 48 bits virtual + power management: + + processor : 20 + vendor_id : AuthenticAMD + cpu family : 23 + model : 49 + model name : AMD EPYC 7B12 + stepping : 0 + microcode : 0xffffffff + cpu MHz : 2249.998 + cache size : 512 KB + physical id : 0 + siblings : 24 + core id : 8 + cpu cores : 12 + apicid : 17 + initial apicid : 17 + fpu : yes + fpu_exception : yes + cpuid level : 13 + wp : yes + flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr arat npt nrip_save umip rdpid + bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso ibpb_no_ret spectre_v2_user + bogomips : 4499.99 + TLB size : 3072 4K pages + clflush size : 64 + cache_alignment : 64 + address sizes : 48 bits physical, 48 bits virtual + power management: + + processor : 21 + vendor_id : AuthenticAMD + cpu family : 23 + model : 49 + model name : AMD EPYC 7B12 + stepping : 0 + microcode : 0xffffffff + cpu MHz : 2249.998 + cache size : 512 KB + physical id : 0 + siblings : 24 + core id : 9 + cpu cores : 12 + apicid : 19 + initial apicid : 19 + fpu : yes + fpu_exception : yes + cpuid level : 13 + wp : yes + flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr arat npt nrip_save umip rdpid + bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso ibpb_no_ret spectre_v2_user + bogomips : 4499.99 + TLB size : 3072 4K pages + clflush size : 64 + cache_alignment : 64 + address sizes : 48 bits physical, 48 bits virtual + power management: + + processor : 22 + vendor_id : AuthenticAMD + cpu family : 23 + model : 49 + model name : AMD EPYC 7B12 + stepping : 0 + microcode : 0xffffffff + cpu MHz : 2249.998 + cache size : 512 KB + physical id : 0 + siblings : 24 + core id : 10 + cpu cores : 12 + apicid : 21 + initial apicid : 21 + fpu : yes + fpu_exception : yes + cpuid level : 13 + wp : yes + flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr arat npt nrip_save umip rdpid + bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso ibpb_no_ret spectre_v2_user + bogomips : 4499.99 + TLB size : 3072 4K pages + clflush size : 64 + cache_alignment : 64 + address sizes : 48 bits physical, 48 bits virtual + power management: + + processor : 23 + vendor_id : AuthenticAMD + cpu family : 23 + model : 49 + model name : AMD EPYC 7B12 + stepping : 0 + microcode : 0xffffffff + cpu MHz : 2249.998 + cache size : 512 KB + physical id : 0 + siblings : 24 + core id : 11 + cpu cores : 12 + apicid : 23 + initial apicid : 23 + fpu : yes + fpu_exception : yes + cpuid level : 13 + wp : yes + flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr arat npt nrip_save umip rdpid + bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass retbleed smt_rsb srso ibpb_no_ret spectre_v2_user + bogomips : 4499.99 + TLB size : 3072 4K pages + clflush size : 64 + cache_alignment : 64 + address sizes : 48 bits physical, 48 bits virtual + power management: + + - Type: LinuxLSBRelease + Text: | + # $Id: //depot/google3/googledata/corp/puppet/goobuntu/common/modules/base/templates/lsb-release.erb#9 $ + DISTRIB_CODENAME=rodete + DISTRIB_DESCRIPTION="Debian GNU/Linux rodete" + DISTRIB_ID=Debian + DISTRIB_RELEASE=rodete + GOOGLE_CODENAME=rodete + GOOGLE_ID=Goobuntu + GOOGLE_RELEASE="rodete 20260210.05.04RD" + GOOGLE_ROLE=desktop + GOOGLE_TRACK=stable + - Type: LinuxProcStatus + Text: | + Name: a.out + Umask: 0027 + State: t (tracing stop) + Tgid: 3616167 + Ngid: 0 + Pid: 3616167 + PPid: 3616128 + TracerPid: 3616128 + Uid: 499732 499732 499732 499732 + Gid: 89939 89939 89939 89939 + FDSize: 64 + Groups: 996 5000 66688 70967 70970 75209 77056 79910 79982 81448 82072 82189 82193 82712 83042 83243 84796 85841 86035 86931 87465 87558 87815 87986 88414 89046 89266 89275 89939 89971 90128 90338 90384 90387 90415 90518 90537 90558 90578 90673 90680 90899 90968 91041 91199 91674 91675 91750 91952 92188 92278 92487 92592 92741 92930 93214 93296 93298 93368 93703 93719 93743 93858 94083 94191 94278 94317 94330 94331 94332 94333 94334 94335 94336 94337 94338 94339 94340 94341 94342 94343 94344 94376 95521 96089 96577 96792 96853 97231 97552 97622 97644 97829 98356 98646 98661 99309 99388 99553 99567 99581 100113 100161 100283 100286 100405 100870 101193 101387 101389 101457 101493 102050 102136 102535 102941 103080 103090 103091 103093 103096 103121 103125 103142 103143 103175 103289 103291 103293 103295 103304 103306 103320 103323 103328 103343 103345 103411 103421 103462 103464 103465 103541 103568 103580 103587 103588 103596 103631 103654 103673 103745 + NStgid: 3616167 + NSpid: 3616167 + NSpgid: 3616167 + NSsid: 3608050 + Kthread: 0 + VmPeak: 2528 kB + VmSize: 2440 kB + VmLck: 0 kB + VmPin: 0 kB + VmHWM: 1216 kB + VmRSS: 1216 kB + RssAnon: 104 kB + RssFile: 1104 kB + RssShmem: 8 kB + VmData: 92 kB + VmStk: 136 kB + VmExe: 4 kB + VmLib: 1596 kB + VmPTE: 32 kB + VmSwap: 0 kB + HugetlbPages: 0 kB + CoreDumping: 0 + THP_enabled: 1 + untag_mask: 0xffffffffffffffff + Threads: 1 + SigQ: 1918/385560 + SigPnd: 0000000000000000 + ShdPnd: 0000000000000000 + SigBlk: 0000000000000000 + SigIgn: 0000000004001000 + SigCgt: 0000000000000000 + CapInh: 0000000000000000 + CapPrm: 0000000000000000 + CapEff: 0000000000000000 + CapBnd: 000001ffffffffff + CapAmb: 0000000000000000 + NoNewPrivs: 0 + Seccomp: 0 + Seccomp_filters: 0 + Speculation_Store_Bypass: thread vulnerable + SpeculationIndirectBranch: conditional enabled + Cpus_allowed: ffffff + Cpus_allowed_list: 0-23 + Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001 + Mems_allowed_list: 0 + voluntary_ctxt_switches: 6 + nonvoluntary_ctxt_switches: 0 + x86_Thread_features: + x86_Thread_features_locked: + - Type: LinuxCMDLine + Text: | + /tmp/a.out + - Type: LinuxEnviron + Content: 434C4F554453444B5F434F4E544558545F41574152455F5553455F4543505F485454505F50524F58593D74727565004C4553534F50454E3D7C202F7573722F62696E2F6C6573737069706520257300424153485F46554E435F6E706D25253D2829207B20202F7573722F62696E2F67706B67206E706D20222440220A7D005253594E435F5253483D73736800504152494E49543D72546267715220423D2E3F5F415F6120513D5F733E7C3A004D4F54445F53484F574E3D70616D004C535F434F4C4F52533D72733D303A64693D30313B33343A6C6E3D30313B33363A6D683D30303A70693D34303B33333A736F3D30313B33353A646F3D30313B33353A62643D34303B33333B30313A63643D34303B33333B30313A6F723D34303B33313B30313A6D693D30303A73753D33373B34313A73673D33303B34333A63613D30303A74773D33303B34323A6F773D33343B34323A73743D33373B34343A65783D30313B33323A2A2E377A3D30313B33313A2A2E6163653D30313B33313A2A2E616C7A3D30313B33313A2A2E61706B3D30313B33313A2A2E6172633D30313B33313A2A2E61726A3D30313B33313A2A2E627A3D30313B33313A2A2E627A323D30313B33313A2A2E6361623D30313B33313A2A2E6370696F3D30313B33313A2A2E63726174653D30313B33313A2A2E6465623D30313B33313A2A2E6472706D3D30313B33313A2A2E64776D3D30313B33313A2A2E647A3D30313B33313A2A2E6561723D30313B33313A2A2E6567673D30313B33313A2A2E6573643D30313B33313A2A2E677A3D30313B33313A2A2E6A61723D30313B33313A2A2E6C68613D30313B33313A2A2E6C727A3D30313B33313A2A2E6C7A3D30313B33313A2A2E6C7A343D30313B33313A2A2E6C7A683D30313B33313A2A2E6C7A6D613D30313B33313A2A2E6C7A6F3D30313B33313A2A2E70797A3D30313B33313A2A2E7261723D30313B33313A2A2E72706D3D30313B33313A2A2E727A3D30313B33313A2A2E7361723D30313B33313A2A2E73776D3D30313B33313A2A2E74377A3D30313B33313A2A2E7461723D30313B33313A2A2E74617A3D30313B33313A2A2E74627A3D30313B33313A2A2E74627A323D30313B33313A2A2E74677A3D30313B33313A2A2E746C7A3D30313B33313A2A2E74787A3D30313B33313A2A2E747A3D30313B33313A2A2E747A6F3D30313B33313A2A2E747A73743D30313B33313A2A2E756465623D30313B33313A2A2E7761723D30313B33313A2A2E77686C3D30313B33313A2A2E77696D3D30313B33313A2A2E787A3D30313B33313A2A2E7A3D30313B33313A2A2E7A69703D30313B33313A2A2E7A6F6F3D30313B33313A2A2E7A73743D30313B33313A2A2E617669663D30313B33353A2A2E6A70673D30313B33353A2A2E6A7065673D30313B33353A2A2E6A786C3D30313B33353A2A2E6D6A70673D30313B33353A2A2E6D6A7065673D30313B33353A2A2E6769663D30313B33353A2A2E626D703D30313B33353A2A2E70626D3D30313B33353A2A2E70676D3D30313B33353A2A2E70706D3D30313B33353A2A2E7467613D30313B33353A2A2E78626D3D30313B33353A2A2E78706D3D30313B33353A2A2E7469663D30313B33353A2A2E746966663D30313B33353A2A2E706E673D30313B33353A2A2E7376673D30313B33353A2A2E7376677A3D30313B33353A2A2E6D6E673D30313B33353A2A2E7063783D30313B33353A2A2E6D6F763D30313B33353A2A2E6D70673D30313B33353A2A2E6D7065673D30313B33353A2A2E6D32763D30313B33353A2A2E6D6B763D30313B33353A2A2E7765626D3D30313B33353A2A2E776562703D30313B33353A2A2E6F676D3D30313B33353A2A2E6D70343D30313B33353A2A2E6D34763D30313B33353A2A2E6D7034763D30313B33353A2A2E766F623D30313B33353A2A2E71743D30313B33353A2A2E6E75763D30313B33353A2A2E776D763D30313B33353A2A2E6173663D30313B33353A2A2E726D3D30313B33353A2A2E726D76623D30313B33353A2A2E666C633D30313B33353A2A2E6176693D30313B33353A2A2E666C693D30313B33353A2A2E666C763D30313B33353A2A2E676C3D30313B33353A2A2E646C3D30313B33353A2A2E7863663D30313B33353A2A2E7877643D30313B33353A2A2E7975763D30313B33353A2A2E63676D3D30313B33353A2A2E656D663D30313B33353A2A2E6F67763D30313B33353A2A2E6F67783D30313B33353A2A2E6161633D30303B33363A2A2E61753D30303B33363A2A2E666C61633D30303B33363A2A2E6D34613D30303B33363A2A2E6D69643D30303B33363A2A2E6D6964693D30303B33363A2A2E6D6B613D30303B33363A2A2E6D70333D30303B33363A2A2E6D70633D30303B33363A2A2E6F67673D30303B33363A2A2E72613D30303B33363A2A2E7761763D30303B33363A2A2E6F67613D30303B33363A2A2E6F7075733D30303B33363A2A2E7370783D30303B33363A2A2E787370663D30303B33363A2A7E3D30303B39303A2A233D30303B39303A2A2E62616B3D30303B39303A2A2E6372646F776E6C6F61643D30303B39303A2A2E64706B672D646973743D30303B39303A2A2E64706B672D6E65773D30303B39303A2A2E64706B672D6F6C643D30303B39303A2A2E64706B672D746D703D30303B39303A2A2E6F6C643D30303B39303A2A2E6F7269673D30303B39303A2A2E706172743D30303B39303A2A2E72656A3D30303B39303A2A2E72706D6E65773D30303B39303A2A2E72706D6F7269673D30303B39303A2A2E72706D736176653D30303B39303A2A2E7377703D30303B39303A2A2E746D703D30303B39303A2A2E7563662D646973743D30303B39303A2A2E7563662D6E65773D30303B39303A2A2E7563662D6F6C643D30303B39303A00534B5F5349474E494E475F504C5547494E3D676E756262796167656E7400474F4F474C455F434C4F55445F44495341424C455F4449524543545F504154483D74727565005F3D2F7573722F62696E2F6C6C646200444255535F53455353494F4E5F4255535F414444524553533D756E69783A706174683D2F72756E2F757365722F3439393733322F62757300555345523D6861726A6F686E005353485F434C49454E543D3137322E3235332E33312E323337203437383431203232005034434F4E4649473D2E7034636F6E666967005353485F5454593D2F6465762F7074732F3000424153485F46554E435F7961726E25253D2829207B20202F7573722F62696E2F67706B67207961726E20222440220A7D00424153485F46554E435F6E707825253D2829207B20202F7573722F62696E2F67706B67206E707820222440220A7D0050344D455247453D2F676F6F676C652F7372632F66696C65732F686561642F6465706F742F656E672F706572666F7263652F6D6572676570342E74636C00424153485F46554E435F706E706D25253D2829207B20202F7573722F62696E2F67706B6720706E706D20222440220A7D004C4F474E414D453D6861726A6F686E00434C4F554453444B5F434F4E5441494E45525F5553455F4150504C49434154494F4E5F44454641554C545F43524544454E5449414C533D7472756500424153485F46554E435F686174636825253D2829207B20202F7573722F62696E2F67706B6720686174636820222440220A7D0048495354434F4E54524F4C3D69676E6F72656475707300504154483D2F7573722F6C69622F676F6F676C652D676F6C616E672F62696E3A2F7573722F6C6F63616C2F6275696C64746F6F6C732F6A6176612F6A646B2F62696E3A2F7573722F6C6F63616C2F7362696E3A2F7573722F6C6F63616C2F62696E3A2F7573722F7362696E3A2F7573722F62696E3A2F7362696E3A2F62696E005844475F53455353494F4E5F49443D6339303334005057443D2F7573722F6C6F63616C2F676F6F676C652F686F6D652F6861726A6F686E00424153485F46554E435F7961726E706B6725253D2829207B20202F7573722F62696E2F67706B67207961726E706B6720222440220A7D005353485F415554485F4B45593D65636473612D736861322D6E697374703235362D636572742D763031406F70656E7373682E636F6D20414141414B47566A5A484E684C584E6F59544974626D6C7A644841794E54597459325679644331324D4446416233426C626E4E7A6143356A623230414141416747477568656C4D7545582B357530682B61516D78456E366B6A50433075574E47494C2B793543766B314F6F4141414149626D6C7A644841794E545941414142424250415938413859644E6A6770617A733930786C70703835623231517841416D6C446A384432444A386976546B7648434B676748742F6759495A32306B6A70665A7142644F6C7437385A6C5674725A42453872344D2B385A4141414145414A7A38774141414145414141415861474679616D396F626B426A62334A774C6D6476623264735A53356A62323041414141644141414142326868636D7076614734414141414F5A3239765A32786C58476868636D70766147344141414141615A335A42514141414142706E764E784141414141414141414D77414141415959325679644331745A5852685A4746305955426E6232396E6247557559323974414141414B67414141435949415249677755464C345761352B4368396B4D7047676F4A764F4F4C5747456E75417759724C5073445A4265427576496742674141414256775A584A7461585174574445784C575A76636E6468636D5270626D634141414141414141414633426C636D3170644331685A3256756443316D62334A3359584A6B6157356E414141414141414141425A775A584A7461585174634739796443316D62334A3359584A6B6157356E4141414141414141414170775A584A7461585174634852354141414141414141414135775A584A746158517464584E6C6369317959774141414141414141414141414142467741414141647A63326774636E4E6841414141417745414151414141514541764E305A533562314F5A59746F4A3150534B59344749776A69733169347A5A5A324D42644E2F544559714A494F56736641746B447268433959475356757961692F6B4F58774C4C6E4663356456445257484C4453427A6F5845676C34514B436D4E75396E6E65562F634D4C4571346430336F3144504F535051474A44712B776570344B3948755277767A6F673677544441354B70306C6F436E5759384D4854627434532F4F32526F356D76463078306563397663637757314B4F74632F4379645169476D6576425A4F514F795874385A435A4B4574534F5449506841453535574B386167744D45734A6C485274637377536732424A4E4A4D5365554B674C31416E2F6F434539624B414D452F7A585659564B354675763465707163636E6433735157325438716E694F4963454449346F796244656A6D3647385650772F707869655350626146476674754C79522F72485335324F68774141415251414141414D636E4E684C584E6F595449744D6A55324141414241477A374C6357654478443770523942723178684E624A73317345744B4D7257736C65775657692F56356A34647A3268484C64384B6C57753467746367356A767370793876594E58454950576C47683037745953695744575869444D575562765544314E514F794E345548686B595576574F2B647A372B4C71776C7A574D515A38796958775234714E4A666B343070666F65424B59384E71726E776A4B52724173446E53656E4B544B4E6F646A73666E684B5A4839784C566663456F544764674831364375625947396C31666D65613750724D37714F7250554F6E6B4B565548736F6475766A6F72475A335063476258536176646E7A467836446A6251726D514462523638794F68675939746A77426B4A70627048345845452F612F777257336833595A656D59644536353063574C5364744447366444667476313148384B4B49306B477949554B52513377483367547531546D38736B3D0A0053484C564C3D3100434C4F554453444B5F434F4E544558545F41574152455F5553455F434C49454E545F43455254494649434154453D74727565004C455353434C4F53453D2F7573722F62696E2F6C6573737069706520257320257300424153485F46554E435F7069703325253D2829207B20202F7573722F62696E2F67706B67207069703320222440220A7D005353485F415554485F534F434B3D2F7573722F6C6F63616C2F676F6F676C652F686F6D652F6861726A6F686E2F2E7373682F6167656E742F732E3230524D6B6F466350352E737368642E333630383034322E63614837725067566563005445524D3D787465726D2D323536636F6C6F7200424153485F46554E435F706F6574727925253D2829207B20202F7573722F62696E2F67706B6720706F6574727920222440220A7D005348454C4C3D2F62696E2F6261736800434C4F554453444B5F494E5445524E414C5F555345523D7472756500434C4F554453444B5F434F4E544558545F41574152455F43455254494649434154455F434F4E4649475F46494C455F504154483D2F6574632F67636C6F75642F63657274696669636174655F636F6E6669672E6A736F6E004348524F4D455F52454D4F54455F4445534B544F505F44454641554C545F4445534B544F505F53495A45533D3136303078313230302C3338343078323136302C3338343078323536302C3531323078313434302C323136307833383430005844475F53455353494F4E5F545950453D74747900424153485F46554E435F706E707825253D2829207B20202F7573722F62696E2F67706B6720706E707820222440220A7D00424153485F46554E435F707974686F6E3325253D2829207B20202F7573722F62696E2F67706B6720707974686F6E3320222440220A7D00424153485F46554E435F70697025253D2829207B20202F7573722F62696E2F67706B672070697020222440220A7D00424153485F46554E435F7069707825253D2829207B20202F7573722F62696E2F67706B67207069707820222440220A7D004C414E473D656E5F55532E5554462D38005832305F484F4D453D2F676F6F676C652F646174612F72772F75736572732F68612F6861726A6F686E005353485F434F4E4E454354494F4E3D3137322E3235332E33312E323337203437383431203137322E32382E35372E313037203232005844475F52554E54494D455F4449523D2F72756E2F757365722F34393937333200424153485F46554E435F757625253D2829207B20202F7573722F62696E2F67706B6720757620222440220A7D00424153485F46554E435F707974686F6E25253D2829207B20202F7573722F62696E2F67706B6720707974686F6E20222440220A7D00474F4F474C455F4150495F43455254494649434154455F434F4E4649473D2F6574632F67636C6F75642F63657274696669636174655F636F6E6669672E6A736F6E004356535F5253483D73736800505954484F4E504154483D2F7573722F6C6F63616C2F6275696C64746F6F6C732F63757272656E742F73697465637573746F6D697A65005844475F53455353494F4E5F434C4153533D7573657200474F4F474C455F415554485F574542415554484E5F504C5547494E3D67636C6F7564776562617574686E00424153485F46554E435F70646D25253D2829207B20202F7573722F62696E2F67706B672070646D20222440220A7D0053545245414D5A5F534552564552533D5B323030313A343836303A663830323A3A37385D3A3935333000484F4D453D2F7573722F6C6F63616C2F676F6F676C652F686F6D652F6861726A6F686E005844475F444154415F444952533D2F7573722F73686172652F676E6F6D653A2F7573722F6C6F63616C2F73686172652F3A2F7573722F73686172652F00 + - Type: LinuxAuxv + Content: 21000000000000000050FCF7FF7F00003300000000000000F0060000000000001000000000000000FFFB8B17000000000600000000000000001000000000000011000000000000006400000000000000030000000000000040405555555500000400000000000000380000000000000005000000000000000E0000000000000007000000000000000070FCF7FF7F000008000000000000000000000000000000090000000000000050505555555500000B0000000000000014A00700000000000C0000000000000014A00700000000000D00000000000000535F0100000000000E00000000000000535F01000000000017000000000000000000000000000000190000000000000059D9FFFFFF7F00001A0000000000000002000000000000001F00000000000000EDEFFFFFFF7F00000F0000000000000069D9FFFFFF7F00001B000000000000001C000000000000001C00000000000000200000000000000000000000000000000000000000000000 + - Type: LinuxMaps + Text: | + 555555554000-555555555000 r--p 00000000 00:2c 69154 /tmp/a.out + 555555555000-555555556000 r-xp 00001000 00:2c 69154 /tmp/a.out + 555555556000-555555557000 r--p 00002000 00:2c 69154 /tmp/a.out + 555555557000-555555558000 r--p 00002000 00:2c 69154 /tmp/a.out + 555555558000-555555559000 rw-p 00003000 00:2c 69154 /tmp/a.out + 7ffff7dae000-7ffff7db1000 rw-p 00000000 00:00 0 + 7ffff7db1000-7ffff7dd9000 r--p 00000000 fd:01 11689180 /usr/lib/x86_64-linux-gnu/libc.so.6 + 7ffff7dd9000-7ffff7f3e000 r-xp 00028000 fd:01 11689180 /usr/lib/x86_64-linux-gnu/libc.so.6 + 7ffff7f3e000-7ffff7f94000 r--p 0018d000 fd:01 11689180 /usr/lib/x86_64-linux-gnu/libc.so.6 + 7ffff7f94000-7ffff7f98000 r--p 001e2000 fd:01 11689180 /usr/lib/x86_64-linux-gnu/libc.so.6 + 7ffff7f98000-7ffff7f9a000 rw-p 001e6000 fd:01 11689180 /usr/lib/x86_64-linux-gnu/libc.so.6 + 7ffff7f9a000-7ffff7fa7000 rw-p 00000000 00:00 0 + 7ffff7fbd000-7ffff7fbf000 rw-p 00000000 00:00 0 + 7ffff7fbf000-7ffff7fc3000 r--p 00000000 00:00 0 [vvar] + 7ffff7fc3000-7ffff7fc5000 r--p 00000000 00:00 0 [vvar_vclock] + 7ffff7fc5000-7ffff7fc7000 r-xp 00000000 00:00 0 [vdso] + 7ffff7fc7000-7ffff7fc8000 r--p 00000000 fd:01 11689079 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 + 7ffff7fc8000-7ffff7ff0000 r-xp 00001000 fd:01 11689079 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 + 7ffff7ff0000-7ffff7ffb000 r--p 00029000 fd:01 11689079 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 + 7ffff7ffb000-7ffff7ffd000 r--p 00034000 fd:01 11689079 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 + 7ffff7ffd000-7ffff7ffe000 rw-p 00036000 fd:01 11689079 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 + 7ffff7ffe000-7ffff7fff000 rw-p 00000000 00:00 0 + 7ffffffdd000-7ffffffff000 rw-p 00000000 00:00 0 [stack] + - Type: LinuxProcStat + Text: | + 3616167 (a.out) t 3616128 3616167 3608050 34816 3615736 0 120 0 0 0 0 0 0 0 20 0 1 0 126326383 2498560 213 18446744073709551615 93824992235520 93824992236013 140737488344560 0 0 0 0 67112960 0 1 0 0 17 1 0 0 0 0 0 93824992247248 93824992247832 93824992251904 140737488345465 140737488345476 140737488345476 140737488351213 0 - Type: Exception - Thread ID: 0x7E03 + Thread ID: 0x372DA7 Exception Record: - Exception Code: 0xB - Exception Address: 0x40011C - Thread Context: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000700100000000000FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E8150B24FC7F0000E8150B24FC7F00000C014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + Exception Code: 0x2 + Exception Flags: 0x4C4C4442 + Exception Address: 0x555555555148 + Number of Parameters: 1 + Parameter 0: 0x696F706B61657262 + Parameter 1: 0x312E3120746E + Thread Context: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000700108000000000330000000000000000002B00020200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003E40D87D55555555000008D6FFFFFF7F0000F8D5FFFFFF7F0000A0D4FFFFFF7F0000A0D4FFFFFF7F0000F8D5FFFFFF7F0000B0D4FFFFFF7F0000000000000000000080BCFCF7FF7F000020D2FFFFFF7F00000202000000000000000000000000000008D6FFFFFF7F000000D0FFF7FF7F0000D87D5555555500004851555555550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040E7DAF7FF7F00000000000000000000 - Type: MemoryList Memory Ranges: - - Start of Memory Range: 0x7FFC240B1568 - Content: 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006218160B24FC7F000042014000000000000C0140000000000000000000000000000000000000000000000000000000006638160B24FC7F00005F014000000000000000000000000000000000000000005F0000000000000000010000000000000002200B24FC7F00000000000000000000FE2F0B24FC7F00000000000000000000210000000000000000901224FC7F00001000000000000000FFFBEBBF0000000006000000000000000010000000000000110000000000000064000000000000000300000000000000400040000000000004000000000000003800000000000000050000000000000003000000000000000700000000000000000000000000000008000000000000000000000000000000090000000000000044014000000000000B0000000000000000000000000000000C0000000000000000000000000000000D0000000000000000000000000000000E000000000000000000000000000000170000000000000000000000000000001900000000000000A9170B24FC7F00001A0000000000000000000000000000001F00000000000000FC3F0B24FC7F00000F00000000000000B9170B24FC7F000000000000000000000000000000000000000AB340B9514A4C453C3FB52168ADE70E7838365F36340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F612E6F7574005F3D2F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F612E6F7574002F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F746573742F612E6F7574000000000000000000 - - Start of Memory Range: 0x400000 - Content: 7F454C4602010100000000000000000002003E000100000044014000000000004000000000000000F0040000000000000000000040003800030040000D000A000100000005000000000000000000000000004000000000000000400000000000E001000000000000E00100000000000000002000000000000400000004000000E800000000000000E800400000000000E80040000000000024000000000000002400000000000000040000000000000051E5746406000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000040000001400000003000000474E550001DF54A6045E657D3F8FFB9CE111878914F8BD6D554889E548897DE8C645FF62488B45E8C6002F5DC3554889E54883EC2048897DE8488975E0C645FF66488B55E8488B45E04889D7FFD0C9C3554889E54883EC10C645FF5FBE0C014000BF00000000E8C2FFFFFFC9C3000000000000001400000000000000017A5200017810011B0C0708900100001C0000001C00000084FFFFFF1500000000410E108602430D06500C07080000001C0000003C00000079FFFFFF2300000000410E108602430D065E0C07080000001C0000005C0000007CFFFFFF1D00000000410E108602430D06580C07080000004743433A20285562756E747520342E382E342D327562756E7475317E31342E30342920342E382E34002C0000000200000000000800000000000C01400000000000550000000000000000000000000000000000000000000000EC00000004000000000008011300000001070000003F0000000C01400000000000550000000000000000000000026261720001010C014000000000001500000000000000019C65000000030E00000001016500000002915804460001036B00000002916F0005086B0000000601065800000007666F6F00010721014000000000002300000000000000019CB8000000030E00000001076500000002915803000000000107C300000002915004460001096B00000002916F0008C30000000965000000000508B80000000A51000000010D44014000000000001D00000000000000019C044600010F6B00000002916F0000011101250E130B030E1B0E1101120710170000022E0103083A0B3B0B271911011207401897421901130000030500030E3A0B3B0B49130218000004340003083A0B3B0B491302180000050F000B0B491300000624000B0B3E0B030E0000072E0103083A0B3B0B271911011207401896421901130000081501271901130000090500491300000A2E013F19030E3A0B3B0B27191101120740189642190000003F00000002001D0000000101FB0E0D000101010100000001000001006D61696E2E6300000000000009020C0140000000000013834B7531F34BC931834BE50202000101626F6F6D6572006D61696E2E6300626F6F6D00474E55204320342E382E34202D6D74756E653D67656E65726963202D6D617263683D7838362D3634202D67002F686F6D652F6C61626174682F74657374005F7374617274006368617200002E73796D746162002E737472746162002E7368737472746162002E6E6F74652E676E752E6275696C642D6964002E74657874002E65685F6672616D65002E636F6D6D656E74002E64656275675F6172616E676573002E64656275675F696E666F002E64656275675F616262726576002E64656275675F6C696E65002E64656275675F737472000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001B000000070000000200000000000000E800400000000000E80000000000000024000000000000000000000000000000040000000000000000000000000000002E0000000100000006000000000000000C014000000000000C010000000000005500000000000000000000000000000001000000000000000000000000000000340000000100000002000000000000006801400000000000680100000000000078000000000000000000000000000000080000000000000000000000000000003E0000000100000030000000000000000000000000000000E0010000000000002900000000000000000000000000000001000000000000000100000000000000470000000100000000000000000000000000000000000000090200000000000030000000000000000000000000000000010000000000000000000000000000005600000001000000000000000000000000000000000000003902000000000000F00000000000000000000000000000000100000000000000000000000000000062000000010000000000000000000000000000000000000029030000000000009E00000000000000000000000000000001000000000000000000000000000000700000000100000000000000000000000000000000000000C70300000000000043000000000000000000000000000000010000000000000000000000000000007C00000001000000300000000000000000000000000000000A040000000000005D00000000000000000000000000000001000000000000000100000000000000110000000300000000000000000000000000000000000000670400000000000087000000000000000000000000000000010000000000000000000000000000000100000002000000000000000000000000000000000000003008000000000000B0010000000000000C0000000E00000008000000000000001800000000000000090000000300000000000000000000000000000000000000E0090000000000002F000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000100E800400000000000000000000000000000000000030002000C014000000000000000000000000000000000000300030068014000000000000000000000000000000000000300040000000000000000000000000000000000000000000300050000000000000000000000000000000000000000000300060000000000000000000000000000000000000000000300070000000000000000000000000000000000000000000300080000000000000000000000000000000000000000000300090000000000000000000000000000000000010000000400F1FF0000000000000000000000000000000008000000020002000C0140000000000015000000000000000C0000000200020021014000000000002300000000000000000000000400F1FF00000000000000000000000000000000100000001200020044014000000000001D000000000000001700000010000300001060000000000000000000000000002300000010000300001060000000000000000000000000002A0000001000030000106000000000000000000000000000006D61696E2E630062617200666F6F005F7374617274005F5F6273735F7374617274005F6564617461005F656E6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - - Start of Memory Range: 0x7FFC24126000 - Content: '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' - - Start of Memory Range: 0x7FFC24129000 - Content: 7F454C4602010100000000000000000003003E000100000060060000000000004000000000000000D80A00000000000000000000400038000400400010000F0001000000050000000000000000000000000000000000000000000000000000000C0A0000000000000C0A00000000000000100000000000000200000004000000A003000000000000A003000000000000A0030000000000001001000000000000100100000000000008000000000000000400000004000000B004000000000000B004000000000000B00400000000000068000000000000006800000000000000040000000000000050E57464040000001805000000000000180500000000000018050000000000003C000000000000003C000000000000000400000000000000030000000C000000060000000500000008000000000000000000000009000000020000000A000000000000000B0000000100000007000000000000000300000004000000000000000300000001000000010000000600000089343805466500A10100000007000000090000007E55DD7100CA1BB0DA109A9E528F3068864B85E60D8E1E8294789E7C19A3436E8A2AC62626B062656D5887FF0000000000000000000000000000000000000000000000002800000022000B007008000000000000AC000000000000000100000012000B00D00700000000000088000000000000003D00000022000B00200900000000000048000000000000003600000012000B00200900000000000048000000000000000800000022000B00D00700000000000088000000000000001500000012000B00600800000000000010000000000000001C00000022000B00600800000000000010000000000000002100000012000B007008000000000000AC00000000000000680000001100F1FF000000000000000000000000000000004A00000012000B00700900000000000025000000000000005100000022000B0070090000000000002500000000000000005F5F7664736F5F67657474696D656F66646179005F5F7664736F5F74696D65005F5F7664736F5F636C6F636B5F67657474696D65005F5F7664736F5F636C6F636B5F676574726573005F5F7664736F5F676574637075006C696E75782D7664736F2E736F2E31004C494E55585F322E36000000020002000200020002000200020002000200020002000000000000000100010001000100A1BFEE0D140000001C00000058000000000000000100000002000100F675AE03140000000000000068000000000000000E0000000000000058000000000000001000000000000000000000000000000004000000000000002001000000000000F5FEFF6F0000000068010000000000000500000000000000D8020000000000000600000000000000B8010000000000000A0000000000000072000000000000000B000000000000001800000000000000FCFFFF6F000000006803000000000000FDFFFF6F000000000200000000000000F0FFFF6F000000004A030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000004000000000000004C696E75780000000D0505000600000017000000000100004C696E7578000000352E352E31332D3230302E666333312E7838365F36340000040000001400000003000000474E55008CBE1E6C351152C0C43E68C4EF417DB4C77E8EBD011B033B3C000000060000004801000058000000B80200009800000048030000D000000058030000E4000000080400001C0100005804000030010000000000001400000000000000017A5200017810011B0C0708900100003C0000001C000000E80000006E01000000410E108602540D06458D038C048305630AC347CC42CD41C60C0708410B025B0AC342CC45CD41C60C0708460B000000340000005C000000180200008800000000410E108602430D06428C0348830402490AC342CC41C60C0708410B520AC342CC41C60C0708410B100000009400000070020000100000000000000034000000A80000006C020000AC00000000410E108602430D06428D03458C04730ACC44CD41C60C0708410B480ACC49CD41C60C0708410B0010000000E0000000E4020000480000000000000010000000F400000020030000250000000000000000000000554863F64989D24989C948C1E6044C8D04374889E54155415453EB02F3908B3740F6C60175F68B470483F801741A83F8020F84BA00000083F80374755BB8FFFFFFFF415C415D5DC30F01F9669048C1E2204809C2498B4028488B4F084885D278DB448B5F184839D1730A4829CA490FAFD34801D08B4F1C4D8B58208B1739F2759D48D3E8483DFFC99A3B761631D2482D00CA9A3B83C201483DFFC99A3B77EF4901D35B415C4D891A415D5D49890131C0C34C8D25E8E8FFFF418B1C2485DB0F8478FFFFFF4C8B2DDDE8FFFF4C8B1DDEE8FFFF0F01F96690418B0C2439CB75D948C1E2204809D049F7E54C01DAE963FFFFFF8B15A9D8FFFF488D1DA2D8FFFF83E2FE4189D3F605B2D8FFFF010F842BFFFFFF0F01F9669048C1E2204809C24889D00FBE1595D8FFFF482B057AD8FFFF4989C489D1F7D949D3EC89D148D3E085D24C89E28B0D70D8FFFF480F49D04889D048F7E1480FACD020488B0D52D8FFFF8B134139D37599488D1408E9E6FEFFFF6690554889E541544989F4534883EC104885FF74384889FB488D55E0488D4DE831F6488D3D89C8FFFFE864FEFFFF85C0752B488B45E04889038B45E84869C0D34D621048C1E82689C04889430831C04D85E4751F4883C4105B415C5DC34889DF4C89E6B8600000000F054883C4105B415C5DC38B1519C9FFFF418914248B1513C9FFFF4189542404EBCA0F1F840000000000488B0539C8FFFF4885FF7403488907C3554889E541554989F541544189FC83FF0F7731B80100000089F9D3E0A9830800007434488D4E084889F289FE488D3DDDC7FFFFE8B8FDFFFF85C07508415C31C0415D5DC34489E74C89EE415CB8E40000000F05415D5DC3A860751BA81074E5488D4E084889F289FE488D3D91C8FFFFE87CFDFFFFEBC24863CF488D1590C7FFFF4883C10248C1E1044801D1EB02F3908B02A80175F8488B3149897500488B7108498975088B3239F07492EBE30F1F400083FF0F7731B80100000089F98B1536C8FFFFD3E0A98308000074134885F6742548C7060000000031C048895608C3A860750CA81075E5B8E50000000F05C3BA40420F00EBD631C0C39090909090909090B87B0000000F03C0904885FF740A89C281E2FF0F000089174885F67405C1E80C890631C0C313FDFFFF57000000720005050306FDFFFF4F0000003B0005030383FDFFFF45000000720005050376FDFFFF3D0000003B00050303A8FDFFFF3300000072000505039BFDFFFF2B0000003B0005030392FFFFFF2100000016020404010FAEE80F310F01F90FAEE80F310F01F90FAEE80F310F01F9F30FC7F84743433A2028474E552920392E322E3120323031393038323720285265642048617420392E322E312D312900002E7368737472746162002E676E752E68617368002E64796E73796D002E64796E737472002E676E752E76657273696F6E002E676E752E76657273696F6E5F64002E64796E616D6963002E6E6F7465002E65685F6672616D655F686472002E65685F6672616D65002E74657874002E616C74696E737472756374696F6E73002E616C74696E7374725F7265706C6163656D656E74002E636F6D6D656E74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F0000000500000002000000000000002001000000000000200100000000000044000000000000000300000000000000080000000000000004000000000000000B000000F6FFFF6F0200000000000000680100000000000068010000000000005000000000000000030000000000000008000000000000000000000000000000150000000B0000000200000000000000B801000000000000B80100000000000020010000000000000400000001000000080000000000000018000000000000001D000000030000000200000000000000D802000000000000D802000000000000720000000000000000000000000000000100000000000000000000000000000025000000FFFFFF6F02000000000000004A030000000000004A03000000000000180000000000000003000000000000000200000000000000020000000000000032000000FDFFFF6F020000000000000068030000000000006803000000000000380000000000000004000000020000000800000000000000000000000000000041000000060000000300000000000000A003000000000000A00300000000000010010000000000000400000000000000080000000000000010000000000000004A000000070000000200000000000000B004000000000000B004000000000000680000000000000000000000000000000400000000000000000000000000000050000000010000000200000000000000180500000000000018050000000000003C000000000000000000000000000000040000000000000000000000000000005E000000010000000200000000000000580500000000000058050000000000000401000000000000000000000000000008000000000000000000000000000000680000000100000006000000000000006006000000000000600600000000000035030000000000000000000000000000100000000000000000000000000000006E000000010000000200000000000000950900000000000095090000000000005B000000000000000000000000000000010000000000000000000000000000007F000000010000000600000000000000F009000000000000F0090000000000001C000000000000000000000000000000010000000000000000000000000000009500000001000000300000000000000000000000000000000C0A0000000000002C00000000000000000000000000000001000000000000000100000000000000010000000300000000000000000000000000000000000000380A0000000000009E000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - - Start of Memory Range: 0xFFFFFFFFFF600000 - Content: 48C7C0600000000F05C3CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC48C7C0C90000000F05C3CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC48C7C0350100000F05C3CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC + - Start of Memory Range: 0x7FFFFFFFD420 + Content: 0000C000000000000000C0000000000000010000000000000000C0000000000040000000000000001000000000000000000008000000000029018C2100000000170000000000000000000000000000000000000000000000000000000000000017000000310000000000000000000000B0D4FFFFFF7F00000000000000000000E0D4FFFFFF7F0000CB515555555500000000000000001440000000000000144000000000000039400000000000003E40F8D5FFFFFF7F000001000000000000000100000000000000A8ACDDF7FF7F0000E0D5FFFFFF7F000080515555555500004040555501000000F8D5FFFFFF7F0000F8D5FFFFFF7F00005002D40952A1CA98000000000000000008D6FFFFFF7F000000D0FFF7FF7F0000D87D555555550000500236A0AD5E356750021651E94E3567000000000000000000000000000000000000000000000000F8D5FFFFFF7F00000100000000000000007B97470D7B2415F0D5FFFFFF7F000065ADDDF7FF7F00008051555555550000D87D55555555000010E3FFF7FF7F0000000000000000000000000000000000005050555555550000F0D5FFFFFF7F0000000000000000000000000000000000007150555555550000E8D5FFFFFF7F00003800000000000000010000000000000079D9FFFFFF7F0000000000000000000084D9FFFFFF7F0000B3D9FFFFFF7F0000D3D9FFFFFF7F000002DAFFFFFF7F000010DAFFFFFF7F000030DAFFFFFF7F00003FDAFFFFFF7F0000BCE1FFFFFF7F0000DAE1FFFFFF7F000000E2FFFFFF7F000010E2FFFFFF7F000048E2FFFFFF7F000055E2FFFFFF7F000078E2FFFFFF7F00008BE2FFFFFF7F00009EE2FFFFFF7F0000CFE2FFFFFF7F0000FEE2FFFFFF7F00003CE3FFFFFF7F00006DE3FFFFFF7F00007DE3FFFFFF7F0000B9E3FFFFFF7F0000ECE3FFFFFF7F000003E4FFFFFF7F000083E4FFFFFF7F000098E4FFFFFF7F0000BBE4FFFFFF7F0000F2E4FFFFFF7F000086EAFFFFFF7F00008EEAFFFFFF7F0000C1EAFFFFFF7F0000E3EAFFFFFF7F000014EBFFFFFF7F000071EBFFFFFF7F000085EBFFFFFF7F0000BAEBFFFFFF7F0000CAEBFFFFFF7F0000E6EBFFFFFF7F00003EECFFFFFF7F00009CECFFFFFF7F0000B1ECFFFFFF7F0000E2ECFFFFFF7F000019EDFFFFFF7F000048EDFFFFFF7F000079EDFFFFFF7F00008AEDFFFFFF7F0000B4EDFFFFFF7F0000E9EDFFFFFF7F00000AEEFFFFFF7F000037EEFFFFFF7F00006CEEFFFFFF7F0000AEEEFFFFFF7F0000BAEEFFFFFF7F0000F1EEFFFFFF7F000008EFFFFFFF7F000033EFFFFFFF7F000062EFFFFFFF7F00008CEFFFFFFF7F0000B0EFFFFFFF7F0000000000000000000021000000000000000050FCF7FF7F00003300000000000000F0060000000000001000000000000000FFFB8B17000000000600000000000000001000000000000011000000000000006400000000000000030000000000000040405555555500000400000000000000380000000000000005000000000000000E0000000000000007000000000000000070FCF7FF7F000008000000000000000000000000000000090000000000000050505555555500000B0000000000000014A00700000000000C0000000000000014A00700000000000D00000000000000535F0100000000000E00000000000000535F01000000000017000000000000000000000000000000190000000000000059D9FFFFFF7F00001A0000000000000002000000000000001F00000000000000EDEFFFFFFF7F00000F0000000000000069D9FFFFFF7F00001B000000000000001C000000000000001C0000000000000020000000000000000000000000000000000000000000000000C27B97470D7B2415EB04A950654C28017838365F3634000000000000000000002F746D702F612E6F757400434C4F554453444B5F434F4E544558545F41574152455F5553455F4543505F485454505F50524F58593D74727565004C4553534F50454E3D7C202F7573722F62696E2F6C6573737069706520257300424153485F46554E435F6E706D25253D2829207B20202F7573722F62696E2F67706B67206E706D20222440220A7D005253594E435F5253483D73736800504152494E49543D72546267715220423D2E3F5F415F6120513D5F733E7C3A004D4F54445F53484F574E3D70616D004C535F434F4C4F52533D72733D303A64693D30313B33343A6C6E3D30313B33363A6D683D30303A70693D34303B33333A736F3D30313B33353A646F3D30313B33353A62643D34303B33333B30313A63643D34303B33333B30313A6F723D34303B33313B30313A6D693D30303A73753D33373B34313A73673D33303B34333A63613D30303A74773D33303B34323A6F773D33343B34323A73743D33373B34343A65783D30313B33323A2A2E377A3D30313B33313A2A2E6163653D30313B33313A2A2E616C7A3D30313B33313A2A2E61706B3D30313B33313A2A2E6172633D30313B33313A2A2E61726A3D30313B33313A2A2E627A3D30313B33313A2A2E627A323D30313B33313A2A2E6361623D30313B33313A2A2E6370696F3D30313B33313A2A2E63726174653D30313B33313A2A2E6465623D30313B33313A2A2E6472706D3D30313B33313A2A2E64776D3D30313B33313A2A2E647A3D30313B33313A2A2E6561723D30313B33313A2A2E6567673D30313B33313A2A2E6573643D30313B33313A2A2E677A3D30313B33313A2A2E6A61723D30313B33313A2A2E6C68613D30313B33313A2A2E6C727A3D30313B33313A2A2E6C7A3D30313B33313A2A2E6C7A343D30313B33313A2A2E6C7A683D30313B33313A2A2E6C7A6D613D30313B33313A2A2E6C7A6F3D30313B33313A2A2E70797A3D30313B33313A2A2E7261723D30313B33313A2A2E72706D3D30313B33313A2A2E727A3D30313B33313A2A2E7361723D30313B33313A2A2E73776D3D30313B33313A2A2E74377A3D30313B33313A2A2E7461723D30313B33313A2A2E74617A3D30313B33313A2A2E74627A3D30313B33313A2A2E74627A323D30313B33313A2A2E74677A3D30313B33313A2A2E746C7A3D30313B33313A2A2E74787A3D30313B33313A2A2E747A3D30313B33313A2A2E747A6F3D30313B33313A2A2E747A73743D30313B33313A2A2E756465623D30313B33313A2A2E7761723D30313B33313A2A2E77686C3D30313B33313A2A2E77696D3D30313B33313A2A2E787A3D30313B33313A2A2E7A3D30313B33313A2A2E7A69703D30313B33313A2A2E7A6F6F3D30313B33313A2A2E7A73743D30313B33313A2A2E617669663D30313B33353A2A2E6A70673D30313B33353A2A2E6A7065673D30313B33353A2A2E6A786C3D30313B33353A2A2E6D6A70673D30313B33353A2A2E6D6A7065673D30313B33353A2A2E6769663D30313B33353A2A2E626D703D30313B33353A2A2E70626D3D30313B33353A2A2E70676D3D30313B33353A2A2E70706D3D30313B33353A2A2E7467613D30313B33353A2A2E78626D3D30313B33353A2A2E78706D3D30313B33353A2A2E7469663D30313B33353A2A2E746966663D30313B33353A2A2E706E673D30313B33353A2A2E7376673D30313B33353A2A2E7376677A3D30313B33353A2A2E6D6E673D30313B33353A2A2E7063783D30313B33353A2A2E6D6F763D30313B33353A2A2E6D70673D30313B33353A2A2E6D7065673D30313B33353A2A2E6D32763D30313B33353A2A2E6D6B763D30313B33353A2A2E7765626D3D30313B33353A2A2E776562703D30313B33353A2A2E6F676D3D30313B33353A2A2E6D70343D30313B33353A2A2E6D34763D30313B33353A2A2E6D7034763D30313B33353A2A2E766F623D30313B33353A2A2E71743D30313B33353A2A2E6E75763D30313B33353A2A2E776D763D30313B33353A2A2E6173663D30313B33353A2A2E726D3D30313B33353A2A2E726D76623D30313B33353A2A2E666C633D30313B33353A2A2E6176693D30313B33353A2A2E666C693D30313B33353A2A2E666C763D30313B33353A2A2E676C3D30313B33353A2A2E646C3D30313B33353A2A2E7863663D30313B33353A2A2E7877643D30313B33353A2A2E7975763D30313B33353A2A2E63676D3D30313B33353A2A2E656D663D30313B33353A2A2E6F67763D30313B33353A2A2E6F67783D30313B33353A2A2E6161633D30303B33363A2A2E61753D30303B33363A2A2E666C61633D30303B33363A2A2E6D34613D30303B33363A2A2E6D69643D30303B33363A2A2E6D6964693D30303B33363A2A2E6D6B613D30303B33363A2A2E6D70333D30303B33363A2A2E6D70633D30303B33363A2A2E6F67673D30303B33363A2A2E72613D30303B33363A2A2E7761763D30303B33363A2A2E6F67613D30303B33363A2A2E6F7075733D30303B33363A2A2E7370783D30303B33363A2A2E787370663D30303B33363A2A7E3D30303B39303A2A233D30303B39303A2A2E62616B3D30303B39303A2A2E6372646F776E6C6F61643D30303B39303A2A2E64706B672D646973743D30303B39303A2A2E64706B672D6E65773D30303B39303A2A2E64706B672D6F6C643D30303B39303A2A2E64706B672D746D703D30303B39303A2A2E6F6C643D30303B39303A2A2E6F7269673D30303B39303A2A2E706172743D30303B39303A2A2E72656A3D30303B39303A2A2E72706D6E65773D30303B39303A2A2E72706D6F7269673D30303B39303A2A2E72706D736176653D30303B39303A2A2E7377703D30303B39303A2A2E746D703D30303B39303A2A2E7563662D646973743D30303B39303A2A2E7563662D6E65773D30303B39303A2A2E7563662D6F6C643D30303B39303A00534B5F5349474E494E475F504C5547494E3D676E756262796167656E7400474F4F474C455F434C4F55445F44495341424C455F4449524543545F504154483D74727565005F3D2F7573722F62696E2F6C6C646200444255535F53455353494F4E5F4255535F414444524553533D756E69783A706174683D2F72756E2F757365722F3439393733322F62757300555345523D6861726A6F686E005353485F434C49454E543D3137322E3235332E33312E323337203437383431203232005034434F4E4649473D2E7034636F6E666967005353485F5454593D2F6465762F7074732F3000424153485F46554E435F7961726E25253D2829207B20202F7573722F62696E2F67706B67207961726E20222440220A7D00424153485F46554E435F6E707825253D2829207B20202F7573722F62696E2F67706B67206E707820222440220A7D0050344D455247453D2F676F6F676C652F7372632F66696C65732F686561642F6465706F742F656E672F706572666F7263652F6D6572676570342E74636C00424153485F46554E435F706E706D25253D2829207B20202F7573722F62696E2F67706B6720706E706D20222440220A7D004C4F474E414D453D6861726A6F686E00434C4F554453444B5F434F4E5441494E45525F5553455F4150504C49434154494F4E5F44454641554C545F43524544454E5449414C533D7472756500424153485F46554E435F686174636825253D2829207B20202F7573722F62696E2F67706B6720686174636820222440220A7D0048495354434F4E54524F4C3D69676E6F72656475707300504154483D2F7573722F6C69622F676F6F676C652D676F6C616E672F62696E3A2F7573722F6C6F63616C2F6275696C64746F6F6C732F6A6176612F6A646B2F62696E3A2F7573722F6C6F63616C2F7362696E3A2F7573722F6C6F63616C2F62696E3A2F7573722F7362696E3A2F7573722F62696E3A2F7362696E3A2F62696E005844475F53455353494F4E5F49443D6339303334005057443D2F7573722F6C6F63616C2F676F6F676C652F686F6D652F6861726A6F686E00424153485F46554E435F7961726E706B6725253D2829207B20202F7573722F62696E2F67706B67207961726E706B6720222440220A7D005353485F415554485F4B45593D65636473612D736861322D6E697374703235362D636572742D763031406F70656E7373682E636F6D20414141414B47566A5A484E684C584E6F59544974626D6C7A644841794E54597459325679644331324D4446416233426C626E4E7A6143356A623230414141416747477568656C4D7545582B357530682B61516D78456E366B6A50433075574E47494C2B793543766B314F6F4141414149626D6C7A644841794E545941414142424250415938413859644E6A6770617A733930786C70703835623231517841416D6C446A384432444A386976546B7648434B676748742F6759495A32306B6A70665A7142644F6C7437385A6C5674725A42453872344D2B385A4141414145414A7A38774141414145414141415861474679616D396F626B426A62334A774C6D6476623264735A53356A62323041414141644141414142326868636D7076614734414141414F5A3239765A32786C58476868636D70766147344141414141615A335A42514141414142706E764E784141414141414141414D77414141415959325679644331745A5852685A4746305955426E6232396E6247557559323974414141414B67414141435949415249677755464C345761352B4368396B4D7047676F4A764F4F4C5747456E75417759724C5073445A4265427576496742674141414256775A584A7461585174574445784C575A76636E6468636D5270626D634141414141414141414633426C636D3170644331685A3256756443316D62334A3359584A6B6157356E414141414141414141425A775A584A7461585174634739796443316D62334A3359584A6B6157356E4141414141414141414170775A584A7461585174634852354141414141414141414135775A584A746158517464584E6C6369317959774141414141414141414141414142467741414141647A63326774636E4E6841414141417745414151414141514541764E305A533562314F5A59746F4A3150534B59344749776A69733169347A5A5A324D42644E2F544559714A494F56736641746B447268433959475356757961692F6B4F58774C4C6E4663356456445257484C4453427A6F5845676C34514B436D4E75396E6E65562F634D4C4571346430336F3144504F535051474A44712B776570344B3948755277767A6F673677544441354B70306C6F436E5759384D4854627434532F4F32526F356D76463078306563397663637757314B4F74632F4379645169476D6576425A4F514F795874385A435A4B4574534F5449506841453535574B386167744D45734A6C485274637377536732424A4E4A4D5365554B674C31416E2F6F434539624B414D452F7A585659564B354675763465707163636E6433735157325438716E694F4963454449346F796244656A6D3647385650772F707869655350626146476674754C79522F72485335324F68774141415251414141414D636E4E684C584E6F595449744D6A55324141414241477A374C6357654478443770523942723178684E624A73317345744B4D7257736C65775657692F56356A34647A3268484C64384B6C57753467746367356A767370793876594E58454950576C47683037745953695744575869444D575562765544314E514F794E345548686B595576574F2B647A372B4C71776C7A574D515A38796958775234714E4A666B343070666F65424B59384E71726E776A4B52724173446E53656E4B544B4E6F646A73666E684B5A4839784C566663456F544764674831364375625947396C31666D65613750724D37714F7250554F6E6B4B565548736F6475766A6F72475A335063476258536176646E7A467836446A6251726D514462523638794F68675939746A77426B4A70627048345845452F612F777257336833595A656D59644536353063574C5364744447366444667476313148384B4B49306B477949554B52513377483367547531546D38736B3D0A0053484C564C3D3100434C4F554453444B5F434F4E544558545F41574152455F5553455F434C49454E545F43455254494649434154453D74727565004C455353434C4F53453D2F7573722F62696E2F6C6573737069706520257320257300424153485F46554E435F7069703325253D2829207B20202F7573722F62696E2F67706B67207069703320222440220A7D005353485F415554485F534F434B3D2F7573722F6C6F63616C2F676F6F676C652F686F6D652F6861726A6F686E2F2E7373682F6167656E742F732E3230524D6B6F466350352E737368642E333630383034322E63614837725067566563005445524D3D787465726D2D323536636F6C6F7200424153485F46554E435F706F6574727925253D2829207B20202F7573722F62696E2F67706B6720706F6574727920222440220A7D005348454C4C3D2F62696E2F6261736800434C4F554453444B5F494E5445524E414C5F555345523D7472756500434C4F554453444B5F434F4E544558545F41574152455F43455254494649434154455F434F4E4649475F46494C455F504154483D2F6574632F67636C6F75642F63657274696669636174655F636F6E6669672E6A736F6E004348524F4D455F52454D4F54455F4445534B544F505F44454641554C545F4445534B544F505F53495A45533D3136303078313230302C3338343078323136302C3338343078323536302C3531323078313434302C323136307833383430005844475F53455353494F4E5F545950453D74747900424153485F46554E435F706E707825253D2829207B20202F7573722F62696E2F67706B6720706E707820222440220A7D00424153485F46554E435F707974686F6E3325253D2829207B20202F7573722F62696E2F67706B6720707974686F6E3320222440220A7D00424153485F46554E435F70697025253D2829207B20202F7573722F62696E2F67706B672070697020222440220A7D00424153485F46554E435F7069707825253D2829207B20202F7573722F62696E2F67706B67207069707820222440220A7D004C414E473D656E5F55532E5554462D38005832305F484F4D453D2F676F6F676C652F646174612F72772F75736572732F68612F6861726A6F686E005353485F434F4E4E454354494F4E3D3137322E3235332E33312E323337203437383431203137322E32382E35372E313037203232005844475F52554E54494D455F4449523D2F72756E2F757365722F34393937333200424153485F46554E435F757625253D2829207B20202F7573722F62696E2F67706B6720757620222440220A7D00424153485F46554E435F707974686F6E25253D2829207B20202F7573722F62696E2F67706B6720707974686F6E20222440220A7D00474F4F474C455F4150495F43455254494649434154455F434F4E4649473D2F6574632F67636C6F75642F63657274696669636174655F636F6E6669672E6A736F6E004356535F5253483D73736800505954484F4E504154483D2F7573722F6C6F63616C2F6275696C64746F6F6C732F63757272656E742F73697465637573746F6D697A65005844475F53455353494F4E5F434C4153533D7573657200474F4F474C455F415554485F574542415554484E5F504C5547494E3D67636C6F7564776562617574686E00424153485F46554E435F70646D25253D2829207B20202F7573722F62696E2F67706B672070646D20222440220A7D0053545245414D5A5F534552564552533D5B323030313A343836303A663830323A3A37385D3A3935333000484F4D453D2F7573722F6C6F63616C2F676F6F676C652F686F6D652F6861726A6F686E005844475F444154415F444952533D2F7573722F73686172652F676E6F6D653A2F7573722F6C6F63616C2F73686172652F3A2F7573722F73686172652F002F746D702F612E6F7574000000000000000000 + - Type: Memory64List + Memory Ranges: + - Start of Memory Range: 0x555555557000 + Content: 01000200000000000000000000001440000000000000144000000000000039400000000000003E406672616D655F617265613A2025660A00011B033B3400000005000000E8EFFFFF8000000008F0FFFFA800000018F0FFFF5000000008F1FFFFC000000048F1FFFFE0000000000000001400000000000000017A5200017810011B0C070890010710140000001C000000C0EFFFFF2200000000000000000000001400000000000000017A5200017810011B0C070890010000240000001C00000060EFFFFF20000000000E10460E184A0F0B770880003F1A3B2A33242200000000140000004400000058EFFFFF0800000000000000000000001C0000005C00000040F0FFFF3700000000410E108602430D06720C07080000001C0000007C00000060F0FFFF6100000000410E108602430D06025C0C0708000000000000040000001000000001000000474E55000000000003000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003051555555550000F050555555550000010000000000000029000000000000000C0000000000000000100000000000000D00000000000000E4110000000000001900000000000000D03D0000000000001B0000000000000008000000000000001A00000000000000D83D0000000000001C000000000000000800000000000000F5FEFF6F00000000B043555555550000050000000000000080445555555500000600000000000000D8435555555500000A000000000000008F000000000000000B000000000000001800000000000000150000000000000078DBFFF7FF7F00000300000000000000E87F555555550000020000000000000018000000000000001400000000000000070000000000000017000000000000001046555555550000070000000000000050455555555500000800000000000000C00000000000000009000000000000001800000000000000FBFFFF6F000000000000000800000000FEFFFF6F000000002005000000000000FFFFFF6F000000000100000000000000F0FFFF6F000000001045555555550000F9FFFF6F0000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0ACDDF7FF7F0000000000000000000000000000000000000000000000000000F02BDFF7FF7F0000E03D00000000000010E3FFF7FF7F00001096FDF7FF7F0000 + - Start of Memory Range: 0x7FFFF7DAE000 + Content: 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C093F9F7FF7F00004007FAF7FF7F00000000000000000000E0F9F3F7FF7F0000E0FFF3F7FF7F0000E008F4F7FF7F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040E7DAF7FF7F0000E0F0DAF7FF7F000040E7DAF7FF7F000000000000000000000000000000000000007B97470D7B2415EB04A950654C280100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010DBFFF7FF7F000010DBFFF7FF7F0000A72D37000000000020EADAF7FF7F000020EADAF7FF7F0000E0FFFFFFFFFFFFFF0000000000000000000000000000000010D5FFFFFF7F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050EADAF7FF7F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F0D5FFFFFF7F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0DAF7FF7F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F00000000000000000000000000000001000000000000000000000000000000B8E6DAF7FF7F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010DBF7FF7F0000786EFAF7FF7F000060D1FBF7FF7F0000E040F6F7FF7F00000050FCF7FF7F00001768FCF7FF7F0000F0E8FFF7FF7F00008457FCF7FF7F00000070FCF7FF7F000010E3FFF7FF7F0000A0DDFFF7FF7F00005864FFF7FF7F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ... diff --git a/lldb/unittests/DAP/Inputs/linux-x86_64.out.yaml b/lldb/unittests/DAP/Inputs/linux-x86_64.out.yaml index b374c57693a4b..bf8a046337715 100644 --- a/lldb/unittests/DAP/Inputs/linux-x86_64.out.yaml +++ b/lldb/unittests/DAP/Inputs/linux-x86_64.out.yaml @@ -1,148 +1,618 @@ +# $ cat sample.c +# #include +# +# struct rect { +# double x, y, height, width; +# }; +# +# double frame_area(struct rect *rect) { +# if (!rect) return 0; +# return rect->height * rect->width; +# } +# +# int main(int argc, char**argv) { +# struct rect frame = {5, 5, 25, 30}; +# printf("frame_area: %f\n", frame_area(&frame)); +# return 0; +# } --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB - Type: ET_EXEC + Type: ET_DYN Machine: EM_X86_64 - Entry: 0x400144 + Entry: 0x1050 ProgramHeaders: + - Type: PT_PHDR + Flags: [ PF_R ] + VAddr: 0x40 + Align: 0x8 + Offset: 0x40 + - Type: PT_INTERP + Flags: [ PF_R ] + FirstSec: .interp + LastSec: .interp + VAddr: 0x394 + Offset: 0x394 - Type: PT_LOAD - Flags: [ PF_X, PF_R ] - FirstSec: .note.gnu.build-id - LastSec: .eh_frame - VAddr: 0x400000 - Align: 0x200000 + Flags: [ PF_R ] + FirstSec: .note.gnu.property + LastSec: .rela.plt + Align: 0x1000 Offset: 0x0 + - Type: PT_LOAD + Flags: [ PF_X, PF_R ] + FirstSec: .init + LastSec: .fini + VAddr: 0x1000 + Align: 0x1000 + Offset: 0x1000 + - Type: PT_LOAD + Flags: [ PF_R ] + FirstSec: .rodata + LastSec: .note.ABI-tag + VAddr: 0x2000 + Align: 0x1000 + Offset: 0x2000 + - Type: PT_LOAD + Flags: [ PF_W, PF_R ] + FirstSec: .init_array + LastSec: .bss + VAddr: 0x3DD0 + Align: 0x1000 + Offset: 0x2DD0 + - Type: PT_DYNAMIC + Flags: [ PF_W, PF_R ] + FirstSec: .dynamic + LastSec: .dynamic + VAddr: 0x3DE0 + Align: 0x8 + Offset: 0x2DE0 + - Type: PT_NOTE + Flags: [ PF_R ] + FirstSec: .note.gnu.property + LastSec: .note.gnu.property + VAddr: 0x350 + Align: 0x8 + Offset: 0x350 - Type: PT_NOTE Flags: [ PF_R ] FirstSec: .note.gnu.build-id LastSec: .note.gnu.build-id - VAddr: 0x4000E8 + VAddr: 0x370 + Align: 0x4 + Offset: 0x370 + - Type: PT_NOTE + Flags: [ PF_R ] + FirstSec: .note.ABI-tag + LastSec: .note.ABI-tag + VAddr: 0x213C Align: 0x4 - Offset: 0xE8 + Offset: 0x213C + - Type: PT_GNU_PROPERTY + Flags: [ PF_R ] + FirstSec: .note.gnu.property + LastSec: .note.gnu.property + VAddr: 0x350 + Align: 0x8 + Offset: 0x350 + - Type: PT_GNU_EH_FRAME + Flags: [ PF_R ] + FirstSec: .eh_frame_hdr + LastSec: .eh_frame_hdr + VAddr: 0x2038 + Align: 0x4 + Offset: 0x2038 - Type: PT_GNU_STACK Flags: [ PF_W, PF_R ] Align: 0x10 Offset: 0x0 + - Type: PT_GNU_RELRO + Flags: [ PF_R ] + FirstSec: .init_array + LastSec: .got + VAddr: 0x3DD0 + Offset: 0x2DD0 Sections: + - Name: .note.gnu.property + Type: SHT_NOTE + Flags: [ SHF_ALLOC ] + Address: 0x350 + AddressAlign: 0x8 + Notes: + - Name: GNU + Desc: 028000C0040000000100000000000000 + Type: NT_GNU_PROPERTY_TYPE_0 - Name: .note.gnu.build-id Type: SHT_NOTE Flags: [ SHF_ALLOC ] - Address: 0x4000E8 + Address: 0x370 AddressAlign: 0x4 Notes: - Name: GNU - Desc: 01DF54A6045E657D3F8FFB9CE111878914F8BD6D + Desc: 768D260BD4FC15E892AAC361C910DF78AC15E194 Type: NT_PRPSINFO + - Name: .interp + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC ] + Address: 0x394 + AddressAlign: 0x1 + Content: 2F6C696236342F6C642D6C696E75782D7838362D36342E736F2E3200 + - Name: .gnu.hash + Type: SHT_GNU_HASH + Flags: [ SHF_ALLOC ] + Address: 0x3B0 + Link: .dynsym + AddressAlign: 0x8 + Header: + SymNdx: 0x6 + Shift2: 0x6 + BloomFilter: [ 0x810000 ] + HashBuckets: [ 0x6, 0x0 ] + HashValues: [ 0x6DCE65D1 ] + - Name: .dynsym + Type: SHT_DYNSYM + Flags: [ SHF_ALLOC ] + Address: 0x3D8 + Link: .dynstr + AddressAlign: 0x8 + - Name: .dynstr + Type: SHT_STRTAB + Flags: [ SHF_ALLOC ] + Address: 0x480 + AddressAlign: 0x1 + - Name: .gnu.version + Type: SHT_GNU_versym + Flags: [ SHF_ALLOC ] + Address: 0x510 + Link: .dynsym + AddressAlign: 0x2 + Entries: [ 0, 2, 1, 3, 1, 1, 3 ] + - Name: .gnu.version_r + Type: SHT_GNU_verneed + Flags: [ SHF_ALLOC ] + Address: 0x520 + Link: .dynstr + AddressAlign: 0x8 + Dependencies: + - Version: 1 + File: libc.so.6 + Entries: + - Name: GLIBC_2.2.5 + Hash: 157882997 + Flags: 0 + Other: 3 + - Name: GLIBC_2.34 + Hash: 110530996 + Flags: 0 + Other: 2 + - Name: .rela.dyn + Type: SHT_RELA + Flags: [ SHF_ALLOC ] + Address: 0x550 + Link: .dynsym + AddressAlign: 0x8 + Relocations: + - Offset: 0x3DD0 + Type: R_X86_64_RELATIVE + Addend: 4400 + - Offset: 0x3DD8 + Type: R_X86_64_RELATIVE + Addend: 4336 + - Offset: 0x4010 + Type: R_X86_64_RELATIVE + Addend: 16400 + - Offset: 0x3FC0 + Symbol: __libc_start_main + Type: R_X86_64_GLOB_DAT + - Offset: 0x3FC8 + Symbol: _ITM_deregisterTMCloneTable + Type: R_X86_64_GLOB_DAT + - Offset: 0x3FD0 + Symbol: __gmon_start__ + Type: R_X86_64_GLOB_DAT + - Offset: 0x3FD8 + Symbol: _ITM_registerTMCloneTable + Type: R_X86_64_GLOB_DAT + - Offset: 0x3FE0 + Symbol: __cxa_finalize + Type: R_X86_64_GLOB_DAT + - Name: .rela.plt + Type: SHT_RELA + Flags: [ SHF_ALLOC, SHF_INFO_LINK ] + Address: 0x610 + Link: .dynsym + AddressAlign: 0x8 + Info: .got.plt + Relocations: + - Offset: 0x4000 + Symbol: printf + Type: R_X86_64_JUMP_SLOT + - Name: .init + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + Address: 0x1000 + AddressAlign: 0x4 + Offset: 0x1000 + Content: 4883EC08488B05C52F00004885C07402FFD04883C408C3 + - Name: .plt + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + Address: 0x1020 + AddressAlign: 0x10 + EntSize: 0x10 + Content: FF35CA2F0000FF25CC2F00000F1F4000FF25CA2F00006800000000E9E0FFFFFF + - Name: .plt.got + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + Address: 0x1040 + AddressAlign: 0x8 + EntSize: 0x8 + Content: FF259A2F00006690 - Name: .text Type: SHT_PROGBITS Flags: [ SHF_ALLOC, SHF_EXECINSTR ] - Address: 0x40010C - AddressAlign: 0x1 - Content: 554889E548897DE8C645FF62488B45E8C6002F5DC3554889E54883EC2048897DE8488975E0C645FF66488B55E8488B45E04889D7FFD0C9C3554889E54883EC10C645FF5FBE0C014000BF00000000E8C2FFFFFFC9C3 + Address: 0x1050 + AddressAlign: 0x10 + Content: 31ED4989D15E4889E24883E4F050544531C031C9488D3D15010000FF154F2F0000F4662E0F1F8400000000000F1F4000488D3D912F0000488D058A2F00004839F87415488B052E2F00004885C07409FFE00F1F8000000000C30F1F8000000000488D3D612F0000488D355A2F00004829FE4889F048C1EE3F48C1F8034801C648D1FE7414488B05FD2E00004885C07408FFE0660F1F440000C30F1F8000000000F30F1EFA803D1D2F000000752B5548833DDA2E0000004889E5740C488B3DFE2E0000E829FFFFFFE864FFFFFFC605F52E0000015DC30F1F00C30F1F8000000000F30F1EFAE977FFFFFF0F1F8000000000554889E548897DF048837DF000750A0F57C0F20F1145F8EB17488B45F0F20F104010488B45F0F20F594018F20F1145F8F20F1045F85DC3660F1F840000000000554889E54883EC30C745FC00000000897DF8488975F0488B056B0E0000488945D0488B05680E0000488945D8488B05650E0000488945E0488B05620E0000488945E8488D7DD0E875FFFFFF488D3D560E0000B001E857FEFFFF31C04883C4305DC3 + - Name: .fini + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + Address: 0x11E4 + AddressAlign: 0x4 + Content: 4883EC084883C408C3 + - Name: .rodata + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC ] + Address: 0x2000 + AddressAlign: 0x8 + Offset: 0x2000 + Content: 01000200000000000000000000001440000000000000144000000000000039400000000000003E406672616D655F617265613A2025660A00 + - Name: .eh_frame_hdr + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC ] + Address: 0x2038 + AddressAlign: 0x4 + Content: 011B033B3400000005000000E8EFFFFF8000000008F0FFFFA800000018F0FFFF5000000008F1FFFFC000000048F1FFFFE0000000 - Name: .eh_frame Type: SHT_PROGBITS Flags: [ SHF_ALLOC ] - Address: 0x400168 + Address: 0x2070 + AddressAlign: 0x8 + Content: 1400000000000000017A5200017810011B0C070890010710140000001C000000C0EFFFFF2200000000000000000000001400000000000000017A5200017810011B0C070890010000240000001C00000060EFFFFF20000000000E10460E184A0F0B770880003F1A3B2A33242200000000140000004400000058EFFFFF0800000000000000000000001C0000005C00000040F0FFFF3700000000410E108602430D06720C07080000001C0000007C00000060F0FFFF6100000000410E108602430D06025C0C0708000000000000 + - Name: .note.ABI-tag + Type: SHT_NOTE + Flags: [ SHF_ALLOC ] + Address: 0x213C + AddressAlign: 0x4 + Notes: + - Name: GNU + Desc: '00000000030000000200000000000000' + Type: NT_VERSION + - Name: .init_array + Type: SHT_INIT_ARRAY + Flags: [ SHF_WRITE, SHF_ALLOC ] + Address: 0x3DD0 + AddressAlign: 0x8 + EntSize: 0x8 + Offset: 0x2DD0 + Content: '3011000000000000' + - Name: .fini_array + Type: SHT_FINI_ARRAY + Flags: [ SHF_WRITE, SHF_ALLOC ] + Address: 0x3DD8 AddressAlign: 0x8 - Content: 1400000000000000017A5200017810011B0C0708900100001C0000001C00000084FFFFFF1500000000410E108602430D06500C07080000001C0000003C00000079FFFFFF2300000000410E108602430D065E0C07080000001C0000005C0000007CFFFFFF1D00000000410E108602430D06580C0708000000 + EntSize: 0x8 + Content: F010000000000000 + - Name: .dynamic + Type: SHT_DYNAMIC + Flags: [ SHF_WRITE, SHF_ALLOC ] + Address: 0x3DE0 + Link: .dynstr + AddressAlign: 0x8 + Entries: + - Tag: DT_NEEDED + Value: 0x29 + - Tag: DT_INIT + Value: 0x1000 + - Tag: DT_FINI + Value: 0x11E4 + - Tag: DT_INIT_ARRAY + Value: 0x3DD0 + - Tag: DT_INIT_ARRAYSZ + Value: 0x8 + - Tag: DT_FINI_ARRAY + Value: 0x3DD8 + - Tag: DT_FINI_ARRAYSZ + Value: 0x8 + - Tag: DT_GNU_HASH + Value: 0x3B0 + - Tag: DT_STRTAB + Value: 0x480 + - Tag: DT_SYMTAB + Value: 0x3D8 + - Tag: DT_STRSZ + Value: 0x8F + - Tag: DT_SYMENT + Value: 0x18 + - Tag: DT_DEBUG + Value: 0x0 + - Tag: DT_PLTGOT + Value: 0x3FE8 + - Tag: DT_PLTRELSZ + Value: 0x18 + - Tag: DT_PLTREL + Value: 0x7 + - Tag: DT_JMPREL + Value: 0x610 + - Tag: DT_RELA + Value: 0x550 + - Tag: DT_RELASZ + Value: 0xC0 + - Tag: DT_RELAENT + Value: 0x18 + - Tag: DT_FLAGS_1 + Value: 0x8000000 + - Tag: DT_VERNEED + Value: 0x520 + - Tag: DT_VERNEEDNUM + Value: 0x1 + - Tag: DT_VERSYM + Value: 0x510 + - Tag: DT_RELACOUNT + Value: 0x3 + - Tag: DT_NULL + Value: 0x0 + - Tag: DT_NULL + Value: 0x0 + - Tag: DT_NULL + Value: 0x0 + - Tag: DT_NULL + Value: 0x0 + - Tag: DT_NULL + Value: 0x0 + - Name: .got + Type: SHT_PROGBITS + Flags: [ SHF_WRITE, SHF_ALLOC ] + Address: 0x3FC0 + AddressAlign: 0x8 + EntSize: 0x8 + Content: '00000000000000000000000000000000000000000000000000000000000000000000000000000000' + - Name: .got.plt + Type: SHT_PROGBITS + Flags: [ SHF_WRITE, SHF_ALLOC ] + Address: 0x3FE8 + AddressAlign: 0x8 + EntSize: 0x8 + Content: E03D000000000000000000000000000000000000000000003610000000000000 + - Name: .data + Type: SHT_PROGBITS + Flags: [ SHF_WRITE, SHF_ALLOC ] + Address: 0x4008 + AddressAlign: 0x8 + Content: '00000000000000001040000000000000' + - Name: .bss + Type: SHT_NOBITS + Flags: [ SHF_WRITE, SHF_ALLOC ] + Address: 0x4018 + AddressAlign: 0x1 + Size: 0x8 - Name: .comment Type: SHT_PROGBITS Flags: [ SHF_MERGE, SHF_STRINGS ] AddressAlign: 0x1 EntSize: 0x1 - Content: 4743433A20285562756E747520342E382E342D327562756E7475317E31342E30342920342E382E3400 + Content: 4743433A202844656269616E2031352E322E302D34292031352E322E300044656269616E20636C616E672076657273696F6E2031392E312E37202831302E312B6275696C64312900 - Name: .debug_info Type: SHT_PROGBITS AddressAlign: 0x1 - Content: EC00000004000000000008011300000001070000003F0000000C01400000000000550000000000000000000000026261720001010C014000000000001500000000000000019C65000000030E00000001016500000002915804460001036B00000002916F0005086B0000000601065800000007666F6F00010721014000000000002300000000000000019CB8000000030E00000001076500000002915803000000000107C300000002915004460001096B00000002916F0008C30000000965000000000508B80000000A51000000010D44014000000000001D00000000000000019C044600010F6B00000002916F0000 + Content: CB000000050001080000000001001D000108000000000000000201A100000008000000022D000000000E02A1000339000000043D0000001000050306010604080707013700000001560500078D000000080291700900079500000000070261000000015607000C91000000080291780E000C91000000080291700F000CC40000000902915010000D9A0000000005060408050805040A9A0000000B092000030C0A8D0000000004000C0B8D0000000004080C0C8D0000000004100C0D8D000000000418000AC90000000A3900000000 - Name: .debug_abbrev Type: SHT_PROGBITS AddressAlign: 0x1 - Content: 011101250E130B030E1B0E1101120710170000022E0103083A0B3B0B271911011207401897421901130000030500030E3A0B3B0B49130218000004340003083A0B3B0B491302180000050F000B0B491300000624000B0B3E0B030E0000072E0103083A0B3B0B271911011207401896421901130000081501271901130000090500491300000A2E013F19030E3A0B3B0B2719110112074018964219000000 + Content: 011101252513050325721710171B25111B12067317000002340049133A0B3B0B02180000030101491300000421004913370B000005240003253E0B0B0B000006240003250B0B3E0B0000072E01111B1206401803253A0B3B0B271949133F190000080500021803253A0B3B0B49130000093400021803253A0B3B0B491300000A0F00491300000B130103250B0B3A0B3B0B00000C0D00032549133A0B3B0B380B000000 - Name: .debug_line Type: SHT_PROGBITS AddressAlign: 0x1 - Content: 3F00000002001D0000000101FB0E0D000101010100000001000001006D61696E2E6300000000000009020C0140000000000013834B7531F34BC931834BE50202000101 + Content: 8C0000000500080037000000010101FB0E0D00010101010000000100000101011F010000000003011F020F051E011F00000000D56EC241486226563655292B9539311D040000090240110000000000001805080A8305070658050E2E050A069F0510064A05195805174A05035805010659060B58050006AE050F0A0859051E022C130503069006D7060B2E0206000101 + - Name: .debug_line_str + Type: SHT_PROGBITS + Flags: [ SHF_MERGE, SHF_STRINGS ] + AddressAlign: 0x1 + EntSize: 0x1 + Content: 2F7573722F6C6F63616C2F676F6F676C652F686F6D652F6861726A6F686E002F746D702F73616D706C652E6300 + - Name: .debug_str_offsets + Type: SHT_PROGBITS + AddressAlign: 0x1 + Content: 4800000005000000000000002A00000038000000570000005C000000700000007B00000082000000870000008B0000009000000092000000940000009B000000A1000000A6000000AB000000 Symbols: - - Name: .note.gnu.build-id - Type: STT_SECTION - Section: .note.gnu.build-id - Value: 0x4000E8 - - Name: .text - Type: STT_SECTION - Section: .text - Value: 0x40010C - - Name: .eh_frame - Type: STT_SECTION - Section: .eh_frame - Value: 0x400168 - - Name: .comment - Type: STT_SECTION - Section: .comment - - Name: .debug_aranges - Type: STT_SECTION - Section: .debug_aranges - - Name: .debug_info - Type: STT_SECTION - Section: .debug_info - - Name: .debug_abbrev - Type: STT_SECTION - Section: .debug_abbrev - - Name: .debug_line - Type: STT_SECTION - Section: .debug_line - - Name: .debug_str - Type: STT_SECTION - Section: .debug_str - - Name: main.c + - Name: Scrt1.o + Type: STT_FILE + Index: SHN_ABS + - Name: __abi_tag + Type: STT_OBJECT + Section: .note.ABI-tag + Value: 0x213C + Size: 0x20 + - Name: crtstuff.c Type: STT_FILE Index: SHN_ABS - - Name: bar + - Name: deregister_tm_clones Type: STT_FUNC Section: .text - Value: 0x40010C - Size: 0x15 - - Name: foo + Value: 0x1080 + - Name: register_tm_clones Type: STT_FUNC Section: .text - Value: 0x400121 - Size: 0x23 + Value: 0x10B0 + - Name: __do_global_dtors_aux + Type: STT_FUNC + Section: .text + Value: 0x10F0 + - Name: completed.0 + Type: STT_OBJECT + Section: .bss + Value: 0x4018 + Size: 0x1 + - Name: __do_global_dtors_aux_fini_array_entry + Type: STT_OBJECT + Section: .fini_array + Value: 0x3DD8 + - Name: frame_dummy + Type: STT_FUNC + Section: .text + Value: 0x1130 + - Name: __frame_dummy_init_array_entry + Type: STT_OBJECT + Section: .init_array + Value: 0x3DD0 + - Name: sample.c + Type: STT_FILE + Index: SHN_ABS + - Name: 'crtstuff.c (1)' + Type: STT_FILE + Index: SHN_ABS + - Name: __FRAME_END__ + Type: STT_OBJECT + Section: .eh_frame + Value: 0x2138 - Type: STT_FILE Index: SHN_ABS + - Name: _DYNAMIC + Type: STT_OBJECT + Section: .dynamic + Value: 0x3DE0 + - Name: __GNU_EH_FRAME_HDR + Section: .eh_frame_hdr + Value: 0x2038 + - Name: _GLOBAL_OFFSET_TABLE_ + Type: STT_OBJECT + Section: .got.plt + Value: 0x3FE8 + - Name: '__libc_start_main@GLIBC_2.34' + Type: STT_FUNC + Binding: STB_GLOBAL + - Name: _ITM_deregisterTMCloneTable + Binding: STB_WEAK + - Name: data_start + Section: .data + Binding: STB_WEAK + Value: 0x4008 + - Name: _edata + Section: .data + Binding: STB_GLOBAL + Value: 0x4018 + - Name: _fini + Type: STT_FUNC + Section: .fini + Binding: STB_GLOBAL + Value: 0x11E4 + Other: [ STV_HIDDEN ] + - Name: 'printf@GLIBC_2.2.5' + Type: STT_FUNC + Binding: STB_GLOBAL + - Name: __data_start + Section: .data + Binding: STB_GLOBAL + Value: 0x4008 + - Name: __gmon_start__ + Binding: STB_WEAK + - Name: __dso_handle + Type: STT_OBJECT + Section: .data + Binding: STB_GLOBAL + Value: 0x4010 + Other: [ STV_HIDDEN ] + - Name: _IO_stdin_used + Type: STT_OBJECT + Section: .rodata + Binding: STB_GLOBAL + Value: 0x2000 + Size: 0x4 + - Name: _end + Section: .bss + Binding: STB_GLOBAL + Value: 0x4020 - Name: _start Type: STT_FUNC Section: .text Binding: STB_GLOBAL - Value: 0x400144 - Size: 0x1D + Value: 0x1050 + Size: 0x22 + - Name: frame_area + Type: STT_FUNC + Section: .text + Binding: STB_GLOBAL + Value: 0x1140 + Size: 0x37 - Name: __bss_start - Section: .eh_frame + Section: .bss Binding: STB_GLOBAL - Value: 0x601000 - - Name: _edata - Section: .eh_frame + Value: 0x4018 + - Name: main + Type: STT_FUNC + Section: .text Binding: STB_GLOBAL - Value: 0x601000 - - Name: _end - Section: .eh_frame + Value: 0x1180 + Size: 0x61 + - Name: __TMC_END__ + Type: STT_OBJECT + Section: .data Binding: STB_GLOBAL - Value: 0x601000 + Value: 0x4018 + Other: [ STV_HIDDEN ] + - Name: _ITM_registerTMCloneTable + Binding: STB_WEAK + - Name: '__cxa_finalize@GLIBC_2.2.5' + Type: STT_FUNC + Binding: STB_WEAK + - Name: _init + Type: STT_FUNC + Section: .init + Binding: STB_GLOBAL + Value: 0x1000 + Other: [ STV_HIDDEN ] +DynamicSymbols: + - Name: __libc_start_main + Type: STT_FUNC + Binding: STB_GLOBAL + - Name: _ITM_deregisterTMCloneTable + Binding: STB_WEAK + - Name: printf + Type: STT_FUNC + Binding: STB_GLOBAL + - Name: __gmon_start__ + Binding: STB_WEAK + - Name: _ITM_registerTMCloneTable + Binding: STB_WEAK + - Name: __cxa_finalize + Type: STT_FUNC + Binding: STB_WEAK DWARF: debug_str: - - boomer - - main.c - - boom - - 'GNU C 4.8.4 -mtune=generic -march=x86-64 -g' - - '/home/labath/test' - - _start + - 'Debian clang version 19.1.7 (10.1+build1)' + - '/tmp/sample.c' + - '/usr/local/google/home/harjohn' - char - debug_aranges: - - Length: 0x2C - Version: 2 - CuOffset: 0x0 + - __ARRAY_SIZE_TYPE__ + - frame_area + - double + - main + - int + - rect + - x + - y + - height + - width + - argc + - argv + - frame + debug_addr: + - Length: 0x1C + Version: 0x5 AddressSize: 0x8 - Descriptors: - - Address: 0x40010C - Length: 0x55 + Entries: + - Address: 0x2028 + - Address: 0x1140 + - Address: 0x1180 ... diff --git a/lldb/unittests/DAP/VariablesTest.cpp b/lldb/unittests/DAP/VariablesTest.cpp index 8a1c9ce2c502f..fdfd2ae3151b6 100644 --- a/lldb/unittests/DAP/VariablesTest.cpp +++ b/lldb/unittests/DAP/VariablesTest.cpp @@ -10,10 +10,17 @@ #include "DAPLog.h" #include "Protocol/DAPTypes.h" #include "Protocol/ProtocolTypes.h" +#include "TestingSupport/TestUtilities.h" +#include "lldb/API/SBDebugger.h" #include "lldb/API/SBFrame.h" +#include "lldb/API/SBThread.h" #include "lldb/API/SBValue.h" +#include "llvm/Testing/Support/Error.h" #include "gtest/gtest.h" +#include +using namespace llvm; +using namespace lldb; using namespace lldb_dap; using namespace lldb_dap::protocol; @@ -22,11 +29,62 @@ class VariablesTest : public ::testing::Test { public: VariablesTest() : log(llvm::nulls(), mutex), vars(log) {} + static void SetUpTestSuite() { + lldb::SBError error = SBDebugger::InitializeWithErrorHandling(); + EXPECT_TRUE(error.Success()); + } + static void TeatUpTestSuite() { SBDebugger::Terminate(); } + + void TearDown() override { + if (core) + ASSERT_THAT_ERROR(core->discard(), Succeeded()); + if (binary) + ASSERT_THAT_ERROR(binary->discard(), Succeeded()); + if (debugger) + debugger.Clear(); + } + protected: enum : bool { Permanent = true, Temporary = false }; Log::Mutex mutex; Log log; VariableReferenceStorage vars; + lldb::SBDebugger debugger; + lldb::SBTarget target; + lldb::SBProcess process; + + static constexpr llvm::StringLiteral k_binary = "linux-x86_64.out.yaml"; + static constexpr llvm::StringLiteral k_core = "linux-x86_64.core.yaml"; + + std::optional core; + std::optional binary; + + void CreateDebugger() { debugger = lldb::SBDebugger::Create(); } + + void LoadCore() { + ASSERT_TRUE(debugger); + + llvm::Expected binary_yaml = + lldb_private::TestFile::fromYamlFile(k_binary); + ASSERT_THAT_EXPECTED(binary_yaml, Succeeded()); + llvm::Expected binary_file = + binary_yaml->writeToTemporaryFile(); + ASSERT_THAT_EXPECTED(binary_file, Succeeded()); + binary = std::move(*binary_file); + target = debugger.CreateTarget(binary->TmpName.data()); + ASSERT_TRUE(target); + debugger.SetSelectedTarget(target); + + llvm::Expected core_yaml = + lldb_private::TestFile::fromYamlFile(k_core); + ASSERT_THAT_EXPECTED(core_yaml, Succeeded()); + llvm::Expected core_file = + core_yaml->writeToTemporaryFile(); + ASSERT_THAT_EXPECTED(core_file, Succeeded()); + this->core = std::move(*core_file); + process = target.LoadCore(this->core->TmpName.data()); + ASSERT_TRUE(process); + } static const protocol::Scope * FindScope(const std::vector &scopes, @@ -40,10 +98,16 @@ class VariablesTest : public ::testing::Test { }; TEST_F(VariablesTest, GetNewVariableReference_UniqueAndRanges) { - const var_ref_t temp1 = vars.InsertVariable(lldb::SBValue(), Temporary); - const var_ref_t temp2 = vars.InsertVariable(lldb::SBValue(), Temporary); - const var_ref_t perm1 = vars.InsertVariable(lldb::SBValue(), Permanent); - const var_ref_t perm2 = vars.InsertVariable(lldb::SBValue(), Permanent); + CreateDebugger(); + LoadCore(); + auto x15 = target.CreateValueFromExpression("x", "15"); + auto y42 = target.CreateValueFromExpression("y", "42"); + auto gzero = target.CreateValueFromExpression("$0", "42"); + auto gone = target.CreateValueFromExpression("$1", "7"); + const var_ref_t temp1 = vars.Insert(x15, Temporary); + const var_ref_t temp2 = vars.Insert(y42, Temporary); + const var_ref_t perm1 = vars.Insert(gzero, Permanent); + const var_ref_t perm2 = vars.Insert(gone, Permanent); EXPECT_NE(temp1.AsUInt32(), temp2.AsUInt32()); EXPECT_NE(perm1.AsUInt32(), perm2.AsUInt32()); EXPECT_LT(temp1.AsUInt32(), perm1.AsUInt32()); @@ -52,7 +116,7 @@ TEST_F(VariablesTest, GetNewVariableReference_UniqueAndRanges) { TEST_F(VariablesTest, InsertAndGetVariable_Temporary) { lldb::SBValue dummy; - const var_ref_t ref = vars.InsertVariable(dummy, Temporary); + const var_ref_t ref = vars.Insert(dummy, Temporary); lldb::SBValue out = vars.GetVariable(ref); EXPECT_EQ(out.IsValid(), dummy.IsValid()); @@ -60,15 +124,15 @@ TEST_F(VariablesTest, InsertAndGetVariable_Temporary) { TEST_F(VariablesTest, InsertAndGetVariable_Permanent) { lldb::SBValue dummy; - const var_ref_t ref = vars.InsertVariable(dummy, Permanent); + const var_ref_t ref = vars.Insert(dummy, Permanent); lldb::SBValue out = vars.GetVariable(ref); EXPECT_EQ(out.IsValid(), dummy.IsValid()); } TEST_F(VariablesTest, IsPermanentVariableReference) { - const var_ref_t perm = vars.InsertVariable(lldb::SBValue(), Permanent); - const var_ref_t temp = vars.InsertVariable(lldb::SBValue(), Temporary); + const var_ref_t perm = vars.Insert(lldb::SBValue(), Permanent); + const var_ref_t temp = vars.Insert(lldb::SBValue(), Temporary); EXPECT_EQ(perm.Kind(), eReferenceKindPermanent); EXPECT_EQ(temp.Kind(), eReferenceKindTemporary); @@ -76,8 +140,8 @@ TEST_F(VariablesTest, IsPermanentVariableReference) { TEST_F(VariablesTest, Clear_RemovesTemporaryKeepsPermanent) { lldb::SBValue dummy; - const var_ref_t temp = vars.InsertVariable(dummy, Temporary); - const var_ref_t perm = vars.InsertVariable(dummy, Permanent); + const var_ref_t temp = vars.Insert(dummy, Temporary); + const var_ref_t perm = vars.Insert(dummy, Permanent); vars.Clear(); EXPECT_FALSE(vars.GetVariable(temp).IsValid()); @@ -85,9 +149,11 @@ TEST_F(VariablesTest, Clear_RemovesTemporaryKeepsPermanent) { } TEST_F(VariablesTest, VariablesStore) { - lldb::SBFrame frame; + CreateDebugger(); + LoadCore(); + lldb::SBFrame frame = process.GetSelectedThread().GetSelectedFrame(); - std::vector scopes = vars.CreateScopes(frame); + std::vector scopes = vars.Insert(frame); const protocol::Scope *locals_scope = FindScope(scopes, "Locals"); const protocol::Scope *globals_scope = FindScope(scopes, "Globals"); @@ -110,17 +176,43 @@ TEST_F(VariablesTest, VariablesStore) { const var_ref_t local_ref = locals_scope->variablesReference; const var_ref_t global_ref = globals_scope->variablesReference; const var_ref_t register_ref = registers_scope->variablesReference; - ASSERT_EQ(global_ref.Kind(), eReferenceKindScope); - ASSERT_EQ(local_ref.Kind(), eReferenceKindScope); - ASSERT_EQ(register_ref.Kind(), eReferenceKindScope); + ASSERT_EQ(global_ref.Kind(), eReferenceKindTemporary); + ASSERT_EQ(local_ref.Kind(), eReferenceKindTemporary); + ASSERT_EQ(register_ref.Kind(), eReferenceKindTemporary); EXPECT_EQ(vars.GetVariableStore(var_ref_t(9999)), nullptr); + + ASSERT_TRUE(vars.FindVariable(local_ref, "rect").IsValid()); + + auto variables = locals_store->GetVariables(vars, {}, {}); + ASSERT_THAT_EXPECTED(variables, Succeeded()); + ASSERT_EQ(variables->size(), 1u); + auto rect = variables->at(0); + ASSERT_EQ(rect.name, "rect"); + + VariablesArguments args; + args.variablesReference = rect.variablesReference; + + auto *store = vars.GetVariableStore(args.variablesReference); + ASSERT_NE(store, nullptr); + + variables = store->GetVariables(vars, {}, args); + ASSERT_THAT_EXPECTED(variables, Succeeded()); + ASSERT_EQ(variables->size(), 4u); + EXPECT_EQ(variables->at(0).name, "x"); + EXPECT_EQ(variables->at(0).value, "5"); + EXPECT_EQ(variables->at(1).name, "y"); + EXPECT_EQ(variables->at(1).value, "5"); + EXPECT_EQ(variables->at(2).name, "height"); + EXPECT_EQ(variables->at(2).value, "25"); + EXPECT_EQ(variables->at(3).name, "width"); + EXPECT_EQ(variables->at(3).value, "30"); } TEST_F(VariablesTest, FindVariable_LocalsByName) { lldb::SBFrame frame; - std::vector scopes = vars.CreateScopes(frame); + std::vector scopes = vars.Insert(frame); const protocol::Scope *locals_scope = FindScope(scopes, "Locals"); ASSERT_NE(locals_scope, nullptr);