{
  "schema": "nodefusion.education-recording/1",
  "course": "2026A",
  "chapter": 5,
  "variant": "basic-observed-v2",
  "run": "rcore-2026A-ch5-basic-observed-v2",
  "html": "rcore-2026A-ch5-basic-observed-v2.html",
  "source": {
    "kernel_commit": "023a5a0885fed8ae999406f17a494777c3e59af1",
    "kernel_patch": "diff --git a/os/src/main.rs b/os/src/main.rs\nindex ccac0c1..ab7a3eb 100644\n--- a/os/src/main.rs\n+++ b/os/src/main.rs\n@@ -38,6 +38,7 @@ pub mod lang_items;\n mod loader;\n pub mod logging;\n pub mod mm;\n+mod nftrace;\n pub mod sbi;\n pub mod sync;\n pub mod syscall;\ndiff --git a/os/src/mm/frame_allocator.rs b/os/src/mm/frame_allocator.rs\nindex 44f20cd..63dc934 100644\n--- a/os/src/mm/frame_allocator.rs\n+++ b/os/src/mm/frame_allocator.rs\n@@ -47,6 +47,7 @@ pub struct StackFrameAllocator {\n     current: usize,\n     end: usize,\n     recycled: Vec<usize>,\n+    allocated: usize,\n }\n \n impl StackFrameAllocator {\n@@ -62,17 +63,22 @@ impl FrameAllocator for StackFrameAllocator {\n             current: 0,\n             end: 0,\n             recycled: Vec::new(),\n+            allocated: 0,\n         }\n     }\n     fn alloc(&mut self) -> Option<PhysPageNum> {\n-        if let Some(ppn) = self.recycled.pop() {\n+        let result = if let Some(ppn) = self.recycled.pop() {\n             Some(ppn.into())\n         } else if self.current == self.end {\n             None\n         } else {\n             self.current += 1;\n             Some((self.current - 1).into())\n+        };\n+        if result.is_some() {\n+            self.allocated += 1;\n         }\n+        result\n     }\n     fn dealloc(&mut self, ppn: PhysPageNum) {\n         let ppn = ppn.0;\n@@ -82,6 +88,13 @@ impl FrameAllocator for StackFrameAllocator {\n         }\n         // recycle\n         self.recycled.push(ppn);\n+        self.allocated -= 1;\n+    }\n+}\n+\n+impl StackFrameAllocator {\n+    fn page_counts(&self) -> (usize, usize) {\n+        (self.end - self.current + self.recycled.len(), self.allocated)\n     }\n }\n \n@@ -101,19 +114,34 @@ pub fn init_frame_allocator() {\n         PhysAddr::from(ekernel as usize).ceil(),\n         PhysAddr::from(MEMORY_END).floor(),\n     );\n+    let (free, used) = FRAME_ALLOCATOR.exclusive_access().page_counts();\n+    crate::nftrace::allocator_state(free, used);\n }\n \n /// Allocate a physical page frame in FrameTracker style\n+#[inline(never)]\n pub fn frame_alloc() -> Option<FrameTracker> {\n-    FRAME_ALLOCATOR\n-        .exclusive_access()\n-        .alloc()\n-        .map(FrameTracker::new)\n+    let (ppn, free, used) = {\n+        let mut allocator = FRAME_ALLOCATOR.exclusive_access();\n+        let ppn = allocator.alloc();\n+        let (free, used) = allocator.page_counts();\n+        (ppn, free, used)\n+    };\n+    let frame = ppn.map(FrameTracker::new);\n+    let pa = frame.as_ref().map_or(0, |frame| PhysAddr::from(frame.ppn).0);\n+    crate::nftrace::page_alloc(pa, free, used);\n+    frame\n }\n \n /// Deallocate a physical page frame with a given ppn\n+#[inline(never)]\n pub fn frame_dealloc(ppn: PhysPageNum) {\n-    FRAME_ALLOCATOR.exclusive_access().dealloc(ppn);\n+    let (free, used) = {\n+        let mut allocator = FRAME_ALLOCATOR.exclusive_access();\n+        allocator.dealloc(ppn);\n+        allocator.page_counts()\n+    };\n+    crate::nftrace::page_free(PhysAddr::from(ppn).0, free, used);\n }\n \n #[allow(unused)]\ndiff --git a/os/src/mm/heap_allocator.rs b/os/src/mm/heap_allocator.rs\nindex e5f8b30..e39a7cc 100644\n--- a/os/src/mm/heap_allocator.rs\n+++ b/os/src/mm/heap_allocator.rs\n@@ -1,10 +1,44 @@\n //! The global allocator\n use crate::config::KERNEL_HEAP_SIZE;\n use buddy_system_allocator::LockedHeap;\n+use core::alloc::{GlobalAlloc, Layout};\n+use core::ops::Deref;\n+\n+struct ObservedHeap(LockedHeap);\n+\n+impl Deref for ObservedHeap {\n+    type Target = LockedHeap;\n+\n+    fn deref(&self) -> &Self::Target {\n+        &self.0\n+    }\n+}\n+\n+unsafe impl GlobalAlloc for ObservedHeap {\n+    #[inline(never)]\n+    unsafe fn alloc(&self, layout: Layout) -> *mut u8 {\n+        GlobalAlloc::alloc(&self.0, layout)\n+    }\n+\n+    #[inline(never)]\n+    unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) {\n+        GlobalAlloc::dealloc(&self.0, ptr, layout)\n+    }\n+\n+    #[inline(never)]\n+    unsafe fn realloc(&self, ptr: *mut u8, layout: Layout, new_size: usize) -> *mut u8 {\n+        GlobalAlloc::realloc(&self.0, ptr, layout, new_size)\n+    }\n+\n+    #[inline(never)]\n+    unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut u8 {\n+        GlobalAlloc::alloc_zeroed(&self.0, layout)\n+    }\n+}\n \n #[global_allocator]\n /// heap allocator instance\n-static HEAP_ALLOCATOR: LockedHeap = LockedHeap::empty();\n+static HEAP_ALLOCATOR: ObservedHeap = ObservedHeap(LockedHeap::empty());\n \n #[alloc_error_handler]\n /// panic when heap allocation error occurs\ndiff --git a/os/src/mm/memory_set.rs b/os/src/mm/memory_set.rs\nindex a36cf74..ba2ea18 100644\n--- a/os/src/mm/memory_set.rs\n+++ b/os/src/mm/memory_set.rs\n@@ -36,6 +36,12 @@ pub struct MemorySet {\n     areas: Vec<MapArea>,\n }\n \n+#[inline(never)]\n+/// Observe a range whose page-table entries are about to be removed.\n+pub fn nodefusion_vm_unmap_region(start_vpn: usize, end_vpn: usize) {\n+    core::hint::black_box((start_vpn, end_vpn));\n+}\n+\n impl MemorySet {\n     /// Create a new empty `MemorySet`.\n     pub fn new_bare() -> Self {\n@@ -90,6 +96,9 @@ impl MemorySet {\n         }\n         if mapped_end != area.vpn_range.get_end() {\n             // Remove successful mappings before dropping the area's data frames.\n+            if mapped_end > area.vpn_range.get_start() {\n+                nodefusion_vm_unmap_region(area.vpn_range.get_start().0, mapped_end.0);\n+            }\n             for vpn in VPNRange::new(area.vpn_range.get_start(), mapped_end) {\n                 self.page_table.unmap(vpn);\n             }\n@@ -115,6 +124,7 @@ impl MemorySet {\n         Some(())\n     }\n     /// remove a area\n+    #[inline(never)]\n     pub fn remove_area_with_start_vpn(&mut self, start_vpn: VirtPageNum) {\n         if let Some((idx, area)) = self\n             .areas\n@@ -129,6 +139,7 @@ impl MemorySet {\n     /// Add a new MapArea into this MemorySet.\n     /// Assuming that there are no conflicts in the virtual address\n     /// space.\n+    #[inline(never)]\n     fn push(&mut self, mut map_area: MapArea, data: Option<&[u8]>) {\n         map_area.map(&mut self.page_table);\n         if let Some(data) = data {\n@@ -416,12 +427,18 @@ impl MapArea {\n         }\n     }\n     pub fn unmap(&mut self, page_table: &mut PageTable) {\n+        if self.vpn_range.get_start() < self.vpn_range.get_end() {\n+            nodefusion_vm_unmap_region(self.vpn_range.get_start().0, self.vpn_range.get_end().0);\n+        }\n         for vpn in self.vpn_range {\n             self.unmap_one(page_table, vpn);\n         }\n     }\n     #[allow(unused)]\n     pub fn shrink_to(&mut self, page_table: &mut PageTable, new_end: VirtPageNum) {\n+        if new_end < self.vpn_range.get_end() {\n+            nodefusion_vm_unmap_region(new_end.0, self.vpn_range.get_end().0);\n+        }\n         for vpn in VPNRange::new(new_end, self.vpn_range.get_end()) {\n             self.unmap_one(page_table, vpn)\n         }\ndiff --git a/os/src/mm/page_table.rs b/os/src/mm/page_table.rs\nindex 875484f..0521401 100644\n--- a/os/src/mm/page_table.rs\n+++ b/os/src/mm/page_table.rs\n@@ -81,6 +81,7 @@ pub struct PageTable {\n /// Assume that it won't oom when creating/mapping.\n impl PageTable {\n     /// Create a new page table\n+    #[inline(never)]\n     pub fn new() -> Self {\n         let frame = frame_alloc().unwrap();\n         PageTable {\n@@ -134,6 +135,7 @@ impl PageTable {\n         result\n     }\n     /// Map a page, returning failure for conflicts or exhausted page table frames.\n+    #[inline(never)]\n     pub fn map(&mut self, vpn: VirtPageNum, ppn: PhysPageNum, flags: PTEFlags) -> Option<()> {\n         let pte = self.find_pte_create(vpn)?;\n         if pte.is_valid() {\ndiff --git a/os/src/nftrace.rs b/os/src/nftrace.rs\nnew file mode 100644\nindex 0000000..933bb39\n--- /dev/null\n+++ b/os/src/nftrace.rs\n@@ -0,0 +1,44 @@\n+//! Stack-backed observation records for the QEMU plugin.\n+\n+pub(crate) const NO_TASK: usize = usize::MAX;\n+\n+#[repr(C)]\n+struct Record {\n+    kind: u64,\n+    args: [u64; 4],\n+}\n+\n+#[no_mangle]\n+#[inline(never)]\n+/// Read an observation record while its stack storage is live.\n+pub extern \"C\" fn nftrace_commit_point(record: *const u64) {\n+    if !record.is_null() {\n+        // The caller keeps this stack record alive until return.\n+        core::hint::black_box(unsafe { core::ptr::read_volatile(record) });\n+    }\n+}\n+\n+fn emit(kind: u64, args: [u64; 4]) {\n+    let record = Record { kind, args };\n+    nftrace_commit_point(&record as *const Record as *const u64);\n+}\n+\n+pub(crate) fn page_alloc(pa: usize, free: usize, used: usize) {\n+    emit(1, [pa as u64, 1, free as u64, used as u64]);\n+}\n+\n+pub(crate) fn page_free(pa: usize, free: usize, used: usize) {\n+    emit(5, [pa as u64, 1, free as u64, used as u64]);\n+}\n+\n+pub(crate) fn allocator_state(free: usize, used: usize) {\n+    emit(6, [free as u64, used as u64, 0, 0]);\n+}\n+\n+pub(crate) fn process_fork(parent: usize, child: usize) {\n+    emit(2, [parent as u64, child as u64, 0, 0]);\n+}\n+\n+pub(crate) fn sched_switch(from_task: usize, to_task: usize, from_pid: usize, to_pid: usize) {\n+    emit(4, [from_task as u64, to_task as u64, from_pid as u64, to_pid as u64]);\n+}\ndiff --git a/os/src/syscall/process.rs b/os/src/syscall/process.rs\nindex 43c9efd..8901a39 100644\n--- a/os/src/syscall/process.rs\n+++ b/os/src/syscall/process.rs\n@@ -53,6 +53,7 @@ pub fn sys_fork() -> isize {\n     trap_cx.x[10] = 0;\n     // add new task to scheduler\n     add_task(new_task);\n+    crate::nftrace::process_fork(current_task.getpid(), new_pid);\n     new_pid as isize\n }\n \ndiff --git a/os/src/task/id.rs b/os/src/task/id.rs\nindex 5a67d4a..534c4b7 100644\n--- a/os/src/task/id.rs\n+++ b/os/src/task/id.rs\n@@ -51,6 +51,7 @@ lazy_static! {\n pub struct PidHandle(pub usize);\n \n impl Drop for PidHandle {\n+    #[inline(never)]\n     fn drop(&mut self) {\n         //println!(\"drop pid {}\", self.0);\n         PID_ALLOCATOR.exclusive_access().dealloc(self.0);\n@@ -85,6 +86,7 @@ pub fn kstack_alloc() -> KernelStack {\n }\n \n impl Drop for KernelStack {\n+    #[inline(never)]\n     fn drop(&mut self) {\n         let (kernel_stack_bottom, _) = kernel_stack_position(self.0);\n         let kernel_stack_bottom_va: VirtAddr = kernel_stack_bottom.into();\ndiff --git a/os/src/task/mod.rs b/os/src/task/mod.rs\nindex 6137842..34e5616 100644\n--- a/os/src/task/mod.rs\n+++ b/os/src/task/mod.rs\n@@ -44,14 +44,18 @@ pub use processor::{\n /// Constraints: Support both yield and timer preemption. Clear the processor's\n /// current slot before scheduling and release all dynamic borrows. Preserve\n /// the process's resources and scheduling attributes; stride is charged by fetch.\n+#[inline(never)]\n pub fn suspend_current_and_run_next() {\n     let task = take_current_task().unwrap();\n+    let task_id = Arc::as_ptr(&task) as usize;\n+    let pid = task.getpid();\n     let mut inner = task.inner_exclusive_access();\n     inner.task_status = TaskStatus::Ready;\n     let task_cx_ptr = &mut inner.task_cx as *mut TaskContext;\n     drop(inner);\n     // The queue keeps the context alive until the processor takes ownership.\n     add_task(task);\n+    processor::trace_to_idle(task_id, pid);\n     schedule(task_cx_ptr);\n }\n \n@@ -70,6 +74,8 @@ pub const IDLE_PID: usize = 0;\n /// Exiting PID 0 terminates the kernel with the existing panic policy.\n pub fn exit_current_and_run_next(exit_code: i32) {\n     let task = take_current_task().unwrap();\n+    let task_id = Arc::as_ptr(&task) as usize;\n+    let pid = task.getpid();\n     if task.getpid() == IDLE_PID {\n         println!(\n             \"[kernel] Idle process exit with exit_code {} ...\",\n@@ -92,6 +98,7 @@ pub fn exit_current_and_run_next(exit_code: i32) {\n     // This stack is abandoned: release our Arc before switching to idle.\n     drop(task);\n     let mut unused_task_cx = TaskContext::zero_init();\n+    processor::trace_to_idle(task_id, pid);\n     schedule(&mut unused_task_cx as *mut TaskContext);\n     panic!(\"An exited process must not be resumed!\");\n }\ndiff --git a/os/src/task/processor.rs b/os/src/task/processor.rs\nindex 64701a3..74c65a6 100644\n--- a/os/src/task/processor.rs\n+++ b/os/src/task/processor.rs\n@@ -68,10 +68,13 @@ pub fn run_tasks() {\n             let mut inner = task.inner_exclusive_access();\n             inner.task_status = TaskStatus::Running;\n             let next_task_cx_ptr = &inner.task_cx as *const TaskContext;\n+            let next_task_id = Arc::as_ptr(&task) as usize;\n+            let next_pid = task.getpid();\n             drop(inner);\n             // Move ownership into current; leave no extra Arc on the idle stack.\n             processor.current = Some(task);\n             drop(processor);\n+            crate::nftrace::sched_switch(idle_task_cx_ptr as usize, next_task_id, crate::nftrace::NO_TASK, next_pid);\n             unsafe {\n                 __switch(idle_task_cx_ptr, next_task_cx_ptr);\n             }\n@@ -89,6 +92,11 @@ pub fn current_task() -> Option<Arc<TaskControlBlock>> {\n     PROCESSOR.exclusive_access().current()\n }\n \n+pub(super) fn trace_to_idle(task_id: usize, pid: usize) {\n+    let idle = PROCESSOR.exclusive_access().get_idle_task_cx_ptr() as usize;\n+    crate::nftrace::sched_switch(task_id, idle, pid, crate::nftrace::NO_TASK);\n+}\n+\n /// Get the current user token(addr of page table)\n pub fn current_user_token() -> usize {\n     let task = current_task().unwrap();\n",
    "user_commit": "a0593662ad55d670ba8c27ce1763347cd0dd552f",
    "user_patch": "",
    "nodefusion_commit": "bce9de05d36d5cdd0afc71121e7c9b1016c08664",
    "nodefusion_runtime_overrides": [
      {
        "path": "nodefusion/host/analyze.py",
        "sha256": "b1c4a595a54058841630ba7b18818688efd00b8085b03ca91767208ec3b499e8",
        "patch": "diff --git a/nodefusion/host/analyze.py b/nodefusion/host/analyze.py\nindex a6ca1e7..31b6599 100644\n--- a/nodefusion/host/analyze.py\n+++ b/nodefusion/host/analyze.py\n@@ -642,6 +642,12 @@ class Analysis:\n         from ..model.manifest import _COMPLETENESS\n         from ..model.snapshot import _completeness\n         got = _completeness(res.sources)[\"completeness\"]\n+        if got == \"total\":\n+            from ..model.resolve import PRESENT\n+            contexts = [field for entity in ents.res.entities if entity.sources\n+                        for field in entity.fields if field.role == \"sched_context\"]\n+            if not any(field.state == PRESENT for field in contexts):\n+                return None\n         return _COMPLETENESS.get(got)\n \n     def _task_by_ctx(self, state_idx: int, ctx: int):\n"
      },
      {
        "path": "nodefusion/host/record.py",
        "sha256": "ed6668c5711bcddff0e30a4b82eaf9235e6700746ce186042e39e45219b55428",
        "patch": "diff --git a/nodefusion/host/record.py b/nodefusion/host/record.py\nindex ac7695e..93323e0 100644\n--- a/nodefusion/host/record.py\n+++ b/nodefusion/host/record.py\n@@ -399,6 +399,10 @@ class Recorder:\n                     f\"内核自己按顺序跑完所有应用，没有地方喂命令。\")\n \n \n+    @property\n+    def interactive_workload(self) -> bool:\n+        return self.profile.interactive and bool(self.cfg.program) and self.cfg.program != NO_PROGRAM\n+\n     def effective_lab_stage(self) -> int | None:\n         if self.cfg.lab_stage is not None:\n             return self.cfg.lab_stage\n@@ -445,8 +449,7 @@ class Recorder:\n                 f\"--no-build：这次没有编译，直接用了现成的 \"\n                 f\"{self.kernel_elf_path}（修改时间 \"\n                 f\"{mt.strftime('%Y-%m-%d %H:%M UTC')}）。\"\n-                \"也就是说**没人验证过这份二进制是当前源码编出来的**；\"\n-                \"它可能是任何时候留下的。ELF 指纹见 kernel_elf_identity。\")\n+                \"ELF 校验和见 kernel_elf_identity。\")\n             return \"(--no-build：跳过构建)\"\n \n         mv = self._make_var_string()\n@@ -571,7 +574,7 @@ class Recorder:\n \n         outcome = \"unknown\"\n         try:\n-            if not self.profile.interactive:\n+            if not self.interactive_workload:\n                 outcome = self._drive_headless(proc, reader)\n             else:\n                 outcome = self._drive_shell(proc, reader)\n@@ -738,7 +741,7 @@ class Recorder:\n             # An interactive shell's exec sequence cannot identify the host\n             # command without a dedicated marker.\n             prog_start = _program_start_from_trace(\n-                tr, wl_json, interactive=self.profile.interactive)\n+                tr, wl_json, interactive=self.interactive_workload)\n             tmp_trace.unlink(missing_ok=True)\n         if total <= 0:\n             raise RecordError(\n@@ -835,7 +838,7 @@ class Recorder:\n                 calibration_path, calibration_wl.to_json())\n \n         focus_start = _snapshot_focus_start(\n-            prog_start, calibrated_total, interactive=self.profile.interactive)\n+            prog_start, calibrated_total, interactive=self.interactive_workload)\n \n         if c.snap_insns is not None:\n             snap_insns = c.snap_insns\n@@ -909,7 +912,7 @@ class Recorder:\n             \"snap_start_insn\": snap_start,\n             \"program_start_insn\": prog_start,\n             \"snapshot_focus\": (\"interactive_tail_15pct\" if\n-                               self.profile.interactive and not prog_start and\n+                               self.interactive_workload and not prog_start and\n                                c.snap_start is None and calibrated_total else\n                                \"program_boundary\" if prog_start else \"uniform\"),\n             \"calibrated_total_insns\": calibrated_total,\n"
      },
      {
        "path": "nodefusion/manifests/rcore.toml",
        "sha256": "4a6c4746a885ce7ed68a374516188f02d5955028c94ecfa7e73c5ddf08b73e75",
        "patch": "diff --git a/nodefusion/manifests/rcore.toml b/nodefusion/manifests/rcore.toml\nindex 3579114..01e843c 100644\n--- a/nodefusion/manifests/rcore.toml\n+++ b/nodefusion/manifests/rcore.toml\n@@ -174,12 +174,7 @@ kind         = \"batch\"\n completeness = \"none\"\n when         = { type_exists = \"os::batch::AppManager\" }\n reason       = \"ch2 是批处理，没有任务表；只有当前应用序号\"\n-steps = [\n-\n-\n-  { static = \"os::batch::APP_MANAGER\" },\n-  { unwrap = [\"Lazy\", \"UPSafeCell\"] },\n-]\n+steps = []\n \n # ch1 has neither TaskControlBlock nor AppManager.  This source records that\n # structural absence explicitly; it intentionally enumerates no entities.\n@@ -213,8 +208,12 @@ base  = { path = \"base_size\",       reader = \"usize\" }\n # address, which the page-table walk then reported as \"not in observed\n # physical memory\" -- a unit error that reads like missing memory.\n # `.__0` rather than the tuple struct itself so no field offset is assumed.\n-pgtbl = { path = \"inner.memory_set.page_table.root_ppn.__0\", reader = \"ppn\", role = \"address_space_root\" }\n-prio  = { path = \"inner.priority\",  reader = \"usize\", role = \"priority\" }\n+pgtbl = { path = \"memory_set.page_table.root_ppn.__0\", reader = \"ppn\", role = \"address_space_root\" }\n+prio  = { path = \"inner.prio\",      reader = \"usize\", role = \"priority\" }\n+priority = { path = \"inner.priority\", reader = \"usize\", role = \"priority\" }\n+stride = { path = \"inner.stride\", reader = \"usize\" }\n+heap_bottom = { path = \"inner.heap_bottom\", reader = \"usize\" }\n+program_brk = { path = \"inner.program_brk\", reader = \"usize\" }\n \n \n \n@@ -223,7 +222,7 @@ exit  = { path = \"inner.exit_code\", reader = \"i32\", role = \"exit_code\" }\n \n \n \n-trapcx = { path = \"inner.trap_cx_ppn.__0\", reader = \"ppn\", role = \"trap_context\" }\n+trapcx = { path = \"trap_cx_ppn.__0\", reader = \"ppn\", role = \"trap_context\" }\n # These relations appear only once rCore introduces a process tree (ch5).\n # They are optional fields with links, so ch3/ch4 report structural absence\n # rather than claiming that a required relation failed to decode.\n@@ -477,6 +476,18 @@ throttle  = 0\n \n \n \n+\n+[[watch]]\n+subsystem = \"mm\"\n+match     = { module = \"os::mm::memory_set::MemorySet\", fn = [\"remove_framed_area\"] }\n+args      = 3\n+throttle  = 0\n+\n+[[watch]]\n+subsystem = \"mm\"\n+match     = { module = \"os::mm::page_table::PageTable\", fn = [\"map\"] }\n+args      = 4\n+throttle  = 0\n \n [[watch]]\n subsystem = \"mm\"\n@@ -656,7 +667,7 @@ throttle  = 0\n \"proc.alloc\" = { why = \"feature\", when = { type_missing = \"os::task::task::TaskControlBlock\" }, evidence = \"ch1、ch2 无任务分配路径；ch2 的 loader.c 复用同一应用内存区依次装入二进制，ch3 起引入 TaskControlBlock。\" }\n \"proc.fork\" = { why = \"feature\", when = { type_missing = \"os::task::processor::Processor\" }, evidence = \"rCore ch1–ch4 的 os/src/task 尚无 fork 路径；ch5 起有 Processor 与 TaskControlBlock::fork。按当前 ELF 的 Processor 类型核对阶段。\" }\n \"proc.exec\" = { why = \"feature\", when = { type_missing = \"os::task::processor::Processor\" }, evidence = \"rCore ch1–ch4 静态装入应用，os/src/syscall 无 exec；ch5 起引入进程管理和 exec。按当前 ELF 的 Processor 类型核对阶段。\" }\n-\"vm.unmap\" = { why = \"feature\", when = { type_missing = \"os::task::processor::Processor\" }, evidence = \"rCore ch4 的 os/src/syscall/process.rs 中 sys_munmap 明确为 NOT IMPLEMENTED YET；ch5 起有进程内存回收。按当前 ELF 的 Processor 类型区分阶段。\" }\n+\"vm.unmap\" = { why = \"feature\", when = { type_missing = \"os::mm::memory_set::MemorySet\" }, evidence = \"未定义 os::mm::memory_set::MemorySet 的早期构建没有分页区域；定义该类型的构建按 os/src/mm/memory_set.rs 中的区域取消映射路径检查，包括 2026A 的 remove_framed_area。\" }\n \"phys.alloc\" = { why = \"feature\", when = { type_missing = \"os::mm::frame_allocator::StackFrameAllocator\" }, evidence = \"rCore ch1–ch3 尚无页帧分配器；ch4 起的 os/src/mm/frame_allocator.rs 定义 StackFrameAllocator。按当前 ELF 的该类型核对阶段。\" }\n \"phys.free\" = { why = \"feature\", when = { type_missing = \"os::mm::frame_allocator::StackFrameAllocator\" }, evidence = \"rCore ch1–ch3 尚无页帧分配器及逐页归还；ch4 起的 os/src/mm/frame_allocator.rs 实现分配与回收。按当前 ELF 的类型核对阶段。\" }\n \"vm.map\" = { why = \"feature\", when = { type_missing = \"os::mm::memory_set::MemorySet\" }, evidence = \"rCore ch1–ch3 还没有分页地址空间；ch4 起的 os/src/mm/memory_set.rs 定义 MemorySet 并建立区域映射。按当前 ELF 的类型核对阶段。\" }\n@@ -828,7 +839,7 @@ throttle  = 0\n \n \"os::mm::frame_allocator::frame_dealloc\" = \"phys.free\"\n \"os::mm::frame_allocator::frame_alloc\" = \"phys.alloc\"\n-\"os::mm::page_table::PageTable::map\" = \"pagetable.map\"\n+\"os::mm::page_table::PageTable::map\" = { kind = \"pagetable.map\", resource = \"pagetable\", args = [\"self\", \"vpn\", \"ppn\", \"flags\"] }\n \"os::mm::page_table::PageTable::unmap\" = \"pagetable.unmap\"\n \"os::mm::page_table::PageTable::new\" = \"pagetable.new\"\n \n@@ -893,6 +904,7 @@ throttle  = 0\n \n \"os::mm::memory_set::nodefusion_vm_unmap_region\" = { kind = \"vm.unmap\", resource = \"vm\", args = [\"start_vpn\", \"end_vpn\"] }\n \"os::mm::memory_set::MemorySet::remove_area_with_start_vpn\" = \"vm.remove_area\"\n+\"os::mm::memory_set::MemorySet::remove_framed_area\" = { kind = \"vm.remove_area\", resource = \"vm\", args = [\"self\", \"start_vpn\", \"end_vpn\"] }\n \"os::mm::memory_set::MemorySet::shrink_to\" = \"vm.shrink\"\n \"os::mm::memory_set::MemorySet::append_to\" = \"vm.grow\"\n \"os::mm::init\" = \"vm.init\"\n@@ -1550,3 +1562,35 @@ opts = [\n [syscalls]\n files   = [\"os/src/syscall/mod.rs\"]\n pattern = 'const\\s+SYSCALL_(?P<name>\\w+)\\s*:\\s*usize\\s*=\\s*(?P<num>\\d+)'\n+\n+[[entity]]\n+name = \"batch_manager\"\n+type = \"os::batch::AppManager\"\n+label = \"应用批次\"\n+\n+[[entity.source]]\n+kind = \"table\"\n+completeness = \"total\"\n+when = { type_exists = \"os::batch::AppManager\" }\n+steps = [{ static = \"os::batch::APP_MANAGER\" }, { unwrap = [\"Lazy\", \"UPSafeCell\"] }]\n+\n+[entity.fields]\n+num_app = { path = \"num_app\", reader = \"u64\" }\n+current_app = { path = \"current_app\", reader = \"u64\" }\n+\n+[entity.table]\n+empty = \"当前没有应用批次。\"\n+  [[entity.table.column]]\n+  key = \"num_app\"\n+  label = \"应用数\"\n+  [[entity.table.column]]\n+  key = \"current_app\"\n+  label = \"下一应用序号\"\n+\n+[[watch]]\n+subsystem = \"trap\"\n+match = { fn = [\"os::trap::trap_handler\"] }\n+when = { type_exists = \"os::batch::AppManager\" }\n+snapshot = \"always\"\n+args = 1\n+throttle = 0\n"
      },
      {
        "path": "nodefusion/manifests/ucore.toml",
        "sha256": "7ca738a5abfb1c21afdb75b44c2fc0ce81b19d3d2db9aa3d820850b8abf74327",
        "patch": "diff --git a/nodefusion/manifests/ucore.toml b/nodefusion/manifests/ucore.toml\nindex 4312842..750f358 100644\n--- a/nodefusion/manifests/ucore.toml\n+++ b/nodefusion/manifests/ucore.toml\n@@ -33,17 +33,29 @@ steps = [\n   { iter = \"array\" },\n ]\n \n+[[entity.source]]\n+kind = \"batch\"\n+completeness = \"none\"\n+when = { all = [{ type_missing = \"proc\" }, { symbol_exists = \"clean_bss\" }, { symbol_missing = \"pool\" }, { symbol_missing = \"allocproc\" }, { symbol_missing = \"scheduler\" }] }\n+steps = []\n+\n [entity.liveness]\n-skip_when = { field = \"state\", equals = \"P_UNUSED\" }\n+skip_when = { field = \"state\", one_of = [\"UNUSED\", \"P_UNUSED\"] }\n \n [entity.fields]\n pid         = { path = \"pid\",         reader = \"i32\",  role = \"id\" }\n state       = { path = \"state\",       reader = \"enum\", enum = \"procstate\", role = \"state\" }\n \n [entity.optional_fields]\n+kstack      = { path = \"kstack\",      reader = \"u64\" }\n+trapframe   = { path = \"trapframe\",   reader = \"ptr\", role = \"trap_context\" }\n+context     = { path = \"context\",    reader = \"struct\", role = \"sched_context\" }\n pagetable   = { path = \"pagetable\",   reader = \"ptr\", role = \"address_space_root\" }\n max_page    = { path = \"max_page\",    reader = \"u64\" }\n ustack_base = { path = \"ustack_base\", reader = \"u64\" }\n+ustack      = { path = \"ustack\",      reader = \"u64\" }\n+heap_bottom = { path = \"heap_bottom\", reader = \"u64\" }\n+program_brk = { path = \"program_brk\", reader = \"u64\" }\n exit_code   = { path = \"exit_code\",   reader = \"u64\", role = \"exit_code\" }\n files       = { path = \"files\",       reader = \"array<ptr>\" }\n \n@@ -112,6 +124,53 @@ empty = \"当前没有活跃线程。\"\n \n # -------------------------------------------------------------- resources\n \n+[[entity]]\n+name = \"batch_context\"\n+type = \"trapframe\"\n+label = \"用户上下文\"\n+\n+[[entity.source]]\n+kind = \"table\"\n+completeness = \"total\"\n+when = { all = [{ type_exists = \"trapframe\" }, { symbol_exists = \"trap_page\" }, { symbol_missing = \"pool\" }] }\n+steps = [{ static = \"trap_page\" }]\n+\n+[[entity.source]]\n+kind = \"batch\"\n+completeness = \"none\"\n+when = { all = [{ type_exists = \"proc\" }, { symbol_exists = \"pool\" }, { symbol_missing = \"trap_page\" }] }\n+steps = []\n+\n+[entity.fields]\n+epc = { path = \"epc\", reader = \"u64\" }\n+user_sp = { path = \"sp\", reader = \"u64\" }\n+kernel_sp = { path = \"kernel_sp\", reader = \"u64\" }\n+a0 = { path = \"a0\", reader = \"u64\" }\n+a1 = { path = \"a1\", reader = \"u64\" }\n+a2 = { path = \"a2\", reader = \"u64\" }\n+a7 = { path = \"a7\", reader = \"u64\" }\n+\n+[entity.table]\n+empty = \"本构建没有独立的批处理上下文。\"\n+  [[entity.table.column]]\n+  key = \"epc\"\n+  label = \"返回地址\"\n+  format = \"hex\"\n+  [[entity.table.column]]\n+  key = \"user_sp\"\n+  label = \"用户栈\"\n+  format = \"hex\"\n+  [[entity.table.column]]\n+  key = \"kernel_sp\"\n+  label = \"内核栈\"\n+  format = \"hex\"\n+  [[entity.table.column]]\n+  key = \"a7\"\n+  label = \"a7\"\n+  [[entity.table.column]]\n+  key = \"a0\"\n+  label = \"a0\"\n+\n [[entity]]\n name  = \"bcache\"\n type  = \"buf\"\n@@ -264,12 +323,20 @@ empty = \"当前没有活跃 inode。\"\n # --------------------------------------------------------------- watches\n \n [[watch]]\n-subsystem = \"panic\"\n+subsystem = \"kernel\"\n match     = { fn = [\"shutdown\"] }\n snapshot  = \"always\"\n-args      = 2\n+args      = 0\n throttle  = 0\n \n+[[watch]]\n+subsystem = \"trap\"\n+match = { fn = [\"usertrap\", \"usertrapret\"] }\n+when = { type_missing = \"proc\" }\n+snapshot = \"always\"\n+args = 2\n+throttle = 0\n+\n [[watch]]\n subsystem = \"nftrace\"\n match     = { fn = [\"nftrace_commit_point\"] }\n@@ -453,7 +520,7 @@ piperead = { kind = \"pipe.read\", resource = \"pipe\" }\n pipewrite = { kind = \"pipe.write\", resource = \"pipe\" }\n pipeclose = { kind = \"pipe.close\", resource = \"pipe\" }\n \n-shutdown = { kind = \"kernel.panic\", args = [\"reason\"] }\n+shutdown = { kind = \"kernel.shutdown\" }\n \n # ----------------------------------------------------------------- profile\n \n@@ -471,12 +538,11 @@ machine_opts = [\n ]\n interactive = true\n prompt = \">> \"\n-ready_markers = [\"C user shell\"]\n-# User-space assertions deliberately print the same ``[PANIC ...]`` prefix as\n-# the kernel logger and then return a non-zero test status.  Treating that text\n-# as a kernel panic truncates aggregate suites halfway through; the shell's\n-# exit line and QEMU termination provide unambiguous outcomes instead.\n-panic_markers = [\"core dumped\"]\n+ready_markers = [\"hello wrold!\", \"C user shell\", \"start scheduler!\"]\n+done_markers = [\"ALL DONE\", \"all app are over!\", \"all apps over\"]\n+# User faults and assertions share the kernel's diagnostic text. Completion\n+# markers, process exit lines and QEMU termination determine the outcome.\n+panic_markers = []\n halt_markers = []\n stdin_preload = true\n stdin_pad = \"\\n\"\n"
      },
      {
        "path": "nodefusion/model/dwarfsrc.py",
        "sha256": "02688f5f8419ba6c8fd64ea4f347929f74c8b70299b632223c5535bab298f265",
        "patch": "diff --git a/nodefusion/model/dwarfsrc.py b/nodefusion/model/dwarfsrc.py\nindex 6716ea1..2dd0640 100644\n--- a/nodefusion/model/dwarfsrc.py\n+++ b/nodefusion/model/dwarfsrc.py\n@@ -99,6 +99,10 @@ class DwarfSource:\n         if not elf.has_dwarf_info():\n             raise RuntimeError(f\"{self.path} 里没有调试信息（.debug_info）\")\n         self.e_machine = elf.header[\"e_machine\"]\n+        symtab = elf.get_section_by_name('.symtab')\n+        self.defined_symbols = (None if symtab is None else\n+                                {s.name for s in symtab.iter_symbols()\n+                                 if s.name and s['st_shndx'] != 'SHN_UNDEF'})\n         self._exec_ranges = self._exec_sections(elf)\n         self._parse(elf.get_dwarf_info())\n         self._index_short()\n"
      },
      {
        "path": "nodefusion/model/kinds.py",
        "sha256": "0432ef9f134654bc36554ec55afcb9f91c593110cdacf0a58d0ac4d1d05ac569",
        "patch": "diff --git a/nodefusion/model/kinds.py b/nodefusion/model/kinds.py\nindex c9da0ea..5551612 100644\n--- a/nodefusion/model/kinds.py\n+++ b/nodefusion/model/kinds.py\n@@ -17,7 +17,7 @@ KINDS: frozenset[str] = frozenset({\n     \"inode.write\",\n     \"interrupt.clock\", \"interrupt.dispatch\", \"interrupt.external\",\n     \"interrupt.other\", \"interrupt.software\", \"interrupt.timer\",\n-    \"kernel.alloc_error\", \"kernel.panic\",\n+    \"kernel.alloc_error\", \"kernel.panic\", \"kernel.shutdown\",\n     \"log.begin\", \"log.commit\", \"log.end\", \"log.install\", \"log.recover\",\n     \"log.write\", \"log.write_blocks\",\n     \"pagetable.freewalk\", \"pagetable.map\", \"pagetable.new\", \"pagetable.unmap\",\n"
      },
      {
        "path": "nodefusion/model/resolve.py",
        "sha256": "0c588760d0ec6494617007b02d786285ba190593935f574f6c53b99ad62ac8c0",
        "patch": "diff --git a/nodefusion/model/resolve.py b/nodefusion/model/resolve.py\nindex 5c9b606..a655199 100644\n--- a/nodefusion/model/resolve.py\n+++ b/nodefusion/model/resolve.py\n@@ -127,6 +127,24 @@ def resolve_path(dw: DwarfSource, start: StructLayout, path: str,\n def eval_when(dw: DwarfSource, pred: dict | None) -> tuple[bool, str]:\n     if not pred:\n         return True, \"无条件\"\n+    if not isinstance(pred, dict) or len(pred) != 1:\n+        return False, \"when 需要一种谓词\"\n+    if 'all' in pred:\n+        children = pred['all']\n+        if not isinstance(children, list) or not children or any(not isinstance(p, dict) or not p for p in children):\n+            return False, \"all 需要非空的谓词数组\"\n+        results = [eval_when(dw, child) for child in children]\n+        return all(hit for hit, _ in results), '；'.join(reason for _, reason in results)\n+    if 'symbol_exists' in pred or 'symbol_missing' in pred:\n+        key = next(iter(pred))\n+        name = pred[key]\n+        if not isinstance(name, str) or not name.strip():\n+            return False, \"符号名不能为空\"\n+        symbols = getattr(dw, 'defined_symbols', None)\n+        if symbols is None:\n+            return False, \"没有完整 ELF 符号表\"\n+        exists = name in symbols\n+        return (exists if key == 'symbol_exists' else not exists), f\"符号 {name} {'在' if exists else '不在'}\"\n \n     if \"type_exists\" in pred:\n         want = pred[\"type_exists\"]\n"
      },
      {
        "path": "nodefusion/model/snapshot.py",
        "sha256": "e9c4ce76b858a9003e43d9eec363e1b88d4024338c3401b7a47a9871fe5dab7a",
        "patch": "diff --git a/nodefusion/model/snapshot.py b/nodefusion/model/snapshot.py\nindex fa095ef..0bf7cb7 100644\n--- a/nodefusion/model/snapshot.py\n+++ b/nodefusion/model/snapshot.py\n@@ -68,6 +68,8 @@ def is_live(entity: Entity, liveness: dict | None) -> bool:\n         return True\n     if \"equals\" in sw:\n         return f.value != sw[\"equals\"]\n+    if \"one_of\" in sw:\n+        return f.value not in sw[\"one_of\"]\n     return True\n \n \n"
      },
      {
        "path": "nodefusion/host/bundle.py",
        "sha256": "f6117f48b073e117dc0ffa6cdf1af4984d173b3a8f16808730e3746b51c2ad33",
        "patch": "diff --git a/nodefusion/host/bundle.py b/nodefusion/host/bundle.py\nindex a31f11f..4a3967a 100644\n--- a/nodefusion/host/bundle.py\n+++ b/nodefusion/host/bundle.py\n@@ -15,6 +15,7 @@ from .analyze import Analysis\n MAX_EVENTS = 150_000\n \n MIN_SPARE_EVENTS = 25_000\n+MIN_KIND_EVENTS = 64\n \n DIAGNOSTIC_PREFIXES = (\"func.\",)\n \n@@ -57,6 +58,25 @@ class Interner:\n         return i\n \n \n+def _kind_budgets(counts: dict[str, int], budget: int) -> tuple[dict[str, int], int]:\n+    if not counts:\n+        return {}, 0\n+    floor = min(MIN_KIND_EVENTS, budget // len(counts))\n+    if floor == 0:\n+        return {kind: int(index < budget) for index, kind in enumerate(counts)}, 0\n+    quotas = {kind: min(count, floor) for kind, count in counts.items()}\n+    remaining = budget - sum(quotas.values())\n+    residual_total = sum(counts.values()) - sum(quotas.values())\n+    cumulative = 0\n+    if residual_total:\n+        for kind, count in counts.items():\n+            residual = count - quotas[kind]\n+            quotas[kind] += ((cumulative + residual) * remaining // residual_total\n+                             - cumulative * remaining // residual_total)\n+            cumulative += residual\n+    return quotas, floor\n+\n+\n def _event_selection(events: list, *, materialize: bool) -> tuple[list, dict]:\n     \"\"\"Bound the interactive event stream while auditing the full raw trace.\"\"\"\n     raw_kinds = Counter(e.kind for e in events)\n@@ -65,7 +85,7 @@ def _event_selection(events: list, *, materialize: bool) -> tuple[list, dict]:\n     if len(events) <= MAX_EVENTS:\n         return (events if materialize else []), {\n             \"applied\": False,\n-            \"policy\": \"kind-preserving/systematic-v3\",\n+            \"policy\": \"kind-preserving/systematic-v5\",\n             \"raw\": len(events), \"retained\": len(events), \"dropped\": 0,\n             \"target_limit\": MAX_EVENTS, \"minimum_spare\": MIN_SPARE_EVENTS,\n             \"always_keep\": \"all events when the raw stream fits\",\n@@ -77,37 +97,32 @@ def _event_selection(events: list, *, materialize: bool) -> tuple[list, dict]:\n         }\n \n     spare_raw = len(events) - priority_raw\n-    semantic_kinds = {k for k in raw_kinds if _is_semantic(k)}\n-    reserved_spare = min(MIN_SPARE_EVENTS, spare_raw)\n+    semantic_counts = {k: count for k, count in raw_kinds.items() if _is_semantic(k)}\n+    reserved_spare = min(MIN_SPARE_EVENTS, spare_raw, MAX_EVENTS)\n     priority_budget = min(priority_raw, MAX_EVENTS - reserved_spare)\n+    quotas, kind_floor = _kind_budgets(semantic_counts, priority_budget)\n     room = MAX_EVENTS - priority_budget\n-    step = max(1, spare_raw // room) if room > 0 and spare_raw else 1\n+    diagnostic_counts = {k: count for k, count in raw_kinds.items() if not _is_semantic(k)}\n+    diagnostic_quotas, diagnostic_floor = _kind_budgets(diagnostic_counts, min(room, spare_raw))\n+    quotas.update(diagnostic_quotas)\n     chosen: list = []\n     retained_kinds: Counter = Counter()\n     dropped_kinds: dict[str, int] = {}\n-    spare_seen = 0\n-    spare_kept = 0\n     semantic_seen = 0\n-    first_kinds: set[str] = set()\n-    nonfirst_seen = 0\n-    nonfirst_total = priority_raw - len(semantic_kinds)\n-    nonfirst_budget = max(0, priority_budget - len(semantic_kinds))\n+    seen_by_kind: Counter = Counter()\n     for e in events:\n         if _is_semantic(e.kind):\n             semantic_seen += 1\n-            if e.kind not in first_kinds:\n-                first_kinds.add(e.kind)\n-                retain = len(first_kinds) <= priority_budget\n-            else:\n-                retain = (nonfirst_total > 0 and\n-                          (nonfirst_seen + 1) * nonfirst_budget // nonfirst_total\n-                          > nonfirst_seen * nonfirst_budget // nonfirst_total)\n-                nonfirst_seen += 1\n+        seen = seen_by_kind[e.kind]\n+        seen_by_kind[e.kind] += 1\n+        quota = quotas[e.kind]\n+        total = raw_kinds[e.kind]\n+        if seen == 0:\n+            retain = quota > 0\n         else:\n-            retain = room > 0 and spare_kept < room and spare_seen % step == 0\n-            spare_seen += 1\n-            if retain:\n-                spare_kept += 1\n+            retain = (quota > 1 and\n+                      seen * (quota - 1) // (total - 1)\n+                      > (seen - 1) * (quota - 1) // (total - 1))\n         if retain:\n             retained_kinds[e.kind] += 1\n             if materialize:\n@@ -120,15 +135,19 @@ def _event_selection(events: list, *, materialize: bool) -> tuple[list, dict]:\n \n     return chosen, {\n         \"applied\": True,\n-        \"policy\": \"kind-preserving/systematic-v3\",\n+        \"policy\": \"kind-preserving/systematic-v5\",\n         \"raw\": len(events), \"retained\": retained, \"dropped\": dropped,\n         \"target_limit\": MAX_EVENTS, \"minimum_spare\": MIN_SPARE_EVENTS,\n-        \"always_keep\": \"first event of each normalized kind within budget\",\n+        \"always_keep\": \"all events of kinds whose count fits their per-kind budget\",\n         \"priority_raw\": priority_raw, \"spare_raw\": spare_raw,\n         \"semantic_budget\": priority_budget,\n+        \"minimum_per_kind\": kind_floor,\n+        \"semantic_kind_budgets\": {k: quotas[k] for k in sorted(semantic_counts)},\n+        \"diagnostic_kind_budgets\": dict(sorted(diagnostic_quotas.items())),\n+        \"minimum_per_diagnostic_kind\": diagnostic_floor,\n         \"semantic_retained\": semantic_seen - sum(v for k, v in dropped_kinds.items()\n                                                 if _is_semantic(k)),\n-        \"spare_budget\": room, \"stride\": step if room > 0 and spare_raw else None,\n+        \"spare_budget\": room, \"stride\": None,\n         \"retained_kinds\": dict(sorted(retained_kinds.items())),\n         \"dropped_kinds\": dict(sorted(dropped_kinds.items())),\n     }\n"
      },
      {
        "path": "nodefusion/tests/test_bundle_shape.py",
        "sha256": "34d227f2726d1820160288b225243b51fe3583839ff52ee245a814eb1c27f81d",
        "patch": "diff --git a/nodefusion/tests/test_bundle_shape.py b/nodefusion/tests/test_bundle_shape.py\nindex 40bd9fe..025791a 100644\n--- a/nodefusion/tests/test_bundle_shape.py\n+++ b/nodefusion/tests/test_bundle_shape.py\n@@ -1,5 +1,6 @@\n \n import sys\n+from collections import Counter\n from pathlib import Path\n from types import SimpleNamespace as NS\n \n@@ -144,7 +145,8 @@ def test_event_selection_metadata_accounts_for_every_raw_event(monkeypatch):\n     assert audit[\"priority_raw\"] == 4\n     assert audit[\"spare_raw\"] == 26\n     assert audit[\"spare_budget\"] == 6\n-    assert audit[\"stride\"] == 4\n+    assert audit[\"stride\"] is None\n+    assert audit['diagnostic_kind_budgets'] == {'func.hot_path': 6}\n     assert sum(audit[\"retained_kinds\"].values()) == audit[\"retained\"]\n     assert sum(audit[\"dropped_kinds\"].values()) == audit[\"dropped\"]\n     assert [e.insn for e in selected[:4]] == [0, 1, 2, 3]\n@@ -156,10 +158,9 @@ def test_bounded_selector_preserves_order_and_systematic_sample(monkeypatch):\n     events = [NS(kind=(\"proc.fork\" if i in {2, 7} else \"func.hot\"), insn=i)\n               for i in range(12)]\n     selected, audit = B._select_events(events)\n-    # Ten diagnostics, four spare slots => old spare[::2][:4], interleaved\n-    # with both semantic events in original timeline order.\n-    assert [event.insn for event in selected] == [0, 2, 3, 5, 7, 8]\n-    assert audit[\"stride\"] == 2\n+    # Four per-kind positions include the first and last diagnostic entries.\n+    assert [event.insn for event in selected] == [0, 2, 4, 7, 8, 11]\n+    assert audit[\"stride\"] is None\n     assert audit[\"retained\"] == 6\n \n \n@@ -178,6 +179,79 @@ def test_large_semantic_stream_stays_browser_bounded(monkeypatch):\n     assert audit[\"raw\"] == audit[\"retained\"] + audit[\"dropped\"]\n \n \n+def test_rare_semantic_events_survive_hot_kinds_without_kernel_allowlists(monkeypatch):\n+    monkeypatch.setattr(B, 'MAX_EVENTS', 200)\n+    monkeypatch.setattr(B, 'MIN_SPARE_EVENTS', 25)\n+    events = [NS(kind='pagetable.map', insn=i) for i in range(5000)]\n+    events += [NS(kind='future_namespace.branch', insn=5000 + i) for i in range(13)]\n+    events += [NS(kind='trap.page_fault', insn=5013 + i) for i in range(4)]\n+    events += [NS(kind='func.loop', insn=5017 + i) for i in range(1000)]\n+    selected, audit = B._select_events(events)\n+    assert len(selected) == audit['retained'] == 200\n+    assert audit['retained_kinds']['future_namespace.branch'] == 13\n+    assert audit['retained_kinds']['trap.page_fault'] == 4\n+    assert audit['retained_kinds']['func.loop'] == 25\n+    assert audit['semantic_retained'] == 175\n+    assert audit['semantic_kind_budgets']['pagetable.map'] == 158\n+    hot = [item.insn for item in selected if item.kind == 'pagetable.map']\n+    assert hot[0] == 0 and hot[-1] == 4999\n+    assert [item.insn for item in selected] == sorted(item.insn for item in selected)\n+    assert B._select_events(events)[0] == selected\n+    empty, accounting = B._event_selection(events, materialize=False)\n+    assert empty == [] and accounting == audit\n+    for kind, count in Counter(item.kind for item in events).items():\n+        assert audit['retained_kinds'].get(kind, 0) + audit['dropped_kinds'].get(kind, 0) == count\n+\n+\n+def test_more_semantic_kinds_than_slots_is_still_bounded(monkeypatch):\n+    monkeypatch.setattr(B, 'MAX_EVENTS', 7)\n+    monkeypatch.setattr(B, 'MIN_SPARE_EVENTS', 2)\n+    events = [NS(kind=f'new.kind{i}', insn=i) for i in range(20)]\n+    events += [NS(kind='func.noise', insn=20 + i) for i in range(20)]\n+    selected, audit = B._select_events(events)\n+    assert len(selected) == 7\n+    assert audit['semantic_retained'] == 5 and audit['retained_kinds']['func.noise'] == 2\n+    assert sum(audit['semantic_kind_budgets'].values()) == 5\n+    assert [item.kind for item in selected[:5]] == [f'new.kind{i}' for i in range(5)]\n+    assert sum(audit['dropped_kinds'].values()) == 33\n+    assert B._event_selection(events, materialize=False)[1] == audit\n+\n+\n+def test_rare_function_entries_survive_hot_diagnostic_functions(monkeypatch):\n+    monkeypatch.setattr(B, 'MAX_EVENTS', 100)\n+    monkeypatch.setattr(B, 'MIN_SPARE_EVENTS', 25)\n+    events = [NS(kind='syscall.enter', insn=i) for i in range(1000)]\n+    events += [NS(kind='func.format', insn=1000 + i) for i in range(2000)]\n+    events += [NS(kind='func.unmap', insn=3000 + i) for i in range(2)]\n+    selected, audit = B._select_events(events)\n+    assert len(selected) == 100\n+    assert audit['retained_kinds']['func.unmap'] == 2\n+    assert audit['retained_kinds']['func.format'] == 23\n+    assert not audit['dropped_kinds'].get('func.unmap')\n+    assert selected[-1] is events[-1]\n+\n+\n+def test_kind_quotas_use_the_budget_without_exceeding_raw_counts():\n+    for counts in [{'one': 1}, {'a': 2, 'b': 1000, 'c': 9},\n+                   {str(index): index + 1 for index in range(100)}]:\n+        total = sum(counts.values())\n+        for budget in range(min(total, 300) + 1):\n+            quotas, floor = B._kind_budgets(counts, budget)\n+            assert sum(quotas.values()) == budget\n+            assert all(0 <= quotas[kind] <= count for kind, count in counts.items())\n+            assert all(quotas[kind] == count for kind, count in counts.items() if count <= floor)\n+\n+\n+def test_diagnostic_reservation_cannot_exceed_total_budget(monkeypatch):\n+    monkeypatch.setattr(B, 'MAX_EVENTS', 4)\n+    monkeypatch.setattr(B, 'MIN_SPARE_EVENTS', 25)\n+    events = [NS(kind='syscall.enter', insn=0)]\n+    events += [NS(kind='func.hot', insn=i) for i in range(1, 30)]\n+    selected, audit = B._select_events(events)\n+    assert len(selected) == 4 and audit['semantic_budget'] == 0\n+    assert audit['dropped_kinds']['syscall.enter'] == 1\n+\n+\n def test_interactive_sampling_does_not_erase_raw_semantic_coverage(monkeypatch):\n     monkeypatch.setattr(B, \"MAX_EVENTS\", 10)\n     monkeypatch.setattr(B, \"MIN_SPARE_EVENTS\", 3)\n"
      },
      {
        "path": "nodefusion/tests/test_kernel_integrations.py",
        "sha256": "8e3ecdcf6ad5ea3b7fa44a3e3244a2c9678255b62c02d8cd48de9cfc1189b376",
        "patch": "diff --git a/nodefusion/tests/test_kernel_integrations.py b/nodefusion/tests/test_kernel_integrations.py\nindex a285e88..b33e6b0 100644\n--- a/nodefusion/tests/test_kernel_integrations.py\n+++ b/nodefusion/tests/test_kernel_integrations.py\n@@ -64,7 +64,7 @@ def test_rcore_patch_and_manifest_agree_on_the_per_region_hook():\n     assert manifest.events[symbol].kind == \"vm.unmap\"\n     assert manifest.events[symbol].args == [\"start_vpn\", \"end_vpn\"]\n     assert manifest.absent[\"vm.unmap\"].when == {\n-        \"type_missing\": \"os::task::processor::Processor\"}\n+        \"type_missing\": \"os::mm::memory_set::MemorySet\"}\n \n \n def test_rcore_patch_exports_exact_physical_allocation_results():\n@@ -79,6 +79,38 @@ def test_rcore_patch_exports_exact_physical_allocation_results():\n     assert \"nodefusion_trace_sched_switch\" in patch\n \n \n+def test_rcore_reference_region_removal_is_an_attempt_not_a_success_event():\n+    manifest = load(ROOT / 'manifests/rcore.toml')\n+    symbol = 'os::mm::memory_set::MemorySet::remove_framed_area'\n+    assert manifest.events[symbol].kind == 'vm.remove_area'\n+    assert manifest.events[symbol].args == ['self', 'start_vpn', 'end_vpn']\n+    dedicated = next(index for index, watch in enumerate(manifest.watches)\n+                     if watch.match.get('fn') == ['remove_framed_area'])\n+    inline = next(index for index, watch in enumerate(manifest.watches)\n+                  if watch.match.get('fn') == ['frame_alloc', 'frame_dealloc', 'unmap', 'init_heap'])\n+    assert dedicated < inline\n+    assert manifest.watches[dedicated].args == 3\n+    assert not manifest.watches[dedicated].inlined\n+\n+\n+def test_rcore_2026a_ch4_observation_patch_preserves_region_acceptance():\n+    patch = (INTEGRATIONS / 'rcore-2026a-ch4-observation.patch').read_text()\n+    assert patch.index('})?;') < patch.index('nodefusion_vm_unmap_region(start.0, end.0);')\n+    assert patch.index('nodefusion_vm_unmap_region(start.0, end.0);') < patch.index('let mut area = self.areas.remove(index);')\n+    assert 'const NFT_ALLOCATOR_STATE: u64 = 6;' in patch\n+    assert 'a: [free_pages as u64, used_pages as u64, 0, 0]' in patch\n+    assert 'nodefusion_trace_page(NFT_KALLOC, paddr, free_pages, used_pages)' in patch\n+    assert 'nodefusion_trace_page(NFT_KFREE, PhysAddr::from(ppn).0, free_pages, used_pages)' in patch\n+    assert 'GlobalAlloc::alloc(&self.0, layout)' in patch\n+    assert 'GlobalAlloc::dealloc(&self.0, ptr, layout)' in patch\n+    manifest = load(ROOT / 'manifests/rcore.toml')\n+    event = manifest.events['os::mm::page_table::PageTable::map']\n+    assert event.kind == 'pagetable.map' and event.args == ['self', 'vpn', 'ppn', 'flags']\n+    rule = next(watch for watch in manifest.watches\n+                if watch.match == {'module': 'os::mm::page_table::PageTable', 'fn': ['map']})\n+    assert rule.args == 4 and not rule.inlined\n+\n+\n def test_rcore_chapter_patches_preserve_per_region_and_scheduler_identity():\n     for chapter in (6, 8):\n         patch = (INTEGRATIONS / f\"rcore-ch{chapter}-nodefusion.patch\").read_text(\n@@ -94,6 +126,43 @@ def test_rcore_chapter_patches_preserve_per_region_and_scheduler_identity():\n     assert \"block_current_and_run_next\" in ch8\n \n \n+def test_2026a_ch5_observation_preserves_allocator_and_switch_semantics():\n+    rust = (INTEGRATIONS / 'rcore-2026a-ch5-observation.patch').read_text()\n+    c = (INTEGRATIONS / 'ucore-2026a-ch5-observation.patch').read_text()\n+    for patch in (rust, c):\n+        assert 'nftrace_commit_point' in patch\n+        assert 'nodefusion_pagetable_map' in patch or '#[inline(never)]' in patch\n+    assert 'self.allocated -= 1;' in rust\n+    assert 'self.allocated += 1;' in rust\n+    assert 'if result.is_some()' in rust\n+    assert 'frame.as_ref().map_or(0, |frame| PhysAddr::from(frame.ppn).0)' in rust\n+    assert 'pub(crate) const NO_TASK: usize = usize::MAX;' in rust\n+    assert 'emit(4, [from_task as u64, to_task as u64, from_pid as u64, to_pid as u64])' in rust\n+    assert 'crate::nftrace::NO_TASK, next_pid' in rust\n+    assert 'crate::nftrace::sched_switch(task_id, idle, pid, crate::nftrace::NO_TASK)' in rust\n+    assert rust.index('add_task(new_task);') < rust.index('crate::nftrace::process_fork(current_task.getpid(), new_pid);')\n+    assert 'nf_used_pages--;' in c\n+    assert 'nf_used_pages++;' in c\n+    assert c.index('nf_used_pages--;') < c.index('nftrace_page_free((uint64)pa, nf_free_pages, nf_used_pages);')\n+    assert c.index('add_task(np);') < c.index('nftrace_proc_fork(p->pid, np->pid);')\n+    assert 'nftrace_sched_switch((uint64)&idle, (uint64)p, (uint64)-1, p->pid);' in c\n+    assert 'nftrace_sched_switch((uint64)p, (uint64)&idle, p->pid, (uint64)-1);' in c\n+    assert c.index('*pte = PA2PTE(pa) | perm | PTE_V;') < c.index('nodefusion_pagetable_map(a, pa, perm | PTE_V);')\n+\n+\n+def test_rcore_2026a_ch5_region_hooks_only_describe_explicit_pte_removal():\n+    patch = (INTEGRATIONS / 'rcore-2026a-ch5-observation.patch').read_text()\n+    assert 'if mapped_end > area.vpn_range.get_start()' in patch\n+    assert 'nodefusion_vm_unmap_region(area.vpn_range.get_start().0, mapped_end.0);' in patch\n+    assert 'if self.vpn_range.get_start() < self.vpn_range.get_end()' in patch\n+    assert 'nodefusion_vm_unmap_region(self.vpn_range.get_start().0, self.vpn_range.get_end().0);' in patch\n+    assert 'if new_end < self.vpn_range.get_end()' in patch\n+    assert 'nodefusion_vm_unmap_region(new_end.0, self.vpn_range.get_end().0);' in patch\n+    # Releasing data-frame ownership on exit leaves the zombie page table alive.\n+    # Do not invent explicit PTE-removal events for that separate operation.\n+    assert 'self.areas.clear();' not in patch\n+\n+\n def test_rcore_ch8_keeps_applicable_vm_and_signal_watchpoints_callable():\n     patch = (INTEGRATIONS / \"rcore-page-table-observation-points.patch\").read_text()\n     assert patch.count(\"#[inline(never)]\") == 6\n@@ -161,7 +230,7 @@ def test_rcore_filesystem_absence_depends_on_the_resolved_build(monkeypatch):\n             (\"proc.alloc\", \"os::task::task::TaskControlBlock\"),\n             (\"proc.fork\", \"os::task::processor::Processor\"),\n             (\"proc.exec\", \"os::task::processor::Processor\"),\n-            (\"vm.unmap\", \"os::task::processor::Processor\"),\n+            (\"vm.unmap\", \"os::mm::memory_set::MemorySet\"),\n             (\"phys.alloc\", \"os::mm::frame_allocator::StackFrameAllocator\"),\n             (\"phys.free\", \"os::mm::frame_allocator::StackFrameAllocator\"),\n             (\"vm.map\", \"os::mm::memory_set::MemorySet\"),\n@@ -189,6 +258,28 @@ def test_ucore_patch_and_manifest_supply_exact_semantics():\n     assert manifest.absent[\"log.commit\"].why == \"feature\"\n \n \n+def test_ucore_2026a_ch4_patch_observes_allocator_results_and_committed_ptes():\n+    patch = (INTEGRATIONS / 'ucore-2026a-ch4-observation.patch').read_text()\n+    paths = [line.split(' b/', 1)[1] for line in patch.splitlines() if line.startswith('diff --git ')]\n+    assert set(paths) == {'os/kalloc.c', 'os/vm.c', 'os/nftrace.c', 'os/nftrace.h'}\n+    assert 'NFT_KALLOC = 1' in patch and 'NFT_KFREE = 5' in patch and 'NFT_ALLOCATOR_STATE = 6' in patch\n+    assert 'nftrace_page_alloc((uint64)l, 1, nf_free_pages, nf_used_pages)' in patch\n+    assert 'nftrace_page_free((uint64)pa, 1, nf_free_pages, nf_used_pages)' in patch\n+    assert 'nftrace_allocator_state(nf_free_pages, nf_used_pages)' in patch\n+    assert patch.index('*pte = PA2PTE(pa) | perm | PTE_V;') < patch.index('nodefusion_pagetable_map(a, pa, perm | PTE_V);')\n+    assert 'const struct nftrace_record record = { type, { a0, a1, a2, a3 } }' in patch\n+\n+\n+def test_ucore_2026a_ch4_page_table_experiment_owns_and_reclaims_its_pages():\n+    patch = (INTEGRATIONS / 'ucore-2026a-ch4-pagetable-experiment.patch').read_text()\n+    assert patch.index('uvmunmap(table, va, 1, 0)') < patch.index('uvmunmap(table, va, 1, 1)')\n+    assert patch.index('uvmunmap(table, TRAMPOLINE, 1, 0)') < patch.index('freewalk(table)')\n+    assert 'walkaddr(table, va + 0x123) != (uint64)frame' in patch\n+    assert 'useraddr(table, va + 0x123) != (uint64)frame + 0x123' in patch\n+    assert 'frame[0x123] != 0x5a' in patch\n+    assert patch.index('kvm_init();') < patch.index('nodefusion_pagetable_experiment();', patch.index('kvm_init();'))\n+\n+\n def test_ucore_showcase_fixes_remain_separate_from_observation_patch():\n     observation = (INTEGRATIONS / \"ucore-nodefusion.patch\").read_text()\n     kernel_fix = (INTEGRATIONS / \"ucore-ch8-showcase.patch\").read_text()\n@@ -204,6 +295,13 @@ def test_ucore_manifest_covers_all_eight_measured_shapes():\n     manifest = load(ROOT / \"manifests\" / \"ucore.toml\")\n     assert manifest.detect == {\"all_symbol\": [\"digits\", \"SBI_SHUTDOWN\"]}\n     assert manifest.derive_feature_absence_from_symbols is True\n+    process = manifest.entity(\"process\")\n+    assert process.liveness[\"skip_when\"] == {\n+        \"field\": \"state\", \"one_of\": [\"UNUSED\", \"P_UNUSED\"]}\n+    fields = {field.name: field for field in process.fields}\n+    assert fields[\"context\"].role == \"sched_context\"\n+    assert fields[\"trapframe\"].role == \"trap_context\"\n+    assert all(fields[name].optional for name in (\"context\", \"trapframe\", \"kstack\"))\n     parent = next(field for field in manifest.entity(\"process\").relations\n                   if field.name == \"parent\")\n     assert parent.optional is True\n"
      },
      {
        "path": "nodefusion/tests/test_resolve.py",
        "sha256": "b14f432eb380c5514b73431978b01b0d715ed9a49f92deb547358fb35dd4d8ec",
        "patch": "diff --git a/nodefusion/tests/test_resolve.py b/nodefusion/tests/test_resolve.py\nindex 0eeed28..585b0a8 100644\n--- a/nodefusion/tests/test_resolve.py\n+++ b/nodefusion/tests/test_resolve.py\n@@ -97,6 +97,30 @@ def test_missing_field_is_absent_not_a_failure():\n     assert resolve_path(dw, tcb, \"inner.priority\").state == ABSENT\n \n \n+def test_rcore_priority_spellings_resolve_without_kernel_branches():\n+    from nodefusion.model.manifest import builtin_dir, load\n+    from nodefusion.model.snapshot import Entity, Field\n+\n+    manifest = load(builtin_dir() / \"rcore.toml\")\n+    specs = [field for entity in manifest.entities if entity.name == \"task\"\n+             for field in entity.fields if field.role == \"priority\"]\n+    assert {field.path for field in specs} == {\"inner.prio\", \"inner.priority\"}\n+    assert all(field.optional for field in specs)\n+    for spelling in (\"prio\", \"priority\", None):\n+        dw, tcb = chain()\n+        if spelling:\n+            dw._s[6].fields[spelling] = 136\n+        fields = {}\n+        for spec in specs:\n+            resolved = resolve_path(dw, tcb, spec.path)\n+            fields[spec.name] = Field(spec.name, resolved.state,\n+                                      value=16 if resolved.state == PRESENT else None,\n+                                      role=spec.role)\n+        entity = Entity(\"task\", 0x1000, fields=fields)\n+        assert entity.role(\"priority\") == (16 if spelling else None)\n+        assert sum(field.ok for field in fields.values()) == (1 if spelling else 0)\n+\n+\n def test_missing_field_names_the_payload_type_not_just_the_wrapper():\n     dw, tcb = chain()\n     why = resolve_path(dw, tcb, \"inner.priority\").reason or \"\"\n"
      }
    ],
    "deployed_source_files": {
      "nodefusion/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/_vendor/elftools/__init__.py": "9385fdca231d9ad83e27a59aa1bc59b252efad8c24cf08c9f39e0b543f675746",
      "nodefusion/_vendor/elftools/common/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/_vendor/elftools/common/construct_utils.py": "d1de2461e60636b52cfc446d00f7a31f152f2ccc43c1a53bc2ba82187ca1e460",
      "nodefusion/_vendor/elftools/common/exceptions.py": "bedd7aa994281100ba13a40dfaad8b03eec17a725a1c4cb23893572d99bbd1ef",
      "nodefusion/_vendor/elftools/common/utils.py": "36a5f64bfb3aab0dba30d9fa05aa1b3f9fbbf86f297eee27c7c12652f5ac308b",
      "nodefusion/_vendor/elftools/construct/__init__.py": "15104eb011a640e4268a9b9221d07201a0360ff0b1c8b49e252ef41fdfbb35de",
      "nodefusion/_vendor/elftools/construct/adapters.py": "5745745b25eb849174ee5c3179b9867b03e0471633e9eac8276aa439fe4c8841",
      "nodefusion/_vendor/elftools/construct/core.py": "df9719893de6454f5bc4c912afc892bcc278ef45ac1553bf4a409278ba347c9d",
      "nodefusion/_vendor/elftools/construct/debug.py": "491486779e464e0f4a59cfd429d8e93c577a0f0d9b969847e69400a3c86acb1c",
      "nodefusion/_vendor/elftools/construct/lib/__init__.py": "973420ec247c18b9e5488743bb099ae82f19c7287ef31dcb529a7283b6e42eb3",
      "nodefusion/_vendor/elftools/construct/lib/binary.py": "f18e4161a11bc95732bd01c577cbe98373081afd5b4112b02fec51a0e1df2e11",
      "nodefusion/_vendor/elftools/construct/lib/bitstream.py": "ee8081769bed1d00a086399c8749a847c1a48b8d08637506bf7d1229b6e1808a",
      "nodefusion/_vendor/elftools/construct/lib/container.py": "0385a420febf5bac714153ceaadd192ff9d09862bc7e17c203bf759aa18b2bb4",
      "nodefusion/_vendor/elftools/construct/lib/hex.py": "55f82dc36f273347c08e9e469fd497368241453b7a63e69e167ad6b316e5e2c7",
      "nodefusion/_vendor/elftools/construct/macros.py": "0244e84cf4f598ac8da7c3d8f1f09b06112a508e71fb8d381b377f1c0472a4e3",
      "nodefusion/_vendor/elftools/dwarf/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/_vendor/elftools/dwarf/abbrevtable.py": "d7d338a6eddd4c1fe02c66d9c2b1c202c36ebcfda28f438a0ac0546dc5a63eb1",
      "nodefusion/_vendor/elftools/dwarf/aranges.py": "399d17d0e3cc18527337d60c1ffc0cfcfc8d5ddcf86af1ef6c359453538344e3",
      "nodefusion/_vendor/elftools/dwarf/callframe.py": "6c77dd3c1b482434d8d86f35922f0c88b1a71c1c19055fa512224d44876a4b5a",
      "nodefusion/_vendor/elftools/dwarf/compileunit.py": "2681263026c2bdd3fd9033e60230024e6b25ca90280df91c3ae0b0fe97bdb9d3",
      "nodefusion/_vendor/elftools/dwarf/constants.py": "30377a1636c5ac41b7a09f7c79c6bae67b49696c4e9b9d904a1a0acaba7dabdb",
      "nodefusion/_vendor/elftools/dwarf/datatype_cpp.py": "b3df1fc9ef56f941e0b38a9ad5da05a3c3821dd1cdc4b440c7c1934bee00a770",
      "nodefusion/_vendor/elftools/dwarf/descriptions.py": "6692ed493344018f4d96fdb70e9b04bdb3ec1428df0448f17fc8ffab2a205851",
      "nodefusion/_vendor/elftools/dwarf/die.py": "b653e8091a49f6926a955d8c05f26c36798ece3d902c00d2b5da10af637bfce7",
      "nodefusion/_vendor/elftools/dwarf/dwarf_expr.py": "db6d4cb9f3f1ee7e85ac1f9286831093d1b65f8c472fe0f9331a7aa164782bcb",
      "nodefusion/_vendor/elftools/dwarf/dwarf_util.py": "2e1cc3030a3cc669e0832e3cb5d4b1e3c82e22ff5a1164e6a878931f8531ce0d",
      "nodefusion/_vendor/elftools/dwarf/dwarfinfo.py": "3cfff046c35f7b063ba4288f1d9bb5167be4f3fdda0af756a299d832d660b75f",
      "nodefusion/_vendor/elftools/dwarf/enums.py": "10d18e4acabc383b8e8527cf4c011874dc9459c3bc30bd65b9212885a146bd7a",
      "nodefusion/_vendor/elftools/dwarf/lineprogram.py": "d9472d85b8c62fe56a7d6371d8cdb8af6268416970bdf909898ccb2606fa850c",
      "nodefusion/_vendor/elftools/dwarf/locationlists.py": "5167c3fb6208e3bafe0a52fc4d48eb164dc84dbd4980643acec19be26639a194",
      "nodefusion/_vendor/elftools/dwarf/namelut.py": "4b62eb965afd3e099835eb8bb9112f2d1ec89cb42adc6b55c1f113b6068d17b3",
      "nodefusion/_vendor/elftools/dwarf/ranges.py": "da3856ee646cf5b305751fa73a2d5fd9b0a21413377ca11cf93ce20e7040386e",
      "nodefusion/_vendor/elftools/dwarf/structs.py": "dfb1d6d755bcc7cf9a0363620e470c5b4a74bf7499a32d82f261652ffe71bef8",
      "nodefusion/_vendor/elftools/dwarf/typeunit.py": "c1bae01e11001941ebd0a10b72d569b4a0800600b3006b20a0b37f88536d1bc9",
      "nodefusion/_vendor/elftools/ehabi/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/_vendor/elftools/ehabi/constants.py": "a386df95ebe53338db1cdfe498a06acf8e976007b5fab5c4eed2b8904932caa8",
      "nodefusion/_vendor/elftools/ehabi/decoder.py": "3380c750ed972e33510a42a1d4de725f744cfc156e44a5d50ae199239cacb10e",
      "nodefusion/_vendor/elftools/ehabi/ehabiinfo.py": "e442ea16826888c9903893db8ccd9cb47f9f634476c1837812c84b6ce4be1b4c",
      "nodefusion/_vendor/elftools/ehabi/structs.py": "5ebdda74af71d7637d41eb0510403d8776d3b7ea70f715edc58aabc836aaae87",
      "nodefusion/_vendor/elftools/elf/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/_vendor/elftools/elf/constants.py": "d805c36820815a58fce8593206a5527c46009756b9397298d086679b6a9d9f23",
      "nodefusion/_vendor/elftools/elf/descriptions.py": "02771b6d1d4eb829b7334e417f580f78eb253c14f895c427c99b870537d363ef",
      "nodefusion/_vendor/elftools/elf/dynamic.py": "13c2621f118f30c6a8b6a0d999bdf8a7d082f0c2b7713eb4203d7b877082f0f7",
      "nodefusion/_vendor/elftools/elf/elffile.py": "0b8629b86828f0f05dea1200261ffaf1849ae675e52943e88a37e6a5e0b73d51",
      "nodefusion/_vendor/elftools/elf/enums.py": "9beb3eb13c4dfe6e2e75ed5db7a75dbb6da7917ed7ea7ad9c2ab7b697c284256",
      "nodefusion/_vendor/elftools/elf/gnuversions.py": "d22136e3242cf4ff379154b5c830706f3be1d77ee41ffab7efeed57e4876c740",
      "nodefusion/_vendor/elftools/elf/hash.py": "538c9b253f89a4b200eeb9c7d82f9cd0c3ae08146b3295538363ba5fced3627a",
      "nodefusion/_vendor/elftools/elf/notes.py": "17cf2c2a9ec9a0bf8f3415cbaeca42d3ab8f1102556251b290a2814e86f16f63",
      "nodefusion/_vendor/elftools/elf/relocation.py": "b0fd391fe0e293ac7dc5bdad495a8d2e72454442c35291781952fa5016f77b0f",
      "nodefusion/_vendor/elftools/elf/sections.py": "5acbfe427062f3f80cad1d556c4113d60136cbe526636e621a6e820ade5d6ab5",
      "nodefusion/_vendor/elftools/elf/segments.py": "103f945c2c7d67eff713609ea189601e94c0e7122274110c6b20d038a5b8bf74",
      "nodefusion/_vendor/elftools/elf/structs.py": "a0f439925915d7f1a69938673da2cebefd0d10860d60caddc81370ce017d8623",
      "nodefusion/host/__init__.py": "eb4e72c7ca2b3242527b39bd840ced588631e97404cea0e72e3131406cdeec59",
      "nodefusion/host/__main__.py": "13a1a5b340cdcfc1902b62be90e508c7c71886000d5bf087e7854aadf09fb35e",
      "nodefusion/host/analyze.py": "b1c4a595a54058841630ba7b18818688efd00b8085b03ca91767208ec3b499e8",
      "nodefusion/host/assets/app.css": "84035a9ddf0faf3ae1d4ebdd7049c142fcee11c20851afb16f636e7220c71949",
      "nodefusion/host/assets/app.js": "ef4a9150df38c69cc2f382836b6e7ded63d58413e3b930d79b5db119548cc3f2",
      "nodefusion/host/bundle.py": "f6117f48b073e117dc0ffa6cdf1af4984d173b3a8f16808730e3746b51c2ad33",
      "nodefusion/host/callstack.py": "a091f8123f33797a628ebcaabbeae721fe458b009b69cee6697221971b7f2fc0",
      "nodefusion/host/cdp.py": "983be57750320be8265405b3fa4c3490288a34bba5b2f0c32820d51895210264",
      "nodefusion/host/cli.py": "6a2f09d5d4ea15299e3f9cbc0f7a2312a322e9c43beb3837d61b2276787af9dd",
      "nodefusion/host/dwarf.py": "158545b640bd312050c9cef773a19f0de839229cb08925a0298a5bb2751b5993",
      "nodefusion/host/elfid.py": "43c44bed9a69fa2b92fc7520342843e71caf0c6a3849d2b23b54e9a22dfdcfa0",
      "nodefusion/host/guest.py": "6871f08f11b9eda17b8a0618e8b8f43a544ddf05a37d7b530daa18d30d4c455a",
      "nodefusion/host/kernels.py": "10dcd1d97aae33b5b389d4106bdf5867468df41a39ce769300448f6d1727b103",
      "nodefusion/host/layout.py": "2f74bd4970af88fa38519c850fbcc494b8a1e4f5ddf7ed87897a442175f0ab82",
      "nodefusion/host/nfelf.py": "5495b1bc5e3406268ba66054e831dfb3fc8857c47b881d95cd995bafa65c5315",
      "nodefusion/host/nftrace.py": "d4fa97efd6527535ab90e4c623e8211bf8b9bf7d189beee47b56b216718c2f76",
      "nodefusion/host/procview.py": "ae1874f57bafa6b694c50aa3c0185671e60fcf0f784d139ee5e807e2f98e9689",
      "nodefusion/host/record.py": "ed6668c5711bcddff0e30a4b82eaf9235e6700746ce186042e39e45219b55428",
      "nodefusion/host/render.py": "46d000d2f40eb934180fba10ec8d8ccb8cc5d1e53e558304fdba941bfcff7dd8",
      "nodefusion/host/resources.py": "019a7be1fc7d86f221f2a67c3a5f7df271d1901500371a02a2113518483fb702",
      "nodefusion/host/shell.py": "08a9b0318ab79c0642d9a0b29683dc65b86c4e529f547530baf4e60b1e67f0af",
      "nodefusion/host/video.py": "1f49810a036f9388ae10153b8691504ed79c3e8b0e19a6bc2818de2ef1fe699d",
      "nodefusion/host/watchlist.py": "1b820dd5d741a118b28959b44d95b886e5fe7518dd5beef3e5561e3cf39822d1",
      "nodefusion/host/wslenv.py": "6b8f5d9e3f71b292e51c980f921dd498315c510d952ef90b24dfbf775b3afa6c",
      "nodefusion/manifests/alien.toml": "da290fe1014168a7e8f44844f30430c3041a14550449c5d51fa06847f23f7aeb",
      "nodefusion/manifests/arceos.toml": "cad48257d081aa1c660d3e7af2f4fbec79bbe232322c71453a9a5b1c9ac7be44",
      "nodefusion/manifests/axvisor.toml": "d6cd2cc9d9662f74a5d25f29e8d02591ae5a205fe18166307ef430edbc7432b3",
      "nodefusion/manifests/rcore.toml": "4a6c4746a885ce7ed68a374516188f02d5955028c94ecfa7e73c5ddf08b73e75",
      "nodefusion/manifests/rel4.toml": "ca43c2847a9ca757542ef3ed3e276dc7130c92b25150c73deb3e2a20faf8c37e",
      "nodefusion/manifests/starry.toml": "8a3ce9735d4c948322962b8c532be334034ad608aac28a041bb58876012dcae8",
      "nodefusion/manifests/ucore.toml": "7ca738a5abfb1c21afdb75b44c2fc0ce81b19d3d2db9aa3d820850b8abf74327",
      "nodefusion/manifests/xv6.toml": "0f501a4441214a2de3b1b50d39665ee23faad6f93024b3b92d30f542bc9b7964",
      "nodefusion/model/__init__.py": "9864ab2acb9890ed2fcbf815f30042fd97e3bd5ce069531f8c76fa2eed60b9d0",
      "nodefusion/model/ctxbuild.py": "552c0d3d87d640e73bfb4c3fc237453c7b84298c721f2d37594c85d1ab5eb86d",
      "nodefusion/model/dwarfsrc.py": "02688f5f8419ba6c8fd64ea4f347929f74c8b70299b632223c5535bab298f265",
      "nodefusion/model/exec.py": "148e68fa1c7054716e4fcb3e7bddb7c0d384ab6a6bfcb00bd15f7a869f6d86ec",
      "nodefusion/model/kinds.py": "0432ef9f134654bc36554ec55afcb9f91c593110cdacf0a58d0ac4d1d05ac569",
      "nodefusion/model/layout.py": "cd2639282b0c4fac684d06309e11e95922213d3d32698f275e65dd060f677fd6",
      "nodefusion/model/manifest.py": "d592aaac9ae308760cda947327c0d7c0e964a26d517740ed66838747e2334a22",
      "nodefusion/model/plan.py": "374fbb225a6717c2c391ac8bdda54aa957638821a45b2865b40a7be9bcc808c6",
      "nodefusion/model/probe.py": "30546d56bbd47ef12567826b49dd910de07e2af8fffc5c4350e04a57f70da5b8",
      "nodefusion/model/readers/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/model/readers/containers.py": "6eec01bd4f30858e1eda2ee7de890a9d93f94eda25e02d0a1bdf3558d31a1610",
      "nodefusion/model/readers/pointers.py": "72f989d643df6bdd477494023aac2da851f2d1f123d5e1e64b7629a0be6eae6b",
      "nodefusion/model/readers/registry.py": "2c35cc0b1f8db857e67c08e9c7976bf47c6ab21faabb4e242d8a0be42f9634ee",
      "nodefusion/model/readers/scalars.py": "a145fe5c4a250cc11fe44d0a4caabae908fbc44994335663955230296f695cbc",
      "nodefusion/model/resolve.py": "0c588760d0ec6494617007b02d786285ba190593935f574f6c53b99ad62ac8c0",
      "nodefusion/model/roles.py": "8d35b0497bd0b2d9abf639d9803fc6b7bd1e1ee5153c0f47ff53a26356dcc8c5",
      "nodefusion/model/rt.py": "3d62e9c6169e89a2593b29ff49919e84a2dda1df1b6fc16d3e54c7cc5d1744af",
      "nodefusion/model/snapshot.py": "e9c4ce76b858a9003e43d9eec363e1b88d4024338c3401b7a47a9871fe5dab7a",
      "nodefusion/model/symbols.py": "05812b00228ba601209ec909213381d47272efdbcac3957914f4590a1d705cfe",
      "nodefusion/model/watchsel.py": "bc3a9d6763950c265efaacce3f0c98194f54808d676b449c5b320b3a90cc7bf1",
      "nodefusion/tests/conftest.py": "2dfa19b096e309beadff0df9a05761d412ec6234e74968854292d7bfecf1b7a5",
      "nodefusion/tests/crosscheck_artifacts.py": "6ee173a31795c3875f93af0a0eaebcb27346c185c24e3f1d32846f5ca89d60a0",
      "nodefusion/tests/fuzz_trace.py": "af6189a6538747d369f982dfb86016f5e48842da0ce73f651b63c0b482b1c37e",
      "nodefusion/tests/kernelelf.py": "9a35d1389243849c6ed16f801a007568eb1304eee3d2cf3bcb8d1e38e12e2aed",
      "nodefusion/tests/stress_pagetable.py": "5db6d3671739ad5d0a3f76908049126185ea000726d0044d4d87ef215f26f737",
      "nodefusion/tests/test_absent_declaration.py": "535d4ace194fc5f923ba989e18634b55cffd0660eaefdfc7a59dcb4377eac266",
      "nodefusion/tests/test_analysis_lookup_cache.py": "aa4fbc0b8f06c64278bc5b11edf21cfe3ec737e3f0d88901b52478aca29765f3",
      "nodefusion/tests/test_analyze_alias.py": "345f6cbd8fae2a7c7729130460112a08a23599461234865f2da72055c3621064",
      "nodefusion/tests/test_arg_names.py": "a0f4cd7c7017da1926fc317d6c73bcb6bd4bacde579e3818fa277079991a4af4",
      "nodefusion/tests/test_artifact_guard.py": "8b53fababf688ceaf4afd1556d3c1352d3a13c60ea43fe14e3d3eae24698d1d0",
      "nodefusion/tests/test_artifact_output_safety.py": "cbed1bfa5928e7b12edc85b506f8018dd3216f017c43461525daf0a299bea9aa",
      "nodefusion/tests/test_bundle_shape.py": "34d227f2726d1820160288b225243b51fe3583839ff52ee245a814eb1c27f81d",
      "nodefusion/tests/test_cache_hit_contract.py": "087277fe75bf38d8e83453b3671da4825f7586382fc1fa5300b3dc79272fbee7",
      "nodefusion/tests/test_calibration_failure_reason.py": "02449f59da919dc09781a66ad57789a98775b3888d1480f4f3064b4d8a1139da",
      "nodefusion/tests/test_callstack.py": "f81c2f42b453d26287f1cbab835cff47a2722d8c62b486529fbbcfc20c94c872",
      "nodefusion/tests/test_capability_notes.py": "a2fb61afdc826c0c5408ea3b385761f896b27191e54881c3e10b10a2f01cc272",
      "nodefusion/tests/test_compact_capability_ui.py": "07542f2beb95353f3dd3861ca3ffcec93d1f46c966c3dd74c82d27fc3b6427ad",
      "nodefusion/tests/test_consolidate_artifacts.py": "5ffa4d01f5adb051f2153c3097d2264dfa7c63533f4cf6c09159fc50cd843cdd",
      "nodefusion/tests/test_context_switch_snapshot.py": "db5c77b5ab4ad93d34a96266386dbeec80694db7482bfa5856c1547f773ccb9d",
      "nodefusion/tests/test_corpus_selection.py": "1717ce9682ecde7a05675b790914a8e5a590e1d83556944ddbfff1e38918d050",
      "nodefusion/tests/test_coverage_evidence.py": "fdbb041e7339f8d94a52a1833b01e315657a749e9bc7d21fee6a2724f23a86f3",
      "nodefusion/tests/test_demangle_v0.py": "9f91c7ab6d2f681368c63d2bde9109cb4dd501f4d5df3e1f728a7b8975a0b061",
      "nodefusion/tests/test_dwarf_generic_base.py": "f9204c883a298151406288885c32c04fd1e7db423fe6cb0747f0f4392ba0fef5",
      "nodefusion/tests/test_dwarf_tombstones.py": "ed608be359e8180a5355cafe93e64d417543cc014461710f55fcd5997bef7295",
      "nodefusion/tests/test_dwarfsrc_location.py": "bcd7c6e8cf00a086fd9c712ffa35aebfbb4e09aaf20ddaedc4f2f5b41604cad9",
      "nodefusion/tests/test_elf_archive.py": "573747576adf2bf4daf66d5f99b6a149eff663ebcd6743b79b4b39d57d20dda5",
      "nodefusion/tests/test_elfid.py": "3efd46b3688e79f7ccc376abb32f20b495b7c074dbd84c5181d67fade3db729c",
      "nodefusion/tests/test_event_kind_pairs_measured_from_runs.py": "ef1a4ce55dc22b8f1073f3d4ac9120b30c68cf0877ba6e4dc5788f81217cdf55",
      "nodefusion/tests/test_event_kind_registry.py": "276bb984ee002622d0284558df13234328a3779853c5b1681d71d827069bfd9d",
      "nodefusion/tests/test_event_kinds.py": "7d066f949905b4df866f0ebfa3ead6cc3b78c7d8416d8b0a5660332dd2f6ef47",
      "nodefusion/tests/test_event_snapshot_throttle.py": "2709d806da483ef8bcdb57ddb6c59a73da83a859b793d7cd5d15891ccfcedd87",
      "nodefusion/tests/test_event_when_branches.py": "0b866c908cbc40deca18830293d161eb9b1f3401792d3fed1b1041e7e9b5e2de",
      "nodefusion/tests/test_exec_iter_map.py": "026e1e908df1884c4d241902c845dd72a43c095e5ab28e94fb7069f621698562",
      "nodefusion/tests/test_exec_walk.py": "67fc662f5b36cff81c1c1ab6a1dfe842081a05a1c3f69a64e8d212da0b7cb985",
      "nodefusion/tests/test_func_events_scope.py": "de9f69b6673c312537ce72cfd6c91baa4355749558609ca0b696c21d8f790198",
      "nodefusion/tests/test_kernel_elf_fixture.py": "ada3976b4b49734884bdb9b3844886e92251240671fe8ae219ed1f70c32c935b",
      "nodefusion/tests/test_kernel_image_fit.py": "32c7bd1bf3b66c7071b36582ca32838af2777157f1ae999a46785e6a39675476",
      "nodefusion/tests/test_kernel_integrations.py": "8e3ecdcf6ad5ea3b7fa44a3e3244a2c9678255b62c02d8cd48de9cfc1189b376",
      "nodefusion/tests/test_kernel_view.py": "4cc544296573cab8df9858947e6d7040fb22aba4b29aac1b43a565b39d9e7ab5",
      "nodefusion/tests/test_kind_three_states.py": "64764f687af895b3b37bc69179f2729f49efe2fb5fc5a24ecc09c41ea38e70ed",
      "nodefusion/tests/test_layout_routing.py": "14631aae85b75dcb1c1c5cec92c344f1c01433e2ae6eb90a3c105ac583372a5c",
      "nodefusion/tests/test_list_arceos.py": "22dbff8051cf7076ad5be6f919ed6d9a0c7a70bd1b6e09ca2f6589b5fb94493f",
      "nodefusion/tests/test_list_wiring.py": "e5f187b746738a5ca027936468df8ab7d2e48e32fe550eca3fa57f217c60d5cb",
      "nodefusion/tests/test_manifest_docs.py": "9be0200ca41d0f0512519356c81911cbbaf2aca63530d99e2aba53de9a1eea37",
      "nodefusion/tests/test_manifest_lint.py": "ad03a1e3519feb79fbeacdbe6576f90b05e7c6c9cb3034c44bd1032163b69888",
      "nodefusion/tests/test_manifest_roles.py": "b1a8fca196f9b37b614f3cd39abe33ad64c58894d1c933996d553c8f573d147e",
      "nodefusion/tests/test_manifest_vocabulary.py": "834eb61d446df47b1c6ebcd4e8a7347eabc24486da052b4be8f5b0660b0f631d",
      "nodefusion/tests/test_metric_deps_are_kinds_not_xv6_names.py": "07f411bb3fcbb14c2eb6c222f4a4928426a86a45d82f11cb242130c49eb6c717",
      "nodefusion/tests/test_no_build.py": "f831e3504531cdd9f8f588428e7a7e86fa420bdee27cbf74522fac05bb27d6fa",
      "nodefusion/tests/test_pagetable_arch.py": "9946ed7788d72107d6c6ea81fa4204843e1a0ae291add95259f3e96a0f661eb2",
      "nodefusion/tests/test_path_index_gate.py": "8486e4f1d0d8f91800321a7907ae6797a59d6576cae0614c8db6f91c8ecee9ae",
      "nodefusion/tests/test_percpu_layout.py": "4ecfcf97552e678173bca5fe81eb661bc7f417ba2f4ea4de3c540ba956152495",
      "nodefusion/tests/test_percpu_runtime_layout.py": "ba54784385c6a6716eb3f3317635c8b2dd09b40e5e3e5e6112ca5b92d4e7c62c",
      "nodefusion/tests/test_phys_alloc_gate.py": "a9a2a0b654cc803871d3702c25d2cfae95f8b1d3d8a881f00579fb3a0ef2fd02",
      "nodefusion/tests/test_plan_iter_map.py": "58fcacc67e31cf6638ce4d846dccf32312ae17caed1d9470d0ba468fd95a4b5a",
      "nodefusion/tests/test_plan_percpu.py": "5ece34163ede167484cc5edd5d3255d8514935af7a385b171b1b64c6e928140e",
      "nodefusion/tests/test_plan_steps.py": "0241755b6c85983779fad700e2eba5332ab595cc64e6297e8358ba4d15f9dfb7",
      "nodefusion/tests/test_procs_gate.py": "8acd3d3e2398fcd008dd4f5bae735183008eb4cecf6f4c09d0fffaefdf50cd8d",
      "nodefusion/tests/test_procview.py": "9f48157ccc96833a83a42f2f3c3eb26a82bd7f6918c0c3c91a6052c5d9657428",
      "nodefusion/tests/test_profile_from_manifest.py": "9f7cf3aa6cb931445e9e6c763bf2c30b1505e4b728f759514033994b5b60b16c",
      "nodefusion/tests/test_rcore_fs_vocabulary.py": "48c49c9f091d4c964715cf55216b8354ea59697a0ef58ec18850f5e8e89f80c5",
      "nodefusion/tests/test_rcore_inlined_halves.py": "fd61e489c857fcaa5cdbe2466e74b1ba6a547eb7b18fd12fbda80ce927c6f516",
      "nodefusion/tests/test_readers_containers.py": "b0f882dd388f9bc3796b8f5d8c29d72c7dd6b5d8b7866055f810a7bbb2295d2f",
      "nodefusion/tests/test_readers_pointers.py": "e15d27e41ca320d960720f6760ffd0ff6216f658c74ab373148dc3307fa24fd8",
      "nodefusion/tests/test_readers_registry.py": "b139bcca13c15f203e73a427d9d6dc5804b97fc76a28d14025325f191cc4a6a5",
      "nodefusion/tests/test_readers_scalars.py": "3a15bf0648767fb8e7d24044aeb61eb312ace64ab51f834e0a2dfe39072b9cd5",
      "nodefusion/tests/test_record_icount.py": "b84db1f0c55683e9ccf8eaafdcef09dd37bb67a5fa555814d4d750ff97f844df",
      "nodefusion/tests/test_recording_tail.py": "833b8e33c6d111b49790beea1ba7ab81b23bd7ea907a2155f981967bcb61a614",
      "nodefusion/tests/test_regenerate_artifact.py": "4b2046cdcc98219c4181ca174f4ca02b6e3b5cfbfdd7bb6506c85112007e21f3",
      "nodefusion/tests/test_resolve.py": "b14f432eb380c5514b73431978b01b0d715ed9a49f92deb547358fb35dd4d8ec",
      "nodefusion/tests/test_resources.py": "0860476f362a770bd04355592a83fdb15aa9df3787c6c740d407cb8ee4fc817e",
      "nodefusion/tests/test_sampled_counts_are_not_exact.py": "7bd598eb07ef0b067cee3460ef0c61d18b8b918ae697d80b01617cf73eaf0a9a",
      "nodefusion/tests/test_shell_verdict.py": "22baff1ad7cb43b5c5574b424812c40b194e30e3800921429659f7b31cbe20f4",
      "nodefusion/tests/test_snapshot.py": "17ef07a10857516f2fd29186157b945ff67490d2cdac94166cf370e96171e034",
      "nodefusion/tests/test_source_combine.py": "506ebb5c6dda153e92b854887fb671cf4aa08d33fd8305b359139a1d38ee4349",
      "nodefusion/tests/test_spec_nftrace_registry.py": "c529a4ed1f86bee4951e4699b09d466d51a5bd0623accc49bff9abcfdf15e615",
      "nodefusion/tests/test_split_rawvec.py": "e80f55fc42e246f3f638979500c7c40548eb0f630c512a93b8eaa00df312eac4",
      "nodefusion/tests/test_switch_attribution.py": "c773376888e9dc2ce87ddbebc14ccb0649ea77da189319692e20aff16eddb73d",
      "nodefusion/tests/test_symbols_static_wrapper.py": "cf634a6545564e8949b9129cee0c5f01f3dcf60effd49883c3b908aa28af7f82",
      "nodefusion/tests/test_trace_complete.py": "ac33d1da9aba97c98c68502188522a253709e96cf3fbb8d3c94b85c661cea366",
      "nodefusion/tests/test_trace_streaming.py": "6c972f95a790afac5b9aa84320038bf0eab41b926126334db7290d095f2b1e10",
      "nodefusion/tests/test_units.py": "c5b167cca227c5620b958329f5461232bc73e22997e5fe58a02859bb3664feef",
      "nodefusion/tests/test_unobservable_does_not_speak_for_the_kernel.py": "448c03147a2306d8205762bdc9a9e0d9e8d5eb0e0c5199d17d80c2f076f87547",
      "nodefusion/tests/test_video_sections.py": "c84c17b471460ae45a25341a8f893768816f57a9eb94e9f9a90e7e20406c4a31",
      "nodefusion/tests/test_watchlist_wire.py": "1e01dd4fde92169c0ab1296dbd249865cddde4173ec8de3c71c39f61356f74c3",
      "nodefusion/tests/test_watchsel.py": "89c8bb635534d079e0502d1c118f32eaa806250d74195a9d99bb71d07aabcd2d",
      "nodefusion/tools/crosscheck_decoder.py": "2f69a3f636d910f93f24939bcd03b41d9b0a17184ce4a4b15250e00f65b47a28",
      "nodefusion/tools/crosscheck_dwarf.py": "b30ecfa371c6959b2522db6d9edabf7e0c7be238feef34ff9411d76a4b4fdf01",
      "nodefusion/tools/crosscheck_layout.py": "d77ebd7aaa1ace070392eca0051f1b34dbf65d08c355edf87101b7e449aa7106",
      "nodefusion/tools/crosscheck_offsetof.py": "732e30d19129e0a1f15e33a2c1f96d940abaa1a26829b8f0d7bc44bf873cdc87",
      "nodefusion/tools/crosscheck_procinfo.py": "c3d6dd588b28d9252ddb712dea0ab8d3212dffed7f9256b9b936860fa0dfb8a9",
      "nodefusion/tools/crosscheck_procs.py": "b497c8fd050c0d6d1e4154eda00c1eef05502d3826546b1165b8a740c6fee562",
      "nodefusion/tools/crosscheck_resources.py": "98b04ac869e3c9e38020728473d480b8ed0b15385bc1d530e466919807ad1ac3",
      "nodefusion/tools/crosscheck_watchsel.py": "52142d49e919f2f040371b404cabdef0d0edbbf977abdcb1af5063b910d0aad8",
      "nodefusion/tools/survey_chapters.py": "6952dbdb8036916acd17bd5f642ea0b62aa10cbbec2bb4227e58f5132683589b",
      "scripts/benchmark_trace.py": "0faf86ba735bc31a20ee8e7ae3d3aad8aef78f0f43cdd33e831658f4e2a71494",
      "scripts/consolidate_artifacts.py": "31700c7f0a1f21fef653e061115b0091aa1a4ce539b9baa9cb48ad914889dadd",
      "scripts/finalize_artifacts.py": "a10224f43e0554eeb347a201dfd29781fbe0a39b979f890cccbec65e76cea9eb",
      "scripts/regenerate_artifact.py": "aed10d1eedc5689b6fd68e84a9bb8ae0c98f7bb8456fd8bd280e8bae470b8e9a"
    },
    "plugin_sha256": "f1d1d8e375ed789b57f0fa06285da182b90951324e09e3f0c3716a38353112f2",
    "source_archive": {
      "path": "/home/joseph/nf/education-2026A-20260927/rcore-2026A-ch5-basic-observed-v2-source.tar.gz",
      "sha256": "27874266682756519adef336fa0e54331ecb8396aa73e758d1bf722bf7c19ad9",
      "bytes": 1989333
    }
  },
  "analysis_source": {
    "nodefusion_commit": "bce9de05d36d5cdd0afc71121e7c9b1016c08664",
    "nodefusion_runtime_overrides": [
      {
        "path": "nodefusion/host/analyze.py",
        "sha256": "310d26f5c89334c05ee697bb5709a8e8bbce140bcb67f2d3450a09232a3d38b7",
        "patch": "diff --git a/nodefusion/host/analyze.py b/nodefusion/host/analyze.py\nindex a6ca1e7..7108a60 100644\n--- a/nodefusion/host/analyze.py\n+++ b/nodefusion/host/analyze.py\n@@ -642,6 +642,12 @@ class Analysis:\n         from ..model.manifest import _COMPLETENESS\n         from ..model.snapshot import _completeness\n         got = _completeness(res.sources)[\"completeness\"]\n+        if got == \"total\":\n+            from ..model.resolve import PRESENT\n+            contexts = [field for entity in ents.res.entities if entity.sources\n+                        for field in entity.fields if field.role == \"sched_context\"]\n+            if not any(field.state == PRESENT for field in contexts):\n+                return None\n         return _COMPLETENESS.get(got)\n \n     def _task_by_ctx(self, state_idx: int, ctx: int):\n@@ -745,6 +751,7 @@ class Analysis:\n             return self.states[i].ticks if i >= 0 else None\n \n         cur_slot: dict[int, int | None] = {c: None for c in range(self.ncpu)}\n+        self._semantic_current: dict[int, tuple[int | None, str | None]] = {}\n \n         merged = heapq.merge(\n             ((d.insn, 0, \"discon\", d) for d in tr.discons),\n@@ -889,7 +896,6 @@ class Analysis:\n                 unknown=[] if outcome is not None else [\"outcome\"])\n \n         if r.type == self.NFT_SCHED_SWITCH:\n-            pid, proc = self._attribute(r.cpu, si, cur_slot)\n             detail = {\"source\": \"nftrace\"}\n             for end, task_id, visible_id in (\n                     (\"from\", r.a[0], r.a[2]), (\"to\", r.a[1], r.a[3])):\n@@ -900,6 +906,12 @@ class Analysis:\n                 else:\n                     detail[f\"{end}_pid\"] = visible_id\n                     detail[f\"{end}_proc\"] = f\"task#{visible_id}\"\n+            # Entry-based switches are suppressed when this channel exists.\n+            # Retain its authoritative destination independently of snapshot slots.\n+            if not hasattr(self, \"_semantic_current\"):\n+                self._semantic_current = {}\n+            pid, proc = detail[\"to_pid\"], detail[\"to_proc\"]\n+            self._semantic_current[r.cpu] = (pid, proc)\n             return Event(\n                 insn=r.insn, cpu=r.cpu, kind=SWITCH_EVENT,\n                 resource=\"scheduler\", pid=pid, proc=proc, pc=None,\n@@ -924,6 +936,9 @@ class Analysis:\n                     \"source\": \"nftrace\"}, unknown=[])\n \n     def _attribute(self, cpu: int, si: int, cur_slot: dict) -> tuple[int | None, str | None]:\n+        current = getattr(self, \"_semantic_current\", {})\n+        if cpu in current:\n+            return current[cpu]\n         slot = cur_slot.get(cpu)\n         if slot is None:\n             return None, None\n"
      },
      {
        "path": "nodefusion/host/record.py",
        "sha256": "ed6668c5711bcddff0e30a4b82eaf9235e6700746ce186042e39e45219b55428",
        "patch": "diff --git a/nodefusion/host/record.py b/nodefusion/host/record.py\nindex ac7695e..93323e0 100644\n--- a/nodefusion/host/record.py\n+++ b/nodefusion/host/record.py\n@@ -399,6 +399,10 @@ class Recorder:\n                     f\"内核自己按顺序跑完所有应用，没有地方喂命令。\")\n \n \n+    @property\n+    def interactive_workload(self) -> bool:\n+        return self.profile.interactive and bool(self.cfg.program) and self.cfg.program != NO_PROGRAM\n+\n     def effective_lab_stage(self) -> int | None:\n         if self.cfg.lab_stage is not None:\n             return self.cfg.lab_stage\n@@ -445,8 +449,7 @@ class Recorder:\n                 f\"--no-build：这次没有编译，直接用了现成的 \"\n                 f\"{self.kernel_elf_path}（修改时间 \"\n                 f\"{mt.strftime('%Y-%m-%d %H:%M UTC')}）。\"\n-                \"也就是说**没人验证过这份二进制是当前源码编出来的**；\"\n-                \"它可能是任何时候留下的。ELF 指纹见 kernel_elf_identity。\")\n+                \"ELF 校验和见 kernel_elf_identity。\")\n             return \"(--no-build：跳过构建)\"\n \n         mv = self._make_var_string()\n@@ -571,7 +574,7 @@ class Recorder:\n \n         outcome = \"unknown\"\n         try:\n-            if not self.profile.interactive:\n+            if not self.interactive_workload:\n                 outcome = self._drive_headless(proc, reader)\n             else:\n                 outcome = self._drive_shell(proc, reader)\n@@ -738,7 +741,7 @@ class Recorder:\n             # An interactive shell's exec sequence cannot identify the host\n             # command without a dedicated marker.\n             prog_start = _program_start_from_trace(\n-                tr, wl_json, interactive=self.profile.interactive)\n+                tr, wl_json, interactive=self.interactive_workload)\n             tmp_trace.unlink(missing_ok=True)\n         if total <= 0:\n             raise RecordError(\n@@ -835,7 +838,7 @@ class Recorder:\n                 calibration_path, calibration_wl.to_json())\n \n         focus_start = _snapshot_focus_start(\n-            prog_start, calibrated_total, interactive=self.profile.interactive)\n+            prog_start, calibrated_total, interactive=self.interactive_workload)\n \n         if c.snap_insns is not None:\n             snap_insns = c.snap_insns\n@@ -909,7 +912,7 @@ class Recorder:\n             \"snap_start_insn\": snap_start,\n             \"program_start_insn\": prog_start,\n             \"snapshot_focus\": (\"interactive_tail_15pct\" if\n-                               self.profile.interactive and not prog_start and\n+                               self.interactive_workload and not prog_start and\n                                c.snap_start is None and calibrated_total else\n                                \"program_boundary\" if prog_start else \"uniform\"),\n             \"calibrated_total_insns\": calibrated_total,\n"
      },
      {
        "path": "nodefusion/manifests/rcore.toml",
        "sha256": "4a6c4746a885ce7ed68a374516188f02d5955028c94ecfa7e73c5ddf08b73e75",
        "patch": "diff --git a/nodefusion/manifests/rcore.toml b/nodefusion/manifests/rcore.toml\nindex 3579114..01e843c 100644\n--- a/nodefusion/manifests/rcore.toml\n+++ b/nodefusion/manifests/rcore.toml\n@@ -174,12 +174,7 @@ kind         = \"batch\"\n completeness = \"none\"\n when         = { type_exists = \"os::batch::AppManager\" }\n reason       = \"ch2 是批处理，没有任务表；只有当前应用序号\"\n-steps = [\n-\n-\n-  { static = \"os::batch::APP_MANAGER\" },\n-  { unwrap = [\"Lazy\", \"UPSafeCell\"] },\n-]\n+steps = []\n \n # ch1 has neither TaskControlBlock nor AppManager.  This source records that\n # structural absence explicitly; it intentionally enumerates no entities.\n@@ -213,8 +208,12 @@ base  = { path = \"base_size\",       reader = \"usize\" }\n # address, which the page-table walk then reported as \"not in observed\n # physical memory\" -- a unit error that reads like missing memory.\n # `.__0` rather than the tuple struct itself so no field offset is assumed.\n-pgtbl = { path = \"inner.memory_set.page_table.root_ppn.__0\", reader = \"ppn\", role = \"address_space_root\" }\n-prio  = { path = \"inner.priority\",  reader = \"usize\", role = \"priority\" }\n+pgtbl = { path = \"memory_set.page_table.root_ppn.__0\", reader = \"ppn\", role = \"address_space_root\" }\n+prio  = { path = \"inner.prio\",      reader = \"usize\", role = \"priority\" }\n+priority = { path = \"inner.priority\", reader = \"usize\", role = \"priority\" }\n+stride = { path = \"inner.stride\", reader = \"usize\" }\n+heap_bottom = { path = \"inner.heap_bottom\", reader = \"usize\" }\n+program_brk = { path = \"inner.program_brk\", reader = \"usize\" }\n \n \n \n@@ -223,7 +222,7 @@ exit  = { path = \"inner.exit_code\", reader = \"i32\", role = \"exit_code\" }\n \n \n \n-trapcx = { path = \"inner.trap_cx_ppn.__0\", reader = \"ppn\", role = \"trap_context\" }\n+trapcx = { path = \"trap_cx_ppn.__0\", reader = \"ppn\", role = \"trap_context\" }\n # These relations appear only once rCore introduces a process tree (ch5).\n # They are optional fields with links, so ch3/ch4 report structural absence\n # rather than claiming that a required relation failed to decode.\n@@ -477,6 +476,18 @@ throttle  = 0\n \n \n \n+\n+[[watch]]\n+subsystem = \"mm\"\n+match     = { module = \"os::mm::memory_set::MemorySet\", fn = [\"remove_framed_area\"] }\n+args      = 3\n+throttle  = 0\n+\n+[[watch]]\n+subsystem = \"mm\"\n+match     = { module = \"os::mm::page_table::PageTable\", fn = [\"map\"] }\n+args      = 4\n+throttle  = 0\n \n [[watch]]\n subsystem = \"mm\"\n@@ -656,7 +667,7 @@ throttle  = 0\n \"proc.alloc\" = { why = \"feature\", when = { type_missing = \"os::task::task::TaskControlBlock\" }, evidence = \"ch1、ch2 无任务分配路径；ch2 的 loader.c 复用同一应用内存区依次装入二进制，ch3 起引入 TaskControlBlock。\" }\n \"proc.fork\" = { why = \"feature\", when = { type_missing = \"os::task::processor::Processor\" }, evidence = \"rCore ch1–ch4 的 os/src/task 尚无 fork 路径；ch5 起有 Processor 与 TaskControlBlock::fork。按当前 ELF 的 Processor 类型核对阶段。\" }\n \"proc.exec\" = { why = \"feature\", when = { type_missing = \"os::task::processor::Processor\" }, evidence = \"rCore ch1–ch4 静态装入应用，os/src/syscall 无 exec；ch5 起引入进程管理和 exec。按当前 ELF 的 Processor 类型核对阶段。\" }\n-\"vm.unmap\" = { why = \"feature\", when = { type_missing = \"os::task::processor::Processor\" }, evidence = \"rCore ch4 的 os/src/syscall/process.rs 中 sys_munmap 明确为 NOT IMPLEMENTED YET；ch5 起有进程内存回收。按当前 ELF 的 Processor 类型区分阶段。\" }\n+\"vm.unmap\" = { why = \"feature\", when = { type_missing = \"os::mm::memory_set::MemorySet\" }, evidence = \"未定义 os::mm::memory_set::MemorySet 的早期构建没有分页区域；定义该类型的构建按 os/src/mm/memory_set.rs 中的区域取消映射路径检查，包括 2026A 的 remove_framed_area。\" }\n \"phys.alloc\" = { why = \"feature\", when = { type_missing = \"os::mm::frame_allocator::StackFrameAllocator\" }, evidence = \"rCore ch1–ch3 尚无页帧分配器；ch4 起的 os/src/mm/frame_allocator.rs 定义 StackFrameAllocator。按当前 ELF 的该类型核对阶段。\" }\n \"phys.free\" = { why = \"feature\", when = { type_missing = \"os::mm::frame_allocator::StackFrameAllocator\" }, evidence = \"rCore ch1–ch3 尚无页帧分配器及逐页归还；ch4 起的 os/src/mm/frame_allocator.rs 实现分配与回收。按当前 ELF 的类型核对阶段。\" }\n \"vm.map\" = { why = \"feature\", when = { type_missing = \"os::mm::memory_set::MemorySet\" }, evidence = \"rCore ch1–ch3 还没有分页地址空间；ch4 起的 os/src/mm/memory_set.rs 定义 MemorySet 并建立区域映射。按当前 ELF 的类型核对阶段。\" }\n@@ -828,7 +839,7 @@ throttle  = 0\n \n \"os::mm::frame_allocator::frame_dealloc\" = \"phys.free\"\n \"os::mm::frame_allocator::frame_alloc\" = \"phys.alloc\"\n-\"os::mm::page_table::PageTable::map\" = \"pagetable.map\"\n+\"os::mm::page_table::PageTable::map\" = { kind = \"pagetable.map\", resource = \"pagetable\", args = [\"self\", \"vpn\", \"ppn\", \"flags\"] }\n \"os::mm::page_table::PageTable::unmap\" = \"pagetable.unmap\"\n \"os::mm::page_table::PageTable::new\" = \"pagetable.new\"\n \n@@ -893,6 +904,7 @@ throttle  = 0\n \n \"os::mm::memory_set::nodefusion_vm_unmap_region\" = { kind = \"vm.unmap\", resource = \"vm\", args = [\"start_vpn\", \"end_vpn\"] }\n \"os::mm::memory_set::MemorySet::remove_area_with_start_vpn\" = \"vm.remove_area\"\n+\"os::mm::memory_set::MemorySet::remove_framed_area\" = { kind = \"vm.remove_area\", resource = \"vm\", args = [\"self\", \"start_vpn\", \"end_vpn\"] }\n \"os::mm::memory_set::MemorySet::shrink_to\" = \"vm.shrink\"\n \"os::mm::memory_set::MemorySet::append_to\" = \"vm.grow\"\n \"os::mm::init\" = \"vm.init\"\n@@ -1550,3 +1562,35 @@ opts = [\n [syscalls]\n files   = [\"os/src/syscall/mod.rs\"]\n pattern = 'const\\s+SYSCALL_(?P<name>\\w+)\\s*:\\s*usize\\s*=\\s*(?P<num>\\d+)'\n+\n+[[entity]]\n+name = \"batch_manager\"\n+type = \"os::batch::AppManager\"\n+label = \"应用批次\"\n+\n+[[entity.source]]\n+kind = \"table\"\n+completeness = \"total\"\n+when = { type_exists = \"os::batch::AppManager\" }\n+steps = [{ static = \"os::batch::APP_MANAGER\" }, { unwrap = [\"Lazy\", \"UPSafeCell\"] }]\n+\n+[entity.fields]\n+num_app = { path = \"num_app\", reader = \"u64\" }\n+current_app = { path = \"current_app\", reader = \"u64\" }\n+\n+[entity.table]\n+empty = \"当前没有应用批次。\"\n+  [[entity.table.column]]\n+  key = \"num_app\"\n+  label = \"应用数\"\n+  [[entity.table.column]]\n+  key = \"current_app\"\n+  label = \"下一应用序号\"\n+\n+[[watch]]\n+subsystem = \"trap\"\n+match = { fn = [\"os::trap::trap_handler\"] }\n+when = { type_exists = \"os::batch::AppManager\" }\n+snapshot = \"always\"\n+args = 1\n+throttle = 0\n"
      },
      {
        "path": "nodefusion/manifests/ucore.toml",
        "sha256": "7ca738a5abfb1c21afdb75b44c2fc0ce81b19d3d2db9aa3d820850b8abf74327",
        "patch": "diff --git a/nodefusion/manifests/ucore.toml b/nodefusion/manifests/ucore.toml\nindex 4312842..750f358 100644\n--- a/nodefusion/manifests/ucore.toml\n+++ b/nodefusion/manifests/ucore.toml\n@@ -33,17 +33,29 @@ steps = [\n   { iter = \"array\" },\n ]\n \n+[[entity.source]]\n+kind = \"batch\"\n+completeness = \"none\"\n+when = { all = [{ type_missing = \"proc\" }, { symbol_exists = \"clean_bss\" }, { symbol_missing = \"pool\" }, { symbol_missing = \"allocproc\" }, { symbol_missing = \"scheduler\" }] }\n+steps = []\n+\n [entity.liveness]\n-skip_when = { field = \"state\", equals = \"P_UNUSED\" }\n+skip_when = { field = \"state\", one_of = [\"UNUSED\", \"P_UNUSED\"] }\n \n [entity.fields]\n pid         = { path = \"pid\",         reader = \"i32\",  role = \"id\" }\n state       = { path = \"state\",       reader = \"enum\", enum = \"procstate\", role = \"state\" }\n \n [entity.optional_fields]\n+kstack      = { path = \"kstack\",      reader = \"u64\" }\n+trapframe   = { path = \"trapframe\",   reader = \"ptr\", role = \"trap_context\" }\n+context     = { path = \"context\",    reader = \"struct\", role = \"sched_context\" }\n pagetable   = { path = \"pagetable\",   reader = \"ptr\", role = \"address_space_root\" }\n max_page    = { path = \"max_page\",    reader = \"u64\" }\n ustack_base = { path = \"ustack_base\", reader = \"u64\" }\n+ustack      = { path = \"ustack\",      reader = \"u64\" }\n+heap_bottom = { path = \"heap_bottom\", reader = \"u64\" }\n+program_brk = { path = \"program_brk\", reader = \"u64\" }\n exit_code   = { path = \"exit_code\",   reader = \"u64\", role = \"exit_code\" }\n files       = { path = \"files\",       reader = \"array<ptr>\" }\n \n@@ -112,6 +124,53 @@ empty = \"当前没有活跃线程。\"\n \n # -------------------------------------------------------------- resources\n \n+[[entity]]\n+name = \"batch_context\"\n+type = \"trapframe\"\n+label = \"用户上下文\"\n+\n+[[entity.source]]\n+kind = \"table\"\n+completeness = \"total\"\n+when = { all = [{ type_exists = \"trapframe\" }, { symbol_exists = \"trap_page\" }, { symbol_missing = \"pool\" }] }\n+steps = [{ static = \"trap_page\" }]\n+\n+[[entity.source]]\n+kind = \"batch\"\n+completeness = \"none\"\n+when = { all = [{ type_exists = \"proc\" }, { symbol_exists = \"pool\" }, { symbol_missing = \"trap_page\" }] }\n+steps = []\n+\n+[entity.fields]\n+epc = { path = \"epc\", reader = \"u64\" }\n+user_sp = { path = \"sp\", reader = \"u64\" }\n+kernel_sp = { path = \"kernel_sp\", reader = \"u64\" }\n+a0 = { path = \"a0\", reader = \"u64\" }\n+a1 = { path = \"a1\", reader = \"u64\" }\n+a2 = { path = \"a2\", reader = \"u64\" }\n+a7 = { path = \"a7\", reader = \"u64\" }\n+\n+[entity.table]\n+empty = \"本构建没有独立的批处理上下文。\"\n+  [[entity.table.column]]\n+  key = \"epc\"\n+  label = \"返回地址\"\n+  format = \"hex\"\n+  [[entity.table.column]]\n+  key = \"user_sp\"\n+  label = \"用户栈\"\n+  format = \"hex\"\n+  [[entity.table.column]]\n+  key = \"kernel_sp\"\n+  label = \"内核栈\"\n+  format = \"hex\"\n+  [[entity.table.column]]\n+  key = \"a7\"\n+  label = \"a7\"\n+  [[entity.table.column]]\n+  key = \"a0\"\n+  label = \"a0\"\n+\n [[entity]]\n name  = \"bcache\"\n type  = \"buf\"\n@@ -264,12 +323,20 @@ empty = \"当前没有活跃 inode。\"\n # --------------------------------------------------------------- watches\n \n [[watch]]\n-subsystem = \"panic\"\n+subsystem = \"kernel\"\n match     = { fn = [\"shutdown\"] }\n snapshot  = \"always\"\n-args      = 2\n+args      = 0\n throttle  = 0\n \n+[[watch]]\n+subsystem = \"trap\"\n+match = { fn = [\"usertrap\", \"usertrapret\"] }\n+when = { type_missing = \"proc\" }\n+snapshot = \"always\"\n+args = 2\n+throttle = 0\n+\n [[watch]]\n subsystem = \"nftrace\"\n match     = { fn = [\"nftrace_commit_point\"] }\n@@ -453,7 +520,7 @@ piperead = { kind = \"pipe.read\", resource = \"pipe\" }\n pipewrite = { kind = \"pipe.write\", resource = \"pipe\" }\n pipeclose = { kind = \"pipe.close\", resource = \"pipe\" }\n \n-shutdown = { kind = \"kernel.panic\", args = [\"reason\"] }\n+shutdown = { kind = \"kernel.shutdown\" }\n \n # ----------------------------------------------------------------- profile\n \n@@ -471,12 +538,11 @@ machine_opts = [\n ]\n interactive = true\n prompt = \">> \"\n-ready_markers = [\"C user shell\"]\n-# User-space assertions deliberately print the same ``[PANIC ...]`` prefix as\n-# the kernel logger and then return a non-zero test status.  Treating that text\n-# as a kernel panic truncates aggregate suites halfway through; the shell's\n-# exit line and QEMU termination provide unambiguous outcomes instead.\n-panic_markers = [\"core dumped\"]\n+ready_markers = [\"hello wrold!\", \"C user shell\", \"start scheduler!\"]\n+done_markers = [\"ALL DONE\", \"all app are over!\", \"all apps over\"]\n+# User faults and assertions share the kernel's diagnostic text. Completion\n+# markers, process exit lines and QEMU termination determine the outcome.\n+panic_markers = []\n halt_markers = []\n stdin_preload = true\n stdin_pad = \"\\n\"\n"
      },
      {
        "path": "nodefusion/model/dwarfsrc.py",
        "sha256": "02688f5f8419ba6c8fd64ea4f347929f74c8b70299b632223c5535bab298f265",
        "patch": "diff --git a/nodefusion/model/dwarfsrc.py b/nodefusion/model/dwarfsrc.py\nindex 6716ea1..2dd0640 100644\n--- a/nodefusion/model/dwarfsrc.py\n+++ b/nodefusion/model/dwarfsrc.py\n@@ -99,6 +99,10 @@ class DwarfSource:\n         if not elf.has_dwarf_info():\n             raise RuntimeError(f\"{self.path} 里没有调试信息（.debug_info）\")\n         self.e_machine = elf.header[\"e_machine\"]\n+        symtab = elf.get_section_by_name('.symtab')\n+        self.defined_symbols = (None if symtab is None else\n+                                {s.name for s in symtab.iter_symbols()\n+                                 if s.name and s['st_shndx'] != 'SHN_UNDEF'})\n         self._exec_ranges = self._exec_sections(elf)\n         self._parse(elf.get_dwarf_info())\n         self._index_short()\n"
      },
      {
        "path": "nodefusion/model/kinds.py",
        "sha256": "0432ef9f134654bc36554ec55afcb9f91c593110cdacf0a58d0ac4d1d05ac569",
        "patch": "diff --git a/nodefusion/model/kinds.py b/nodefusion/model/kinds.py\nindex c9da0ea..5551612 100644\n--- a/nodefusion/model/kinds.py\n+++ b/nodefusion/model/kinds.py\n@@ -17,7 +17,7 @@ KINDS: frozenset[str] = frozenset({\n     \"inode.write\",\n     \"interrupt.clock\", \"interrupt.dispatch\", \"interrupt.external\",\n     \"interrupt.other\", \"interrupt.software\", \"interrupt.timer\",\n-    \"kernel.alloc_error\", \"kernel.panic\",\n+    \"kernel.alloc_error\", \"kernel.panic\", \"kernel.shutdown\",\n     \"log.begin\", \"log.commit\", \"log.end\", \"log.install\", \"log.recover\",\n     \"log.write\", \"log.write_blocks\",\n     \"pagetable.freewalk\", \"pagetable.map\", \"pagetable.new\", \"pagetable.unmap\",\n"
      },
      {
        "path": "nodefusion/model/resolve.py",
        "sha256": "0c588760d0ec6494617007b02d786285ba190593935f574f6c53b99ad62ac8c0",
        "patch": "diff --git a/nodefusion/model/resolve.py b/nodefusion/model/resolve.py\nindex 5c9b606..a655199 100644\n--- a/nodefusion/model/resolve.py\n+++ b/nodefusion/model/resolve.py\n@@ -127,6 +127,24 @@ def resolve_path(dw: DwarfSource, start: StructLayout, path: str,\n def eval_when(dw: DwarfSource, pred: dict | None) -> tuple[bool, str]:\n     if not pred:\n         return True, \"无条件\"\n+    if not isinstance(pred, dict) or len(pred) != 1:\n+        return False, \"when 需要一种谓词\"\n+    if 'all' in pred:\n+        children = pred['all']\n+        if not isinstance(children, list) or not children or any(not isinstance(p, dict) or not p for p in children):\n+            return False, \"all 需要非空的谓词数组\"\n+        results = [eval_when(dw, child) for child in children]\n+        return all(hit for hit, _ in results), '；'.join(reason for _, reason in results)\n+    if 'symbol_exists' in pred or 'symbol_missing' in pred:\n+        key = next(iter(pred))\n+        name = pred[key]\n+        if not isinstance(name, str) or not name.strip():\n+            return False, \"符号名不能为空\"\n+        symbols = getattr(dw, 'defined_symbols', None)\n+        if symbols is None:\n+            return False, \"没有完整 ELF 符号表\"\n+        exists = name in symbols\n+        return (exists if key == 'symbol_exists' else not exists), f\"符号 {name} {'在' if exists else '不在'}\"\n \n     if \"type_exists\" in pred:\n         want = pred[\"type_exists\"]\n"
      },
      {
        "path": "nodefusion/model/snapshot.py",
        "sha256": "e9c4ce76b858a9003e43d9eec363e1b88d4024338c3401b7a47a9871fe5dab7a",
        "patch": "diff --git a/nodefusion/model/snapshot.py b/nodefusion/model/snapshot.py\nindex fa095ef..0bf7cb7 100644\n--- a/nodefusion/model/snapshot.py\n+++ b/nodefusion/model/snapshot.py\n@@ -68,6 +68,8 @@ def is_live(entity: Entity, liveness: dict | None) -> bool:\n         return True\n     if \"equals\" in sw:\n         return f.value != sw[\"equals\"]\n+    if \"one_of\" in sw:\n+        return f.value not in sw[\"one_of\"]\n     return True\n \n \n"
      },
      {
        "path": "nodefusion/host/bundle.py",
        "sha256": "cec890de70422513db45c7a592e758c9dba368a638fc2b337d0e3156a607f8e0",
        "patch": "diff --git a/nodefusion/host/bundle.py b/nodefusion/host/bundle.py\nindex a31f11f..f96d198 100644\n--- a/nodefusion/host/bundle.py\n+++ b/nodefusion/host/bundle.py\n@@ -8,13 +8,14 @@ import zlib\n from collections import Counter\n from pathlib import Path\n \n-from ..model.symbols import demangle, demangle_v0\n+from ..model.symbols import display_name\n from . import guest as guest_mod\n from .analyze import Analysis\n \n MAX_EVENTS = 150_000\n \n MIN_SPARE_EVENTS = 25_000\n+MIN_KIND_EVENTS = 64\n \n DIAGNOSTIC_PREFIXES = (\"func.\",)\n \n@@ -57,6 +58,25 @@ class Interner:\n         return i\n \n \n+def _kind_budgets(counts: dict[str, int], budget: int) -> tuple[dict[str, int], int]:\n+    if not counts:\n+        return {}, 0\n+    floor = min(MIN_KIND_EVENTS, budget // len(counts))\n+    if floor == 0:\n+        return {kind: int(index < budget) for index, kind in enumerate(counts)}, 0\n+    quotas = {kind: min(count, floor) for kind, count in counts.items()}\n+    remaining = budget - sum(quotas.values())\n+    residual_total = sum(counts.values()) - sum(quotas.values())\n+    cumulative = 0\n+    if residual_total:\n+        for kind, count in counts.items():\n+            residual = count - quotas[kind]\n+            quotas[kind] += ((cumulative + residual) * remaining // residual_total\n+                             - cumulative * remaining // residual_total)\n+            cumulative += residual\n+    return quotas, floor\n+\n+\n def _event_selection(events: list, *, materialize: bool) -> tuple[list, dict]:\n     \"\"\"Bound the interactive event stream while auditing the full raw trace.\"\"\"\n     raw_kinds = Counter(e.kind for e in events)\n@@ -65,7 +85,7 @@ def _event_selection(events: list, *, materialize: bool) -> tuple[list, dict]:\n     if len(events) <= MAX_EVENTS:\n         return (events if materialize else []), {\n             \"applied\": False,\n-            \"policy\": \"kind-preserving/systematic-v3\",\n+            \"policy\": \"kind-preserving/systematic-v5\",\n             \"raw\": len(events), \"retained\": len(events), \"dropped\": 0,\n             \"target_limit\": MAX_EVENTS, \"minimum_spare\": MIN_SPARE_EVENTS,\n             \"always_keep\": \"all events when the raw stream fits\",\n@@ -77,37 +97,32 @@ def _event_selection(events: list, *, materialize: bool) -> tuple[list, dict]:\n         }\n \n     spare_raw = len(events) - priority_raw\n-    semantic_kinds = {k for k in raw_kinds if _is_semantic(k)}\n-    reserved_spare = min(MIN_SPARE_EVENTS, spare_raw)\n+    semantic_counts = {k: count for k, count in raw_kinds.items() if _is_semantic(k)}\n+    reserved_spare = min(MIN_SPARE_EVENTS, spare_raw, MAX_EVENTS)\n     priority_budget = min(priority_raw, MAX_EVENTS - reserved_spare)\n+    quotas, kind_floor = _kind_budgets(semantic_counts, priority_budget)\n     room = MAX_EVENTS - priority_budget\n-    step = max(1, spare_raw // room) if room > 0 and spare_raw else 1\n+    diagnostic_counts = {k: count for k, count in raw_kinds.items() if not _is_semantic(k)}\n+    diagnostic_quotas, diagnostic_floor = _kind_budgets(diagnostic_counts, min(room, spare_raw))\n+    quotas.update(diagnostic_quotas)\n     chosen: list = []\n     retained_kinds: Counter = Counter()\n     dropped_kinds: dict[str, int] = {}\n-    spare_seen = 0\n-    spare_kept = 0\n     semantic_seen = 0\n-    first_kinds: set[str] = set()\n-    nonfirst_seen = 0\n-    nonfirst_total = priority_raw - len(semantic_kinds)\n-    nonfirst_budget = max(0, priority_budget - len(semantic_kinds))\n+    seen_by_kind: Counter = Counter()\n     for e in events:\n         if _is_semantic(e.kind):\n             semantic_seen += 1\n-            if e.kind not in first_kinds:\n-                first_kinds.add(e.kind)\n-                retain = len(first_kinds) <= priority_budget\n-            else:\n-                retain = (nonfirst_total > 0 and\n-                          (nonfirst_seen + 1) * nonfirst_budget // nonfirst_total\n-                          > nonfirst_seen * nonfirst_budget // nonfirst_total)\n-                nonfirst_seen += 1\n+        seen = seen_by_kind[e.kind]\n+        seen_by_kind[e.kind] += 1\n+        quota = quotas[e.kind]\n+        total = raw_kinds[e.kind]\n+        if seen == 0:\n+            retain = quota > 0\n         else:\n-            retain = room > 0 and spare_kept < room and spare_seen % step == 0\n-            spare_seen += 1\n-            if retain:\n-                spare_kept += 1\n+            retain = (quota > 1 and\n+                      seen * (quota - 1) // (total - 1)\n+                      > (seen - 1) * (quota - 1) // (total - 1))\n         if retain:\n             retained_kinds[e.kind] += 1\n             if materialize:\n@@ -120,15 +135,19 @@ def _event_selection(events: list, *, materialize: bool) -> tuple[list, dict]:\n \n     return chosen, {\n         \"applied\": True,\n-        \"policy\": \"kind-preserving/systematic-v3\",\n+        \"policy\": \"kind-preserving/systematic-v5\",\n         \"raw\": len(events), \"retained\": retained, \"dropped\": dropped,\n         \"target_limit\": MAX_EVENTS, \"minimum_spare\": MIN_SPARE_EVENTS,\n-        \"always_keep\": \"first event of each normalized kind within budget\",\n+        \"always_keep\": \"all events of kinds whose count fits their per-kind budget\",\n         \"priority_raw\": priority_raw, \"spare_raw\": spare_raw,\n         \"semantic_budget\": priority_budget,\n+        \"minimum_per_kind\": kind_floor,\n+        \"semantic_kind_budgets\": {k: quotas[k] for k in sorted(semantic_counts)},\n+        \"diagnostic_kind_budgets\": dict(sorted(diagnostic_quotas.items())),\n+        \"minimum_per_diagnostic_kind\": diagnostic_floor,\n         \"semantic_retained\": semantic_seen - sum(v for k, v in dropped_kinds.items()\n                                                 if _is_semantic(k)),\n-        \"spare_budget\": room, \"stride\": step if room > 0 and spare_raw else None,\n+        \"spare_budget\": room, \"stride\": None,\n         \"retained_kinds\": dict(sorted(retained_kinds.items())),\n         \"dropped_kinds\": dict(sorted(dropped_kinds.items())),\n     }\n@@ -493,7 +512,11 @@ def build(a: Analysis) -> dict:\n         a.events, getattr(a.trace, \"function_returns\", ()), a.elf,\n         retained_ids={id(e) for e in events})\n     metrics = a.metrics()\n-    caller_cache: dict[str, str] = {}\n+    display_cache: dict[str, str] = {}\n+    def display(raw):\n+        if raw not in display_cache:\n+            display_cache[raw] = display_name(raw)\n+        return display_cache[raw]\n \n     ev = {\n         \"insn\": [], \"cpu\": [], \"kind\": [], \"res\": [], \"pid\": [],\n@@ -508,19 +531,14 @@ def build(a: Analysis) -> dict:\n         ev[\"res\"].append(res_i(e.resource))\n         ev[\"pid\"].append(e.pid if e.pid is not None else -1)\n         ev[\"pc\"].append(e.pc or 0)\n-        ev[\"func\"].append(fn(e.func))\n+        ev[\"func\"].append(fn(display(e.func)) if e.func else fn(None))\n         ev[\"entry\"].append(1 if e.function_entry else 0)\n-        ev[\"entry_name\"].append(fn(e.entry_name) if e.entry_name else -1)\n+        ev[\"entry_name\"].append(fn(display(e.entry_name)) if e.entry_name else -1)\n         caller = None\n         if e.function_entry and e.return_address and a.elf is not None:\n             raw, _ = a.elf.resolve_pc(e.return_address)\n             if raw:\n-                caller = caller_cache.get(raw)\n-                if caller is None:\n-                    caller = (demangle(raw)\n-                              or demangle_v0(raw, impls=True, generics=True)\n-                              or raw)\n-                    caller_cache[raw] = caller\n+                caller = display(raw)\n         ev[\"caller\"].append(fn(caller) if caller else -1)\n         path = stack_paths.get(id(e))\n         ev[\"stack\"].append([fn(label) for label in path] if path else None)\n@@ -657,10 +675,15 @@ def build(a: Analysis) -> dict:\n \n def _samples(a: Analysis) -> dict:\n     fn = Interner()\n+    labels = {}\n     out = {\"insn\": [], \"cpu\": [], \"pc\": [], \"priv\": [], \"func\": []}\n     step = max(1, len(a.trace.samples) // 20000)\n     for s in a.trace.samples[::step]:\n         name, _ = a.elf.resolve_pc(s.pc)\n+        if name:\n+            if name not in labels:\n+                labels[name] = display_name(name)\n+            name = labels[name]\n         out[\"insn\"].append(s.insn)\n         out[\"cpu\"].append(s.cpu)\n         out[\"pc\"].append(s.pc)\n"
      },
      {
        "path": "nodefusion/tests/test_bundle_shape.py",
        "sha256": "55f2f20855a890967caba83581ca1dda43fa6606a5af6ab1ee7b07b074e7c82b",
        "patch": "diff --git a/nodefusion/tests/test_bundle_shape.py b/nodefusion/tests/test_bundle_shape.py\nindex 40bd9fe..80984c3 100644\n--- a/nodefusion/tests/test_bundle_shape.py\n+++ b/nodefusion/tests/test_bundle_shape.py\n@@ -1,5 +1,6 @@\n \n import sys\n+from collections import Counter\n from pathlib import Path\n from types import SimpleNamespace as NS\n \n@@ -73,6 +74,23 @@ def test_caller_names_demangle_rust_trait_impls():\n         \"starry_kernel::mm::aspace::backend::cow::CowBackend::clone_map\"\n \n \n+def test_raw_function_entry_and_pc_names_share_readable_labels():\n+    raw = '_ZN2os4root17h1234567890abcdefE'\n+    a = _analysis(_state())\n+    event = Event(1, 0, 'func.root', 'function', func=raw,\n+                  function_entry=True, entry_name=raw, return_address=0x80001000)\n+    a.elf = NS(resolve_pc=lambda addr: (raw, 0))\n+    a.events = [event]\n+    a.trace.samples = [NS(insn=1, cpu=0, pc=0x80001000, priv=1)]\n+    result = B.build(a)\n+    funcs = result['dict']['funcs']\n+    for key in ['func', 'entry_name', 'caller']:\n+        assert funcs[result['events'][key][0]] == 'os::root'\n+    assert event.entry_name == raw\n+    assert event.func == raw\n+    assert result['samples']['funcs'][result['samples']['func'][0]] == 'os::root'\n+\n+\n def test_resources_is_always_there_even_when_empty():\n     b = B.build(_analysis(_state(reason=\"没声明\")))\n     assert b[\"states\"][0][\"resources\"] == []\n@@ -144,7 +162,8 @@ def test_event_selection_metadata_accounts_for_every_raw_event(monkeypatch):\n     assert audit[\"priority_raw\"] == 4\n     assert audit[\"spare_raw\"] == 26\n     assert audit[\"spare_budget\"] == 6\n-    assert audit[\"stride\"] == 4\n+    assert audit[\"stride\"] is None\n+    assert audit['diagnostic_kind_budgets'] == {'func.hot_path': 6}\n     assert sum(audit[\"retained_kinds\"].values()) == audit[\"retained\"]\n     assert sum(audit[\"dropped_kinds\"].values()) == audit[\"dropped\"]\n     assert [e.insn for e in selected[:4]] == [0, 1, 2, 3]\n@@ -156,10 +175,9 @@ def test_bounded_selector_preserves_order_and_systematic_sample(monkeypatch):\n     events = [NS(kind=(\"proc.fork\" if i in {2, 7} else \"func.hot\"), insn=i)\n               for i in range(12)]\n     selected, audit = B._select_events(events)\n-    # Ten diagnostics, four spare slots => old spare[::2][:4], interleaved\n-    # with both semantic events in original timeline order.\n-    assert [event.insn for event in selected] == [0, 2, 3, 5, 7, 8]\n-    assert audit[\"stride\"] == 2\n+    # Four per-kind positions include the first and last diagnostic entries.\n+    assert [event.insn for event in selected] == [0, 2, 4, 7, 8, 11]\n+    assert audit[\"stride\"] is None\n     assert audit[\"retained\"] == 6\n \n \n@@ -178,6 +196,79 @@ def test_large_semantic_stream_stays_browser_bounded(monkeypatch):\n     assert audit[\"raw\"] == audit[\"retained\"] + audit[\"dropped\"]\n \n \n+def test_rare_semantic_events_survive_hot_kinds_without_kernel_allowlists(monkeypatch):\n+    monkeypatch.setattr(B, 'MAX_EVENTS', 200)\n+    monkeypatch.setattr(B, 'MIN_SPARE_EVENTS', 25)\n+    events = [NS(kind='pagetable.map', insn=i) for i in range(5000)]\n+    events += [NS(kind='future_namespace.branch', insn=5000 + i) for i in range(13)]\n+    events += [NS(kind='trap.page_fault', insn=5013 + i) for i in range(4)]\n+    events += [NS(kind='func.loop', insn=5017 + i) for i in range(1000)]\n+    selected, audit = B._select_events(events)\n+    assert len(selected) == audit['retained'] == 200\n+    assert audit['retained_kinds']['future_namespace.branch'] == 13\n+    assert audit['retained_kinds']['trap.page_fault'] == 4\n+    assert audit['retained_kinds']['func.loop'] == 25\n+    assert audit['semantic_retained'] == 175\n+    assert audit['semantic_kind_budgets']['pagetable.map'] == 158\n+    hot = [item.insn for item in selected if item.kind == 'pagetable.map']\n+    assert hot[0] == 0 and hot[-1] == 4999\n+    assert [item.insn for item in selected] == sorted(item.insn for item in selected)\n+    assert B._select_events(events)[0] == selected\n+    empty, accounting = B._event_selection(events, materialize=False)\n+    assert empty == [] and accounting == audit\n+    for kind, count in Counter(item.kind for item in events).items():\n+        assert audit['retained_kinds'].get(kind, 0) + audit['dropped_kinds'].get(kind, 0) == count\n+\n+\n+def test_more_semantic_kinds_than_slots_is_still_bounded(monkeypatch):\n+    monkeypatch.setattr(B, 'MAX_EVENTS', 7)\n+    monkeypatch.setattr(B, 'MIN_SPARE_EVENTS', 2)\n+    events = [NS(kind=f'new.kind{i}', insn=i) for i in range(20)]\n+    events += [NS(kind='func.noise', insn=20 + i) for i in range(20)]\n+    selected, audit = B._select_events(events)\n+    assert len(selected) == 7\n+    assert audit['semantic_retained'] == 5 and audit['retained_kinds']['func.noise'] == 2\n+    assert sum(audit['semantic_kind_budgets'].values()) == 5\n+    assert [item.kind for item in selected[:5]] == [f'new.kind{i}' for i in range(5)]\n+    assert sum(audit['dropped_kinds'].values()) == 33\n+    assert B._event_selection(events, materialize=False)[1] == audit\n+\n+\n+def test_rare_function_entries_survive_hot_diagnostic_functions(monkeypatch):\n+    monkeypatch.setattr(B, 'MAX_EVENTS', 100)\n+    monkeypatch.setattr(B, 'MIN_SPARE_EVENTS', 25)\n+    events = [NS(kind='syscall.enter', insn=i) for i in range(1000)]\n+    events += [NS(kind='func.format', insn=1000 + i) for i in range(2000)]\n+    events += [NS(kind='func.unmap', insn=3000 + i) for i in range(2)]\n+    selected, audit = B._select_events(events)\n+    assert len(selected) == 100\n+    assert audit['retained_kinds']['func.unmap'] == 2\n+    assert audit['retained_kinds']['func.format'] == 23\n+    assert not audit['dropped_kinds'].get('func.unmap')\n+    assert selected[-1] is events[-1]\n+\n+\n+def test_kind_quotas_use_the_budget_without_exceeding_raw_counts():\n+    for counts in [{'one': 1}, {'a': 2, 'b': 1000, 'c': 9},\n+                   {str(index): index + 1 for index in range(100)}]:\n+        total = sum(counts.values())\n+        for budget in range(min(total, 300) + 1):\n+            quotas, floor = B._kind_budgets(counts, budget)\n+            assert sum(quotas.values()) == budget\n+            assert all(0 <= quotas[kind] <= count for kind, count in counts.items())\n+            assert all(quotas[kind] == count for kind, count in counts.items() if count <= floor)\n+\n+\n+def test_diagnostic_reservation_cannot_exceed_total_budget(monkeypatch):\n+    monkeypatch.setattr(B, 'MAX_EVENTS', 4)\n+    monkeypatch.setattr(B, 'MIN_SPARE_EVENTS', 25)\n+    events = [NS(kind='syscall.enter', insn=0)]\n+    events += [NS(kind='func.hot', insn=i) for i in range(1, 30)]\n+    selected, audit = B._select_events(events)\n+    assert len(selected) == 4 and audit['semantic_budget'] == 0\n+    assert audit['dropped_kinds']['syscall.enter'] == 1\n+\n+\n def test_interactive_sampling_does_not_erase_raw_semantic_coverage(monkeypatch):\n     monkeypatch.setattr(B, \"MAX_EVENTS\", 10)\n     monkeypatch.setattr(B, \"MIN_SPARE_EVENTS\", 3)\n"
      },
      {
        "path": "nodefusion/tests/test_kernel_integrations.py",
        "sha256": "8e3ecdcf6ad5ea3b7fa44a3e3244a2c9678255b62c02d8cd48de9cfc1189b376",
        "patch": "diff --git a/nodefusion/tests/test_kernel_integrations.py b/nodefusion/tests/test_kernel_integrations.py\nindex a285e88..b33e6b0 100644\n--- a/nodefusion/tests/test_kernel_integrations.py\n+++ b/nodefusion/tests/test_kernel_integrations.py\n@@ -64,7 +64,7 @@ def test_rcore_patch_and_manifest_agree_on_the_per_region_hook():\n     assert manifest.events[symbol].kind == \"vm.unmap\"\n     assert manifest.events[symbol].args == [\"start_vpn\", \"end_vpn\"]\n     assert manifest.absent[\"vm.unmap\"].when == {\n-        \"type_missing\": \"os::task::processor::Processor\"}\n+        \"type_missing\": \"os::mm::memory_set::MemorySet\"}\n \n \n def test_rcore_patch_exports_exact_physical_allocation_results():\n@@ -79,6 +79,38 @@ def test_rcore_patch_exports_exact_physical_allocation_results():\n     assert \"nodefusion_trace_sched_switch\" in patch\n \n \n+def test_rcore_reference_region_removal_is_an_attempt_not_a_success_event():\n+    manifest = load(ROOT / 'manifests/rcore.toml')\n+    symbol = 'os::mm::memory_set::MemorySet::remove_framed_area'\n+    assert manifest.events[symbol].kind == 'vm.remove_area'\n+    assert manifest.events[symbol].args == ['self', 'start_vpn', 'end_vpn']\n+    dedicated = next(index for index, watch in enumerate(manifest.watches)\n+                     if watch.match.get('fn') == ['remove_framed_area'])\n+    inline = next(index for index, watch in enumerate(manifest.watches)\n+                  if watch.match.get('fn') == ['frame_alloc', 'frame_dealloc', 'unmap', 'init_heap'])\n+    assert dedicated < inline\n+    assert manifest.watches[dedicated].args == 3\n+    assert not manifest.watches[dedicated].inlined\n+\n+\n+def test_rcore_2026a_ch4_observation_patch_preserves_region_acceptance():\n+    patch = (INTEGRATIONS / 'rcore-2026a-ch4-observation.patch').read_text()\n+    assert patch.index('})?;') < patch.index('nodefusion_vm_unmap_region(start.0, end.0);')\n+    assert patch.index('nodefusion_vm_unmap_region(start.0, end.0);') < patch.index('let mut area = self.areas.remove(index);')\n+    assert 'const NFT_ALLOCATOR_STATE: u64 = 6;' in patch\n+    assert 'a: [free_pages as u64, used_pages as u64, 0, 0]' in patch\n+    assert 'nodefusion_trace_page(NFT_KALLOC, paddr, free_pages, used_pages)' in patch\n+    assert 'nodefusion_trace_page(NFT_KFREE, PhysAddr::from(ppn).0, free_pages, used_pages)' in patch\n+    assert 'GlobalAlloc::alloc(&self.0, layout)' in patch\n+    assert 'GlobalAlloc::dealloc(&self.0, ptr, layout)' in patch\n+    manifest = load(ROOT / 'manifests/rcore.toml')\n+    event = manifest.events['os::mm::page_table::PageTable::map']\n+    assert event.kind == 'pagetable.map' and event.args == ['self', 'vpn', 'ppn', 'flags']\n+    rule = next(watch for watch in manifest.watches\n+                if watch.match == {'module': 'os::mm::page_table::PageTable', 'fn': ['map']})\n+    assert rule.args == 4 and not rule.inlined\n+\n+\n def test_rcore_chapter_patches_preserve_per_region_and_scheduler_identity():\n     for chapter in (6, 8):\n         patch = (INTEGRATIONS / f\"rcore-ch{chapter}-nodefusion.patch\").read_text(\n@@ -94,6 +126,43 @@ def test_rcore_chapter_patches_preserve_per_region_and_scheduler_identity():\n     assert \"block_current_and_run_next\" in ch8\n \n \n+def test_2026a_ch5_observation_preserves_allocator_and_switch_semantics():\n+    rust = (INTEGRATIONS / 'rcore-2026a-ch5-observation.patch').read_text()\n+    c = (INTEGRATIONS / 'ucore-2026a-ch5-observation.patch').read_text()\n+    for patch in (rust, c):\n+        assert 'nftrace_commit_point' in patch\n+        assert 'nodefusion_pagetable_map' in patch or '#[inline(never)]' in patch\n+    assert 'self.allocated -= 1;' in rust\n+    assert 'self.allocated += 1;' in rust\n+    assert 'if result.is_some()' in rust\n+    assert 'frame.as_ref().map_or(0, |frame| PhysAddr::from(frame.ppn).0)' in rust\n+    assert 'pub(crate) const NO_TASK: usize = usize::MAX;' in rust\n+    assert 'emit(4, [from_task as u64, to_task as u64, from_pid as u64, to_pid as u64])' in rust\n+    assert 'crate::nftrace::NO_TASK, next_pid' in rust\n+    assert 'crate::nftrace::sched_switch(task_id, idle, pid, crate::nftrace::NO_TASK)' in rust\n+    assert rust.index('add_task(new_task);') < rust.index('crate::nftrace::process_fork(current_task.getpid(), new_pid);')\n+    assert 'nf_used_pages--;' in c\n+    assert 'nf_used_pages++;' in c\n+    assert c.index('nf_used_pages--;') < c.index('nftrace_page_free((uint64)pa, nf_free_pages, nf_used_pages);')\n+    assert c.index('add_task(np);') < c.index('nftrace_proc_fork(p->pid, np->pid);')\n+    assert 'nftrace_sched_switch((uint64)&idle, (uint64)p, (uint64)-1, p->pid);' in c\n+    assert 'nftrace_sched_switch((uint64)p, (uint64)&idle, p->pid, (uint64)-1);' in c\n+    assert c.index('*pte = PA2PTE(pa) | perm | PTE_V;') < c.index('nodefusion_pagetable_map(a, pa, perm | PTE_V);')\n+\n+\n+def test_rcore_2026a_ch5_region_hooks_only_describe_explicit_pte_removal():\n+    patch = (INTEGRATIONS / 'rcore-2026a-ch5-observation.patch').read_text()\n+    assert 'if mapped_end > area.vpn_range.get_start()' in patch\n+    assert 'nodefusion_vm_unmap_region(area.vpn_range.get_start().0, mapped_end.0);' in patch\n+    assert 'if self.vpn_range.get_start() < self.vpn_range.get_end()' in patch\n+    assert 'nodefusion_vm_unmap_region(self.vpn_range.get_start().0, self.vpn_range.get_end().0);' in patch\n+    assert 'if new_end < self.vpn_range.get_end()' in patch\n+    assert 'nodefusion_vm_unmap_region(new_end.0, self.vpn_range.get_end().0);' in patch\n+    # Releasing data-frame ownership on exit leaves the zombie page table alive.\n+    # Do not invent explicit PTE-removal events for that separate operation.\n+    assert 'self.areas.clear();' not in patch\n+\n+\n def test_rcore_ch8_keeps_applicable_vm_and_signal_watchpoints_callable():\n     patch = (INTEGRATIONS / \"rcore-page-table-observation-points.patch\").read_text()\n     assert patch.count(\"#[inline(never)]\") == 6\n@@ -161,7 +230,7 @@ def test_rcore_filesystem_absence_depends_on_the_resolved_build(monkeypatch):\n             (\"proc.alloc\", \"os::task::task::TaskControlBlock\"),\n             (\"proc.fork\", \"os::task::processor::Processor\"),\n             (\"proc.exec\", \"os::task::processor::Processor\"),\n-            (\"vm.unmap\", \"os::task::processor::Processor\"),\n+            (\"vm.unmap\", \"os::mm::memory_set::MemorySet\"),\n             (\"phys.alloc\", \"os::mm::frame_allocator::StackFrameAllocator\"),\n             (\"phys.free\", \"os::mm::frame_allocator::StackFrameAllocator\"),\n             (\"vm.map\", \"os::mm::memory_set::MemorySet\"),\n@@ -189,6 +258,28 @@ def test_ucore_patch_and_manifest_supply_exact_semantics():\n     assert manifest.absent[\"log.commit\"].why == \"feature\"\n \n \n+def test_ucore_2026a_ch4_patch_observes_allocator_results_and_committed_ptes():\n+    patch = (INTEGRATIONS / 'ucore-2026a-ch4-observation.patch').read_text()\n+    paths = [line.split(' b/', 1)[1] for line in patch.splitlines() if line.startswith('diff --git ')]\n+    assert set(paths) == {'os/kalloc.c', 'os/vm.c', 'os/nftrace.c', 'os/nftrace.h'}\n+    assert 'NFT_KALLOC = 1' in patch and 'NFT_KFREE = 5' in patch and 'NFT_ALLOCATOR_STATE = 6' in patch\n+    assert 'nftrace_page_alloc((uint64)l, 1, nf_free_pages, nf_used_pages)' in patch\n+    assert 'nftrace_page_free((uint64)pa, 1, nf_free_pages, nf_used_pages)' in patch\n+    assert 'nftrace_allocator_state(nf_free_pages, nf_used_pages)' in patch\n+    assert patch.index('*pte = PA2PTE(pa) | perm | PTE_V;') < patch.index('nodefusion_pagetable_map(a, pa, perm | PTE_V);')\n+    assert 'const struct nftrace_record record = { type, { a0, a1, a2, a3 } }' in patch\n+\n+\n+def test_ucore_2026a_ch4_page_table_experiment_owns_and_reclaims_its_pages():\n+    patch = (INTEGRATIONS / 'ucore-2026a-ch4-pagetable-experiment.patch').read_text()\n+    assert patch.index('uvmunmap(table, va, 1, 0)') < patch.index('uvmunmap(table, va, 1, 1)')\n+    assert patch.index('uvmunmap(table, TRAMPOLINE, 1, 0)') < patch.index('freewalk(table)')\n+    assert 'walkaddr(table, va + 0x123) != (uint64)frame' in patch\n+    assert 'useraddr(table, va + 0x123) != (uint64)frame + 0x123' in patch\n+    assert 'frame[0x123] != 0x5a' in patch\n+    assert patch.index('kvm_init();') < patch.index('nodefusion_pagetable_experiment();', patch.index('kvm_init();'))\n+\n+\n def test_ucore_showcase_fixes_remain_separate_from_observation_patch():\n     observation = (INTEGRATIONS / \"ucore-nodefusion.patch\").read_text()\n     kernel_fix = (INTEGRATIONS / \"ucore-ch8-showcase.patch\").read_text()\n@@ -204,6 +295,13 @@ def test_ucore_manifest_covers_all_eight_measured_shapes():\n     manifest = load(ROOT / \"manifests\" / \"ucore.toml\")\n     assert manifest.detect == {\"all_symbol\": [\"digits\", \"SBI_SHUTDOWN\"]}\n     assert manifest.derive_feature_absence_from_symbols is True\n+    process = manifest.entity(\"process\")\n+    assert process.liveness[\"skip_when\"] == {\n+        \"field\": \"state\", \"one_of\": [\"UNUSED\", \"P_UNUSED\"]}\n+    fields = {field.name: field for field in process.fields}\n+    assert fields[\"context\"].role == \"sched_context\"\n+    assert fields[\"trapframe\"].role == \"trap_context\"\n+    assert all(fields[name].optional for name in (\"context\", \"trapframe\", \"kstack\"))\n     parent = next(field for field in manifest.entity(\"process\").relations\n                   if field.name == \"parent\")\n     assert parent.optional is True\n"
      },
      {
        "path": "nodefusion/tests/test_resolve.py",
        "sha256": "b14f432eb380c5514b73431978b01b0d715ed9a49f92deb547358fb35dd4d8ec",
        "patch": "diff --git a/nodefusion/tests/test_resolve.py b/nodefusion/tests/test_resolve.py\nindex 0eeed28..585b0a8 100644\n--- a/nodefusion/tests/test_resolve.py\n+++ b/nodefusion/tests/test_resolve.py\n@@ -97,6 +97,30 @@ def test_missing_field_is_absent_not_a_failure():\n     assert resolve_path(dw, tcb, \"inner.priority\").state == ABSENT\n \n \n+def test_rcore_priority_spellings_resolve_without_kernel_branches():\n+    from nodefusion.model.manifest import builtin_dir, load\n+    from nodefusion.model.snapshot import Entity, Field\n+\n+    manifest = load(builtin_dir() / \"rcore.toml\")\n+    specs = [field for entity in manifest.entities if entity.name == \"task\"\n+             for field in entity.fields if field.role == \"priority\"]\n+    assert {field.path for field in specs} == {\"inner.prio\", \"inner.priority\"}\n+    assert all(field.optional for field in specs)\n+    for spelling in (\"prio\", \"priority\", None):\n+        dw, tcb = chain()\n+        if spelling:\n+            dw._s[6].fields[spelling] = 136\n+        fields = {}\n+        for spec in specs:\n+            resolved = resolve_path(dw, tcb, spec.path)\n+            fields[spec.name] = Field(spec.name, resolved.state,\n+                                      value=16 if resolved.state == PRESENT else None,\n+                                      role=spec.role)\n+        entity = Entity(\"task\", 0x1000, fields=fields)\n+        assert entity.role(\"priority\") == (16 if spelling else None)\n+        assert sum(field.ok for field in fields.values()) == (1 if spelling else 0)\n+\n+\n def test_missing_field_names_the_payload_type_not_just_the_wrapper():\n     dw, tcb = chain()\n     why = resolve_path(dw, tcb, \"inner.priority\").reason or \"\"\n"
      },
      {
        "path": "nodefusion/host/assets/app.css",
        "sha256": "4a6f97f6046f1658f683e28107b5e524cf64507c57e7ad76035a7e8d745740eb",
        "patch": "diff --git a/nodefusion/host/assets/app.css b/nodefusion/host/assets/app.css\nindex 88f5f82..f2adda9 100644\n--- a/nodefusion/host/assets/app.css\n+++ b/nodefusion/host/assets/app.css\n@@ -415,7 +415,7 @@ tr.sel td { background: color-mix(in oklch, var(--accent) 12%, var(--bg)); }\n .detail-empty-icon { display: grid; place-items: center; width: 32px; height: 32px; border: 1px solid var(--line); border-radius: 6px; color: var(--accent); font-size: 21px; }\n .detail-empty h2 { color: var(--fg); font-size: 14px; margin: 16px 0 5px; }\n .detail-empty p { max-width: 28ch; margin: 0; line-height: 1.55; }\n-.trace-controls { display: flex; gap: 8px; margin: 0 0 16px; }\n+.trace-controls { display: flex; gap: 8px; margin: 0 0 16px; position: sticky; top: -22px; z-index: 2; background: var(--bg); padding-block: 8px; border-bottom: 1px solid var(--line); }\n .trace-controls input, .trace-controls select { height: 34px; min-width: 150px; padding: 6px 9px; border: 1px solid var(--line); border-radius: 5px; background: var(--bg2); color: var(--fg); }\n .trace-controls input { flex: 1; min-width: 220px; }\n .trace-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 14px; min-height: 420px; }\n@@ -460,8 +460,8 @@ tr.sel td { background: color-mix(in oklch, var(--accent) 12%, var(--bg)); }\n   .right { width: 100%; max-height: 340px; border-left: 0; border-top: 1px solid var(--line); padding: 14px; }\n   .main.detail-collapsed .right { display: none; }\n   #evscroll { height: 54vh; }\n-  .trace-grid { grid-template-columns: 1fr; }\n-  .function-tree, .function-sequence { max-height: 42vh; }\n+  .trace-grid { grid-template-columns: 1fr; min-height: 0; align-items: start; }\n+  .function-tree, .function-sequence { min-height: 0; max-height: 42vh; }\n }\n @media (max-width: 560px) {\n   .brand-kicker, .shortcut-hint { display: none; }\n"
      },
      {
        "path": "nodefusion/host/assets/app.js",
        "sha256": "c253b16d88ddc73d1c78ec3729800800ad255b923712893dbe12f66faab2aca2",
        "patch": "diff --git a/nodefusion/host/assets/app.js b/nodefusion/host/assets/app.js\nindex 7f1256e..a87dcd9 100644\n--- a/nodefusion/host/assets/app.js\n+++ b/nodefusion/host/assets/app.js\n@@ -28,6 +28,7 @@ const NF = {\n   selPage: null,\n   selPid: null,\n   filters: { text: '', kind: '', res: '', pid: '', cpu: '', group: '', from: '', to: '' },\n+  functionFilters: {text: '', cpu: '', limit: '80', grouping: null},\n };\n \n /* ------------------------------------------------------------------ 工具 */\n@@ -1641,6 +1642,10 @@ function renderFunctions() {\n   if (returns.nested_entries) grouping.appendChild(new Option('观测调用链', 'stack'));\n   if (returns.nested_entries) grouping.value = 'stack';\n   else if (!entries.some((e) => e.caller)) grouping.value = 'namespace';\n+  search.value = NF.functionFilters.text;\n+  cpu.value = NF.functionFilters.cpu;\n+  limit.value = NF.functionFilters.limit;\n+  if ([...grouping.options].some(option => option.value === NF.functionFilters.grouping)) grouping.value = NF.functionFilters.grouping;\n   controls.appendChild(search); controls.appendChild(cpu); controls.appendChild(grouping);\n   controls.appendChild(limit); p.appendChild(controls);\n \n@@ -1658,6 +1663,7 @@ function renderFunctions() {\n   grid.appendChild(treePanel); grid.appendChild(sequencePanel); p.appendChild(grid);\n \n   function paint() {\n+    NF.functionFilters = {text: search.value, cpu: cpu.value, limit: limit.value, grouping: grouping.value};\n     const q = search.value.trim().toLowerCase();\n     const selectedCpu = cpu.value;\n     const filtered = entries.filter((e) => (!q || e.fn.toLowerCase().includes(q) || e.caller.toLowerCase().includes(q) || (e.path || []).some((name) => name.toLowerCase().includes(q))) && (selectedCpu === '' || String(e.cpu) === selectedCpu));\n"
      },
      {
        "path": "nodefusion/tests/test_phys_alloc_gate.py",
        "sha256": "a1b68458d8268d052082ad92b80f86753c46423eec7c86c3bdd6019e23b8186a",
        "patch": "diff --git a/nodefusion/tests/test_phys_alloc_gate.py b/nodefusion/tests/test_phys_alloc_gate.py\nindex 3cb406d..ec2bc43 100644\n--- a/nodefusion/tests/test_phys_alloc_gate.py\n+++ b/nodefusion/tests/test_phys_alloc_gate.py\n@@ -128,6 +128,51 @@ def test_sched_semantic_record_fills_both_endpoints_without_snapshots():\n     assert event.detail[\"from_proc\"] == \"kernel-task#41\"\n     assert event.detail[\"to_task_id\"] == 42\n     assert event.detail[\"to_pid\"] == 7\n+    assert event.pid == 7\n+    assert a._attribute(0, -1, {}) == (7, \"task#7\")\n+\n+\n+def test_semantic_switch_attribution_survives_missing_and_reused_snapshot_slots():\n+    a = object.__new__(A.Analysis)\n+    a._pid_by_slot_at = lambda *_: (99, \"stale slot\")\n+    slots = {0: 3, 1: 4}\n+    assert a._attribute(0, 0, slots) == (99, \"stale slot\")\n+    a._nftrace_event(NfTraceRec(insn=100, cpu=0, type=a.NFT_SCHED_SWITCH,\n+                              a=(10, 20, a.NFT_NO_TASK, 7)), -1, slots)\n+    assert a._attribute(0, -1, {}) == (7, \"task#7\")\n+    assert a._attribute(0, 200, slots) == (7, \"task#7\")\n+    assert a._attribute(1, 0, slots) == (99, \"stale slot\")\n+    alloc = a._nftrace_event(NfTraceRec(insn=101, cpu=0, type=a.NFT_KALLOC,\n+                                      a=(0x81234000, 1, 9, 1)), -1, {})\n+    assert alloc.pid == 7\n+\n+\n+def test_semantic_switches_track_each_cpu_and_distinguish_pid_zero_from_idle():\n+    a = object.__new__(A.Analysis)\n+    for cpu, pid in [(0, 0), (1, 7)]:\n+        a._nftrace_event(NfTraceRec(insn=100 + cpu, cpu=cpu, type=a.NFT_SCHED_SWITCH,\n+                                  a=(10 + cpu, 20 + cpu, a.NFT_NO_TASK, pid)), -1, {})\n+    assert a._attribute(0, -1, {}) == (0, \"task#0\")\n+    assert a._attribute(1, -1, {}) == (7, \"task#7\")\n+    a._nftrace_event(NfTraceRec(insn=102, cpu=0, type=a.NFT_SCHED_SWITCH,\n+                              a=(20, 10, 0, a.NFT_NO_TASK)), -1, {})\n+    assert a._attribute(0, -1, {}) == (None, \"kernel-task#10\")\n+    assert a._attribute(1, -1, {}) == (7, \"task#7\")\n+\n+\n+def test_rebuilding_events_resets_semantic_ownership_without_using_future_switches():\n+    a = object.__new__(A.Analysis)\n+    a.ncpu = 1\n+    a.states = []\n+    a.events = []\n+    a._semantic_current = {0: (99, \"previous analysis\")}\n+    a.trace = NS(discons=[], watch_hits=[], nftrace=[\n+        NfTraceRec(insn=1, cpu=0, type=a.NFT_KALLOC, a=(0x81234000, 1, 9, 1)),\n+        NfTraceRec(insn=2, cpu=0, type=a.NFT_SCHED_SWITCH, a=(10, 20, a.NFT_NO_TASK, 7)),\n+        NfTraceRec(insn=3, cpu=0, type=a.NFT_KALLOC, a=(0x81235000, 1, 8, 2)),\n+    ])\n+    a.build_events()\n+    assert [event.pid for event in a.events] == [None, 7, 7]\n \n \n def test_kfree_semantic_record_has_physical_range():\n"
      },
      {
        "path": "nodefusion/host/callstack.py",
        "sha256": "7a1ce5d70940e2c98792f57543e3df2cbc7b9f96ec5d8c7b280ccf17c78f9bde",
        "patch": "diff --git a/nodefusion/host/callstack.py b/nodefusion/host/callstack.py\nindex edae6fe..6f42814 100644\n--- a/nodefusion/host/callstack.py\n+++ b/nodefusion/host/callstack.py\n@@ -4,7 +4,7 @@ from __future__ import annotations\n \n import heapq\n \n-from ..model.symbols import demangle, demangle_v0\n+from ..model.symbols import display_name\n from . import nftrace\n \n \n@@ -20,6 +20,11 @@ def observed_stacks(events, returns, elf, retained_ids=None):\n     matched = 0\n     nested = 0\n     caller_cache = {}\n+    label_cache = {}\n+    def label(name):\n+        if name not in label_cache:\n+            label_cache[name] = display_name(name)\n+        return label_cache[name]\n     if not returns:\n         return paths, {\"raw\": 0, \"matched\": 0, \"nested_entries\": 0}\n     entries = ((e.insn, 0, e.cpu, e) for e in events\n@@ -49,10 +54,13 @@ def observed_stacks(events, returns, elf, retained_ids=None):\n         parent = frames[-1] if frames else None\n         if obj.return_address not in caller_cache:\n             raw = elf.resolve_pc(obj.return_address)[0] if elf else None\n-            caller_cache[obj.return_address] = (\n-                demangle(raw) or demangle_v0(raw) or raw) if raw else None\n+            caller_cache[obj.return_address] = raw\n         caller = caller_cache[obj.return_address]\n-        if (parent is None or parent.entry_name != caller or\n+        # Raw symbols distinguish Rust instantiations with the same display\n+        # name. Older producers may already supply a decoded entry name.\n+        caller_matches = (parent is not None and caller is not None and\n+                          (parent.entry_name == caller or parent.entry_name == label(caller)))\n+        if (not caller_matches or\n                 parent.address_space != obj.address_space or\n                 obj.stack_pointer > parent.stack_pointer):\n             frames.clear()\n@@ -60,7 +68,7 @@ def observed_stacks(events, returns, elf, retained_ids=None):\n             frames.clear()\n         frames.append(obj)\n         if retained_ids is None or id(obj) in retained_ids:\n-            paths[id(obj)] = tuple(f.entry_name or f.func or f.kind for f in frames[-16:])\n+            paths[id(obj)] = tuple(label(f.entry_name or f.func or f.kind) for f in frames[-16:])\n         if len(frames) > 1:\n             nested += 1\n     return paths, {\"raw\": len(returns), \"matched\": matched,\n"
      },
      {
        "path": "nodefusion/model/symbols.py",
        "sha256": "39f23be73d754e52221a4889c0101d50d8d8962ec21f1628d1cc36f07acdecb8",
        "patch": "diff --git a/nodefusion/model/symbols.py b/nodefusion/model/symbols.py\nindex 8bf19dc..7310e65 100644\n--- a/nodefusion/model/symbols.py\n+++ b/nodefusion/model/symbols.py\n@@ -41,6 +41,10 @@ def demangle(sym: str) -> str | None:\n     return _demangle_legacy(sym) or demangle_v0(sym)\n \n \n+def display_name(sym: str) -> str:\n+    return demangle(sym) or demangle_v0(sym, impls=True, generics=True) or sym\n+\n+\n def _demangle_legacy(sym: str) -> str | None:\n     s = _LLVM_SUFFIX.sub(\"\", sym)\n     if not s.startswith(\"_ZN\") or not s.endswith(\"E\"):\n"
      },
      {
        "path": "nodefusion/tests/test_callstack.py",
        "sha256": "78bc55f0ccf1a6dde2836aaa256ca0ce9fc0f9b4c6dcc4b144732460144d901e",
        "patch": "diff --git a/nodefusion/tests/test_callstack.py b/nodefusion/tests/test_callstack.py\nindex 4e2b5f5..9c91f75 100644\n--- a/nodefusion/tests/test_callstack.py\n+++ b/nodefusion/tests/test_callstack.py\n@@ -55,3 +55,27 @@ def test_unretained_entries_still_shape_retained_stack():\n                                     Elf(), retained_ids={id(child)})\n     assert paths == {id(child): (\"root\", \"child\")}\n     assert counts[\"matched\"] == 1\n+\n+\n+def test_rust_raw_symbols_match_and_display_as_function_names():\n+    raw_root = '_ZN2os4root17h1234567890abcdefE'\n+    raw_child = '_ZN2os5child17h1234567890abcdefE'\n+    root = entry(1, raw_root, 0x99, 100)\n+    child = entry(2, raw_child, 0x10, 80)\n+    elf = type('RustElf', (), {'resolve_pc': lambda self, pc: (raw_root, 0) if pc == 0x10 else (None, 0)})()\n+    paths, counts = observed_stacks([root, child], [ret(3, 0x10, 80)], elf)\n+    assert paths[id(child)] == ('os::root', 'os::child')\n+    assert counts['nested_entries'] == 1\n+    assert root.entry_name == raw_root\n+    assert child.entry_name == raw_child\n+\n+\n+def test_decoded_names_do_not_merge_distinct_raw_rust_symbols():\n+    raw_root = '_ZN2os4root17h1234567890abcdefE'\n+    other_root = '_ZN2os4root17hfedcba0987654321E'\n+    root = entry(1, raw_root, 0x99, 100)\n+    child = entry(2, 'child', 0x10, 80)\n+    elf = type('RustElf', (), {'resolve_pc': lambda self, pc: (other_root, 0) if pc == 0x10 else (None, 0)})()\n+    paths, counts = observed_stacks([root, child], [ret(3, 0x10, 80)], elf)\n+    assert paths[id(child)] == ('child',)\n+    assert counts['nested_entries'] == 0\n"
      },
      {
        "path": "nodefusion/tests/test_event_kinds.py",
        "sha256": "67eee9315e36a7484d1141590701ad8e4e23c4be212b1ac9c0c4949983beef52",
        "patch": "diff --git a/nodefusion/tests/test_event_kinds.py b/nodefusion/tests/test_event_kinds.py\nindex c681f50..0117daf 100644\n--- a/nodefusion/tests/test_event_kinds.py\n+++ b/nodefusion/tests/test_event_kinds.py\n@@ -104,6 +104,23 @@ def test_a_manifest_without_the_section_still_loads(tmp_path):\n     assert _load(tmp_path, \"\").events == {}\n \n \n+def test_ucore_shutdown_is_not_a_panic_or_an_argument_bearing_call():\n+    man = M.load(DRAFTS / \"ucore.toml\")\n+    event = man.events[\"shutdown\"]\n+    assert event.kind == \"kernel.shutdown\"\n+    assert event.args == []\n+    watches = [w for w in man.watches if \"shutdown\" in w.match.get(\"fn\", [])]\n+    assert watches and all(w.args == 0 for w in watches)\n+    for name, symbol in [(\"xv6\", \"panic\"), (\"rcore\", \"os::lang_items::panic\")]:\n+        assert M.load(DRAFTS / f\"{name}.toml\").events[symbol].kind == \"kernel.panic\"\n+\n+\n+def test_new_manifest_does_not_relabel_a_historical_recording():\n+    events = M.load(DRAFTS / \"ucore.toml\").events\n+    assert event_shape(\"shutdown\", {\"kind\": \"kernel.panic\", \"params\": [\"reason\"]},\n+                       kernel_kind=\"ucore\", events=events)[0] == \"kernel.panic\"\n+\n+\n \n def _shape(name, *, kind=\"\", resource=\"kernel\", params=(), kernel):\n     entry = {\"resource\": resource, \"params\": list(params)}\n"
      },
      {
        "path": "nodefusion/tests/test_no_build.py",
        "sha256": "4bc6168bfe29297a6cb93ec91824dcbb9764c9ae8551f3d71446cd97e619d4ad",
        "patch": "diff --git a/nodefusion/tests/test_no_build.py b/nodefusion/tests/test_no_build.py\nindex 5fa5c28..d5a3c25 100644\n--- a/nodefusion/tests/test_no_build.py\n+++ b/nodefusion/tests/test_no_build.py\n@@ -48,7 +48,7 @@ def test_it_records_without_building(tmp_path):\n     assert \"跳过构建\" in out\n \n \n-def test_it_says_out_loud_that_nothing_was_built(tmp_path):\n+def test_warning_identifies_the_existing_build_and_checksum_record(tmp_path):\n     r = _recorder(tmp_path, _tree(tmp_path))\n     r.build_kernel()\n     assert len(r.warnings) == 1\n@@ -56,7 +56,8 @@ def test_it_says_out_loud_that_nothing_was_built(tmp_path):\n     assert \"--no-build\" in w\n     assert \"kernel.elf\" in w\n     assert \"UTC\" in w\n-    assert \"没人验证过\" in w\n+    assert \"这次没有编译\" in w\n+    assert \"kernel_elf_identity\" in w\n \n \n def test_a_missing_elf_is_fatal(tmp_path):\n"
      },
      {
        "path": "nodefusion/tests/test_record_icount.py",
        "sha256": "f76528d2c5a7fc18938d0afc88b5ee9e9626d63801bccc6ced57c1e4b2c823a0",
        "patch": "diff --git a/nodefusion/tests/test_record_icount.py b/nodefusion/tests/test_record_icount.py\nindex 8e8d223..25ae2a0 100644\n--- a/nodefusion/tests/test_record_icount.py\n+++ b/nodefusion/tests/test_record_icount.py\n@@ -1,9 +1,46 @@\n from pathlib import Path\n from types import SimpleNamespace\n \n-from nodefusion.host.record import (Recorder, RunConfig, _calibration_watchlist,\n+import pytest\n+\n+from nodefusion.host.record import (NO_PROGRAM, Recorder, RunConfig, _calibration_watchlist,\n                                     _program_start_from_trace,\n                                     _snapshot_focus_start)\n+\n+\n+@pytest.mark.parametrize('capability,program,expected', [\n+    (True, NO_PROGRAM, 'headless'),\n+    (True, '', 'headless'),\n+    (True, 'usertest', 'shell'),\n+    (False, 'usertest', 'headless'),\n+])\n+def test_driver_uses_workload_mode_not_only_kernel_capability(monkeypatch, tmp_path,\n+                                                             capability, program, expected):\n+    class Reader:\n+        def __init__(self, *args):\n+            pass\n+\n+        def start(self):\n+            pass\n+\n+        def join(self, **kwargs):\n+            pass\n+\n+        def text(self):\n+            return ''\n+\n+    monkeypatch.setattr('nodefusion.host.record._ConsoleReader', Reader)\n+    recorder = Recorder.__new__(Recorder)\n+    recorder.cfg = SimpleNamespace(program=program)\n+    recorder.profile = SimpleNamespace(interactive=capability)\n+    process = SimpleNamespace(stdout=None, stderr=None, poll=lambda: 0)\n+    recorder.sh = SimpleNamespace(popen=lambda cmd: process)\n+    recorder._qemu_cmd = lambda *args: 'qemu'\n+    recorder._drive_headless = lambda *args: 'headless'\n+    recorder._drive_shell = lambda *args: 'shell'\n+    outcome, _, _ = recorder._drive(tmp_path / 'trace.nfb', None, 100,\n+                                    tmp_path / 'console.log', tmp_path / 'qemu.log')\n+    assert outcome == expected\n from nodefusion.host.watchlist import NFTRACE_COMMIT, WatchEntry, WatchList\n \n \n"
      },
      {
        "path": "nodefusion/tests/test_regenerate_artifact.py",
        "sha256": "0098a8fc52b7cd42889036de78ca54cec00064396d701eadd224b3febd3c043b",
        "patch": "diff --git a/nodefusion/tests/test_regenerate_artifact.py b/nodefusion/tests/test_regenerate_artifact.py\nindex 566d3f5..12e6f80 100644\n--- a/nodefusion/tests/test_regenerate_artifact.py\n+++ b/nodefusion/tests/test_regenerate_artifact.py\n@@ -17,6 +17,12 @@ EXPECTED_RUNS = {\n     *{f\"rcore-ch{n}\" for n in range(1, 9)},\n     *{f\"ucore-ch{n}\" for n in range(1, 9)},\n }\n+COURSE_RUNS = {\"rcore-2026A-ch3-observed\", \"ucore-2026A-ch3-batch\",\n+               \"rcore-2026A-ch1-verified\", \"ucore-2026A-ch1-verified\",\n+               \"rcore-2026A-ch2-reference\", \"ucore-2026A-ch2-reference\",\n+               \"ucore-2026A-ch2-stack-fixed\", \"ucore-2026A-ch2-faults\",\n+               \"rcore-2026A-ch4-observed\", \"ucore-2026A-ch4-observed\",\n+               \"ucore-2026A-ch4-pagetable\"}\n \n \n def report_sidecars():\n@@ -43,14 +49,31 @@ def record_from(path):\n \n def test_all_chapter_and_app_artifacts_are_present():\n     entries = report_sidecars()\n-    assert len(entries) == 24\n+    assert len(entries) == len(EXPECTED_RUNS) + len(COURSE_RUNS)\n     runs = {record_from(path)[\"run\"] for path, _ in entries}\n-    assert len(runs) == 24\n+    assert len(runs) == len(entries)\n+    assert COURSE_RUNS <= runs\n     normalized = {name if not name.startswith((\"rcore-\", \"ucore-\"))\n                   else \"-\".join(name.split(\"-\")[:2]) for name in runs}\n     assert EXPECTED_RUNS <= normalized\n \n \n+def test_course_artifacts_keep_commands_source_identity_and_raw_counts():\n+    records = [record for path, _ in report_sidecars()\n+               if (record := json.loads(path.read_text())).get(\"schema\") == \"nodefusion.education-recording/1\"]\n+    assert {record[\"run\"] for record in records} == COURSE_RUNS\n+    for record in records:\n+        assert record[\"schema\"] == \"nodefusion.education-recording/1\"\n+        expected = {\"rcore-2026A-ch1-verified\": \"qemu_exited\",\n+                    \"ucore-2026A-ch2-reference\": \"timeout\"}.get(record[\"run\"], \"completed\")\n+        assert record[\"outcome\"] == expected and record[\"trace_complete\"]\n+        assert len(record[\"source\"][\"kernel_commit\"]) == 40\n+        assert len(record[\"source\"][\"plugin_sha256\"]) == 64\n+        assert \"--watch-all\" in record[\"record_command\"]\n+        assert \"--function-returns\" in record[\"record_command\"]\n+        assert record[\"observations\"][\"raw_events\"] == record[\"report\"][\"event_selection\"][\"raw\"]\n+\n+\n def test_tracecomplete_reuses_its_recording_folder():\n     folder = ARTIFACTS / \"arceos/apps/tracecomplete\"\n     manifest = json.loads((folder / \"manifest.json\").read_text(encoding=\"utf-8\"))\n"
      },
      {
        "path": "nodefusion/tests/test_snapshot.py",
        "sha256": "a1e5383c15e3c3c18222f6e07991712b1f22dfebd3ec67178eb58e4710a921ea",
        "patch": "diff --git a/nodefusion/tests/test_snapshot.py b/nodefusion/tests/test_snapshot.py\nindex f6ee7e9..3f17d86 100644\n--- a/nodefusion/tests/test_snapshot.py\n+++ b/nodefusion/tests/test_snapshot.py\n@@ -235,6 +235,19 @@ def test_liveness_only_skips_on_an_exact_match():\n     assert is_live(E(2149793408), spec)\n \n \n+def test_liveness_supports_declared_state_names_across_kernel_versions():\n+    from nodefusion.model.snapshot import Entity\n+\n+    spec = {\"skip_when\": {\"field\": \"state\", \"one_of\": [\"UNUSED\", \"P_UNUSED\"]}}\n+    for value, live in ((\"UNUSED\", False), (\"P_UNUSED\", False),\n+                        (\"RUNNABLE\", True), (\"P_RUNNING\", True), (0, True)):\n+        entity = Entity(\"process\", 0, fields={\"state\": Field(\"state\", PRESENT, value)})\n+        assert is_live(entity, spec) is live\n+    for state in (ABSENT, EMPTY, UNDECODABLE):\n+        entity = Entity(\"process\", 0, fields={\"state\": Field(\"state\", state)})\n+        assert is_live(entity, spec)\n+\n+\n @needs_elf\n def test_entity_count_comes_from_dwarf_not_a_constant(xv6):\n     dw, m, res, syms = xv6\n"
      },
      {
        "path": "nodefusion/tests/test_units.py",
        "sha256": "9bf99f5d3080ed458a97e736e30b84025eb99c1e43e693d9aa33f519896106b3",
        "patch": "diff --git a/nodefusion/tests/test_units.py b/nodefusion/tests/test_units.py\nindex f10392d..8d86a2d 100644\n--- a/nodefusion/tests/test_units.py\n+++ b/nodefusion/tests/test_units.py\n@@ -40,6 +40,49 @@ def test_rcore_booted_needs_the_kernel_marker(console, booted):\n     assert K.by_kind('rcore').booted(console) is booted\n \n \n+@pytest.mark.parametrize(\"marker\", [\"ALL DONE\", \"all app are over!\", \"all apps over\"])\n+def test_ucore_batch_completion(marker):\n+    assert K.by_kind('ucore').classify(f\"[PANIC 5] os/loader.c:14: {marker}\\n\") == 'completed'\n+\n+\n+@pytest.mark.parametrize(\"console, booted\", [\n+    (\"\\x1b[34m[INFO 0]start scheduler!\\x1b[0m\\n\", True),\n+    (\"C user shell\\n>> \", True),\n+    (\"OpenSBI v1.7\\n\", False),\n+])\n+def test_ucore_shell_and_scheduler_boot_markers(console, booted):\n+    assert K.by_kind('ucore').booted(console) is booted\n+\n+\n+def test_ucore_batch_without_completion_is_not_complete():\n+    assert K.by_kind('ucore').classify(\"start scheduler!\\nTest write A OK!\\n\") == 'qemu_exited'\n+\n+\n+@pytest.mark.parametrize('diagnostic', ['IllegalInstruction in application, core dumped.',\n+                                      '[PANIC 0] user assertion failed'])\n+def test_ucore_user_diagnostics_are_not_kernel_stop_markers(diagnostic):\n+    profile = K.by_kind('ucore')\n+    assert profile.booted('hello wrold!\\n')\n+    assert profile.classify(diagnostic) == 'qemu_exited'\n+    assert profile.classify(diagnostic + '\\nALL DONE\\n') == 'completed'\n+\n+\n+def test_ucore_headless_keeps_recording_after_user_fault(monkeypatch):\n+    from types import SimpleNamespace\n+    from nodefusion.host.record import Recorder\n+\n+    reader = SimpleNamespace(eof=False)\n+    consoles = iter(['hello wrold!\\nIllegalInstruction in application, core dumped.\\n',\n+                     'hello wrold!\\nIllegalInstruction in application, core dumped.\\nALL DONE\\n'])\n+    reader.text = lambda: next(consoles)\n+    monkeypatch.setattr('nodefusion.host.record.time.sleep', lambda seconds: None)\n+    recorder = Recorder.__new__(Recorder)\n+    recorder.cfg = SimpleNamespace(timeout=10, boot_timeout=5)\n+    recorder.profile = K.by_kind('ucore')\n+    process = SimpleNamespace(poll=lambda: None)\n+    assert recorder._drive_headless(process, reader) == 'completed'\n+\n+\n # ----------------------------------------------------------------- xv6 classify\n \n def test_xv6_panic():\n"
      }
    ],
    "deployed_source_files": {
      "nodefusion/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/_vendor/elftools/__init__.py": "9385fdca231d9ad83e27a59aa1bc59b252efad8c24cf08c9f39e0b543f675746",
      "nodefusion/_vendor/elftools/common/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/_vendor/elftools/common/construct_utils.py": "d1de2461e60636b52cfc446d00f7a31f152f2ccc43c1a53bc2ba82187ca1e460",
      "nodefusion/_vendor/elftools/common/exceptions.py": "bedd7aa994281100ba13a40dfaad8b03eec17a725a1c4cb23893572d99bbd1ef",
      "nodefusion/_vendor/elftools/common/utils.py": "36a5f64bfb3aab0dba30d9fa05aa1b3f9fbbf86f297eee27c7c12652f5ac308b",
      "nodefusion/_vendor/elftools/construct/__init__.py": "15104eb011a640e4268a9b9221d07201a0360ff0b1c8b49e252ef41fdfbb35de",
      "nodefusion/_vendor/elftools/construct/adapters.py": "5745745b25eb849174ee5c3179b9867b03e0471633e9eac8276aa439fe4c8841",
      "nodefusion/_vendor/elftools/construct/core.py": "df9719893de6454f5bc4c912afc892bcc278ef45ac1553bf4a409278ba347c9d",
      "nodefusion/_vendor/elftools/construct/debug.py": "491486779e464e0f4a59cfd429d8e93c577a0f0d9b969847e69400a3c86acb1c",
      "nodefusion/_vendor/elftools/construct/lib/__init__.py": "973420ec247c18b9e5488743bb099ae82f19c7287ef31dcb529a7283b6e42eb3",
      "nodefusion/_vendor/elftools/construct/lib/binary.py": "f18e4161a11bc95732bd01c577cbe98373081afd5b4112b02fec51a0e1df2e11",
      "nodefusion/_vendor/elftools/construct/lib/bitstream.py": "ee8081769bed1d00a086399c8749a847c1a48b8d08637506bf7d1229b6e1808a",
      "nodefusion/_vendor/elftools/construct/lib/container.py": "0385a420febf5bac714153ceaadd192ff9d09862bc7e17c203bf759aa18b2bb4",
      "nodefusion/_vendor/elftools/construct/lib/hex.py": "55f82dc36f273347c08e9e469fd497368241453b7a63e69e167ad6b316e5e2c7",
      "nodefusion/_vendor/elftools/construct/macros.py": "0244e84cf4f598ac8da7c3d8f1f09b06112a508e71fb8d381b377f1c0472a4e3",
      "nodefusion/_vendor/elftools/dwarf/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/_vendor/elftools/dwarf/abbrevtable.py": "d7d338a6eddd4c1fe02c66d9c2b1c202c36ebcfda28f438a0ac0546dc5a63eb1",
      "nodefusion/_vendor/elftools/dwarf/aranges.py": "399d17d0e3cc18527337d60c1ffc0cfcfc8d5ddcf86af1ef6c359453538344e3",
      "nodefusion/_vendor/elftools/dwarf/callframe.py": "6c77dd3c1b482434d8d86f35922f0c88b1a71c1c19055fa512224d44876a4b5a",
      "nodefusion/_vendor/elftools/dwarf/compileunit.py": "2681263026c2bdd3fd9033e60230024e6b25ca90280df91c3ae0b0fe97bdb9d3",
      "nodefusion/_vendor/elftools/dwarf/constants.py": "30377a1636c5ac41b7a09f7c79c6bae67b49696c4e9b9d904a1a0acaba7dabdb",
      "nodefusion/_vendor/elftools/dwarf/datatype_cpp.py": "b3df1fc9ef56f941e0b38a9ad5da05a3c3821dd1cdc4b440c7c1934bee00a770",
      "nodefusion/_vendor/elftools/dwarf/descriptions.py": "6692ed493344018f4d96fdb70e9b04bdb3ec1428df0448f17fc8ffab2a205851",
      "nodefusion/_vendor/elftools/dwarf/die.py": "b653e8091a49f6926a955d8c05f26c36798ece3d902c00d2b5da10af637bfce7",
      "nodefusion/_vendor/elftools/dwarf/dwarf_expr.py": "db6d4cb9f3f1ee7e85ac1f9286831093d1b65f8c472fe0f9331a7aa164782bcb",
      "nodefusion/_vendor/elftools/dwarf/dwarf_util.py": "2e1cc3030a3cc669e0832e3cb5d4b1e3c82e22ff5a1164e6a878931f8531ce0d",
      "nodefusion/_vendor/elftools/dwarf/dwarfinfo.py": "3cfff046c35f7b063ba4288f1d9bb5167be4f3fdda0af756a299d832d660b75f",
      "nodefusion/_vendor/elftools/dwarf/enums.py": "10d18e4acabc383b8e8527cf4c011874dc9459c3bc30bd65b9212885a146bd7a",
      "nodefusion/_vendor/elftools/dwarf/lineprogram.py": "d9472d85b8c62fe56a7d6371d8cdb8af6268416970bdf909898ccb2606fa850c",
      "nodefusion/_vendor/elftools/dwarf/locationlists.py": "5167c3fb6208e3bafe0a52fc4d48eb164dc84dbd4980643acec19be26639a194",
      "nodefusion/_vendor/elftools/dwarf/namelut.py": "4b62eb965afd3e099835eb8bb9112f2d1ec89cb42adc6b55c1f113b6068d17b3",
      "nodefusion/_vendor/elftools/dwarf/ranges.py": "da3856ee646cf5b305751fa73a2d5fd9b0a21413377ca11cf93ce20e7040386e",
      "nodefusion/_vendor/elftools/dwarf/structs.py": "dfb1d6d755bcc7cf9a0363620e470c5b4a74bf7499a32d82f261652ffe71bef8",
      "nodefusion/_vendor/elftools/dwarf/typeunit.py": "c1bae01e11001941ebd0a10b72d569b4a0800600b3006b20a0b37f88536d1bc9",
      "nodefusion/_vendor/elftools/ehabi/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/_vendor/elftools/ehabi/constants.py": "a386df95ebe53338db1cdfe498a06acf8e976007b5fab5c4eed2b8904932caa8",
      "nodefusion/_vendor/elftools/ehabi/decoder.py": "3380c750ed972e33510a42a1d4de725f744cfc156e44a5d50ae199239cacb10e",
      "nodefusion/_vendor/elftools/ehabi/ehabiinfo.py": "e442ea16826888c9903893db8ccd9cb47f9f634476c1837812c84b6ce4be1b4c",
      "nodefusion/_vendor/elftools/ehabi/structs.py": "5ebdda74af71d7637d41eb0510403d8776d3b7ea70f715edc58aabc836aaae87",
      "nodefusion/_vendor/elftools/elf/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/_vendor/elftools/elf/constants.py": "d805c36820815a58fce8593206a5527c46009756b9397298d086679b6a9d9f23",
      "nodefusion/_vendor/elftools/elf/descriptions.py": "02771b6d1d4eb829b7334e417f580f78eb253c14f895c427c99b870537d363ef",
      "nodefusion/_vendor/elftools/elf/dynamic.py": "13c2621f118f30c6a8b6a0d999bdf8a7d082f0c2b7713eb4203d7b877082f0f7",
      "nodefusion/_vendor/elftools/elf/elffile.py": "0b8629b86828f0f05dea1200261ffaf1849ae675e52943e88a37e6a5e0b73d51",
      "nodefusion/_vendor/elftools/elf/enums.py": "9beb3eb13c4dfe6e2e75ed5db7a75dbb6da7917ed7ea7ad9c2ab7b697c284256",
      "nodefusion/_vendor/elftools/elf/gnuversions.py": "d22136e3242cf4ff379154b5c830706f3be1d77ee41ffab7efeed57e4876c740",
      "nodefusion/_vendor/elftools/elf/hash.py": "538c9b253f89a4b200eeb9c7d82f9cd0c3ae08146b3295538363ba5fced3627a",
      "nodefusion/_vendor/elftools/elf/notes.py": "17cf2c2a9ec9a0bf8f3415cbaeca42d3ab8f1102556251b290a2814e86f16f63",
      "nodefusion/_vendor/elftools/elf/relocation.py": "b0fd391fe0e293ac7dc5bdad495a8d2e72454442c35291781952fa5016f77b0f",
      "nodefusion/_vendor/elftools/elf/sections.py": "5acbfe427062f3f80cad1d556c4113d60136cbe526636e621a6e820ade5d6ab5",
      "nodefusion/_vendor/elftools/elf/segments.py": "103f945c2c7d67eff713609ea189601e94c0e7122274110c6b20d038a5b8bf74",
      "nodefusion/_vendor/elftools/elf/structs.py": "a0f439925915d7f1a69938673da2cebefd0d10860d60caddc81370ce017d8623",
      "nodefusion/host/__init__.py": "eb4e72c7ca2b3242527b39bd840ced588631e97404cea0e72e3131406cdeec59",
      "nodefusion/host/__main__.py": "13a1a5b340cdcfc1902b62be90e508c7c71886000d5bf087e7854aadf09fb35e",
      "nodefusion/host/analyze.py": "310d26f5c89334c05ee697bb5709a8e8bbce140bcb67f2d3450a09232a3d38b7",
      "nodefusion/host/assets/app.css": "4a6f97f6046f1658f683e28107b5e524cf64507c57e7ad76035a7e8d745740eb",
      "nodefusion/host/assets/app.js": "c253b16d88ddc73d1c78ec3729800800ad255b923712893dbe12f66faab2aca2",
      "nodefusion/host/bundle.py": "cec890de70422513db45c7a592e758c9dba368a638fc2b337d0e3156a607f8e0",
      "nodefusion/host/callstack.py": "7a1ce5d70940e2c98792f57543e3df2cbc7b9f96ec5d8c7b280ccf17c78f9bde",
      "nodefusion/host/cdp.py": "983be57750320be8265405b3fa4c3490288a34bba5b2f0c32820d51895210264",
      "nodefusion/host/cli.py": "6a2f09d5d4ea15299e3f9cbc0f7a2312a322e9c43beb3837d61b2276787af9dd",
      "nodefusion/host/dwarf.py": "158545b640bd312050c9cef773a19f0de839229cb08925a0298a5bb2751b5993",
      "nodefusion/host/elfid.py": "43c44bed9a69fa2b92fc7520342843e71caf0c6a3849d2b23b54e9a22dfdcfa0",
      "nodefusion/host/guest.py": "6871f08f11b9eda17b8a0618e8b8f43a544ddf05a37d7b530daa18d30d4c455a",
      "nodefusion/host/kernels.py": "10dcd1d97aae33b5b389d4106bdf5867468df41a39ce769300448f6d1727b103",
      "nodefusion/host/layout.py": "2f74bd4970af88fa38519c850fbcc494b8a1e4f5ddf7ed87897a442175f0ab82",
      "nodefusion/host/nfelf.py": "5495b1bc5e3406268ba66054e831dfb3fc8857c47b881d95cd995bafa65c5315",
      "nodefusion/host/nftrace.py": "d4fa97efd6527535ab90e4c623e8211bf8b9bf7d189beee47b56b216718c2f76",
      "nodefusion/host/procview.py": "ae1874f57bafa6b694c50aa3c0185671e60fcf0f784d139ee5e807e2f98e9689",
      "nodefusion/host/record.py": "ed6668c5711bcddff0e30a4b82eaf9235e6700746ce186042e39e45219b55428",
      "nodefusion/host/render.py": "46d000d2f40eb934180fba10ec8d8ccb8cc5d1e53e558304fdba941bfcff7dd8",
      "nodefusion/host/resources.py": "019a7be1fc7d86f221f2a67c3a5f7df271d1901500371a02a2113518483fb702",
      "nodefusion/host/shell.py": "08a9b0318ab79c0642d9a0b29683dc65b86c4e529f547530baf4e60b1e67f0af",
      "nodefusion/host/video.py": "1f49810a036f9388ae10153b8691504ed79c3e8b0e19a6bc2818de2ef1fe699d",
      "nodefusion/host/watchlist.py": "1b820dd5d741a118b28959b44d95b886e5fe7518dd5beef3e5561e3cf39822d1",
      "nodefusion/host/wslenv.py": "6b8f5d9e3f71b292e51c980f921dd498315c510d952ef90b24dfbf775b3afa6c",
      "nodefusion/manifests/alien.toml": "da290fe1014168a7e8f44844f30430c3041a14550449c5d51fa06847f23f7aeb",
      "nodefusion/manifests/arceos.toml": "cad48257d081aa1c660d3e7af2f4fbec79bbe232322c71453a9a5b1c9ac7be44",
      "nodefusion/manifests/axvisor.toml": "d6cd2cc9d9662f74a5d25f29e8d02591ae5a205fe18166307ef430edbc7432b3",
      "nodefusion/manifests/rcore.toml": "4a6c4746a885ce7ed68a374516188f02d5955028c94ecfa7e73c5ddf08b73e75",
      "nodefusion/manifests/rel4.toml": "ca43c2847a9ca757542ef3ed3e276dc7130c92b25150c73deb3e2a20faf8c37e",
      "nodefusion/manifests/starry.toml": "8a3ce9735d4c948322962b8c532be334034ad608aac28a041bb58876012dcae8",
      "nodefusion/manifests/ucore.toml": "7ca738a5abfb1c21afdb75b44c2fc0ce81b19d3d2db9aa3d820850b8abf74327",
      "nodefusion/manifests/xv6.toml": "0f501a4441214a2de3b1b50d39665ee23faad6f93024b3b92d30f542bc9b7964",
      "nodefusion/model/__init__.py": "9864ab2acb9890ed2fcbf815f30042fd97e3bd5ce069531f8c76fa2eed60b9d0",
      "nodefusion/model/ctxbuild.py": "552c0d3d87d640e73bfb4c3fc237453c7b84298c721f2d37594c85d1ab5eb86d",
      "nodefusion/model/dwarfsrc.py": "02688f5f8419ba6c8fd64ea4f347929f74c8b70299b632223c5535bab298f265",
      "nodefusion/model/exec.py": "148e68fa1c7054716e4fcb3e7bddb7c0d384ab6a6bfcb00bd15f7a869f6d86ec",
      "nodefusion/model/kinds.py": "0432ef9f134654bc36554ec55afcb9f91c593110cdacf0a58d0ac4d1d05ac569",
      "nodefusion/model/layout.py": "cd2639282b0c4fac684d06309e11e95922213d3d32698f275e65dd060f677fd6",
      "nodefusion/model/manifest.py": "d592aaac9ae308760cda947327c0d7c0e964a26d517740ed66838747e2334a22",
      "nodefusion/model/plan.py": "374fbb225a6717c2c391ac8bdda54aa957638821a45b2865b40a7be9bcc808c6",
      "nodefusion/model/probe.py": "30546d56bbd47ef12567826b49dd910de07e2af8fffc5c4350e04a57f70da5b8",
      "nodefusion/model/readers/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/model/readers/containers.py": "6eec01bd4f30858e1eda2ee7de890a9d93f94eda25e02d0a1bdf3558d31a1610",
      "nodefusion/model/readers/pointers.py": "72f989d643df6bdd477494023aac2da851f2d1f123d5e1e64b7629a0be6eae6b",
      "nodefusion/model/readers/registry.py": "2c35cc0b1f8db857e67c08e9c7976bf47c6ab21faabb4e242d8a0be42f9634ee",
      "nodefusion/model/readers/scalars.py": "a145fe5c4a250cc11fe44d0a4caabae908fbc44994335663955230296f695cbc",
      "nodefusion/model/resolve.py": "0c588760d0ec6494617007b02d786285ba190593935f574f6c53b99ad62ac8c0",
      "nodefusion/model/roles.py": "8d35b0497bd0b2d9abf639d9803fc6b7bd1e1ee5153c0f47ff53a26356dcc8c5",
      "nodefusion/model/rt.py": "3d62e9c6169e89a2593b29ff49919e84a2dda1df1b6fc16d3e54c7cc5d1744af",
      "nodefusion/model/snapshot.py": "e9c4ce76b858a9003e43d9eec363e1b88d4024338c3401b7a47a9871fe5dab7a",
      "nodefusion/model/symbols.py": "39f23be73d754e52221a4889c0101d50d8d8962ec21f1628d1cc36f07acdecb8",
      "nodefusion/model/watchsel.py": "bc3a9d6763950c265efaacce3f0c98194f54808d676b449c5b320b3a90cc7bf1",
      "nodefusion/tests/conftest.py": "2dfa19b096e309beadff0df9a05761d412ec6234e74968854292d7bfecf1b7a5",
      "nodefusion/tests/crosscheck_artifacts.py": "6ee173a31795c3875f93af0a0eaebcb27346c185c24e3f1d32846f5ca89d60a0",
      "nodefusion/tests/fuzz_trace.py": "af6189a6538747d369f982dfb86016f5e48842da0ce73f651b63c0b482b1c37e",
      "nodefusion/tests/kernelelf.py": "9a35d1389243849c6ed16f801a007568eb1304eee3d2cf3bcb8d1e38e12e2aed",
      "nodefusion/tests/stress_pagetable.py": "5db6d3671739ad5d0a3f76908049126185ea000726d0044d4d87ef215f26f737",
      "nodefusion/tests/test_absent_declaration.py": "535d4ace194fc5f923ba989e18634b55cffd0660eaefdfc7a59dcb4377eac266",
      "nodefusion/tests/test_analysis_lookup_cache.py": "aa4fbc0b8f06c64278bc5b11edf21cfe3ec737e3f0d88901b52478aca29765f3",
      "nodefusion/tests/test_analyze_alias.py": "345f6cbd8fae2a7c7729130460112a08a23599461234865f2da72055c3621064",
      "nodefusion/tests/test_arg_names.py": "a0f4cd7c7017da1926fc317d6c73bcb6bd4bacde579e3818fa277079991a4af4",
      "nodefusion/tests/test_artifact_guard.py": "8b53fababf688ceaf4afd1556d3c1352d3a13c60ea43fe14e3d3eae24698d1d0",
      "nodefusion/tests/test_artifact_output_safety.py": "cbed1bfa5928e7b12edc85b506f8018dd3216f017c43461525daf0a299bea9aa",
      "nodefusion/tests/test_bundle_shape.py": "55f2f20855a890967caba83581ca1dda43fa6606a5af6ab1ee7b07b074e7c82b",
      "nodefusion/tests/test_cache_hit_contract.py": "087277fe75bf38d8e83453b3671da4825f7586382fc1fa5300b3dc79272fbee7",
      "nodefusion/tests/test_calibration_failure_reason.py": "02449f59da919dc09781a66ad57789a98775b3888d1480f4f3064b4d8a1139da",
      "nodefusion/tests/test_callstack.py": "78bc55f0ccf1a6dde2836aaa256ca0ce9fc0f9b4c6dcc4b144732460144d901e",
      "nodefusion/tests/test_capability_notes.py": "a2fb61afdc826c0c5408ea3b385761f896b27191e54881c3e10b10a2f01cc272",
      "nodefusion/tests/test_compact_capability_ui.py": "07542f2beb95353f3dd3861ca3ffcec93d1f46c966c3dd74c82d27fc3b6427ad",
      "nodefusion/tests/test_consolidate_artifacts.py": "5ffa4d01f5adb051f2153c3097d2264dfa7c63533f4cf6c09159fc50cd843cdd",
      "nodefusion/tests/test_context_switch_snapshot.py": "db5c77b5ab4ad93d34a96266386dbeec80694db7482bfa5856c1547f773ccb9d",
      "nodefusion/tests/test_corpus_selection.py": "1717ce9682ecde7a05675b790914a8e5a590e1d83556944ddbfff1e38918d050",
      "nodefusion/tests/test_coverage_evidence.py": "fdbb041e7339f8d94a52a1833b01e315657a749e9bc7d21fee6a2724f23a86f3",
      "nodefusion/tests/test_demangle_v0.py": "9f91c7ab6d2f681368c63d2bde9109cb4dd501f4d5df3e1f728a7b8975a0b061",
      "nodefusion/tests/test_dwarf_generic_base.py": "f9204c883a298151406288885c32c04fd1e7db423fe6cb0747f0f4392ba0fef5",
      "nodefusion/tests/test_dwarf_tombstones.py": "ed608be359e8180a5355cafe93e64d417543cc014461710f55fcd5997bef7295",
      "nodefusion/tests/test_dwarfsrc_location.py": "bcd7c6e8cf00a086fd9c712ffa35aebfbb4e09aaf20ddaedc4f2f5b41604cad9",
      "nodefusion/tests/test_elf_archive.py": "573747576adf2bf4daf66d5f99b6a149eff663ebcd6743b79b4b39d57d20dda5",
      "nodefusion/tests/test_elfid.py": "3efd46b3688e79f7ccc376abb32f20b495b7c074dbd84c5181d67fade3db729c",
      "nodefusion/tests/test_event_kind_pairs_measured_from_runs.py": "ef1a4ce55dc22b8f1073f3d4ac9120b30c68cf0877ba6e4dc5788f81217cdf55",
      "nodefusion/tests/test_event_kind_registry.py": "276bb984ee002622d0284558df13234328a3779853c5b1681d71d827069bfd9d",
      "nodefusion/tests/test_event_kinds.py": "67eee9315e36a7484d1141590701ad8e4e23c4be212b1ac9c0c4949983beef52",
      "nodefusion/tests/test_event_snapshot_throttle.py": "2709d806da483ef8bcdb57ddb6c59a73da83a859b793d7cd5d15891ccfcedd87",
      "nodefusion/tests/test_event_when_branches.py": "0b866c908cbc40deca18830293d161eb9b1f3401792d3fed1b1041e7e9b5e2de",
      "nodefusion/tests/test_exec_iter_map.py": "026e1e908df1884c4d241902c845dd72a43c095e5ab28e94fb7069f621698562",
      "nodefusion/tests/test_exec_walk.py": "67fc662f5b36cff81c1c1ab6a1dfe842081a05a1c3f69a64e8d212da0b7cb985",
      "nodefusion/tests/test_func_events_scope.py": "de9f69b6673c312537ce72cfd6c91baa4355749558609ca0b696c21d8f790198",
      "nodefusion/tests/test_kernel_elf_fixture.py": "ada3976b4b49734884bdb9b3844886e92251240671fe8ae219ed1f70c32c935b",
      "nodefusion/tests/test_kernel_image_fit.py": "32c7bd1bf3b66c7071b36582ca32838af2777157f1ae999a46785e6a39675476",
      "nodefusion/tests/test_kernel_integrations.py": "8e3ecdcf6ad5ea3b7fa44a3e3244a2c9678255b62c02d8cd48de9cfc1189b376",
      "nodefusion/tests/test_kernel_view.py": "4cc544296573cab8df9858947e6d7040fb22aba4b29aac1b43a565b39d9e7ab5",
      "nodefusion/tests/test_kind_three_states.py": "64764f687af895b3b37bc69179f2729f49efe2fb5fc5a24ecc09c41ea38e70ed",
      "nodefusion/tests/test_layout_routing.py": "14631aae85b75dcb1c1c5cec92c344f1c01433e2ae6eb90a3c105ac583372a5c",
      "nodefusion/tests/test_list_arceos.py": "22dbff8051cf7076ad5be6f919ed6d9a0c7a70bd1b6e09ca2f6589b5fb94493f",
      "nodefusion/tests/test_list_wiring.py": "e5f187b746738a5ca027936468df8ab7d2e48e32fe550eca3fa57f217c60d5cb",
      "nodefusion/tests/test_manifest_docs.py": "9be0200ca41d0f0512519356c81911cbbaf2aca63530d99e2aba53de9a1eea37",
      "nodefusion/tests/test_manifest_lint.py": "ad03a1e3519feb79fbeacdbe6576f90b05e7c6c9cb3034c44bd1032163b69888",
      "nodefusion/tests/test_manifest_roles.py": "b1a8fca196f9b37b614f3cd39abe33ad64c58894d1c933996d553c8f573d147e",
      "nodefusion/tests/test_manifest_vocabulary.py": "834eb61d446df47b1c6ebcd4e8a7347eabc24486da052b4be8f5b0660b0f631d",
      "nodefusion/tests/test_metric_deps_are_kinds_not_xv6_names.py": "07f411bb3fcbb14c2eb6c222f4a4928426a86a45d82f11cb242130c49eb6c717",
      "nodefusion/tests/test_no_build.py": "4bc6168bfe29297a6cb93ec91824dcbb9764c9ae8551f3d71446cd97e619d4ad",
      "nodefusion/tests/test_pagetable_arch.py": "9946ed7788d72107d6c6ea81fa4204843e1a0ae291add95259f3e96a0f661eb2",
      "nodefusion/tests/test_path_index_gate.py": "8486e4f1d0d8f91800321a7907ae6797a59d6576cae0614c8db6f91c8ecee9ae",
      "nodefusion/tests/test_percpu_layout.py": "4ecfcf97552e678173bca5fe81eb661bc7f417ba2f4ea4de3c540ba956152495",
      "nodefusion/tests/test_percpu_runtime_layout.py": "ba54784385c6a6716eb3f3317635c8b2dd09b40e5e3e5e6112ca5b92d4e7c62c",
      "nodefusion/tests/test_phys_alloc_gate.py": "a1b68458d8268d052082ad92b80f86753c46423eec7c86c3bdd6019e23b8186a",
      "nodefusion/tests/test_plan_iter_map.py": "58fcacc67e31cf6638ce4d846dccf32312ae17caed1d9470d0ba468fd95a4b5a",
      "nodefusion/tests/test_plan_percpu.py": "5ece34163ede167484cc5edd5d3255d8514935af7a385b171b1b64c6e928140e",
      "nodefusion/tests/test_plan_steps.py": "0241755b6c85983779fad700e2eba5332ab595cc64e6297e8358ba4d15f9dfb7",
      "nodefusion/tests/test_procs_gate.py": "8acd3d3e2398fcd008dd4f5bae735183008eb4cecf6f4c09d0fffaefdf50cd8d",
      "nodefusion/tests/test_procview.py": "9f48157ccc96833a83a42f2f3c3eb26a82bd7f6918c0c3c91a6052c5d9657428",
      "nodefusion/tests/test_profile_from_manifest.py": "9f7cf3aa6cb931445e9e6c763bf2c30b1505e4b728f759514033994b5b60b16c",
      "nodefusion/tests/test_rcore_fs_vocabulary.py": "48c49c9f091d4c964715cf55216b8354ea59697a0ef58ec18850f5e8e89f80c5",
      "nodefusion/tests/test_rcore_inlined_halves.py": "fd61e489c857fcaa5cdbe2466e74b1ba6a547eb7b18fd12fbda80ce927c6f516",
      "nodefusion/tests/test_readers_containers.py": "b0f882dd388f9bc3796b8f5d8c29d72c7dd6b5d8b7866055f810a7bbb2295d2f",
      "nodefusion/tests/test_readers_pointers.py": "e15d27e41ca320d960720f6760ffd0ff6216f658c74ab373148dc3307fa24fd8",
      "nodefusion/tests/test_readers_registry.py": "b139bcca13c15f203e73a427d9d6dc5804b97fc76a28d14025325f191cc4a6a5",
      "nodefusion/tests/test_readers_scalars.py": "3a15bf0648767fb8e7d24044aeb61eb312ace64ab51f834e0a2dfe39072b9cd5",
      "nodefusion/tests/test_record_icount.py": "f76528d2c5a7fc18938d0afc88b5ee9e9626d63801bccc6ced57c1e4b2c823a0",
      "nodefusion/tests/test_recording_tail.py": "833b8e33c6d111b49790beea1ba7ab81b23bd7ea907a2155f981967bcb61a614",
      "nodefusion/tests/test_regenerate_artifact.py": "0098a8fc52b7cd42889036de78ca54cec00064396d701eadd224b3febd3c043b",
      "nodefusion/tests/test_resolve.py": "b14f432eb380c5514b73431978b01b0d715ed9a49f92deb547358fb35dd4d8ec",
      "nodefusion/tests/test_resources.py": "0860476f362a770bd04355592a83fdb15aa9df3787c6c740d407cb8ee4fc817e",
      "nodefusion/tests/test_sampled_counts_are_not_exact.py": "7bd598eb07ef0b067cee3460ef0c61d18b8b918ae697d80b01617cf73eaf0a9a",
      "nodefusion/tests/test_shell_verdict.py": "22baff1ad7cb43b5c5574b424812c40b194e30e3800921429659f7b31cbe20f4",
      "nodefusion/tests/test_snapshot.py": "a1e5383c15e3c3c18222f6e07991712b1f22dfebd3ec67178eb58e4710a921ea",
      "nodefusion/tests/test_source_combine.py": "506ebb5c6dda153e92b854887fb671cf4aa08d33fd8305b359139a1d38ee4349",
      "nodefusion/tests/test_spec_nftrace_registry.py": "c529a4ed1f86bee4951e4699b09d466d51a5bd0623accc49bff9abcfdf15e615",
      "nodefusion/tests/test_split_rawvec.py": "e80f55fc42e246f3f638979500c7c40548eb0f630c512a93b8eaa00df312eac4",
      "nodefusion/tests/test_switch_attribution.py": "c773376888e9dc2ce87ddbebc14ccb0649ea77da189319692e20aff16eddb73d",
      "nodefusion/tests/test_symbols_static_wrapper.py": "cf634a6545564e8949b9129cee0c5f01f3dcf60effd49883c3b908aa28af7f82",
      "nodefusion/tests/test_trace_complete.py": "ac33d1da9aba97c98c68502188522a253709e96cf3fbb8d3c94b85c661cea366",
      "nodefusion/tests/test_trace_streaming.py": "6c972f95a790afac5b9aa84320038bf0eab41b926126334db7290d095f2b1e10",
      "nodefusion/tests/test_units.py": "9bf99f5d3080ed458a97e736e30b84025eb99c1e43e693d9aa33f519896106b3",
      "nodefusion/tests/test_unobservable_does_not_speak_for_the_kernel.py": "448c03147a2306d8205762bdc9a9e0d9e8d5eb0e0c5199d17d80c2f076f87547",
      "nodefusion/tests/test_video_sections.py": "c84c17b471460ae45a25341a8f893768816f57a9eb94e9f9a90e7e20406c4a31",
      "nodefusion/tests/test_watchlist_wire.py": "1e01dd4fde92169c0ab1296dbd249865cddde4173ec8de3c71c39f61356f74c3",
      "nodefusion/tests/test_watchsel.py": "89c8bb635534d079e0502d1c118f32eaa806250d74195a9d99bb71d07aabcd2d",
      "nodefusion/tools/crosscheck_decoder.py": "2f69a3f636d910f93f24939bcd03b41d9b0a17184ce4a4b15250e00f65b47a28",
      "nodefusion/tools/crosscheck_dwarf.py": "b30ecfa371c6959b2522db6d9edabf7e0c7be238feef34ff9411d76a4b4fdf01",
      "nodefusion/tools/crosscheck_layout.py": "d77ebd7aaa1ace070392eca0051f1b34dbf65d08c355edf87101b7e449aa7106",
      "nodefusion/tools/crosscheck_offsetof.py": "732e30d19129e0a1f15e33a2c1f96d940abaa1a26829b8f0d7bc44bf873cdc87",
      "nodefusion/tools/crosscheck_procinfo.py": "c3d6dd588b28d9252ddb712dea0ab8d3212dffed7f9256b9b936860fa0dfb8a9",
      "nodefusion/tools/crosscheck_procs.py": "b497c8fd050c0d6d1e4154eda00c1eef05502d3826546b1165b8a740c6fee562",
      "nodefusion/tools/crosscheck_resources.py": "98b04ac869e3c9e38020728473d480b8ed0b15385bc1d530e466919807ad1ac3",
      "nodefusion/tools/crosscheck_watchsel.py": "52142d49e919f2f040371b404cabdef0d0edbbf977abdcb1af5063b910d0aad8",
      "nodefusion/tools/survey_chapters.py": "6952dbdb8036916acd17bd5f642ea0b62aa10cbbec2bb4227e58f5132683589b",
      "scripts/benchmark_trace.py": "0faf86ba735bc31a20ee8e7ae3d3aad8aef78f0f43cdd33e831658f4e2a71494",
      "scripts/consolidate_artifacts.py": "31700c7f0a1f21fef653e061115b0091aa1a4ce539b9baa9cb48ad914889dadd",
      "scripts/finalize_artifacts.py": "a10224f43e0554eeb347a201dfd29781fbe0a39b979f890cccbec65e76cea9eb",
      "scripts/regenerate_artifact.py": "aed10d1eedc5689b6fd68e84a9bb8ae0c98f7bb8456fd8bd280e8bae470b8e9a"
    },
    "source_file_hashes_after": {
      "nodefusion/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/_vendor/elftools/__init__.py": "9385fdca231d9ad83e27a59aa1bc59b252efad8c24cf08c9f39e0b543f675746",
      "nodefusion/_vendor/elftools/common/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/_vendor/elftools/common/construct_utils.py": "d1de2461e60636b52cfc446d00f7a31f152f2ccc43c1a53bc2ba82187ca1e460",
      "nodefusion/_vendor/elftools/common/exceptions.py": "bedd7aa994281100ba13a40dfaad8b03eec17a725a1c4cb23893572d99bbd1ef",
      "nodefusion/_vendor/elftools/common/utils.py": "36a5f64bfb3aab0dba30d9fa05aa1b3f9fbbf86f297eee27c7c12652f5ac308b",
      "nodefusion/_vendor/elftools/construct/__init__.py": "15104eb011a640e4268a9b9221d07201a0360ff0b1c8b49e252ef41fdfbb35de",
      "nodefusion/_vendor/elftools/construct/adapters.py": "5745745b25eb849174ee5c3179b9867b03e0471633e9eac8276aa439fe4c8841",
      "nodefusion/_vendor/elftools/construct/core.py": "df9719893de6454f5bc4c912afc892bcc278ef45ac1553bf4a409278ba347c9d",
      "nodefusion/_vendor/elftools/construct/debug.py": "491486779e464e0f4a59cfd429d8e93c577a0f0d9b969847e69400a3c86acb1c",
      "nodefusion/_vendor/elftools/construct/lib/__init__.py": "973420ec247c18b9e5488743bb099ae82f19c7287ef31dcb529a7283b6e42eb3",
      "nodefusion/_vendor/elftools/construct/lib/binary.py": "f18e4161a11bc95732bd01c577cbe98373081afd5b4112b02fec51a0e1df2e11",
      "nodefusion/_vendor/elftools/construct/lib/bitstream.py": "ee8081769bed1d00a086399c8749a847c1a48b8d08637506bf7d1229b6e1808a",
      "nodefusion/_vendor/elftools/construct/lib/container.py": "0385a420febf5bac714153ceaadd192ff9d09862bc7e17c203bf759aa18b2bb4",
      "nodefusion/_vendor/elftools/construct/lib/hex.py": "55f82dc36f273347c08e9e469fd497368241453b7a63e69e167ad6b316e5e2c7",
      "nodefusion/_vendor/elftools/construct/macros.py": "0244e84cf4f598ac8da7c3d8f1f09b06112a508e71fb8d381b377f1c0472a4e3",
      "nodefusion/_vendor/elftools/dwarf/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/_vendor/elftools/dwarf/abbrevtable.py": "d7d338a6eddd4c1fe02c66d9c2b1c202c36ebcfda28f438a0ac0546dc5a63eb1",
      "nodefusion/_vendor/elftools/dwarf/aranges.py": "399d17d0e3cc18527337d60c1ffc0cfcfc8d5ddcf86af1ef6c359453538344e3",
      "nodefusion/_vendor/elftools/dwarf/callframe.py": "6c77dd3c1b482434d8d86f35922f0c88b1a71c1c19055fa512224d44876a4b5a",
      "nodefusion/_vendor/elftools/dwarf/compileunit.py": "2681263026c2bdd3fd9033e60230024e6b25ca90280df91c3ae0b0fe97bdb9d3",
      "nodefusion/_vendor/elftools/dwarf/constants.py": "30377a1636c5ac41b7a09f7c79c6bae67b49696c4e9b9d904a1a0acaba7dabdb",
      "nodefusion/_vendor/elftools/dwarf/datatype_cpp.py": "b3df1fc9ef56f941e0b38a9ad5da05a3c3821dd1cdc4b440c7c1934bee00a770",
      "nodefusion/_vendor/elftools/dwarf/descriptions.py": "6692ed493344018f4d96fdb70e9b04bdb3ec1428df0448f17fc8ffab2a205851",
      "nodefusion/_vendor/elftools/dwarf/die.py": "b653e8091a49f6926a955d8c05f26c36798ece3d902c00d2b5da10af637bfce7",
      "nodefusion/_vendor/elftools/dwarf/dwarf_expr.py": "db6d4cb9f3f1ee7e85ac1f9286831093d1b65f8c472fe0f9331a7aa164782bcb",
      "nodefusion/_vendor/elftools/dwarf/dwarf_util.py": "2e1cc3030a3cc669e0832e3cb5d4b1e3c82e22ff5a1164e6a878931f8531ce0d",
      "nodefusion/_vendor/elftools/dwarf/dwarfinfo.py": "3cfff046c35f7b063ba4288f1d9bb5167be4f3fdda0af756a299d832d660b75f",
      "nodefusion/_vendor/elftools/dwarf/enums.py": "10d18e4acabc383b8e8527cf4c011874dc9459c3bc30bd65b9212885a146bd7a",
      "nodefusion/_vendor/elftools/dwarf/lineprogram.py": "d9472d85b8c62fe56a7d6371d8cdb8af6268416970bdf909898ccb2606fa850c",
      "nodefusion/_vendor/elftools/dwarf/locationlists.py": "5167c3fb6208e3bafe0a52fc4d48eb164dc84dbd4980643acec19be26639a194",
      "nodefusion/_vendor/elftools/dwarf/namelut.py": "4b62eb965afd3e099835eb8bb9112f2d1ec89cb42adc6b55c1f113b6068d17b3",
      "nodefusion/_vendor/elftools/dwarf/ranges.py": "da3856ee646cf5b305751fa73a2d5fd9b0a21413377ca11cf93ce20e7040386e",
      "nodefusion/_vendor/elftools/dwarf/structs.py": "dfb1d6d755bcc7cf9a0363620e470c5b4a74bf7499a32d82f261652ffe71bef8",
      "nodefusion/_vendor/elftools/dwarf/typeunit.py": "c1bae01e11001941ebd0a10b72d569b4a0800600b3006b20a0b37f88536d1bc9",
      "nodefusion/_vendor/elftools/ehabi/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/_vendor/elftools/ehabi/constants.py": "a386df95ebe53338db1cdfe498a06acf8e976007b5fab5c4eed2b8904932caa8",
      "nodefusion/_vendor/elftools/ehabi/decoder.py": "3380c750ed972e33510a42a1d4de725f744cfc156e44a5d50ae199239cacb10e",
      "nodefusion/_vendor/elftools/ehabi/ehabiinfo.py": "e442ea16826888c9903893db8ccd9cb47f9f634476c1837812c84b6ce4be1b4c",
      "nodefusion/_vendor/elftools/ehabi/structs.py": "5ebdda74af71d7637d41eb0510403d8776d3b7ea70f715edc58aabc836aaae87",
      "nodefusion/_vendor/elftools/elf/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/_vendor/elftools/elf/constants.py": "d805c36820815a58fce8593206a5527c46009756b9397298d086679b6a9d9f23",
      "nodefusion/_vendor/elftools/elf/descriptions.py": "02771b6d1d4eb829b7334e417f580f78eb253c14f895c427c99b870537d363ef",
      "nodefusion/_vendor/elftools/elf/dynamic.py": "13c2621f118f30c6a8b6a0d999bdf8a7d082f0c2b7713eb4203d7b877082f0f7",
      "nodefusion/_vendor/elftools/elf/elffile.py": "0b8629b86828f0f05dea1200261ffaf1849ae675e52943e88a37e6a5e0b73d51",
      "nodefusion/_vendor/elftools/elf/enums.py": "9beb3eb13c4dfe6e2e75ed5db7a75dbb6da7917ed7ea7ad9c2ab7b697c284256",
      "nodefusion/_vendor/elftools/elf/gnuversions.py": "d22136e3242cf4ff379154b5c830706f3be1d77ee41ffab7efeed57e4876c740",
      "nodefusion/_vendor/elftools/elf/hash.py": "538c9b253f89a4b200eeb9c7d82f9cd0c3ae08146b3295538363ba5fced3627a",
      "nodefusion/_vendor/elftools/elf/notes.py": "17cf2c2a9ec9a0bf8f3415cbaeca42d3ab8f1102556251b290a2814e86f16f63",
      "nodefusion/_vendor/elftools/elf/relocation.py": "b0fd391fe0e293ac7dc5bdad495a8d2e72454442c35291781952fa5016f77b0f",
      "nodefusion/_vendor/elftools/elf/sections.py": "5acbfe427062f3f80cad1d556c4113d60136cbe526636e621a6e820ade5d6ab5",
      "nodefusion/_vendor/elftools/elf/segments.py": "103f945c2c7d67eff713609ea189601e94c0e7122274110c6b20d038a5b8bf74",
      "nodefusion/_vendor/elftools/elf/structs.py": "a0f439925915d7f1a69938673da2cebefd0d10860d60caddc81370ce017d8623",
      "nodefusion/host/__init__.py": "eb4e72c7ca2b3242527b39bd840ced588631e97404cea0e72e3131406cdeec59",
      "nodefusion/host/__main__.py": "13a1a5b340cdcfc1902b62be90e508c7c71886000d5bf087e7854aadf09fb35e",
      "nodefusion/host/analyze.py": "310d26f5c89334c05ee697bb5709a8e8bbce140bcb67f2d3450a09232a3d38b7",
      "nodefusion/host/assets/app.css": "4a6f97f6046f1658f683e28107b5e524cf64507c57e7ad76035a7e8d745740eb",
      "nodefusion/host/assets/app.js": "c253b16d88ddc73d1c78ec3729800800ad255b923712893dbe12f66faab2aca2",
      "nodefusion/host/bundle.py": "cec890de70422513db45c7a592e758c9dba368a638fc2b337d0e3156a607f8e0",
      "nodefusion/host/callstack.py": "7a1ce5d70940e2c98792f57543e3df2cbc7b9f96ec5d8c7b280ccf17c78f9bde",
      "nodefusion/host/cdp.py": "983be57750320be8265405b3fa4c3490288a34bba5b2f0c32820d51895210264",
      "nodefusion/host/cli.py": "6a2f09d5d4ea15299e3f9cbc0f7a2312a322e9c43beb3837d61b2276787af9dd",
      "nodefusion/host/dwarf.py": "158545b640bd312050c9cef773a19f0de839229cb08925a0298a5bb2751b5993",
      "nodefusion/host/elfid.py": "43c44bed9a69fa2b92fc7520342843e71caf0c6a3849d2b23b54e9a22dfdcfa0",
      "nodefusion/host/guest.py": "6871f08f11b9eda17b8a0618e8b8f43a544ddf05a37d7b530daa18d30d4c455a",
      "nodefusion/host/kernels.py": "10dcd1d97aae33b5b389d4106bdf5867468df41a39ce769300448f6d1727b103",
      "nodefusion/host/layout.py": "2f74bd4970af88fa38519c850fbcc494b8a1e4f5ddf7ed87897a442175f0ab82",
      "nodefusion/host/nfelf.py": "5495b1bc5e3406268ba66054e831dfb3fc8857c47b881d95cd995bafa65c5315",
      "nodefusion/host/nftrace.py": "d4fa97efd6527535ab90e4c623e8211bf8b9bf7d189beee47b56b216718c2f76",
      "nodefusion/host/procview.py": "ae1874f57bafa6b694c50aa3c0185671e60fcf0f784d139ee5e807e2f98e9689",
      "nodefusion/host/record.py": "ed6668c5711bcddff0e30a4b82eaf9235e6700746ce186042e39e45219b55428",
      "nodefusion/host/render.py": "46d000d2f40eb934180fba10ec8d8ccb8cc5d1e53e558304fdba941bfcff7dd8",
      "nodefusion/host/resources.py": "019a7be1fc7d86f221f2a67c3a5f7df271d1901500371a02a2113518483fb702",
      "nodefusion/host/shell.py": "08a9b0318ab79c0642d9a0b29683dc65b86c4e529f547530baf4e60b1e67f0af",
      "nodefusion/host/video.py": "1f49810a036f9388ae10153b8691504ed79c3e8b0e19a6bc2818de2ef1fe699d",
      "nodefusion/host/watchlist.py": "1b820dd5d741a118b28959b44d95b886e5fe7518dd5beef3e5561e3cf39822d1",
      "nodefusion/host/wslenv.py": "6b8f5d9e3f71b292e51c980f921dd498315c510d952ef90b24dfbf775b3afa6c",
      "nodefusion/manifests/alien.toml": "da290fe1014168a7e8f44844f30430c3041a14550449c5d51fa06847f23f7aeb",
      "nodefusion/manifests/arceos.toml": "cad48257d081aa1c660d3e7af2f4fbec79bbe232322c71453a9a5b1c9ac7be44",
      "nodefusion/manifests/axvisor.toml": "d6cd2cc9d9662f74a5d25f29e8d02591ae5a205fe18166307ef430edbc7432b3",
      "nodefusion/manifests/rcore.toml": "4a6c4746a885ce7ed68a374516188f02d5955028c94ecfa7e73c5ddf08b73e75",
      "nodefusion/manifests/rel4.toml": "ca43c2847a9ca757542ef3ed3e276dc7130c92b25150c73deb3e2a20faf8c37e",
      "nodefusion/manifests/starry.toml": "8a3ce9735d4c948322962b8c532be334034ad608aac28a041bb58876012dcae8",
      "nodefusion/manifests/ucore.toml": "7ca738a5abfb1c21afdb75b44c2fc0ce81b19d3d2db9aa3d820850b8abf74327",
      "nodefusion/manifests/xv6.toml": "0f501a4441214a2de3b1b50d39665ee23faad6f93024b3b92d30f542bc9b7964",
      "nodefusion/model/__init__.py": "9864ab2acb9890ed2fcbf815f30042fd97e3bd5ce069531f8c76fa2eed60b9d0",
      "nodefusion/model/ctxbuild.py": "552c0d3d87d640e73bfb4c3fc237453c7b84298c721f2d37594c85d1ab5eb86d",
      "nodefusion/model/dwarfsrc.py": "02688f5f8419ba6c8fd64ea4f347929f74c8b70299b632223c5535bab298f265",
      "nodefusion/model/exec.py": "148e68fa1c7054716e4fcb3e7bddb7c0d384ab6a6bfcb00bd15f7a869f6d86ec",
      "nodefusion/model/kinds.py": "0432ef9f134654bc36554ec55afcb9f91c593110cdacf0a58d0ac4d1d05ac569",
      "nodefusion/model/layout.py": "cd2639282b0c4fac684d06309e11e95922213d3d32698f275e65dd060f677fd6",
      "nodefusion/model/manifest.py": "d592aaac9ae308760cda947327c0d7c0e964a26d517740ed66838747e2334a22",
      "nodefusion/model/plan.py": "374fbb225a6717c2c391ac8bdda54aa957638821a45b2865b40a7be9bcc808c6",
      "nodefusion/model/probe.py": "30546d56bbd47ef12567826b49dd910de07e2af8fffc5c4350e04a57f70da5b8",
      "nodefusion/model/readers/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/model/readers/containers.py": "6eec01bd4f30858e1eda2ee7de890a9d93f94eda25e02d0a1bdf3558d31a1610",
      "nodefusion/model/readers/pointers.py": "72f989d643df6bdd477494023aac2da851f2d1f123d5e1e64b7629a0be6eae6b",
      "nodefusion/model/readers/registry.py": "2c35cc0b1f8db857e67c08e9c7976bf47c6ab21faabb4e242d8a0be42f9634ee",
      "nodefusion/model/readers/scalars.py": "a145fe5c4a250cc11fe44d0a4caabae908fbc44994335663955230296f695cbc",
      "nodefusion/model/resolve.py": "0c588760d0ec6494617007b02d786285ba190593935f574f6c53b99ad62ac8c0",
      "nodefusion/model/roles.py": "8d35b0497bd0b2d9abf639d9803fc6b7bd1e1ee5153c0f47ff53a26356dcc8c5",
      "nodefusion/model/rt.py": "3d62e9c6169e89a2593b29ff49919e84a2dda1df1b6fc16d3e54c7cc5d1744af",
      "nodefusion/model/snapshot.py": "e9c4ce76b858a9003e43d9eec363e1b88d4024338c3401b7a47a9871fe5dab7a",
      "nodefusion/model/symbols.py": "39f23be73d754e52221a4889c0101d50d8d8962ec21f1628d1cc36f07acdecb8",
      "nodefusion/model/watchsel.py": "bc3a9d6763950c265efaacce3f0c98194f54808d676b449c5b320b3a90cc7bf1",
      "nodefusion/tests/conftest.py": "2dfa19b096e309beadff0df9a05761d412ec6234e74968854292d7bfecf1b7a5",
      "nodefusion/tests/crosscheck_artifacts.py": "6ee173a31795c3875f93af0a0eaebcb27346c185c24e3f1d32846f5ca89d60a0",
      "nodefusion/tests/fuzz_trace.py": "af6189a6538747d369f982dfb86016f5e48842da0ce73f651b63c0b482b1c37e",
      "nodefusion/tests/kernelelf.py": "9a35d1389243849c6ed16f801a007568eb1304eee3d2cf3bcb8d1e38e12e2aed",
      "nodefusion/tests/stress_pagetable.py": "5db6d3671739ad5d0a3f76908049126185ea000726d0044d4d87ef215f26f737",
      "nodefusion/tests/test_absent_declaration.py": "535d4ace194fc5f923ba989e18634b55cffd0660eaefdfc7a59dcb4377eac266",
      "nodefusion/tests/test_analysis_lookup_cache.py": "aa4fbc0b8f06c64278bc5b11edf21cfe3ec737e3f0d88901b52478aca29765f3",
      "nodefusion/tests/test_analyze_alias.py": "345f6cbd8fae2a7c7729130460112a08a23599461234865f2da72055c3621064",
      "nodefusion/tests/test_arg_names.py": "a0f4cd7c7017da1926fc317d6c73bcb6bd4bacde579e3818fa277079991a4af4",
      "nodefusion/tests/test_artifact_guard.py": "8b53fababf688ceaf4afd1556d3c1352d3a13c60ea43fe14e3d3eae24698d1d0",
      "nodefusion/tests/test_artifact_output_safety.py": "cbed1bfa5928e7b12edc85b506f8018dd3216f017c43461525daf0a299bea9aa",
      "nodefusion/tests/test_bundle_shape.py": "55f2f20855a890967caba83581ca1dda43fa6606a5af6ab1ee7b07b074e7c82b",
      "nodefusion/tests/test_cache_hit_contract.py": "087277fe75bf38d8e83453b3671da4825f7586382fc1fa5300b3dc79272fbee7",
      "nodefusion/tests/test_calibration_failure_reason.py": "02449f59da919dc09781a66ad57789a98775b3888d1480f4f3064b4d8a1139da",
      "nodefusion/tests/test_callstack.py": "78bc55f0ccf1a6dde2836aaa256ca0ce9fc0f9b4c6dcc4b144732460144d901e",
      "nodefusion/tests/test_capability_notes.py": "a2fb61afdc826c0c5408ea3b385761f896b27191e54881c3e10b10a2f01cc272",
      "nodefusion/tests/test_compact_capability_ui.py": "07542f2beb95353f3dd3861ca3ffcec93d1f46c966c3dd74c82d27fc3b6427ad",
      "nodefusion/tests/test_consolidate_artifacts.py": "5ffa4d01f5adb051f2153c3097d2264dfa7c63533f4cf6c09159fc50cd843cdd",
      "nodefusion/tests/test_context_switch_snapshot.py": "db5c77b5ab4ad93d34a96266386dbeec80694db7482bfa5856c1547f773ccb9d",
      "nodefusion/tests/test_corpus_selection.py": "1717ce9682ecde7a05675b790914a8e5a590e1d83556944ddbfff1e38918d050",
      "nodefusion/tests/test_coverage_evidence.py": "fdbb041e7339f8d94a52a1833b01e315657a749e9bc7d21fee6a2724f23a86f3",
      "nodefusion/tests/test_demangle_v0.py": "9f91c7ab6d2f681368c63d2bde9109cb4dd501f4d5df3e1f728a7b8975a0b061",
      "nodefusion/tests/test_dwarf_generic_base.py": "f9204c883a298151406288885c32c04fd1e7db423fe6cb0747f0f4392ba0fef5",
      "nodefusion/tests/test_dwarf_tombstones.py": "ed608be359e8180a5355cafe93e64d417543cc014461710f55fcd5997bef7295",
      "nodefusion/tests/test_dwarfsrc_location.py": "bcd7c6e8cf00a086fd9c712ffa35aebfbb4e09aaf20ddaedc4f2f5b41604cad9",
      "nodefusion/tests/test_elf_archive.py": "573747576adf2bf4daf66d5f99b6a149eff663ebcd6743b79b4b39d57d20dda5",
      "nodefusion/tests/test_elfid.py": "3efd46b3688e79f7ccc376abb32f20b495b7c074dbd84c5181d67fade3db729c",
      "nodefusion/tests/test_event_kind_pairs_measured_from_runs.py": "ef1a4ce55dc22b8f1073f3d4ac9120b30c68cf0877ba6e4dc5788f81217cdf55",
      "nodefusion/tests/test_event_kind_registry.py": "276bb984ee002622d0284558df13234328a3779853c5b1681d71d827069bfd9d",
      "nodefusion/tests/test_event_kinds.py": "67eee9315e36a7484d1141590701ad8e4e23c4be212b1ac9c0c4949983beef52",
      "nodefusion/tests/test_event_snapshot_throttle.py": "2709d806da483ef8bcdb57ddb6c59a73da83a859b793d7cd5d15891ccfcedd87",
      "nodefusion/tests/test_event_when_branches.py": "0b866c908cbc40deca18830293d161eb9b1f3401792d3fed1b1041e7e9b5e2de",
      "nodefusion/tests/test_exec_iter_map.py": "026e1e908df1884c4d241902c845dd72a43c095e5ab28e94fb7069f621698562",
      "nodefusion/tests/test_exec_walk.py": "67fc662f5b36cff81c1c1ab6a1dfe842081a05a1c3f69a64e8d212da0b7cb985",
      "nodefusion/tests/test_func_events_scope.py": "de9f69b6673c312537ce72cfd6c91baa4355749558609ca0b696c21d8f790198",
      "nodefusion/tests/test_kernel_elf_fixture.py": "ada3976b4b49734884bdb9b3844886e92251240671fe8ae219ed1f70c32c935b",
      "nodefusion/tests/test_kernel_image_fit.py": "32c7bd1bf3b66c7071b36582ca32838af2777157f1ae999a46785e6a39675476",
      "nodefusion/tests/test_kernel_integrations.py": "8e3ecdcf6ad5ea3b7fa44a3e3244a2c9678255b62c02d8cd48de9cfc1189b376",
      "nodefusion/tests/test_kernel_view.py": "4cc544296573cab8df9858947e6d7040fb22aba4b29aac1b43a565b39d9e7ab5",
      "nodefusion/tests/test_kind_three_states.py": "64764f687af895b3b37bc69179f2729f49efe2fb5fc5a24ecc09c41ea38e70ed",
      "nodefusion/tests/test_layout_routing.py": "14631aae85b75dcb1c1c5cec92c344f1c01433e2ae6eb90a3c105ac583372a5c",
      "nodefusion/tests/test_list_arceos.py": "22dbff8051cf7076ad5be6f919ed6d9a0c7a70bd1b6e09ca2f6589b5fb94493f",
      "nodefusion/tests/test_list_wiring.py": "e5f187b746738a5ca027936468df8ab7d2e48e32fe550eca3fa57f217c60d5cb",
      "nodefusion/tests/test_manifest_docs.py": "9be0200ca41d0f0512519356c81911cbbaf2aca63530d99e2aba53de9a1eea37",
      "nodefusion/tests/test_manifest_lint.py": "ad03a1e3519feb79fbeacdbe6576f90b05e7c6c9cb3034c44bd1032163b69888",
      "nodefusion/tests/test_manifest_roles.py": "b1a8fca196f9b37b614f3cd39abe33ad64c58894d1c933996d553c8f573d147e",
      "nodefusion/tests/test_manifest_vocabulary.py": "834eb61d446df47b1c6ebcd4e8a7347eabc24486da052b4be8f5b0660b0f631d",
      "nodefusion/tests/test_metric_deps_are_kinds_not_xv6_names.py": "07f411bb3fcbb14c2eb6c222f4a4928426a86a45d82f11cb242130c49eb6c717",
      "nodefusion/tests/test_no_build.py": "4bc6168bfe29297a6cb93ec91824dcbb9764c9ae8551f3d71446cd97e619d4ad",
      "nodefusion/tests/test_pagetable_arch.py": "9946ed7788d72107d6c6ea81fa4204843e1a0ae291add95259f3e96a0f661eb2",
      "nodefusion/tests/test_path_index_gate.py": "8486e4f1d0d8f91800321a7907ae6797a59d6576cae0614c8db6f91c8ecee9ae",
      "nodefusion/tests/test_percpu_layout.py": "4ecfcf97552e678173bca5fe81eb661bc7f417ba2f4ea4de3c540ba956152495",
      "nodefusion/tests/test_percpu_runtime_layout.py": "ba54784385c6a6716eb3f3317635c8b2dd09b40e5e3e5e6112ca5b92d4e7c62c",
      "nodefusion/tests/test_phys_alloc_gate.py": "a1b68458d8268d052082ad92b80f86753c46423eec7c86c3bdd6019e23b8186a",
      "nodefusion/tests/test_plan_iter_map.py": "58fcacc67e31cf6638ce4d846dccf32312ae17caed1d9470d0ba468fd95a4b5a",
      "nodefusion/tests/test_plan_percpu.py": "5ece34163ede167484cc5edd5d3255d8514935af7a385b171b1b64c6e928140e",
      "nodefusion/tests/test_plan_steps.py": "0241755b6c85983779fad700e2eba5332ab595cc64e6297e8358ba4d15f9dfb7",
      "nodefusion/tests/test_procs_gate.py": "8acd3d3e2398fcd008dd4f5bae735183008eb4cecf6f4c09d0fffaefdf50cd8d",
      "nodefusion/tests/test_procview.py": "9f48157ccc96833a83a42f2f3c3eb26a82bd7f6918c0c3c91a6052c5d9657428",
      "nodefusion/tests/test_profile_from_manifest.py": "9f7cf3aa6cb931445e9e6c763bf2c30b1505e4b728f759514033994b5b60b16c",
      "nodefusion/tests/test_rcore_fs_vocabulary.py": "48c49c9f091d4c964715cf55216b8354ea59697a0ef58ec18850f5e8e89f80c5",
      "nodefusion/tests/test_rcore_inlined_halves.py": "fd61e489c857fcaa5cdbe2466e74b1ba6a547eb7b18fd12fbda80ce927c6f516",
      "nodefusion/tests/test_readers_containers.py": "b0f882dd388f9bc3796b8f5d8c29d72c7dd6b5d8b7866055f810a7bbb2295d2f",
      "nodefusion/tests/test_readers_pointers.py": "e15d27e41ca320d960720f6760ffd0ff6216f658c74ab373148dc3307fa24fd8",
      "nodefusion/tests/test_readers_registry.py": "b139bcca13c15f203e73a427d9d6dc5804b97fc76a28d14025325f191cc4a6a5",
      "nodefusion/tests/test_readers_scalars.py": "3a15bf0648767fb8e7d24044aeb61eb312ace64ab51f834e0a2dfe39072b9cd5",
      "nodefusion/tests/test_record_icount.py": "f76528d2c5a7fc18938d0afc88b5ee9e9626d63801bccc6ced57c1e4b2c823a0",
      "nodefusion/tests/test_recording_tail.py": "833b8e33c6d111b49790beea1ba7ab81b23bd7ea907a2155f981967bcb61a614",
      "nodefusion/tests/test_regenerate_artifact.py": "0098a8fc52b7cd42889036de78ca54cec00064396d701eadd224b3febd3c043b",
      "nodefusion/tests/test_resolve.py": "b14f432eb380c5514b73431978b01b0d715ed9a49f92deb547358fb35dd4d8ec",
      "nodefusion/tests/test_resources.py": "0860476f362a770bd04355592a83fdb15aa9df3787c6c740d407cb8ee4fc817e",
      "nodefusion/tests/test_sampled_counts_are_not_exact.py": "7bd598eb07ef0b067cee3460ef0c61d18b8b918ae697d80b01617cf73eaf0a9a",
      "nodefusion/tests/test_shell_verdict.py": "22baff1ad7cb43b5c5574b424812c40b194e30e3800921429659f7b31cbe20f4",
      "nodefusion/tests/test_snapshot.py": "a1e5383c15e3c3c18222f6e07991712b1f22dfebd3ec67178eb58e4710a921ea",
      "nodefusion/tests/test_source_combine.py": "506ebb5c6dda153e92b854887fb671cf4aa08d33fd8305b359139a1d38ee4349",
      "nodefusion/tests/test_spec_nftrace_registry.py": "c529a4ed1f86bee4951e4699b09d466d51a5bd0623accc49bff9abcfdf15e615",
      "nodefusion/tests/test_split_rawvec.py": "e80f55fc42e246f3f638979500c7c40548eb0f630c512a93b8eaa00df312eac4",
      "nodefusion/tests/test_switch_attribution.py": "c773376888e9dc2ce87ddbebc14ccb0649ea77da189319692e20aff16eddb73d",
      "nodefusion/tests/test_symbols_static_wrapper.py": "cf634a6545564e8949b9129cee0c5f01f3dcf60effd49883c3b908aa28af7f82",
      "nodefusion/tests/test_trace_complete.py": "ac33d1da9aba97c98c68502188522a253709e96cf3fbb8d3c94b85c661cea366",
      "nodefusion/tests/test_trace_streaming.py": "6c972f95a790afac5b9aa84320038bf0eab41b926126334db7290d095f2b1e10",
      "nodefusion/tests/test_units.py": "9bf99f5d3080ed458a97e736e30b84025eb99c1e43e693d9aa33f519896106b3",
      "nodefusion/tests/test_unobservable_does_not_speak_for_the_kernel.py": "448c03147a2306d8205762bdc9a9e0d9e8d5eb0e0c5199d17d80c2f076f87547",
      "nodefusion/tests/test_video_sections.py": "c84c17b471460ae45a25341a8f893768816f57a9eb94e9f9a90e7e20406c4a31",
      "nodefusion/tests/test_watchlist_wire.py": "1e01dd4fde92169c0ab1296dbd249865cddde4173ec8de3c71c39f61356f74c3",
      "nodefusion/tests/test_watchsel.py": "89c8bb635534d079e0502d1c118f32eaa806250d74195a9d99bb71d07aabcd2d",
      "nodefusion/tools/crosscheck_decoder.py": "2f69a3f636d910f93f24939bcd03b41d9b0a17184ce4a4b15250e00f65b47a28",
      "nodefusion/tools/crosscheck_dwarf.py": "b30ecfa371c6959b2522db6d9edabf7e0c7be238feef34ff9411d76a4b4fdf01",
      "nodefusion/tools/crosscheck_layout.py": "d77ebd7aaa1ace070392eca0051f1b34dbf65d08c355edf87101b7e449aa7106",
      "nodefusion/tools/crosscheck_offsetof.py": "732e30d19129e0a1f15e33a2c1f96d940abaa1a26829b8f0d7bc44bf873cdc87",
      "nodefusion/tools/crosscheck_procinfo.py": "c3d6dd588b28d9252ddb712dea0ab8d3212dffed7f9256b9b936860fa0dfb8a9",
      "nodefusion/tools/crosscheck_procs.py": "b497c8fd050c0d6d1e4154eda00c1eef05502d3826546b1165b8a740c6fee562",
      "nodefusion/tools/crosscheck_resources.py": "98b04ac869e3c9e38020728473d480b8ed0b15385bc1d530e466919807ad1ac3",
      "nodefusion/tools/crosscheck_watchsel.py": "52142d49e919f2f040371b404cabdef0d0edbbf977abdcb1af5063b910d0aad8",
      "nodefusion/tools/survey_chapters.py": "6952dbdb8036916acd17bd5f642ea0b62aa10cbbec2bb4227e58f5132683589b",
      "scripts/benchmark_trace.py": "0faf86ba735bc31a20ee8e7ae3d3aad8aef78f0f43cdd33e831658f4e2a71494",
      "scripts/consolidate_artifacts.py": "31700c7f0a1f21fef653e061115b0091aa1a4ce539b9baa9cb48ad914889dadd",
      "scripts/finalize_artifacts.py": "a10224f43e0554eeb347a201dfd29781fbe0a39b979f890cccbec65e76cea9eb",
      "scripts/regenerate_artifact.py": "aed10d1eedc5689b6fd68e84a9bb8ae0c98f7bb8456fd8bd280e8bae470b8e9a"
    },
    "source_archive": {
      "path": "/home/joseph/nf/education-2026A-20260927/nodefusion-ch5-readable-analysis-tool.tar.gz",
      "sha256": "ed46cdbabb343f1620fb5dd1e8486513e3aa62211d5591848556fcbc540b7078",
      "bytes": 596049
    },
    "source_sha256": {
      "trace.nfb": "6fcf51476f287dbd03a45b2dc7c196c9f326f7a34b4af55173e6c411e9037673",
      "manifest.json": "c12b334ff8ac53f97ee8c82bbef08f7dd6011e3d2f4ce6147943ba956dd46125",
      "watchlist.json": "e8bdbd2d1c9f786762dab2845f596077adbd0db2eaa58472463c40d5d5fc7832",
      "kernel_layout.json": "1f6edd9913bf37e30d1948a86f0767e7cdcb3b5dacc12ca8c2b9b4a0b8d85abd"
    },
    "previous_html_sha256": "7108a0e955bbf35bc8667bc6d82d414de1ba8fce27e63c704c79301edfc7239c",
    "event_selection": {
      "applied": false,
      "policy": "kind-preserving/systematic-v5",
      "raw": 127198,
      "retained": 127198,
      "dropped": 0,
      "target_limit": 150000,
      "minimum_spare": 25000,
      "always_keep": "all events when the raw stream fits",
      "priority_raw": 83270,
      "spare_raw": 43928,
      "spare_budget": 0,
      "stride": 1,
      "retained_kinds": {
        "firmware.trap": 19,
        "func._ZN17compiler_builtins3mem6memcmp17he7310feea8ae4946E": 43,
        "func._ZN17compiler_builtins3mem6memcpy17ha62f30a1264ab51cE": 995,
        "func._ZN17compiler_builtins3mem6memset17hb3cc3e7988f20252E": 1491,
        "func._ZN17compiler_builtins3mem7memmove17h6641c454cd41b91bE": 417,
        "func._ZN22buddy_system_allocator4Heap4init17h47bfef144f322583E": 1,
        "func._ZN22buddy_system_allocator4Heap5alloc17hb52723857453e8d6E": 1312,
        "func._ZN22buddy_system_allocator4Heap7dealloc17h2382b66f51d78f86E": 1284,
        "func._ZN2os15kernel_log_info17he7eb3005c801817eE": 1,
        "func._ZN2os4task9processor15current_trap_cx17h37576fa5877bb1b0E": 1488,
        "func._ZN2os4task9processor18current_user_token17h7b385e281d5f1fefE": 1289,
        "func._ZN2os6loader20get_app_data_by_name17h0b4fe3c40ebdecdfE": 14,
        "func._ZN2os6loader9list_apps17hbac7ab73ba2e4c6cE": 1,
        "func._ZN2os7console5print17h259fbd0040a35667E": 1150,
        "func._ZN3log10set_logger17h2e922c1b310ebd70E": 1,
        "func._ZN3log13__private_api3loc17h74db97cb7d8ca37fE": 785,
        "func._ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h3f14c221c18e4f09E": 1,
        "func._ZN42_$LT$str$u20$as$u20$core..fmt..Display$GT$3fmt17hb8c43d55b60732c2E": 359,
        "func._ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h1c05db3ffb69a1e2E": 785,
        "func._ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h39f2fab819e69901E": 43,
        "func._ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17hb03337872ca5c760E": 316,
        "func._ZN49_$LT$log..Level$u20$as$u20$core..fmt..Display$GT$3fmt17h35020c6a1a0c2e7aE": 785,
        "func._ZN4core3fmt3num3imp52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h0b957f153e4158c7E": 785,
        "func._ZN4core3fmt3num3imp54_$LT$impl$u20$core..fmt..Display$u20$for$u20$isize$GT$3fmt17h32c7e1571ae6b44cE": 97,
        "func._ZN4core3fmt3num3imp54_$LT$impl$u20$core..fmt..Display$u20$for$u20$usize$GT$3fmt17h83de4ff3c495723bE": 770,
        "func._ZN4core3fmt3num3imp7fmt_u6417h5142f3088252957cE": 1652,
        "func._ZN4core3fmt3num55_$LT$impl$u20$core..fmt..LowerHex$u20$for$u20$usize$GT$3fmt17hc86b5565edb93905E": 20,
        "func._ZN4core3fmt5Write10write_char17h3dbf66e4bcd45ae0E": 69,
        "func._ZN4core3fmt5write17h49a560cace6c89d2E": 1935,
        "func._ZN4core3fmt8builders10DebugTuple5field17h162956c99153b8a6E": 1,
        "func._ZN4core3fmt9Formatter12pad_integral12write_prefix17h155331fd35b09c53E": 1672,
        "func._ZN4core3fmt9Formatter12pad_integral17h8b1ffde32503eca3E": 1672,
        "func._ZN4core3fmt9Formatter25debug_tuple_field1_finish17h7b601b839df38242E": 1,
        "func._ZN4core3fmt9Formatter3pad17heef45ae07d2799a9E": 1144,
        "func._ZN4core3fmt9Formatter9write_str17h181bd84b330b3504E": 1,
        "func._ZN4core3ptr109drop_in_place$LT$alloc..vec..drain..Drain$LT$alloc..sync..Arc$LT$os..task..task..TaskControlBlock$GT$$GT$$GT$17h55e00f11b91dd746E": 54,
        "func._ZN4core3ptr77drop_in_place$LT$alloc..sync..Arc$LT$os..task..task..TaskControlBlock$GT$$GT$17h1e507565745c0727E": 54,
        "func._ZN4core3str8converts9from_utf817hd70ee2e837c58dd3E": 359,
        "func._ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17h11b33aca4f687c3fE.llvm.16392842407942260741": 1,
        "func._ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17h6725eab204e3ddfeE.llvm.16392842407942260741": 3,
        "func._ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17h77de66cfa8653b3fE.llvm.16392842407942260741": 1,
        "func._ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17h93c85578dc907596E.llvm.16392842407942260741": 1,
        "func._ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17hacdbba4d48230619E.llvm.16392842407942260741": 1,
        "func._ZN54_$LT$os..logging..SimpleLogger$u20$as$u20$log..Log$GT$3log17hb67c4766b081d986E.llvm.8971997074201242157": 785,
        "func._ZN56_$LT$os..console..Stdout$u20$as$u20$core..fmt..Write$GT$9write_str17h5b2cf8a168a60b67E": 7699,
        "func._ZN59_$LT$core..fmt..Arguments$u20$as$u20$core..fmt..Display$GT$3fmt17hb9ea72e8555fec20E": 785,
        "func._ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$6insert17h3066ea9ee2f5fc1cE": 953,
        "func._ZN5alloc11collections5btree3map5entry30OccupiedEntry$LT$K$C$V$C$A$GT$9remove_kv17hb4417fe4429410b4E": 119,
        "func._ZN5alloc11collections5btree4node210Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..Edge$GT$16insert_recursing17hdea21c2fa1292932E": 551,
        "func._ZN5alloc11collections5btree6remove259_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14remove_leaf_kv17hecb11ceeaade770aE": 119,
        "func._ZN5alloc11collections5btree6remove269_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$18remove_kv_tracking17h96ac68a250cfaca3E": 119,
        "func._ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Dying$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..Edge$GT$$GT$27deallocating_next_unchecked17h0d2c5158ac8032deE": 805,
        "func._ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$4grow17hbe266473ab246931E.llvm.14106671731014623185": 4,
        "func._ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$9wrap_copy17hd94ab80b0faf3e05E.llvm.14106671731014623185": 138,
        "func._ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h5f7085439107f66dE": 54,
        "func._ZN5alloc7raw_vec11finish_grow17ha28be5cc43b0e77fE.llvm.6014734106839564757": 783,
        "func._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h00071a624ea45ac4E": 434,
        "func._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h12947443f43ca279E": 179,
        "func._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h5e81cd5d71ba5b65E": 143,
        "func._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17ha298e8977af23e84E": 27,
        "func._ZN61_$LT$log..__private_api..GlobalLogger$u20$as$u20$log..Log$GT$3log17hd9ca19187fb665faE": 785,
        "func._ZN66_$LT$riscv..register..scause..Trap$u20$as$u20$core..fmt..Debug$GT$3fmt17hd450c9ed7d44b3a8E": 1,
        "func._ZN79_$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h47fdeb6091ae8e02E": 54,
        "func._ZN87_$LT$buddy_system_allocator..LockedHeap$u20$as$u20$core..alloc..global..GlobalAlloc$GT$5alloc17h5940a8cc4f3113a7E": 1312,
        "func._ZN87_$LT$buddy_system_allocator..LockedHeap$u20$as$u20$core..alloc..global..GlobalAlloc$GT$7dealloc17h303cab0338830abbE": 1284,
        "func._ZN8xmas_elf7ElfFile14program_header17h33fe96bc4d1e97faE": 70,
        "func._ZN8xmas_elf7ElfFile3new17h20f397223943fbdaE": 14,
        "func._ZN8xmas_elf7program13ProgramHeader8get_type17h5cbcce3512fdef57E": 70,
        "func._ZN8xmas_elf7program20parse_program_header17h91c3887ed5253558E": 70,
        "func._ZN99_$LT$alloc..collections..btree..map..BTreeMap$LT$K$C$V$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17ha2b340a8329e80b7E": 456,
        "func.memcmp": 43,
        "func.memcpy": 995,
        "func.memmove": 417,
        "func.memset": 1491,
        "func.recycle_data_pages": 54,
        "func.remap_test": 1,
        "func.rust_main": 1,
        "func.schedule": 54,
        "func.trace_to_idle": 54,
        "func.unmap": 54,
        "func.waitpid": 97,
        "heap.alloc": 1052,
        "heap.free": 1024,
        "heap.init": 1,
        "heap.realloc": 260,
        "interrupt.timer": 22,
        "pagetable.map": 33279,
        "pagetable.new": 70,
        "pagetable.unmap": 119,
        "phys.alloc": 1365,
        "phys.free": 1259,
        "proc.create": 1,
        "proc.exec": 13,
        "proc.exit": 54,
        "proc.fork": 55,
        "proc.initproc": 1,
        "sbi.call": 39094,
        "sched.enter": 1,
        "sched.switch": 275,
        "sched.yield": 83,
        "syscall.dispatch": 771,
        "syscall.enter": 771,
        "syscall.exec": 13,
        "syscall.exit": 53,
        "syscall.fork": 55,
        "syscall.getpid": 1,
        "syscall.read": 113,
        "syscall.sbrk": 8,
        "syscall.waitpid": 97,
        "syscall.write": 370,
        "syscall.yield": 61,
        "task.kstack_alloc": 56,
        "task.kstack_free": 54,
        "task.pid_free": 54,
        "trap.enter": 794,
        "trap.page_fault": 1,
        "trap.userret": 794,
        "vm.copy": 55,
        "vm.from_elf": 14,
        "vm.grow": 6,
        "vm.init": 1,
        "vm.kernel_init": 1,
        "vm.map": 475,
        "vm.remove_area": 54,
        "vm.shrink": 1,
        "vm.translate_buffer": 482,
        "vm.translate_str": 13,
        "vm.unmap": 55
      },
      "dropped_kinds": {}
    },
    "function_entries": {
      "raw": 84337,
      "retained": 84337
    },
    "function_returns": {
      "raw": 544666,
      "matched": 57174,
      "nested_entries": 17978
    },
    "cwd": "/home/joseph",
    "command": [
      "/home/joseph/nf/venv313/bin/python",
      "-m",
      "scripts.regenerate_artifact",
      "--run",
      "/home/joseph/nf/education-2026A-20260927/runs/rcore-2026A-ch5-basic-observed-v2",
      "--out",
      "/home/joseph/nf/education-2026A-20260927/runs/rcore-2026A-ch5-basic-observed-v2/analysis-readable/ch5-basic.html",
      "--strict"
    ],
    "kernel_commit": "023a5a0885fed8ae999406f17a494777c3e59af1",
    "analysis_driver_sha256": "aed10d1eedc5689b6fd68e84a9bb8ae0c98f7bb8456fd8bd280e8bae470b8e9a"
  },
  "workload": {
    "mode": "basic-tests",
    "user_programs": {
      "ch2b_bad_address.bin": "06347ef4b47d7d0853e8fee66524e06ca8baea7f272e426a489683c6f6ef78e1",
      "ch2b_bad_instructions.bin": "c62b150b404dc1c95fa24b9395a654ffb8fe946e8913afdee4040eb17b54cda6",
      "ch2b_bad_register.bin": "0e2375149458961b6c62914c94f238ee6f7d4925eab8d25737908dacd8f4b542",
      "ch2b_hello_world.bin": "0390418069b07e9f2897cb98c1d2677e2911733f64405520b39f987ed5b44e66",
      "ch2b_power_3.bin": "7e946705f598ee538a04f32e69a3cfbf14d08786fb8942029d4348469e3413da",
      "ch2b_power_5.bin": "a977d6874dc53e99c66b6601f86a62caa0fab9f1a49a3e06d7874e81f87b4414",
      "ch2b_power_7.bin": "fd11415f169ed3670042bf1ac530492463c92a47f84a8f88d05ea0a0a8f526f2",
      "ch3_sleep.bin": "f3d6bc0351823251ac2f6f42945bc94ff8736cbf4e98afb2f97b9b0da4310cd7",
      "ch3_sleep1.bin": "badb8164c8e0d9dba49e4ff88299372c7bb57e9d858d92111872fda968b42eaf",
      "ch3_trace.bin": "f48564ec3fd08cbd55755aff7d650d766762404c1b5204df127bf3af772cddc6",
      "ch3b_yield0.bin": "ce57a0bdd5c9bc8788783efe9f7995a58680142330ba4ad0d50234150b90285e",
      "ch3b_yield1.bin": "f9b8ddaefa4d215f66dc434a9efa81b74694adfadbc24daddd28f4eca986b412",
      "ch3b_yield2.bin": "197aed43bbcd6093e0055566bc2425a94ec636f05c8832f74af90a9c3e431b7b",
      "ch4_mmap0.bin": "0211b715b4e944c38f931831c402163a32512195009c3e3abe1f96b1dc3ecbfa",
      "ch4_mmap1.bin": "391f9d626b46788309ee8bd74eed26934c974b86827ead9f1ee474dd87aa415e",
      "ch4_mmap2.bin": "b2f1b5aa53e45360711ff0dce879f14921d8347ff85df768382ab0ac26e2113a",
      "ch4_mmap3.bin": "d948fc201473a8459b0d635184ca891acab693af16b6a2bb854c175e41ada39a",
      "ch4_trace1.bin": "f97e8efbebe38f729d07a20b4cc24cd4bc2dcbee000ec81fd5f86230c8f9f28a",
      "ch4_unmap.bin": "9f2aa5e6b4043a18fc871fa2785ba3b85bdfc067fd38a434c49753ba619712dd",
      "ch4_unmap2.bin": "17184ca4b39881a4f1aab9715bed68fb438ab9122d57d3f87d50ee0efcab4458",
      "ch4b_sbrk.bin": "5db58894ec31434d6bd825a7cefeb90ca50071a967e8ecce4c8c2cbf6a64a843",
      "ch5_exit0.bin": "e7d66c6b2f67cb4f8bbb7885e6e7c496ef238d00ce77e01bc706370e9a7dbe3e",
      "ch5_exit1.bin": "9eaa1bcaa79a2d53cc998e5a1a9a0331acf2f6ce4a6fb54202c610c56e10d68a",
      "ch5_getpid.bin": "333e0c3db0c076d91ab93d372bc0e725102bde46a4b35186330a56f9d91912fc",
      "ch5_setprio.bin": "78aacb2b93cd874c7b0fec10e8759d935d4d636aa89325264e921306d2f490da",
      "ch5_spawn0.bin": "904100e37f49f88bdbc621d95bcf497581deb921b9173eff94b70d05d76d4f98",
      "ch5_spawn1.bin": "8de1e0b1decb16b61cf15416a1b9d6aa77f27bab5c75132c40bb0fb9118b90bc",
      "ch5_stride.bin": "c65bb6fbd9e2253ec8c20c4729f6121b3f80dfa5852fa98eb508124f42ae2e54",
      "ch5_stride0.bin": "f93064cb82a0df95b59369473776accccb68d06f3e5d46f11d0ceeed80e827a4",
      "ch5_stride1.bin": "e20e5b4bcc93ba84680256bba5b1621bf41db34c9efcc0e8e31e35a0bf34c89e",
      "ch5_stride2.bin": "e3bf58450651b5e1e3ee1336e2e65094504d4aa7751010af8be842448a3e1302",
      "ch5_stride3.bin": "b861ce7595d44bcd72f501d3ce2ba2fca25251da40736a4a6af803be5b9f2178",
      "ch5_stride4.bin": "77e08efd9ebdb86457fc12aad668391000c62af3ec5f50fbd79dc37a8999f573",
      "ch5_stride5.bin": "a40f6ff4e623359939912b5f80f7a8e549c47288e4d4644edccb3c45873d8ed1",
      "ch5_usertest.bin": "286be7e48fd7f37d1e6fce36ba4043c5e462cc0765c419e1e8feb086d702d9ad",
      "ch5b_exit.bin": "b4824bdb277856de955fa7632740e922dc1f3ebf09a436f4dc40aae753f65d3f",
      "ch5b_forktest.bin": "a3045fe2a268480de72d59343ad3c75bdccd6fe59a4c2c70ad65cebe5f38e605",
      "ch5b_forktest2.bin": "2b8696160e91b1addac3542f04164ab2c2a9dbbc9b8544cce77bfc66cd52cf5a",
      "ch5b_forktest_simple.bin": "65cdec2bfc0b8bab7bca778ae75cbda97e63ef0941981bf4ac08fffdee04b850",
      "ch5b_forktree.bin": "5cf68345e25a012335e35b1db68bebf8c6c65ce7ac5bb8069edfff94ceef1c6d",
      "ch5b_initproc.bin": "ab69460716068ed8cf55f0b177eba85702b8800fa645dc600410fb8a9919defa",
      "ch5b_user_shell.bin": "928863f3985ef112492cc7d5cecd45d64f8ab95991c5c56096f84e6c63e86b49",
      "ch5b_usertest.bin": "1708754855a455b2e27f944dbe5979e10ef788c21585aed6f805e3aa940540bd"
    },
    "loaded_user_elfs": {
      "ch2b_bad_address.elf": "171dc1a64f3498cbca813349afe8be5589481c7b57c0e3b42b6eecd7417142a8",
      "ch2b_bad_instructions.elf": "0d67c4570d0f9770157afff34c6816613f822be0f0bea30ec05b5d560970d001",
      "ch2b_bad_register.elf": "120fa181bd5be2819baf873532357c11b634f5ffa33847574475d2e9950c01d2",
      "ch2b_hello_world.elf": "72a60818f85903a3207926e2d5e0e940cc437bfa3f496e78cc243c995f5e79fd",
      "ch2b_power_3.elf": "95341948c6c4cc973e28a1d735995bbd0918f23bf9bfdef24243615bc3e12e25",
      "ch2b_power_5.elf": "1ecbd52c68cd5936bd8f2d487901d9b2c6a711e511ba0251f64eb3a63aaba12a",
      "ch2b_power_7.elf": "a5ed792848253b435225c4ed4dc8064cb65ece554e6d0db0f4bf65ed7c9ba5c7",
      "ch3_sleep.elf": "b98df4f9d97e3cfcc3b5b59a43ac6ee4fbf0b83847a614e5aa7b919b1513f63a",
      "ch3_sleep1.elf": "5facc6e42edc3cb7c24c5b5bad1c50f3db6419ed9c27cbc1fa7c1a8c25a4b677",
      "ch3_trace.elf": "71bc814e7ee39acd6af2db3af3d03755b9796dcb985f57bfef9125e876758a57",
      "ch3b_yield0.elf": "1449a21015d920e8cb3d3504ffe51c10cd7bee2952dce44be699f451667e3fb6",
      "ch3b_yield1.elf": "ec3be3205215a535d2bf8659d5926fb5a56bef41bad046ea32279daf7af85341",
      "ch3b_yield2.elf": "34fc7fbde41531715e7b8df5aba82188f7a43595216420f10a51d57633f1437c",
      "ch4_mmap0.elf": "3210c35fee0c4666ba6a8f1aaa5a52fd741f394957babc8a8ba10a55be9fa79f",
      "ch4_mmap1.elf": "c77a9c5174db0e025afda679a166706a1d1a3a50180b33a98535aff75872689f",
      "ch4_mmap2.elf": "a2a0a777ee6427ff79b7002af0bdd9cbbd97f53063601a78a708ca6acb3504ee",
      "ch4_mmap3.elf": "53c7aef09b85612cb31cb581410aa5300f8e3d1d05c33bed3fe5b9c08948f388",
      "ch4_trace1.elf": "677c44eae147b49b44cd8298c8d404e0f7b4e98846abc3e465ae21b3474a7da3",
      "ch4_unmap.elf": "e1eec3fe5c85ea4d55e6c0aad3a970680200473e89c329879d9e31512bbed58a",
      "ch4_unmap2.elf": "568b7d0c246055056faedbf2f248623427dd9ce69d7944ccb18785e9e25143a5",
      "ch4b_sbrk.elf": "c2786aab40c8d27e43d792b9e3cd49fd1803e4f23d95779b8f26c24de3972127",
      "ch5_exit0.elf": "04f44db39a23c52f62bbe2cbd2a40f08f65f1ed9d5522b8ba0859fed04fac58e",
      "ch5_exit1.elf": "f8c2219142fee37ce40712cde0640105e676db11aacdf8426d888db50d4d113f",
      "ch5_getpid.elf": "53fbb5a3d0e843182795df79863283090044bd0cad4d7b9570641ad63168bf2b",
      "ch5_setprio.elf": "b0a40bdcf157748ddbd1779d908218e4f547bcf1251a36d28ebbaa17874e2961",
      "ch5_spawn0.elf": "88dff31214ab17d16df732ca282ff40a1d5884679619debd839bc0c88bdcbeff",
      "ch5_spawn1.elf": "7b43eaf8ec6c8f9f76f90e5c36ac88126cc515685295679910521aaa58f207bf",
      "ch5_stride.elf": "f3f6f13ea5b778adb247167769e5ca8d426f2bc725775de4d36c0d17e171cec3",
      "ch5_stride0.elf": "7918d3f5802f4341f00810fbd1f7825ca950802a80254d33f345c6414e333010",
      "ch5_stride1.elf": "f9293868fad6f761a3ee0f2b1f9b4cfd19a81f76061fbb7ae776d48d78d31b6b",
      "ch5_stride2.elf": "fe922daaf421c8fd3c27dc671d79eec34a903d15004db33bf56dbc87c5ae8f13",
      "ch5_stride3.elf": "21daac93779862f62899e2c421d5b34e0038224329e8c3ecd9eb3e77556a2518",
      "ch5_stride4.elf": "9c54835a5c64bb03bd061c08998382419ee3545183c1dab1b6b356a4973b3369",
      "ch5_stride5.elf": "07d4523638a4ac22a558a7ff1ebcdb16c49ebb044470cf5d96dada818a330808",
      "ch5_usertest.elf": "1c83b3dfd566efe2b50c0c9ba6dd342eda0ed5dbefd86e4f993e8c36688c6a2b",
      "ch5b_exit.elf": "2482fd21b52f5259ed50a249975fcff573f671d8da9735eda7e8ac6b1d561dd9",
      "ch5b_forktest.elf": "fda5e84e1b9c4411acdc78e18ac64e2e14b48f1b4ae467b74b175dff16f0a82c",
      "ch5b_forktest2.elf": "c585e28698e9b0ff9a5d1c690f3d259297d8b00aa3680e1c1d9820989b47e50a",
      "ch5b_forktest_simple.elf": "1e6172f4f3888031b4f74d7d60640e77663eb1fc586ccc3f5a2d1c63e2887c67",
      "ch5b_forktree.elf": "1b740cf14c660b8530f405ab332fed2fbe1a90aff8ec54572f18466ed0bb5cf6",
      "ch5b_initproc.elf": "d940c844f3e286a4046631b87c056983291548f499ac4eca88faf74a8c8ffade",
      "ch5b_user_shell.elf": "b30686794bb60cfc6f65d1fdd0ddcdf9cbf12e4f447f7313b5eb898069cdd166",
      "ch5b_usertest.elf": "dd61f78d68792b30372760fca7939a2054a5b88c0ef9aaa0f8f06a5643c6bcab"
    },
    "embedded_user_apps": {
      "ch2b_bad_address.elf": {
        "sha256": "171dc1a64f3498cbca813349afe8be5589481c7b57c0e3b42b6eecd7417142a8",
        "bytes": 21360,
        "start": 2149671816,
        "end": 2149693176,
        "linker_padding_bytes": 0
      },
      "ch2b_bad_instructions.elf": {
        "sha256": "0d67c4570d0f9770157afff34c6816613f822be0f0bea30ec05b5d560970d001",
        "bytes": 21360,
        "start": 2149693176,
        "end": 2149714536,
        "linker_padding_bytes": 0
      },
      "ch2b_bad_register.elf": {
        "sha256": "120fa181bd5be2819baf873532357c11b634f5ffa33847574475d2e9950c01d2",
        "bytes": 21360,
        "start": 2149714536,
        "end": 2149735896,
        "linker_padding_bytes": 0
      },
      "ch2b_hello_world.elf": {
        "sha256": "72a60818f85903a3207926e2d5e0e940cc437bfa3f496e78cc243c995f5e79fd",
        "bytes": 21360,
        "start": 2149735896,
        "end": 2149757256,
        "linker_padding_bytes": 0
      },
      "ch2b_power_3.elf": {
        "sha256": "95341948c6c4cc973e28a1d735995bbd0918f23bf9bfdef24243615bc3e12e25",
        "bytes": 21360,
        "start": 2149757256,
        "end": 2149778616,
        "linker_padding_bytes": 0
      },
      "ch2b_power_5.elf": {
        "sha256": "1ecbd52c68cd5936bd8f2d487901d9b2c6a711e511ba0251f64eb3a63aaba12a",
        "bytes": 21360,
        "start": 2149778616,
        "end": 2149799976,
        "linker_padding_bytes": 0
      },
      "ch2b_power_7.elf": {
        "sha256": "a5ed792848253b435225c4ed4dc8064cb65ece554e6d0db0f4bf65ed7c9ba5c7",
        "bytes": 21360,
        "start": 2149799976,
        "end": 2149821336,
        "linker_padding_bytes": 0
      },
      "ch3_sleep.elf": {
        "sha256": "b98df4f9d97e3cfcc3b5b59a43ac6ee4fbf0b83847a614e5aa7b919b1513f63a",
        "bytes": 21360,
        "start": 2149821336,
        "end": 2149842696,
        "linker_padding_bytes": 0
      },
      "ch3_sleep1.elf": {
        "sha256": "5facc6e42edc3cb7c24c5b5bad1c50f3db6419ed9c27cbc1fa7c1a8c25a4b677",
        "bytes": 21360,
        "start": 2149842696,
        "end": 2149864056,
        "linker_padding_bytes": 0
      },
      "ch3_trace.elf": {
        "sha256": "71bc814e7ee39acd6af2db3af3d03755b9796dcb985f57bfef9125e876758a57",
        "bytes": 21360,
        "start": 2149864056,
        "end": 2149885416,
        "linker_padding_bytes": 0
      },
      "ch3b_yield0.elf": {
        "sha256": "1449a21015d920e8cb3d3504ffe51c10cd7bee2952dce44be699f451667e3fb6",
        "bytes": 21368,
        "start": 2149885416,
        "end": 2149906784,
        "linker_padding_bytes": 0
      },
      "ch3b_yield1.elf": {
        "sha256": "ec3be3205215a535d2bf8659d5926fb5a56bef41bad046ea32279daf7af85341",
        "bytes": 21368,
        "start": 2149906784,
        "end": 2149928152,
        "linker_padding_bytes": 0
      },
      "ch3b_yield2.elf": {
        "sha256": "34fc7fbde41531715e7b8df5aba82188f7a43595216420f10a51d57633f1437c",
        "bytes": 21368,
        "start": 2149928152,
        "end": 2149949520,
        "linker_padding_bytes": 0
      },
      "ch4_mmap0.elf": {
        "sha256": "3210c35fee0c4666ba6a8f1aaa5a52fd741f394957babc8a8ba10a55be9fa79f",
        "bytes": 21360,
        "start": 2149949520,
        "end": 2149970880,
        "linker_padding_bytes": 0
      },
      "ch4_mmap1.elf": {
        "sha256": "c77a9c5174db0e025afda679a166706a1d1a3a50180b33a98535aff75872689f",
        "bytes": 21360,
        "start": 2149970880,
        "end": 2149992240,
        "linker_padding_bytes": 0
      },
      "ch4_mmap2.elf": {
        "sha256": "a2a0a777ee6427ff79b7002af0bdd9cbbd97f53063601a78a708ca6acb3504ee",
        "bytes": 21360,
        "start": 2149992240,
        "end": 2150013600,
        "linker_padding_bytes": 0
      },
      "ch4_mmap3.elf": {
        "sha256": "53c7aef09b85612cb31cb581410aa5300f8e3d1d05c33bed3fe5b9c08948f388",
        "bytes": 21360,
        "start": 2150013600,
        "end": 2150034960,
        "linker_padding_bytes": 0
      },
      "ch4_trace1.elf": {
        "sha256": "677c44eae147b49b44cd8298c8d404e0f7b4e98846abc3e465ae21b3474a7da3",
        "bytes": 21360,
        "start": 2150034960,
        "end": 2150056320,
        "linker_padding_bytes": 0
      },
      "ch4_unmap.elf": {
        "sha256": "e1eec3fe5c85ea4d55e6c0aad3a970680200473e89c329879d9e31512bbed58a",
        "bytes": 21360,
        "start": 2150056320,
        "end": 2150077680,
        "linker_padding_bytes": 0
      },
      "ch4_unmap2.elf": {
        "sha256": "568b7d0c246055056faedbf2f248623427dd9ce69d7944ccb18785e9e25143a5",
        "bytes": 21360,
        "start": 2150077680,
        "end": 2150099040,
        "linker_padding_bytes": 0
      },
      "ch4b_sbrk.elf": {
        "sha256": "c2786aab40c8d27e43d792b9e3cd49fd1803e4f23d95779b8f26c24de3972127",
        "bytes": 21360,
        "start": 2150099040,
        "end": 2150120400,
        "linker_padding_bytes": 0
      },
      "ch5_exit0.elf": {
        "sha256": "04f44db39a23c52f62bbe2cbd2a40f08f65f1ed9d5522b8ba0859fed04fac58e",
        "bytes": 21360,
        "start": 2150120400,
        "end": 2150141760,
        "linker_padding_bytes": 0
      },
      "ch5_exit1.elf": {
        "sha256": "f8c2219142fee37ce40712cde0640105e676db11aacdf8426d888db50d4d113f",
        "bytes": 21360,
        "start": 2150141760,
        "end": 2150163120,
        "linker_padding_bytes": 0
      },
      "ch5_getpid.elf": {
        "sha256": "53fbb5a3d0e843182795df79863283090044bd0cad4d7b9570641ad63168bf2b",
        "bytes": 21360,
        "start": 2150163120,
        "end": 2150184480,
        "linker_padding_bytes": 0
      },
      "ch5_setprio.elf": {
        "sha256": "b0a40bdcf157748ddbd1779d908218e4f547bcf1251a36d28ebbaa17874e2961",
        "bytes": 21360,
        "start": 2150184480,
        "end": 2150205840,
        "linker_padding_bytes": 0
      },
      "ch5_spawn0.elf": {
        "sha256": "88dff31214ab17d16df732ca282ff40a1d5884679619debd839bc0c88bdcbeff",
        "bytes": 21360,
        "start": 2150205840,
        "end": 2150227200,
        "linker_padding_bytes": 0
      },
      "ch5_spawn1.elf": {
        "sha256": "7b43eaf8ec6c8f9f76f90e5c36ac88126cc515685295679910521aaa58f207bf",
        "bytes": 21360,
        "start": 2150227200,
        "end": 2150248560,
        "linker_padding_bytes": 0
      },
      "ch5_stride.elf": {
        "sha256": "f3f6f13ea5b778adb247167769e5ca8d426f2bc725775de4d36c0d17e171cec3",
        "bytes": 21360,
        "start": 2150248560,
        "end": 2150269920,
        "linker_padding_bytes": 0
      },
      "ch5_stride0.elf": {
        "sha256": "7918d3f5802f4341f00810fbd1f7825ca950802a80254d33f345c6414e333010",
        "bytes": 21360,
        "start": 2150269920,
        "end": 2150291280,
        "linker_padding_bytes": 0
      },
      "ch5_stride1.elf": {
        "sha256": "f9293868fad6f761a3ee0f2b1f9b4cfd19a81f76061fbb7ae776d48d78d31b6b",
        "bytes": 21360,
        "start": 2150291280,
        "end": 2150312640,
        "linker_padding_bytes": 0
      },
      "ch5_stride2.elf": {
        "sha256": "fe922daaf421c8fd3c27dc671d79eec34a903d15004db33bf56dbc87c5ae8f13",
        "bytes": 21360,
        "start": 2150312640,
        "end": 2150334000,
        "linker_padding_bytes": 0
      },
      "ch5_stride3.elf": {
        "sha256": "21daac93779862f62899e2c421d5b34e0038224329e8c3ecd9eb3e77556a2518",
        "bytes": 21360,
        "start": 2150334000,
        "end": 2150355360,
        "linker_padding_bytes": 0
      },
      "ch5_stride4.elf": {
        "sha256": "9c54835a5c64bb03bd061c08998382419ee3545183c1dab1b6b356a4973b3369",
        "bytes": 21360,
        "start": 2150355360,
        "end": 2150376720,
        "linker_padding_bytes": 0
      },
      "ch5_stride5.elf": {
        "sha256": "07d4523638a4ac22a558a7ff1ebcdb16c49ebb044470cf5d96dada818a330808",
        "bytes": 21360,
        "start": 2150376720,
        "end": 2150398080,
        "linker_padding_bytes": 0
      },
      "ch5_usertest.elf": {
        "sha256": "1c83b3dfd566efe2b50c0c9ba6dd342eda0ed5dbefd86e4f993e8c36688c6a2b",
        "bytes": 21360,
        "start": 2150398080,
        "end": 2150419440,
        "linker_padding_bytes": 0
      },
      "ch5b_exit.elf": {
        "sha256": "2482fd21b52f5259ed50a249975fcff573f671d8da9735eda7e8ac6b1d561dd9",
        "bytes": 21360,
        "start": 2150419440,
        "end": 2150440800,
        "linker_padding_bytes": 0
      },
      "ch5b_forktest.elf": {
        "sha256": "fda5e84e1b9c4411acdc78e18ac64e2e14b48f1b4ae467b74b175dff16f0a82c",
        "bytes": 21360,
        "start": 2150440800,
        "end": 2150462160,
        "linker_padding_bytes": 0
      },
      "ch5b_forktest2.elf": {
        "sha256": "c585e28698e9b0ff9a5d1c690f3d259297d8b00aa3680e1c1d9820989b47e50a",
        "bytes": 21360,
        "start": 2150462160,
        "end": 2150483520,
        "linker_padding_bytes": 0
      },
      "ch5b_forktest_simple.elf": {
        "sha256": "1e6172f4f3888031b4f74d7d60640e77663eb1fc586ccc3f5a2d1c63e2887c67",
        "bytes": 21360,
        "start": 2150483520,
        "end": 2150504880,
        "linker_padding_bytes": 0
      },
      "ch5b_forktree.elf": {
        "sha256": "1b740cf14c660b8530f405ab332fed2fbe1a90aff8ec54572f18466ed0bb5cf6",
        "bytes": 21360,
        "start": 2150504880,
        "end": 2150526240,
        "linker_padding_bytes": 0
      },
      "ch5b_initproc.elf": {
        "sha256": "d940c844f3e286a4046631b87c056983291548f499ac4eca88faf74a8c8ffade",
        "bytes": 21360,
        "start": 2150526240,
        "end": 2150547600,
        "linker_padding_bytes": 0
      },
      "ch5b_user_shell.elf": {
        "sha256": "b30686794bb60cfc6f65d1fdd0ddcdf9cbf12e4f447f7313b5eb898069cdd166",
        "bytes": 25456,
        "start": 2150547600,
        "end": 2150573056,
        "linker_padding_bytes": 0
      },
      "ch5b_usertest.elf": {
        "sha256": "dd61f78d68792b30372760fca7939a2054a5b88c0ef9aaa0f8f06a5643c6bcab",
        "bytes": 21360,
        "start": 2150573056,
        "end": 2150594416,
        "linker_padding_bytes": 0
      }
    }
  },
  "versions": {
    "rustc": "rustc 1.80.0-nightly (c987ad527 2024-05-01)",
    "cargo": "cargo 1.80.0-nightly (6087566b3 2024-04-30)",
    "qemu-system-riscv64": "QEMU emulator version 10.2.2"
  },
  "build_context": {
    "kernel_commit": "023a5a0885fed8ae999406f17a494777c3e59af1",
    "kernel_patch": "diff --git a/os/src/main.rs b/os/src/main.rs\nindex ccac0c1..ab7a3eb 100644\n--- a/os/src/main.rs\n+++ b/os/src/main.rs\n@@ -38,6 +38,7 @@ pub mod lang_items;\n mod loader;\n pub mod logging;\n pub mod mm;\n+mod nftrace;\n pub mod sbi;\n pub mod sync;\n pub mod syscall;\ndiff --git a/os/src/mm/frame_allocator.rs b/os/src/mm/frame_allocator.rs\nindex 44f20cd..63dc934 100644\n--- a/os/src/mm/frame_allocator.rs\n+++ b/os/src/mm/frame_allocator.rs\n@@ -47,6 +47,7 @@ pub struct StackFrameAllocator {\n     current: usize,\n     end: usize,\n     recycled: Vec<usize>,\n+    allocated: usize,\n }\n \n impl StackFrameAllocator {\n@@ -62,17 +63,22 @@ impl FrameAllocator for StackFrameAllocator {\n             current: 0,\n             end: 0,\n             recycled: Vec::new(),\n+            allocated: 0,\n         }\n     }\n     fn alloc(&mut self) -> Option<PhysPageNum> {\n-        if let Some(ppn) = self.recycled.pop() {\n+        let result = if let Some(ppn) = self.recycled.pop() {\n             Some(ppn.into())\n         } else if self.current == self.end {\n             None\n         } else {\n             self.current += 1;\n             Some((self.current - 1).into())\n+        };\n+        if result.is_some() {\n+            self.allocated += 1;\n         }\n+        result\n     }\n     fn dealloc(&mut self, ppn: PhysPageNum) {\n         let ppn = ppn.0;\n@@ -82,6 +88,13 @@ impl FrameAllocator for StackFrameAllocator {\n         }\n         // recycle\n         self.recycled.push(ppn);\n+        self.allocated -= 1;\n+    }\n+}\n+\n+impl StackFrameAllocator {\n+    fn page_counts(&self) -> (usize, usize) {\n+        (self.end - self.current + self.recycled.len(), self.allocated)\n     }\n }\n \n@@ -101,19 +114,34 @@ pub fn init_frame_allocator() {\n         PhysAddr::from(ekernel as usize).ceil(),\n         PhysAddr::from(MEMORY_END).floor(),\n     );\n+    let (free, used) = FRAME_ALLOCATOR.exclusive_access().page_counts();\n+    crate::nftrace::allocator_state(free, used);\n }\n \n /// Allocate a physical page frame in FrameTracker style\n+#[inline(never)]\n pub fn frame_alloc() -> Option<FrameTracker> {\n-    FRAME_ALLOCATOR\n-        .exclusive_access()\n-        .alloc()\n-        .map(FrameTracker::new)\n+    let (ppn, free, used) = {\n+        let mut allocator = FRAME_ALLOCATOR.exclusive_access();\n+        let ppn = allocator.alloc();\n+        let (free, used) = allocator.page_counts();\n+        (ppn, free, used)\n+    };\n+    let frame = ppn.map(FrameTracker::new);\n+    let pa = frame.as_ref().map_or(0, |frame| PhysAddr::from(frame.ppn).0);\n+    crate::nftrace::page_alloc(pa, free, used);\n+    frame\n }\n \n /// Deallocate a physical page frame with a given ppn\n+#[inline(never)]\n pub fn frame_dealloc(ppn: PhysPageNum) {\n-    FRAME_ALLOCATOR.exclusive_access().dealloc(ppn);\n+    let (free, used) = {\n+        let mut allocator = FRAME_ALLOCATOR.exclusive_access();\n+        allocator.dealloc(ppn);\n+        allocator.page_counts()\n+    };\n+    crate::nftrace::page_free(PhysAddr::from(ppn).0, free, used);\n }\n \n #[allow(unused)]\ndiff --git a/os/src/mm/heap_allocator.rs b/os/src/mm/heap_allocator.rs\nindex e5f8b30..e39a7cc 100644\n--- a/os/src/mm/heap_allocator.rs\n+++ b/os/src/mm/heap_allocator.rs\n@@ -1,10 +1,44 @@\n //! The global allocator\n use crate::config::KERNEL_HEAP_SIZE;\n use buddy_system_allocator::LockedHeap;\n+use core::alloc::{GlobalAlloc, Layout};\n+use core::ops::Deref;\n+\n+struct ObservedHeap(LockedHeap);\n+\n+impl Deref for ObservedHeap {\n+    type Target = LockedHeap;\n+\n+    fn deref(&self) -> &Self::Target {\n+        &self.0\n+    }\n+}\n+\n+unsafe impl GlobalAlloc for ObservedHeap {\n+    #[inline(never)]\n+    unsafe fn alloc(&self, layout: Layout) -> *mut u8 {\n+        GlobalAlloc::alloc(&self.0, layout)\n+    }\n+\n+    #[inline(never)]\n+    unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) {\n+        GlobalAlloc::dealloc(&self.0, ptr, layout)\n+    }\n+\n+    #[inline(never)]\n+    unsafe fn realloc(&self, ptr: *mut u8, layout: Layout, new_size: usize) -> *mut u8 {\n+        GlobalAlloc::realloc(&self.0, ptr, layout, new_size)\n+    }\n+\n+    #[inline(never)]\n+    unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut u8 {\n+        GlobalAlloc::alloc_zeroed(&self.0, layout)\n+    }\n+}\n \n #[global_allocator]\n /// heap allocator instance\n-static HEAP_ALLOCATOR: LockedHeap = LockedHeap::empty();\n+static HEAP_ALLOCATOR: ObservedHeap = ObservedHeap(LockedHeap::empty());\n \n #[alloc_error_handler]\n /// panic when heap allocation error occurs\ndiff --git a/os/src/mm/memory_set.rs b/os/src/mm/memory_set.rs\nindex a36cf74..ba2ea18 100644\n--- a/os/src/mm/memory_set.rs\n+++ b/os/src/mm/memory_set.rs\n@@ -36,6 +36,12 @@ pub struct MemorySet {\n     areas: Vec<MapArea>,\n }\n \n+#[inline(never)]\n+/// Observe a range whose page-table entries are about to be removed.\n+pub fn nodefusion_vm_unmap_region(start_vpn: usize, end_vpn: usize) {\n+    core::hint::black_box((start_vpn, end_vpn));\n+}\n+\n impl MemorySet {\n     /// Create a new empty `MemorySet`.\n     pub fn new_bare() -> Self {\n@@ -90,6 +96,9 @@ impl MemorySet {\n         }\n         if mapped_end != area.vpn_range.get_end() {\n             // Remove successful mappings before dropping the area's data frames.\n+            if mapped_end > area.vpn_range.get_start() {\n+                nodefusion_vm_unmap_region(area.vpn_range.get_start().0, mapped_end.0);\n+            }\n             for vpn in VPNRange::new(area.vpn_range.get_start(), mapped_end) {\n                 self.page_table.unmap(vpn);\n             }\n@@ -115,6 +124,7 @@ impl MemorySet {\n         Some(())\n     }\n     /// remove a area\n+    #[inline(never)]\n     pub fn remove_area_with_start_vpn(&mut self, start_vpn: VirtPageNum) {\n         if let Some((idx, area)) = self\n             .areas\n@@ -129,6 +139,7 @@ impl MemorySet {\n     /// Add a new MapArea into this MemorySet.\n     /// Assuming that there are no conflicts in the virtual address\n     /// space.\n+    #[inline(never)]\n     fn push(&mut self, mut map_area: MapArea, data: Option<&[u8]>) {\n         map_area.map(&mut self.page_table);\n         if let Some(data) = data {\n@@ -416,12 +427,18 @@ impl MapArea {\n         }\n     }\n     pub fn unmap(&mut self, page_table: &mut PageTable) {\n+        if self.vpn_range.get_start() < self.vpn_range.get_end() {\n+            nodefusion_vm_unmap_region(self.vpn_range.get_start().0, self.vpn_range.get_end().0);\n+        }\n         for vpn in self.vpn_range {\n             self.unmap_one(page_table, vpn);\n         }\n     }\n     #[allow(unused)]\n     pub fn shrink_to(&mut self, page_table: &mut PageTable, new_end: VirtPageNum) {\n+        if new_end < self.vpn_range.get_end() {\n+            nodefusion_vm_unmap_region(new_end.0, self.vpn_range.get_end().0);\n+        }\n         for vpn in VPNRange::new(new_end, self.vpn_range.get_end()) {\n             self.unmap_one(page_table, vpn)\n         }\ndiff --git a/os/src/mm/page_table.rs b/os/src/mm/page_table.rs\nindex 875484f..0521401 100644\n--- a/os/src/mm/page_table.rs\n+++ b/os/src/mm/page_table.rs\n@@ -81,6 +81,7 @@ pub struct PageTable {\n /// Assume that it won't oom when creating/mapping.\n impl PageTable {\n     /// Create a new page table\n+    #[inline(never)]\n     pub fn new() -> Self {\n         let frame = frame_alloc().unwrap();\n         PageTable {\n@@ -134,6 +135,7 @@ impl PageTable {\n         result\n     }\n     /// Map a page, returning failure for conflicts or exhausted page table frames.\n+    #[inline(never)]\n     pub fn map(&mut self, vpn: VirtPageNum, ppn: PhysPageNum, flags: PTEFlags) -> Option<()> {\n         let pte = self.find_pte_create(vpn)?;\n         if pte.is_valid() {\ndiff --git a/os/src/nftrace.rs b/os/src/nftrace.rs\nnew file mode 100644\nindex 0000000..933bb39\n--- /dev/null\n+++ b/os/src/nftrace.rs\n@@ -0,0 +1,44 @@\n+//! Stack-backed observation records for the QEMU plugin.\n+\n+pub(crate) const NO_TASK: usize = usize::MAX;\n+\n+#[repr(C)]\n+struct Record {\n+    kind: u64,\n+    args: [u64; 4],\n+}\n+\n+#[no_mangle]\n+#[inline(never)]\n+/// Read an observation record while its stack storage is live.\n+pub extern \"C\" fn nftrace_commit_point(record: *const u64) {\n+    if !record.is_null() {\n+        // The caller keeps this stack record alive until return.\n+        core::hint::black_box(unsafe { core::ptr::read_volatile(record) });\n+    }\n+}\n+\n+fn emit(kind: u64, args: [u64; 4]) {\n+    let record = Record { kind, args };\n+    nftrace_commit_point(&record as *const Record as *const u64);\n+}\n+\n+pub(crate) fn page_alloc(pa: usize, free: usize, used: usize) {\n+    emit(1, [pa as u64, 1, free as u64, used as u64]);\n+}\n+\n+pub(crate) fn page_free(pa: usize, free: usize, used: usize) {\n+    emit(5, [pa as u64, 1, free as u64, used as u64]);\n+}\n+\n+pub(crate) fn allocator_state(free: usize, used: usize) {\n+    emit(6, [free as u64, used as u64, 0, 0]);\n+}\n+\n+pub(crate) fn process_fork(parent: usize, child: usize) {\n+    emit(2, [parent as u64, child as u64, 0, 0]);\n+}\n+\n+pub(crate) fn sched_switch(from_task: usize, to_task: usize, from_pid: usize, to_pid: usize) {\n+    emit(4, [from_task as u64, to_task as u64, from_pid as u64, to_pid as u64]);\n+}\ndiff --git a/os/src/syscall/process.rs b/os/src/syscall/process.rs\nindex 43c9efd..8901a39 100644\n--- a/os/src/syscall/process.rs\n+++ b/os/src/syscall/process.rs\n@@ -53,6 +53,7 @@ pub fn sys_fork() -> isize {\n     trap_cx.x[10] = 0;\n     // add new task to scheduler\n     add_task(new_task);\n+    crate::nftrace::process_fork(current_task.getpid(), new_pid);\n     new_pid as isize\n }\n \ndiff --git a/os/src/task/id.rs b/os/src/task/id.rs\nindex 5a67d4a..534c4b7 100644\n--- a/os/src/task/id.rs\n+++ b/os/src/task/id.rs\n@@ -51,6 +51,7 @@ lazy_static! {\n pub struct PidHandle(pub usize);\n \n impl Drop for PidHandle {\n+    #[inline(never)]\n     fn drop(&mut self) {\n         //println!(\"drop pid {}\", self.0);\n         PID_ALLOCATOR.exclusive_access().dealloc(self.0);\n@@ -85,6 +86,7 @@ pub fn kstack_alloc() -> KernelStack {\n }\n \n impl Drop for KernelStack {\n+    #[inline(never)]\n     fn drop(&mut self) {\n         let (kernel_stack_bottom, _) = kernel_stack_position(self.0);\n         let kernel_stack_bottom_va: VirtAddr = kernel_stack_bottom.into();\ndiff --git a/os/src/task/mod.rs b/os/src/task/mod.rs\nindex 6137842..34e5616 100644\n--- a/os/src/task/mod.rs\n+++ b/os/src/task/mod.rs\n@@ -44,14 +44,18 @@ pub use processor::{\n /// Constraints: Support both yield and timer preemption. Clear the processor's\n /// current slot before scheduling and release all dynamic borrows. Preserve\n /// the process's resources and scheduling attributes; stride is charged by fetch.\n+#[inline(never)]\n pub fn suspend_current_and_run_next() {\n     let task = take_current_task().unwrap();\n+    let task_id = Arc::as_ptr(&task) as usize;\n+    let pid = task.getpid();\n     let mut inner = task.inner_exclusive_access();\n     inner.task_status = TaskStatus::Ready;\n     let task_cx_ptr = &mut inner.task_cx as *mut TaskContext;\n     drop(inner);\n     // The queue keeps the context alive until the processor takes ownership.\n     add_task(task);\n+    processor::trace_to_idle(task_id, pid);\n     schedule(task_cx_ptr);\n }\n \n@@ -70,6 +74,8 @@ pub const IDLE_PID: usize = 0;\n /// Exiting PID 0 terminates the kernel with the existing panic policy.\n pub fn exit_current_and_run_next(exit_code: i32) {\n     let task = take_current_task().unwrap();\n+    let task_id = Arc::as_ptr(&task) as usize;\n+    let pid = task.getpid();\n     if task.getpid() == IDLE_PID {\n         println!(\n             \"[kernel] Idle process exit with exit_code {} ...\",\n@@ -92,6 +98,7 @@ pub fn exit_current_and_run_next(exit_code: i32) {\n     // This stack is abandoned: release our Arc before switching to idle.\n     drop(task);\n     let mut unused_task_cx = TaskContext::zero_init();\n+    processor::trace_to_idle(task_id, pid);\n     schedule(&mut unused_task_cx as *mut TaskContext);\n     panic!(\"An exited process must not be resumed!\");\n }\ndiff --git a/os/src/task/processor.rs b/os/src/task/processor.rs\nindex 64701a3..74c65a6 100644\n--- a/os/src/task/processor.rs\n+++ b/os/src/task/processor.rs\n@@ -68,10 +68,13 @@ pub fn run_tasks() {\n             let mut inner = task.inner_exclusive_access();\n             inner.task_status = TaskStatus::Running;\n             let next_task_cx_ptr = &inner.task_cx as *const TaskContext;\n+            let next_task_id = Arc::as_ptr(&task) as usize;\n+            let next_pid = task.getpid();\n             drop(inner);\n             // Move ownership into current; leave no extra Arc on the idle stack.\n             processor.current = Some(task);\n             drop(processor);\n+            crate::nftrace::sched_switch(idle_task_cx_ptr as usize, next_task_id, crate::nftrace::NO_TASK, next_pid);\n             unsafe {\n                 __switch(idle_task_cx_ptr, next_task_cx_ptr);\n             }\n@@ -89,6 +92,11 @@ pub fn current_task() -> Option<Arc<TaskControlBlock>> {\n     PROCESSOR.exclusive_access().current()\n }\n \n+pub(super) fn trace_to_idle(task_id: usize, pid: usize) {\n+    let idle = PROCESSOR.exclusive_access().get_idle_task_cx_ptr() as usize;\n+    crate::nftrace::sched_switch(task_id, idle, pid, crate::nftrace::NO_TASK);\n+}\n+\n /// Get the current user token(addr of page table)\n pub fn current_user_token() -> usize {\n     let task = current_task().unwrap();\n",
    "kernel_elf_sha256": "ea10230c10962abf548ee30b5343a266c538bbe266aa022070cf278caec67b0b",
    "user_commit": "a0593662ad55d670ba8c27ce1763347cd0dd552f",
    "user_patch": "",
    "selected_apps": {
      "ch2b_bad_address.bin": "06347ef4b47d7d0853e8fee66524e06ca8baea7f272e426a489683c6f6ef78e1",
      "ch2b_bad_instructions.bin": "c62b150b404dc1c95fa24b9395a654ffb8fe946e8913afdee4040eb17b54cda6",
      "ch2b_bad_register.bin": "0e2375149458961b6c62914c94f238ee6f7d4925eab8d25737908dacd8f4b542",
      "ch2b_hello_world.bin": "0390418069b07e9f2897cb98c1d2677e2911733f64405520b39f987ed5b44e66",
      "ch2b_power_3.bin": "7e946705f598ee538a04f32e69a3cfbf14d08786fb8942029d4348469e3413da",
      "ch2b_power_5.bin": "a977d6874dc53e99c66b6601f86a62caa0fab9f1a49a3e06d7874e81f87b4414",
      "ch2b_power_7.bin": "fd11415f169ed3670042bf1ac530492463c92a47f84a8f88d05ea0a0a8f526f2",
      "ch3_sleep.bin": "f3d6bc0351823251ac2f6f42945bc94ff8736cbf4e98afb2f97b9b0da4310cd7",
      "ch3_sleep1.bin": "badb8164c8e0d9dba49e4ff88299372c7bb57e9d858d92111872fda968b42eaf",
      "ch3_trace.bin": "f48564ec3fd08cbd55755aff7d650d766762404c1b5204df127bf3af772cddc6",
      "ch3b_yield0.bin": "ce57a0bdd5c9bc8788783efe9f7995a58680142330ba4ad0d50234150b90285e",
      "ch3b_yield1.bin": "f9b8ddaefa4d215f66dc434a9efa81b74694adfadbc24daddd28f4eca986b412",
      "ch3b_yield2.bin": "197aed43bbcd6093e0055566bc2425a94ec636f05c8832f74af90a9c3e431b7b",
      "ch4_mmap0.bin": "0211b715b4e944c38f931831c402163a32512195009c3e3abe1f96b1dc3ecbfa",
      "ch4_mmap1.bin": "391f9d626b46788309ee8bd74eed26934c974b86827ead9f1ee474dd87aa415e",
      "ch4_mmap2.bin": "b2f1b5aa53e45360711ff0dce879f14921d8347ff85df768382ab0ac26e2113a",
      "ch4_mmap3.bin": "d948fc201473a8459b0d635184ca891acab693af16b6a2bb854c175e41ada39a",
      "ch4_trace1.bin": "f97e8efbebe38f729d07a20b4cc24cd4bc2dcbee000ec81fd5f86230c8f9f28a",
      "ch4_unmap.bin": "9f2aa5e6b4043a18fc871fa2785ba3b85bdfc067fd38a434c49753ba619712dd",
      "ch4_unmap2.bin": "17184ca4b39881a4f1aab9715bed68fb438ab9122d57d3f87d50ee0efcab4458",
      "ch4b_sbrk.bin": "5db58894ec31434d6bd825a7cefeb90ca50071a967e8ecce4c8c2cbf6a64a843",
      "ch5_exit0.bin": "e7d66c6b2f67cb4f8bbb7885e6e7c496ef238d00ce77e01bc706370e9a7dbe3e",
      "ch5_exit1.bin": "9eaa1bcaa79a2d53cc998e5a1a9a0331acf2f6ce4a6fb54202c610c56e10d68a",
      "ch5_getpid.bin": "333e0c3db0c076d91ab93d372bc0e725102bde46a4b35186330a56f9d91912fc",
      "ch5_setprio.bin": "78aacb2b93cd874c7b0fec10e8759d935d4d636aa89325264e921306d2f490da",
      "ch5_spawn0.bin": "904100e37f49f88bdbc621d95bcf497581deb921b9173eff94b70d05d76d4f98",
      "ch5_spawn1.bin": "8de1e0b1decb16b61cf15416a1b9d6aa77f27bab5c75132c40bb0fb9118b90bc",
      "ch5_stride.bin": "c65bb6fbd9e2253ec8c20c4729f6121b3f80dfa5852fa98eb508124f42ae2e54",
      "ch5_stride0.bin": "f93064cb82a0df95b59369473776accccb68d06f3e5d46f11d0ceeed80e827a4",
      "ch5_stride1.bin": "e20e5b4bcc93ba84680256bba5b1621bf41db34c9efcc0e8e31e35a0bf34c89e",
      "ch5_stride2.bin": "e3bf58450651b5e1e3ee1336e2e65094504d4aa7751010af8be842448a3e1302",
      "ch5_stride3.bin": "b861ce7595d44bcd72f501d3ce2ba2fca25251da40736a4a6af803be5b9f2178",
      "ch5_stride4.bin": "77e08efd9ebdb86457fc12aad668391000c62af3ec5f50fbd79dc37a8999f573",
      "ch5_stride5.bin": "a40f6ff4e623359939912b5f80f7a8e549c47288e4d4644edccb3c45873d8ed1",
      "ch5_usertest.bin": "286be7e48fd7f37d1e6fce36ba4043c5e462cc0765c419e1e8feb086d702d9ad",
      "ch5b_exit.bin": "b4824bdb277856de955fa7632740e922dc1f3ebf09a436f4dc40aae753f65d3f",
      "ch5b_forktest.bin": "a3045fe2a268480de72d59343ad3c75bdccd6fe59a4c2c70ad65cebe5f38e605",
      "ch5b_forktest2.bin": "2b8696160e91b1addac3542f04164ab2c2a9dbbc9b8544cce77bfc66cd52cf5a",
      "ch5b_forktest_simple.bin": "65cdec2bfc0b8bab7bca778ae75cbda97e63ef0941981bf4ac08fffdee04b850",
      "ch5b_forktree.bin": "5cf68345e25a012335e35b1db68bebf8c6c65ce7ac5bb8069edfff94ceef1c6d",
      "ch5b_initproc.bin": "ab69460716068ed8cf55f0b177eba85702b8800fa645dc600410fb8a9919defa",
      "ch5b_user_shell.bin": "928863f3985ef112492cc7d5cecd45d64f8ab95991c5c56096f84e6c63e86b49",
      "ch5b_usertest.bin": "1708754855a455b2e27f944dbe5979e10ef788c21585aed6f805e3aa940540bd"
    },
    "patches": [
      {
        "path": "/home/joseph/nf/education-2026A-20260927/rcore-2026a-ch5-observation-v2.patch",
        "sha256": "3765c81290fe91f2cfc3c08b9ce28206e64080e823b1fb85fdc7edc3b221fa3c"
      }
    ],
    "reference_kernel_elf_sha256": "8d6ca289b5357bc608021a31b50881b6cf7faff53b4e54053f98168ea06d1359",
    "commands": [
      {
        "argv": [
          "cp",
          "-a",
          "/home/joseph/nf/education-2026A-20260927/rcore-ch5/user/build",
          "/home/joseph/nf/education-2026A-20260927/rcore-ch5-observed-v2/user/build"
        ],
        "cwd": "/home/joseph/nf/education-2026A-20260927",
        "environment": {}
      },
      {
        "argv": [
          "cp",
          "/home/joseph/nf/education-2026A-20260927/rcore-ch5/os/Cargo.lock",
          "/home/joseph/nf/education-2026A-20260927/rcore-ch5-observed-v2/os/Cargo.lock"
        ],
        "cwd": "/home/joseph/nf/education-2026A-20260927",
        "environment": {}
      },
      {
        "argv": [
          "cargo",
          "build",
          "--release",
          "--locked"
        ],
        "cwd": "/home/joseph/nf/education-2026A-20260927/rcore-ch5-observed-v2/os",
        "environment": {
          "LOG": "TRACE",
          "CARGO_NET_GIT_FETCH_WITH_CLI": "true",
          "CARGO_PROFILE_RELEASE_DEBUG": "2"
        }
      },
      {
        "argv": [
          "rust-objcopy",
          "--binary-architecture=riscv64",
          "--strip-all",
          "-O",
          "binary",
          "/home/joseph/nf/education-2026A-20260927/rcore-ch5-observed-v2/os/target/riscv64gc-unknown-none-elf/release/os",
          "/home/joseph/nf/education-2026A-20260927/rcore-ch5-observed-v2/os/target/riscv64gc-unknown-none-elf/release/os.bin"
        ],
        "cwd": "/home/joseph/nf/education-2026A-20260927/rcore-ch5-observed-v2/os",
        "environment": {}
      }
    ],
    "versions": {
      "rustc": "rustc 1.80.0-nightly (c987ad527 2024-05-01)",
      "cargo": "cargo 1.80.0-nightly (6087566b3 2024-04-30)",
      "qemu-system-riscv64": "QEMU emulator version 10.2.2"
    },
    "driver_sha256": "145db09167ca3d86bd01647b29ac6d844843dd7ef7e9029ff8a2472793d63ef2",
    "loaded_apps": {
      "ch2b_bad_address.elf": "171dc1a64f3498cbca813349afe8be5589481c7b57c0e3b42b6eecd7417142a8",
      "ch2b_bad_instructions.elf": "0d67c4570d0f9770157afff34c6816613f822be0f0bea30ec05b5d560970d001",
      "ch2b_bad_register.elf": "120fa181bd5be2819baf873532357c11b634f5ffa33847574475d2e9950c01d2",
      "ch2b_hello_world.elf": "72a60818f85903a3207926e2d5e0e940cc437bfa3f496e78cc243c995f5e79fd",
      "ch2b_power_3.elf": "95341948c6c4cc973e28a1d735995bbd0918f23bf9bfdef24243615bc3e12e25",
      "ch2b_power_5.elf": "1ecbd52c68cd5936bd8f2d487901d9b2c6a711e511ba0251f64eb3a63aaba12a",
      "ch2b_power_7.elf": "a5ed792848253b435225c4ed4dc8064cb65ece554e6d0db0f4bf65ed7c9ba5c7",
      "ch3_sleep.elf": "b98df4f9d97e3cfcc3b5b59a43ac6ee4fbf0b83847a614e5aa7b919b1513f63a",
      "ch3_sleep1.elf": "5facc6e42edc3cb7c24c5b5bad1c50f3db6419ed9c27cbc1fa7c1a8c25a4b677",
      "ch3_trace.elf": "71bc814e7ee39acd6af2db3af3d03755b9796dcb985f57bfef9125e876758a57",
      "ch3b_yield0.elf": "1449a21015d920e8cb3d3504ffe51c10cd7bee2952dce44be699f451667e3fb6",
      "ch3b_yield1.elf": "ec3be3205215a535d2bf8659d5926fb5a56bef41bad046ea32279daf7af85341",
      "ch3b_yield2.elf": "34fc7fbde41531715e7b8df5aba82188f7a43595216420f10a51d57633f1437c",
      "ch4_mmap0.elf": "3210c35fee0c4666ba6a8f1aaa5a52fd741f394957babc8a8ba10a55be9fa79f",
      "ch4_mmap1.elf": "c77a9c5174db0e025afda679a166706a1d1a3a50180b33a98535aff75872689f",
      "ch4_mmap2.elf": "a2a0a777ee6427ff79b7002af0bdd9cbbd97f53063601a78a708ca6acb3504ee",
      "ch4_mmap3.elf": "53c7aef09b85612cb31cb581410aa5300f8e3d1d05c33bed3fe5b9c08948f388",
      "ch4_trace1.elf": "677c44eae147b49b44cd8298c8d404e0f7b4e98846abc3e465ae21b3474a7da3",
      "ch4_unmap.elf": "e1eec3fe5c85ea4d55e6c0aad3a970680200473e89c329879d9e31512bbed58a",
      "ch4_unmap2.elf": "568b7d0c246055056faedbf2f248623427dd9ce69d7944ccb18785e9e25143a5",
      "ch4b_sbrk.elf": "c2786aab40c8d27e43d792b9e3cd49fd1803e4f23d95779b8f26c24de3972127",
      "ch5_exit0.elf": "04f44db39a23c52f62bbe2cbd2a40f08f65f1ed9d5522b8ba0859fed04fac58e",
      "ch5_exit1.elf": "f8c2219142fee37ce40712cde0640105e676db11aacdf8426d888db50d4d113f",
      "ch5_getpid.elf": "53fbb5a3d0e843182795df79863283090044bd0cad4d7b9570641ad63168bf2b",
      "ch5_setprio.elf": "b0a40bdcf157748ddbd1779d908218e4f547bcf1251a36d28ebbaa17874e2961",
      "ch5_spawn0.elf": "88dff31214ab17d16df732ca282ff40a1d5884679619debd839bc0c88bdcbeff",
      "ch5_spawn1.elf": "7b43eaf8ec6c8f9f76f90e5c36ac88126cc515685295679910521aaa58f207bf",
      "ch5_stride.elf": "f3f6f13ea5b778adb247167769e5ca8d426f2bc725775de4d36c0d17e171cec3",
      "ch5_stride0.elf": "7918d3f5802f4341f00810fbd1f7825ca950802a80254d33f345c6414e333010",
      "ch5_stride1.elf": "f9293868fad6f761a3ee0f2b1f9b4cfd19a81f76061fbb7ae776d48d78d31b6b",
      "ch5_stride2.elf": "fe922daaf421c8fd3c27dc671d79eec34a903d15004db33bf56dbc87c5ae8f13",
      "ch5_stride3.elf": "21daac93779862f62899e2c421d5b34e0038224329e8c3ecd9eb3e77556a2518",
      "ch5_stride4.elf": "9c54835a5c64bb03bd061c08998382419ee3545183c1dab1b6b356a4973b3369",
      "ch5_stride5.elf": "07d4523638a4ac22a558a7ff1ebcdb16c49ebb044470cf5d96dada818a330808",
      "ch5_usertest.elf": "1c83b3dfd566efe2b50c0c9ba6dd342eda0ed5dbefd86e4f993e8c36688c6a2b",
      "ch5b_exit.elf": "2482fd21b52f5259ed50a249975fcff573f671d8da9735eda7e8ac6b1d561dd9",
      "ch5b_forktest.elf": "fda5e84e1b9c4411acdc78e18ac64e2e14b48f1b4ae467b74b175dff16f0a82c",
      "ch5b_forktest2.elf": "c585e28698e9b0ff9a5d1c690f3d259297d8b00aa3680e1c1d9820989b47e50a",
      "ch5b_forktest_simple.elf": "1e6172f4f3888031b4f74d7d60640e77663eb1fc586ccc3f5a2d1c63e2887c67",
      "ch5b_forktree.elf": "1b740cf14c660b8530f405ab332fed2fbe1a90aff8ec54572f18466ed0bb5cf6",
      "ch5b_initproc.elf": "d940c844f3e286a4046631b87c056983291548f499ac4eca88faf74a8c8ffade",
      "ch5b_user_shell.elf": "b30686794bb60cfc6f65d1fdd0ddcdf9cbf12e4f447f7313b5eb898069cdd166",
      "ch5b_usertest.elf": "dd61f78d68792b30372760fca7939a2054a5b88c0ef9aaa0f8f06a5643c6bcab"
    },
    "cargo_lock_sha256": "1ea2ccca1e0cf7eca924161563fbd6f7fbefc240c96caa9eb790b44ca84dafb4",
    "kernel_binary_sha256": "cdbc51858fc5bc77dac0074ea3a84f782ae05f696f766d5794e08df92ae04e83"
  },
  "build_command": [
    "cargo",
    "build",
    "--release",
    "--locked"
  ],
  "build_cwd": "/home/joseph/nf/education-2026A-20260927/rcore-ch5-observed-v2/os",
  "record_command": [
    "/home/joseph/nf/venv313/bin/python",
    "-m",
    "nodefusion.host.cli",
    "record",
    "--kernel",
    "/home/joseph/nf/education-2026A-20260927/rcore-ch5-observed-v2",
    "--kernel-kind",
    "rcore",
    "--runs",
    "/home/joseph/nf/education-2026A-20260927/runs",
    "--name",
    "rcore-2026A-ch5-basic-observed-v2",
    "--no-build",
    "--function-returns",
    "--watch-all",
    "--profile",
    "uniform",
    "--snapshots",
    "80",
    "--max-ram-bytes",
    "268435456",
    "--timeout",
    "180",
    "--no-render",
    "--event-stream",
    "never",
    "--program",
    "ch5b_usertest"
  ],
  "record_cwd": "/home/joseph/nf/education-2026A-20260927/tool",
  "analysis_command": [
    "/home/joseph/nf/venv313/bin/python",
    "-m",
    "scripts.regenerate_artifact",
    "--run",
    "/home/joseph/nf/education-2026A-20260927/runs/rcore-2026A-ch5-basic-observed-v2",
    "--out",
    "/home/joseph/nf/education-2026A-20260927/runs/rcore-2026A-ch5-basic-observed-v2/analysis-readable/ch5-basic.html",
    "--strict"
  ],
  "analysis_cwd": "/home/joseph",
  "original_analysis_command": [
    "/home/joseph/nf/venv313/bin/python",
    "-m",
    "scripts.regenerate_artifact",
    "--run",
    "/home/joseph/nf/education-2026A-20260927/runs/rcore-2026A-ch5-basic-observed-v2",
    "--out",
    "/home/joseph/nf/education-2026A-20260927/runs/rcore-2026A-ch5-basic-observed-v2/rcore-2026A-ch5-basic-observed-v2.html",
    "--strict"
  ],
  "original_report": {
    "schema": "nodefusion.artifact-evidence/1",
    "run": "rcore-2026A-ch5-basic-observed-v2",
    "kernel_kind": "rcore",
    "source_sha256": {
      "trace.nfb": "6fcf51476f287dbd03a45b2dc7c196c9f326f7a34b4af55173e6c411e9037673",
      "manifest.json": "c12b334ff8ac53f97ee8c82bbef08f7dd6011e3d2f4ce6147943ba956dd46125",
      "watchlist.json": "e8bdbd2d1c9f786762dab2845f596077adbd0db2eaa58472463c40d5d5fc7832",
      "kernel_layout.json": "1f6edd9913bf37e30d1948a86f0767e7cdcb3b5dacc12ca8c2b9b4a0b8d85abd"
    },
    "kernel_elf_sha256": "ea10230c10962abf548ee30b5343a266c538bbe266aa022070cf278caec67b0b",
    "archive_bytes": {
      "trace.nfb": 53337280,
      "kernel_elf": 5234600
    },
    "html_sha256": "05d826b5545bb9017d017db0387eb6149fe3ac7d5932fbfdde220655c2b1d1fa",
    "html_bytes": 2178293,
    "function_trace": {
      "kind": "return-matched observed frames",
      "raw": 84337,
      "retained": 84337,
      "returns": 544666,
      "matched_returns": 53872,
      "nested_entries": 3270
    },
    "event_selection": {
      "applied": false,
      "policy": "kind-preserving/systematic-v5",
      "raw": 127198,
      "retained": 127198,
      "dropped": 0,
      "target_limit": 150000,
      "minimum_spare": 25000,
      "always_keep": "all events when the raw stream fits",
      "priority_raw": 83270,
      "spare_raw": 43928,
      "spare_budget": 0,
      "stride": 1,
      "retained_kinds": {
        "firmware.trap": 19,
        "func._ZN17compiler_builtins3mem6memcmp17he7310feea8ae4946E": 43,
        "func._ZN17compiler_builtins3mem6memcpy17ha62f30a1264ab51cE": 995,
        "func._ZN17compiler_builtins3mem6memset17hb3cc3e7988f20252E": 1491,
        "func._ZN17compiler_builtins3mem7memmove17h6641c454cd41b91bE": 417,
        "func._ZN22buddy_system_allocator4Heap4init17h47bfef144f322583E": 1,
        "func._ZN22buddy_system_allocator4Heap5alloc17hb52723857453e8d6E": 1312,
        "func._ZN22buddy_system_allocator4Heap7dealloc17h2382b66f51d78f86E": 1284,
        "func._ZN2os15kernel_log_info17he7eb3005c801817eE": 1,
        "func._ZN2os4task9processor15current_trap_cx17h37576fa5877bb1b0E": 1488,
        "func._ZN2os4task9processor18current_user_token17h7b385e281d5f1fefE": 1289,
        "func._ZN2os6loader20get_app_data_by_name17h0b4fe3c40ebdecdfE": 14,
        "func._ZN2os6loader9list_apps17hbac7ab73ba2e4c6cE": 1,
        "func._ZN2os7console5print17h259fbd0040a35667E": 1150,
        "func._ZN3log10set_logger17h2e922c1b310ebd70E": 1,
        "func._ZN3log13__private_api3loc17h74db97cb7d8ca37fE": 785,
        "func._ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h3f14c221c18e4f09E": 1,
        "func._ZN42_$LT$str$u20$as$u20$core..fmt..Display$GT$3fmt17hb8c43d55b60732c2E": 359,
        "func._ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h1c05db3ffb69a1e2E": 785,
        "func._ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h39f2fab819e69901E": 43,
        "func._ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17hb03337872ca5c760E": 316,
        "func._ZN49_$LT$log..Level$u20$as$u20$core..fmt..Display$GT$3fmt17h35020c6a1a0c2e7aE": 785,
        "func._ZN4core3fmt3num3imp52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h0b957f153e4158c7E": 785,
        "func._ZN4core3fmt3num3imp54_$LT$impl$u20$core..fmt..Display$u20$for$u20$isize$GT$3fmt17h32c7e1571ae6b44cE": 97,
        "func._ZN4core3fmt3num3imp54_$LT$impl$u20$core..fmt..Display$u20$for$u20$usize$GT$3fmt17h83de4ff3c495723bE": 770,
        "func._ZN4core3fmt3num3imp7fmt_u6417h5142f3088252957cE": 1652,
        "func._ZN4core3fmt3num55_$LT$impl$u20$core..fmt..LowerHex$u20$for$u20$usize$GT$3fmt17hc86b5565edb93905E": 20,
        "func._ZN4core3fmt5Write10write_char17h3dbf66e4bcd45ae0E": 69,
        "func._ZN4core3fmt5write17h49a560cace6c89d2E": 1935,
        "func._ZN4core3fmt8builders10DebugTuple5field17h162956c99153b8a6E": 1,
        "func._ZN4core3fmt9Formatter12pad_integral12write_prefix17h155331fd35b09c53E": 1672,
        "func._ZN4core3fmt9Formatter12pad_integral17h8b1ffde32503eca3E": 1672,
        "func._ZN4core3fmt9Formatter25debug_tuple_field1_finish17h7b601b839df38242E": 1,
        "func._ZN4core3fmt9Formatter3pad17heef45ae07d2799a9E": 1144,
        "func._ZN4core3fmt9Formatter9write_str17h181bd84b330b3504E": 1,
        "func._ZN4core3ptr109drop_in_place$LT$alloc..vec..drain..Drain$LT$alloc..sync..Arc$LT$os..task..task..TaskControlBlock$GT$$GT$$GT$17h55e00f11b91dd746E": 54,
        "func._ZN4core3ptr77drop_in_place$LT$alloc..sync..Arc$LT$os..task..task..TaskControlBlock$GT$$GT$17h1e507565745c0727E": 54,
        "func._ZN4core3str8converts9from_utf817hd70ee2e837c58dd3E": 359,
        "func._ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17h11b33aca4f687c3fE.llvm.16392842407942260741": 1,
        "func._ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17h6725eab204e3ddfeE.llvm.16392842407942260741": 3,
        "func._ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17h77de66cfa8653b3fE.llvm.16392842407942260741": 1,
        "func._ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17h93c85578dc907596E.llvm.16392842407942260741": 1,
        "func._ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17hacdbba4d48230619E.llvm.16392842407942260741": 1,
        "func._ZN54_$LT$os..logging..SimpleLogger$u20$as$u20$log..Log$GT$3log17hb67c4766b081d986E.llvm.8971997074201242157": 785,
        "func._ZN56_$LT$os..console..Stdout$u20$as$u20$core..fmt..Write$GT$9write_str17h5b2cf8a168a60b67E": 7699,
        "func._ZN59_$LT$core..fmt..Arguments$u20$as$u20$core..fmt..Display$GT$3fmt17hb9ea72e8555fec20E": 785,
        "func._ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$6insert17h3066ea9ee2f5fc1cE": 953,
        "func._ZN5alloc11collections5btree3map5entry30OccupiedEntry$LT$K$C$V$C$A$GT$9remove_kv17hb4417fe4429410b4E": 119,
        "func._ZN5alloc11collections5btree4node210Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..Edge$GT$16insert_recursing17hdea21c2fa1292932E": 551,
        "func._ZN5alloc11collections5btree6remove259_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14remove_leaf_kv17hecb11ceeaade770aE": 119,
        "func._ZN5alloc11collections5btree6remove269_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$18remove_kv_tracking17h96ac68a250cfaca3E": 119,
        "func._ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Dying$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..Edge$GT$$GT$27deallocating_next_unchecked17h0d2c5158ac8032deE": 805,
        "func._ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$4grow17hbe266473ab246931E.llvm.14106671731014623185": 4,
        "func._ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$9wrap_copy17hd94ab80b0faf3e05E.llvm.14106671731014623185": 138,
        "func._ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h5f7085439107f66dE": 54,
        "func._ZN5alloc7raw_vec11finish_grow17ha28be5cc43b0e77fE.llvm.6014734106839564757": 783,
        "func._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h00071a624ea45ac4E": 434,
        "func._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h12947443f43ca279E": 179,
        "func._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h5e81cd5d71ba5b65E": 143,
        "func._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17ha298e8977af23e84E": 27,
        "func._ZN61_$LT$log..__private_api..GlobalLogger$u20$as$u20$log..Log$GT$3log17hd9ca19187fb665faE": 785,
        "func._ZN66_$LT$riscv..register..scause..Trap$u20$as$u20$core..fmt..Debug$GT$3fmt17hd450c9ed7d44b3a8E": 1,
        "func._ZN79_$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h47fdeb6091ae8e02E": 54,
        "func._ZN87_$LT$buddy_system_allocator..LockedHeap$u20$as$u20$core..alloc..global..GlobalAlloc$GT$5alloc17h5940a8cc4f3113a7E": 1312,
        "func._ZN87_$LT$buddy_system_allocator..LockedHeap$u20$as$u20$core..alloc..global..GlobalAlloc$GT$7dealloc17h303cab0338830abbE": 1284,
        "func._ZN8xmas_elf7ElfFile14program_header17h33fe96bc4d1e97faE": 70,
        "func._ZN8xmas_elf7ElfFile3new17h20f397223943fbdaE": 14,
        "func._ZN8xmas_elf7program13ProgramHeader8get_type17h5cbcce3512fdef57E": 70,
        "func._ZN8xmas_elf7program20parse_program_header17h91c3887ed5253558E": 70,
        "func._ZN99_$LT$alloc..collections..btree..map..BTreeMap$LT$K$C$V$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17ha2b340a8329e80b7E": 456,
        "func.memcmp": 43,
        "func.memcpy": 995,
        "func.memmove": 417,
        "func.memset": 1491,
        "func.recycle_data_pages": 54,
        "func.remap_test": 1,
        "func.rust_main": 1,
        "func.schedule": 54,
        "func.trace_to_idle": 54,
        "func.unmap": 54,
        "func.waitpid": 97,
        "heap.alloc": 1052,
        "heap.free": 1024,
        "heap.init": 1,
        "heap.realloc": 260,
        "interrupt.timer": 22,
        "pagetable.map": 33279,
        "pagetable.new": 70,
        "pagetable.unmap": 119,
        "phys.alloc": 1365,
        "phys.free": 1259,
        "proc.create": 1,
        "proc.exec": 13,
        "proc.exit": 54,
        "proc.fork": 55,
        "proc.initproc": 1,
        "sbi.call": 39094,
        "sched.enter": 1,
        "sched.switch": 275,
        "sched.yield": 83,
        "syscall.dispatch": 771,
        "syscall.enter": 771,
        "syscall.exec": 13,
        "syscall.exit": 53,
        "syscall.fork": 55,
        "syscall.getpid": 1,
        "syscall.read": 113,
        "syscall.sbrk": 8,
        "syscall.waitpid": 97,
        "syscall.write": 370,
        "syscall.yield": 61,
        "task.kstack_alloc": 56,
        "task.kstack_free": 54,
        "task.pid_free": 54,
        "trap.enter": 794,
        "trap.page_fault": 1,
        "trap.userret": 794,
        "vm.copy": 55,
        "vm.from_elf": 14,
        "vm.grow": 6,
        "vm.init": 1,
        "vm.kernel_init": 1,
        "vm.map": 475,
        "vm.remove_area": 54,
        "vm.shrink": 1,
        "vm.translate_buffer": 482,
        "vm.translate_str": 13,
        "vm.unmap": 55
      },
      "dropped_kinds": {}
    },
    "coverage": {
      "status": "complete",
      "percent": 100.0,
      "passed": 145665,
      "total": 145665,
      "metrics": {
        "covered": 14,
        "applicable": 14,
        "not_applicable": [
          "bcache_hit_rate",
          "bcache_hits",
          "bcache_reads",
          "disk_io",
          "log_commits"
        ],
        "missing": [],
        "sampled": []
      },
      "semantic_events": {
        "raw": 83270,
        "unknown": 0,
        "unknown_fields": {},
        "dropped_from_interactive": 0
      },
      "snapshots": {
        "checked": 319,
        "incomplete": 0,
        "physical_memory": 0,
        "physical_counters": 0,
        "processes": 0,
        "resources": 0,
        "pre_initialization": {
          "physical_memory": 0,
          "physical_counters": 117,
          "processes": 132,
          "resources": 0
        }
      },
      "snapshot_not_applicable": [],
      "manifest_fields": {
        "cells": 61348,
        "states": {
          "absent": 4382,
          "empty": 187,
          "present": 56779
        },
        "not_applicable": 4382,
        "unresolved": 0
      },
      "full_watch_scope": true,
      "function_watch_drops": 0,
      "function_stacks_available": true,
      "observation_points": {
        "unresolved": [],
        "reported_missing": 68,
        "layout_missing": [
          "app_manager",
          "task_manager_inner"
        ]
      },
      "blockers": []
    }
  },
  "record_driver_sha256": "e58609fa6200277d5531d137d92204d1dbdb8989ce45aba14298ddc48b9a2a84",
  "record_support_files": {
    "/home/joseph/nf/education-2026A-20260927/rcore-2026a-ch5-observation-v2.patch": "3765c81290fe91f2cfc3c08b9ce28206e64080e823b1fb85fdc7edc3b221fa3c",
    "/home/joseph/nf/education-2026A-20260927/check-rcore-ch5-observed-v2.py": "758cc07864840aa9555856915262c0150c1b01f7aaced2e91042a7d6e8994a18",
    "/home/joseph/nf/education-2026A-20260927/rcore-ch5-observed-v2-course-check.json": "2da35841ec1d53189d66c60dac45cf0868e979b958b4e5cac48b1023e4ec462f",
    "/home/joseph/nf/education-2026A-20260927/rcore-ch5-observed-v2-course-qemu.log": "3f58b6d69b2ae52091467ab1b9fc9223949a02b06634924865a36a97ca0a634b"
  },
  "process_analysis_command": [
    "/home/joseph/nf/venv313/bin/python",
    "/home/joseph/nf/education-2026A-20260927/inspect-ch5-observation-v2.py",
    "rcore-2026A-ch5-basic-observed-v2",
    "ucore-2026A-ch5-observed"
  ],
  "process_analysis_script_sha256": "42e8e2ab333fb36172b6a3e122786bbb95e00c03ccd5b9ad45d4b31caf795dae",
  "process_analysis_cwd": "/home/joseph",
  "process_analysis_source_archive": {
    "path": "/home/joseph/nf/education-2026A-20260927/ch5-process-observations-source.tar.gz",
    "sha256": "a6d77d286e3bcedbbce403eaadcc34998936353eabff373c81dd3641e7e1406a",
    "bytes": 91738
  },
  "observations": {
    "schema": "nodefusion.process-observations/1",
    "run": "rcore-2026A-ch5-basic-observed-v2",
    "driver_sha256": "42e8e2ab333fb36172b6a3e122786bbb95e00c03ccd5b9ad45d4b31caf795dae",
    "trace_sha256": "6fcf51476f287dbd03a45b2dc7c196c9f326f7a34b4af55173e6c411e9037673",
    "manifest_sha256": "c12b334ff8ac53f97ee8c82bbef08f7dd6011e3d2f4ce6147943ba956dd46125",
    "record_status": "completed",
    "nftrace_counts": {
      "6": 1,
      "1": 1365,
      "4": 275,
      "2": 55,
      "5": 1259
    },
    "function_entries": {
      "KernelStack::drop": 54,
      "_ZN22buddy_system_allocator4Heap4init17h47bfef144f322583E": 1,
      "_ZN22buddy_system_allocator4Heap5alloc17hb52723857453e8d6E": 1312,
      "_ZN22buddy_system_allocator4Heap7dealloc17h2382b66f51d78f86E": 1284,
      "_ZN4core3ptr109drop_in_place$LT$alloc..vec..drain..Drain$LT$alloc..sync..Arc$LT$os..task..task..TaskControlBlock$GT$$GT$$GT$17h55e00f11b91dd746E": 54,
      "_ZN4core3ptr77drop_in_place$LT$alloc..sync..Arc$LT$os..task..task..TaskControlBlock$GT$$GT$17h1e507565745c0727E": 54,
      "_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$6insert17h3066ea9ee2f5fc1cE": 953,
      "_ZN5alloc11collections5btree3map5entry30OccupiedEntry$LT$K$C$V$C$A$GT$9remove_kv17hb4417fe4429410b4E": 119,
      "_ZN5alloc11collections5btree4node210Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..Edge$GT$16insert_recursing17hdea21c2fa1292932E": 551,
      "_ZN5alloc11collections5btree6remove259_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14remove_leaf_kv17hecb11ceeaade770aE": 119,
      "_ZN5alloc11collections5btree6remove269_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$18remove_kv_tracking17h96ac68a250cfaca3E": 119,
      "_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Dying$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..Edge$GT$$GT$27deallocating_next_unchecked17h0d2c5158ac8032deE": 805,
      "_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$4grow17hbe266473ab246931E.llvm.14106671731014623185": 4,
      "_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$9wrap_copy17hd94ab80b0faf3e05E.llvm.14106671731014623185": 138,
      "_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h5f7085439107f66dE": 54,
      "_ZN5alloc7raw_vec11finish_grow17ha28be5cc43b0e77fE.llvm.6014734106839564757": 783,
      "_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h00071a624ea45ac4E": 434,
      "_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h12947443f43ca279E": 179,
      "_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h5e81cd5d71ba5b65E": 143,
      "_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17ha298e8977af23e84E": 27,
      "_ZN79_$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h47fdeb6091ae8e02E": 54,
      "_ZN87_$LT$buddy_system_allocator..LockedHeap$u20$as$u20$core..alloc..global..GlobalAlloc$GT$5alloc17h5940a8cc4f3113a7E": 1312,
      "_ZN87_$LT$buddy_system_allocator..LockedHeap$u20$as$u20$core..alloc..global..GlobalAlloc$GT$7dealloc17h303cab0338830abbE": 1284,
      "_ZN99_$LT$alloc..collections..btree..map..BTreeMap$LT$K$C$V$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17ha2b340a8329e80b7E": 456,
      "__switch": 275,
      "alloc": 1052,
      "dealloc": 1024,
      "drop": 54,
      "exec": 13,
      "fork": 55,
      "frame_alloc": 1365,
      "frame_dealloc": 1259,
      "kstack_alloc": 56,
      "nodefusion_vm_unmap_region": 55,
      "realloc": 260,
      "recycle_data_pages": 54,
      "sys_exec": 13,
      "sys_fork": 55,
      "sys_waitpid": 97,
      "unmap": 54,
      "unmap@1": 11,
      "unmap@2": 108,
      "waitpid": 97
    },
    "allocation_balance": {
      "initial_free_pages": 23798,
      "successful_allocations": 1365,
      "allocation_failures": 0,
      "frees": 1259,
      "peak_used_pages": 710,
      "final_used_pages": 106,
      "every_record_balanced": true
    },
    "allocator_marks": [
      {
        "insn": 23485516,
        "free": 23798,
        "used": 0
      },
      {
        "insn": 23487219,
        "free": 23797,
        "used": 1
      },
      {
        "insn": 23489099,
        "free": 23796,
        "used": 2
      },
      {
        "insn": 23491235,
        "free": 23795,
        "used": 3
      },
      {
        "insn": 23589509,
        "free": 23794,
        "used": 4
      },
      {
        "insn": 23591190,
        "free": 23793,
        "used": 5
      },
      {
        "insn": 23681353,
        "free": 23792,
        "used": 6
      },
      {
        "insn": 23722447,
        "free": 23791,
        "used": 7
      },
      {
        "insn": 23763541,
        "free": 23790,
        "used": 8
      },
      {
        "insn": 23804635,
        "free": 23789,
        "used": 9
      },
      {
        "insn": 23846161,
        "free": 23788,
        "used": 10
      },
      {
        "insn": 23887255,
        "free": 23787,
        "used": 11
      },
      {
        "insn": 23928349,
        "free": 23786,
        "used": 12
      },
      {
        "insn": 23969443,
        "free": 23785,
        "used": 13
      },
      {
        "insn": 24010537,
        "free": 23784,
        "used": 14
      },
      {
        "insn": 24051631,
        "free": 23783,
        "used": 15
      },
      {
        "insn": 24092725,
        "free": 23782,
        "used": 16
      },
      {
        "insn": 24133819,
        "free": 23781,
        "used": 17
      },
      {
        "insn": 24175406,
        "free": 23780,
        "used": 18
      },
      {
        "insn": 24216500,
        "free": 23779,
        "used": 19
      },
      {
        "insn": 24257594,
        "free": 23778,
        "used": 20
      },
      {
        "insn": 24298688,
        "free": 23777,
        "used": 21
      },
      {
        "insn": 24356573,
        "free": 23776,
        "used": 22
      },
      {
        "insn": 24397667,
        "free": 23775,
        "used": 23
      },
      {
        "insn": 24438761,
        "free": 23774,
        "used": 24
      },
      {
        "insn": 24479855,
        "free": 23773,
        "used": 25
      },
      {
        "insn": 24520949,
        "free": 23772,
        "used": 26
      },
      {
        "insn": 24562043,
        "free": 23771,
        "used": 27
      },
      {
        "insn": 24603137,
        "free": 23770,
        "used": 28
      },
      {
        "insn": 24644231,
        "free": 23769,
        "used": 29
      },
      {
        "insn": 24685325,
        "free": 23768,
        "used": 30
      },
      {
        "insn": 24726419,
        "free": 23767,
        "used": 31
      },
      {
        "insn": 24767513,
        "free": 23766,
        "used": 32
      },
      {
        "insn": 24808607,
        "free": 23765,
        "used": 33
      },
      {
        "insn": 24850307,
        "free": 23764,
        "used": 34
      },
      {
        "insn": 24891401,
        "free": 23763,
        "used": 35
      },
      {
        "insn": 24932495,
        "free": 23762,
        "used": 36
      },
      {
        "insn": 24973589,
        "free": 23761,
        "used": 37
      },
      {
        "insn": 25014683,
        "free": 23760,
        "used": 38
      },
      {
        "insn": 25055777,
        "free": 23759,
        "used": 39
      },
      {
        "insn": 25096871,
        "free": 23758,
        "used": 40
      },
      {
        "insn": 25137965,
        "free": 23757,
        "used": 41
      },
      {
        "insn": 25179059,
        "free": 23756,
        "used": 42
      },
      {
        "insn": 25220153,
        "free": 23755,
        "used": 43
      },
      {
        "insn": 25261247,
        "free": 23754,
        "used": 44
      },
      {
        "insn": 25302341,
        "free": 23753,
        "used": 45
      },
      {
        "insn": 25343435,
        "free": 23752,
        "used": 46
      },
      {
        "insn": 25384529,
        "free": 23751,
        "used": 47
      },
      {
        "insn": 25425623,
        "free": 23750,
        "used": 48
      },
      {
        "insn": 25466717,
        "free": 23749,
        "used": 49
      },
      {
        "insn": 25507811,
        "free": 23748,
        "used": 50
      },
      {
        "insn": 25548905,
        "free": 23747,
        "used": 51
      },
      {
        "insn": 25589999,
        "free": 23746,
        "used": 52
      },
      {
        "insn": 25631093,
        "free": 23745,
        "used": 53
      },
      {
        "insn": 25672187,
        "free": 23744,
        "used": 54
      },
      {
        "insn": 25713281,
        "free": 23743,
        "used": 55
      },
      {
        "insn": 25754375,
        "free": 23742,
        "used": 56
      },
      {
        "insn": 25795469,
        "free": 23741,
        "used": 57
      },
      {
        "insn": 25836563,
        "free": 23740,
        "used": 58
      },
      {
        "insn": 25877657,
        "free": 23739,
        "used": 59
      },
      {
        "insn": 25918751,
        "free": 23738,
        "used": 60
      },
      {
        "insn": 25959845,
        "free": 23737,
        "used": 61
      },
      {
        "insn": 26000939,
        "free": 23736,
        "used": 62
      },
      {
        "insn": 26042033,
        "free": 23735,
        "used": 63
      },
      {
        "insn": 26083127,
        "free": 23734,
        "used": 64
      },
      {
        "insn": 26124221,
        "free": 23733,
        "used": 65
      },
      {
        "insn": 26166086,
        "free": 23732,
        "used": 66
      },
      {
        "insn": 26207180,
        "free": 23731,
        "used": 67
      },
      {
        "insn": 26269388,
        "free": 23730,
        "used": 68
      },
      {
        "insn": 26271268,
        "free": 23729,
        "used": 69
      },
      {
        "insn": 26273404,
        "free": 23728,
        "used": 70
      },
      {
        "insn": 26275366,
        "free": 23727,
        "used": 71
      },
      {
        "insn": 26277236,
        "free": 23726,
        "used": 72
      },
      {
        "insn": 26278917,
        "free": 23725,
        "used": 73
      },
      {
        "insn": 26281033,
        "free": 23724,
        "used": 74
      },
      {
        "insn": 26282888,
        "free": 23723,
        "used": 75
      },
      {
        "insn": 26292294,
        "free": 23722,
        "used": 76
      },
      {
        "insn": 26296242,
        "free": 23721,
        "used": 77
      },
      {
        "insn": 26298178,
        "free": 23720,
        "used": 78
      },
      {
        "insn": 26300033,
        "free": 23719,
        "used": 79
      },
      {
        "insn": 26301899,
        "free": 23718,
        "used": 80
      },
      {
        "insn": 26303776,
        "free": 23717,
        "used": 81
      },
      {
        "insn": 26306184,
        "free": 23716,
        "used": 82
      },
      {
        "insn": 26308099,
        "free": 23715,
        "used": 83
      },
      {
        "insn": 26310691,
        "free": 23714,
        "used": 84
      },
      {
        "insn": 26312894,
        "free": 23713,
        "used": 85
      },
      {
        "insn": 26314830,
        "free": 23712,
        "used": 86
      },
      {
        "insn": 26641723,
        "free": 23711,
        "used": 87
      },
      {
        "insn": 26643604,
        "free": 23710,
        "used": 88
      },
      {
        "insn": 26645795,
        "free": 23709,
        "used": 89
      },
      {
        "insn": 26647548,
        "free": 23708,
        "used": 90
      },
      {
        "insn": 26649439,
        "free": 23707,
        "used": 91
      },
      {
        "insn": 26651120,
        "free": 23706,
        "used": 92
      },
      {
        "insn": 26653264,
        "free": 23705,
        "used": 93
      },
      {
        "insn": 26655119,
        "free": 23704,
        "used": 94
      },
      {
        "insn": 26665223,
        "free": 23703,
        "used": 95
      },
      {
        "insn": 26669932,
        "free": 23702,
        "used": 96
      },
      {
        "insn": 26671847,
        "free": 23701,
        "used": 97
      },
      {
        "insn": 26673702,
        "free": 23700,
        "used": 98
      },
      {
        "insn": 26675568,
        "free": 23699,
        "used": 99
      },
      {
        "insn": 26677445,
        "free": 23698,
        "used": 100
      },
      {
        "insn": 26692640,
        "free": 23697,
        "used": 101
      },
      {
        "insn": 26694576,
        "free": 23696,
        "used": 102
      },
      {
        "insn": 26702444,
        "free": 23695,
        "used": 103
      },
      {
        "insn": 26707207,
        "free": 23694,
        "used": 104
      },
      {
        "insn": 26709122,
        "free": 23693,
        "used": 105
      },
      {
        "insn": 26768688,
        "free": 23692,
        "used": 106
      },
      {
        "insn": 26770568,
        "free": 23691,
        "used": 107
      },
      {
        "insn": 26772699,
        "free": 23690,
        "used": 108
      },
      {
        "insn": 26774661,
        "free": 23689,
        "used": 109
      },
      {
        "insn": 26776620,
        "free": 23688,
        "used": 110
      },
      {
        "insn": 26778301,
        "free": 23687,
        "used": 111
      },
      {
        "insn": 26780438,
        "free": 23686,
        "used": 112
      },
      {
        "insn": 26782293,
        "free": 23685,
        "used": 113
      },
      {
        "insn": 26784159,
        "free": 23684,
        "used": 114
      },
      {
        "insn": 26794533,
        "free": 23683,
        "used": 115
      },
      {
        "insn": 26798787,
        "free": 23682,
        "used": 116
      },
      {
        "insn": 26800702,
        "free": 23681,
        "used": 117
      },
      {
        "insn": 26802557,
        "free": 23680,
        "used": 118
      },
      {
        "insn": 26804423,
        "free": 23679,
        "used": 119
      },
      {
        "insn": 26806300,
        "free": 23678,
        "used": 120
      },
      {
        "insn": 26808708,
        "free": 23677,
        "used": 121
      },
      {
        "insn": 26810661,
        "free": 23676,
        "used": 122
      },
      {
        "insn": 26813203,
        "free": 23675,
        "used": 123
      },
      {
        "insn": 26813881,
        "free": 23676,
        "used": 122
      },
      {
        "insn": 26813965,
        "free": 23677,
        "used": 121
      },
      {
        "insn": 26814054,
        "free": 23678,
        "used": 120
      },
      {
        "insn": 26814148,
        "free": 23679,
        "used": 119
      },
      {
        "insn": 26814658,
        "free": 23680,
        "used": 118
      },
      {
        "insn": 26814993,
        "free": 23681,
        "used": 117
      },
      {
        "insn": 26815151,
        "free": 23682,
        "used": 116
      },
      {
        "insn": 26815314,
        "free": 23683,
        "used": 115
      },
      {
        "insn": 26816138,
        "free": 23684,
        "used": 114
      },
      {
        "insn": 26816510,
        "free": 23685,
        "used": 113
      },
      {
        "insn": 26816688,
        "free": 23686,
        "used": 112
      },
      {
        "insn": 26816871,
        "free": 23687,
        "used": 111
      },
      {
        "insn": 26817059,
        "free": 23688,
        "used": 110
      },
      {
        "insn": 26817252,
        "free": 23689,
        "used": 109
      },
      {
        "insn": 26817672,
        "free": 23690,
        "used": 108
      },
      {
        "insn": 26817875,
        "free": 23691,
        "used": 107
      },
      {
        "insn": 26818809,
        "free": 23692,
        "used": 106
      },
      {
        "insn": 27459096,
        "free": 23691,
        "used": 107
      },
      {
        "insn": 27460980,
        "free": 23690,
        "used": 108
      },
      {
        "insn": 27463119,
        "free": 23689,
        "used": 109
      },
      {
        "insn": 27464875,
        "free": 23688,
        "used": 110
      },
      {
        "insn": 27466748,
        "free": 23687,
        "used": 111
      },
      {
        "insn": 27468432,
        "free": 23686,
        "used": 112
      },
      {
        "insn": 27470551,
        "free": 23685,
        "used": 113
      },
      {
        "insn": 27472409,
        "free": 23684,
        "used": 114
      },
      {
        "insn": 27474278,
        "free": 23683,
        "used": 115
      },
      {
        "insn": 27487059,
        "free": 23682,
        "used": 116
      },
      {
        "insn": 27491716,
        "free": 23681,
        "used": 117
      },
      {
        "insn": 27493655,
        "free": 23680,
        "used": 118
      },
      {
        "insn": 27495513,
        "free": 23679,
        "used": 119
      },
      {
        "insn": 27497382,
        "free": 23678,
        "used": 120
      },
      {
        "insn": 27499262,
        "free": 23677,
        "used": 121
      },
      {
        "insn": 27514460,
        "free": 23676,
        "used": 122
      },
      {
        "insn": 27516378,
        "free": 23675,
        "used": 123
      },
      {
        "insn": 27524220,
        "free": 23674,
        "used": 124
      },
      {
        "insn": 27528983,
        "free": 23673,
        "used": 125
      },
      {
        "insn": 27530953,
        "free": 23672,
        "used": 126
      },
      {
        "insn": 27590298,
        "free": 23671,
        "used": 127
      },
      {
        "insn": 27592178,
        "free": 23670,
        "used": 128
      },
      {
        "insn": 27594330,
        "free": 23669,
        "used": 129
      },
      {
        "insn": 27596292,
        "free": 23668,
        "used": 130
      },
      {
        "insn": 27598162,
        "free": 23667,
        "used": 131
      },
      {
        "insn": 27599843,
        "free": 23666,
        "used": 132
      },
      {
        "insn": 27602064,
        "free": 23665,
        "used": 133
      },
      {
        "insn": 27603919,
        "free": 23664,
        "used": 134
      },
      {
        "insn": 27613791,
        "free": 23663,
        "used": 135
      },
      {
        "insn": 27618225,
        "free": 23662,
        "used": 136
      },
      {
        "insn": 27620140,
        "free": 23661,
        "used": 137
      },
      {
        "insn": 27621995,
        "free": 23660,
        "used": 138
      },
      {
        "insn": 27623861,
        "free": 23659,
        "used": 139
      },
      {
        "insn": 27625738,
        "free": 23658,
        "used": 140
      },
      {
        "insn": 27628146,
        "free": 23657,
        "used": 141
      },
      {
        "insn": 27630133,
        "free": 23656,
        "used": 142
      },
      {
        "insn": 27632675,
        "free": 23655,
        "used": 143
      },
      {
        "insn": 27633138,
        "free": 23656,
        "used": 142
      },
      {
        "insn": 27633222,
        "free": 23657,
        "used": 141
      },
      {
        "insn": 27633311,
        "free": 23658,
        "used": 140
      },
      {
        "insn": 27633405,
        "free": 23659,
        "used": 139
      },
      {
        "insn": 27633504,
        "free": 23660,
        "used": 138
      },
      {
        "insn": 27633849,
        "free": 23661,
        "used": 137
      },
      {
        "insn": 27634007,
        "free": 23662,
        "used": 136
      },
      {
        "insn": 27634170,
        "free": 23663,
        "used": 135
      },
      {
        "insn": 27634338,
        "free": 23664,
        "used": 134
      },
      {
        "insn": 27634710,
        "free": 23665,
        "used": 133
      },
      {
        "insn": 27635092,
        "free": 23666,
        "used": 132
      },
      {
        "insn": 27635275,
        "free": 23667,
        "used": 131
      },
      {
        "insn": 27635463,
        "free": 23668,
        "used": 130
      },
      {
        "insn": 27635656,
        "free": 23669,
        "used": 129
      },
      {
        "insn": 27635854,
        "free": 23670,
        "used": 128
      },
      {
        "insn": 27636266,
        "free": 23671,
        "used": 127
      },
      {
        "insn": 27636474,
        "free": 23672,
        "used": 126
      },
      {
        "insn": 27636932,
        "free": 23673,
        "used": 125
      },
      {
        "insn": 27757381,
        "free": 23672,
        "used": 126
      },
      {
        "insn": 27759265,
        "free": 23671,
        "used": 127
      },
      {
        "insn": 27761425,
        "free": 23670,
        "used": 128
      },
      {
        "insn": 27763181,
        "free": 23669,
        "used": 129
      },
      {
        "insn": 27765054,
        "free": 23668,
        "used": 130
      },
      {
        "insn": 27766738,
        "free": 23667,
        "used": 131
      },
      {
        "insn": 27768890,
        "free": 23666,
        "used": 132
      },
      {
        "insn": 27770748,
        "free": 23665,
        "used": 133
      },
      {
        "insn": 27780855,
        "free": 23664,
        "used": 134
      },
      {
        "insn": 27785533,
        "free": 23663,
        "used": 135
      },
      {
        "insn": 27787451,
        "free": 23662,
        "used": 136
      },
      {
        "insn": 27789309,
        "free": 23661,
        "used": 137
      },
      {
        "insn": 27791178,
        "free": 23660,
        "used": 138
      },
      {
        "insn": 27793058,
        "free": 23659,
        "used": 139
      },
      {
        "insn": 27808256,
        "free": 23658,
        "used": 140
      },
      {
        "insn": 27810195,
        "free": 23657,
        "used": 141
      },
      {
        "insn": 27818045,
        "free": 23656,
        "used": 142
      },
      {
        "insn": 27822811,
        "free": 23655,
        "used": 143
      },
      {
        "insn": 27824726,
        "free": 23654,
        "used": 144
      },
      {
        "insn": 27876525,
        "free": 23653,
        "used": 145
      },
      {
        "insn": 27878406,
        "free": 23652,
        "used": 146
      },
      {
        "insn": 27880542,
        "free": 23651,
        "used": 147
      },
      {
        "insn": 27882295,
        "free": 23650,
        "used": 148
      },
      {
        "insn": 27884220,
        "free": 23649,
        "used": 149
      },
      {
        "insn": 27885901,
        "free": 23648,
        "used": 150
      },
      {
        "insn": 27888017,
        "free": 23647,
        "used": 151
      },
      {
        "insn": 27889872,
        "free": 23646,
        "used": 152
      },
      {
        "insn": 27899976,
        "free": 23645,
        "used": 153
      },
      {
        "insn": 27904651,
        "free": 23644,
        "used": 154
      },
      {
        "insn": 27906566,
        "free": 23643,
        "used": 155
      },
      {
        "insn": 27908421,
        "free": 23642,
        "used": 156
      },
      {
        "insn": 27910287,
        "free": 23641,
        "used": 157
      },
      {
        "insn": 27912164,
        "free": 23640,
        "used": 158
      },
      {
        "insn": 27927359,
        "free": 23639,
        "used": 159
      },
      {
        "insn": 27929312,
        "free": 23638,
        "used": 160
      },
      {
        "insn": 27937159,
        "free": 23637,
        "used": 161
      },
      {
        "insn": 27941922,
        "free": 23636,
        "used": 162
      },
      {
        "insn": 27943837,
        "free": 23635,
        "used": 163
      },
      {
        "insn": 27966415,
        "free": 23634,
        "used": 164
      },
      {
        "insn": 27968295,
        "free": 23633,
        "used": 165
      },
      {
        "insn": 27970426,
        "free": 23632,
        "used": 166
      },
      {
        "insn": 27972388,
        "free": 23631,
        "used": 167
      },
      {
        "insn": 27974279,
        "free": 23630,
        "used": 168
      },
      {
        "insn": 27975960,
        "free": 23629,
        "used": 169
      },
      {
        "insn": 27978081,
        "free": 23628,
        "used": 170
      },
      {
        "insn": 27979936,
        "free": 23627,
        "used": 171
      },
      {
        "insn": 27989098,
        "free": 23626,
        "used": 172
      },
      {
        "insn": 27993039,
        "free": 23625,
        "used": 173
      },
      {
        "insn": 27994954,
        "free": 23624,
        "used": 174
      },
      {
        "insn": 27996809,
        "free": 23623,
        "used": 175
      },
      {
        "insn": 27998675,
        "free": 23622,
        "used": 176
      },
      {
        "insn": 28000552,
        "free": 23621,
        "used": 177
      },
      {
        "insn": 28002960,
        "free": 23620,
        "used": 178
      },
      {
        "insn": 28004896,
        "free": 23619,
        "used": 179
      },
      {
        "insn": 28007476,
        "free": 23618,
        "used": 180
      },
      {
        "insn": 28007939,
        "free": 23619,
        "used": 179
      },
      {
        "insn": 28008023,
        "free": 23620,
        "used": 178
      },
      {
        "insn": 28008112,
        "free": 23621,
        "used": 177
      },
      {
        "insn": 28008206,
        "free": 23622,
        "used": 176
      },
      {
        "insn": 28008305,
        "free": 23623,
        "used": 175
      },
      {
        "insn": 28008640,
        "free": 23624,
        "used": 174
      },
      {
        "insn": 28008798,
        "free": 23625,
        "used": 173
      },
      {
        "insn": 28008961,
        "free": 23626,
        "used": 172
      },
      {
        "insn": 28009328,
        "free": 23627,
        "used": 171
      },
      {
        "insn": 28009705,
        "free": 23628,
        "used": 170
      },
      {
        "insn": 28009883,
        "free": 23629,
        "used": 169
      },
      {
        "insn": 28010066,
        "free": 23630,
        "used": 168
      },
      {
        "insn": 28010254,
        "free": 23631,
        "used": 167
      },
      {
        "insn": 28010447,
        "free": 23632,
        "used": 166
      },
      {
        "insn": 28010872,
        "free": 23633,
        "used": 165
      },
      {
        "insn": 28011075,
        "free": 23634,
        "used": 164
      },
      {
        "insn": 28011510,
        "free": 23635,
        "used": 163
      },
      {
        "insn": 28147735,
        "free": 23636,
        "used": 162
      },
      {
        "insn": 28147953,
        "free": 23637,
        "used": 161
      },
      {
        "insn": 28148176,
        "free": 23638,
        "used": 160
      },
      {
        "insn": 28148618,
        "free": 23639,
        "used": 159
      },
      {
        "insn": 28149070,
        "free": 23640,
        "used": 158
      },
      {
        "insn": 28149308,
        "free": 23641,
        "used": 157
      },
      {
        "insn": 28149551,
        "free": 23642,
        "used": 156
      },
      {
        "insn": 28149799,
        "free": 23643,
        "used": 155
      },
      {
        "insn": 28150052,
        "free": 23644,
        "used": 154
      },
      {
        "insn": 28150547,
        "free": 23645,
        "used": 153
      },
      {
        "insn": 28150810,
        "free": 23646,
        "used": 152
      },
      {
        "insn": 28151376,
        "free": 23647,
        "used": 151
      },
      {
        "insn": 28172079,
        "free": 23646,
        "used": 152
      },
      {
        "insn": 28173962,
        "free": 23645,
        "used": 153
      },
      {
        "insn": 28176096,
        "free": 23644,
        "used": 154
      },
      {
        "insn": 28178061,
        "free": 23643,
        "used": 155
      },
      {
        "insn": 28179934,
        "free": 23642,
        "used": 156
      },
      {
        "insn": 28181618,
        "free": 23641,
        "used": 157
      },
      {
        "insn": 28183742,
        "free": 23640,
        "used": 158
      },
      {
        "insn": 28185600,
        "free": 23639,
        "used": 159
      },
      {
        "insn": 28195146,
        "free": 23638,
        "used": 160
      },
      {
        "insn": 28199172,
        "free": 23637,
        "used": 161
      },
      {
        "insn": 28201111,
        "free": 23636,
        "used": 162
      },
      {
        "insn": 28202969,
        "free": 23635,
        "used": 163
      },
      {
        "insn": 28204838,
        "free": 23634,
        "used": 164
      },
      {
        "insn": 28206718,
        "free": 23633,
        "used": 165
      },
      {
        "insn": 28209129,
        "free": 23632,
        "used": 166
      },
      {
        "insn": 28211047,
        "free": 23631,
        "used": 167
      },
      {
        "insn": 28213587,
        "free": 23630,
        "used": 168
      },
      {
        "insn": 28214110,
        "free": 23631,
        "used": 167
      },
      {
        "insn": 28214254,
        "free": 23632,
        "used": 166
      },
      {
        "insn": 28214403,
        "free": 23633,
        "used": 165
      },
      {
        "insn": 28214557,
        "free": 23634,
        "used": 164
      },
      {
        "insn": 28214716,
        "free": 23635,
        "used": 163
      },
      {
        "insn": 28215111,
        "free": 23636,
        "used": 162
      },
      {
        "insn": 28215329,
        "free": 23637,
        "used": 161
      },
      {
        "insn": 28215552,
        "free": 23638,
        "used": 160
      },
      {
        "insn": 28215974,
        "free": 23639,
        "used": 159
      },
      {
        "insn": 28216406,
        "free": 23640,
        "used": 158
      },
      {
        "insn": 28216644,
        "free": 23641,
        "used": 157
      },
      {
        "insn": 28216887,
        "free": 23642,
        "used": 156
      },
      {
        "insn": 28217135,
        "free": 23643,
        "used": 155
      },
      {
        "insn": 28217388,
        "free": 23644,
        "used": 154
      },
      {
        "insn": 28217878,
        "free": 23645,
        "used": 153
      },
      {
        "insn": 28218141,
        "free": 23646,
        "used": 152
      },
      {
        "insn": 28218631,
        "free": 23647,
        "used": 151
      },
      {
        "insn": 29634166,
        "free": 23646,
        "used": 152
      },
      {
        "insn": 29636050,
        "free": 23645,
        "used": 153
      },
      {
        "insn": 29638189,
        "free": 23644,
        "used": 154
      },
      {
        "insn": 29639945,
        "free": 23643,
        "used": 155
      },
      {
        "insn": 29641818,
        "free": 23642,
        "used": 156
      },
      {
        "insn": 29643502,
        "free": 23641,
        "used": 157
      },
      {
        "insn": 29645626,
        "free": 23640,
        "used": 158
      },
      {
        "insn": 29647484,
        "free": 23639,
        "used": 159
      },
      {
        "insn": 29657612,
        "free": 23638,
        "used": 160
      },
      {
        "insn": 29662269,
        "free": 23637,
        "used": 161
      },
      {
        "insn": 29664208,
        "free": 23636,
        "used": 162
      },
      {
        "insn": 29666066,
        "free": 23635,
        "used": 163
      },
      {
        "insn": 29667935,
        "free": 23634,
        "used": 164
      },
      {
        "insn": 29669815,
        "free": 23633,
        "used": 165
      },
      {
        "insn": 29685013,
        "free": 23632,
        "used": 166
      },
      {
        "insn": 29686931,
        "free": 23631,
        "used": 167
      },
      {
        "insn": 29694776,
        "free": 23630,
        "used": 168
      },
      {
        "insn": 29699542,
        "free": 23629,
        "used": 169
      },
      {
        "insn": 29701498,
        "free": 23628,
        "used": 170
      },
      {
        "insn": 29752527,
        "free": 23627,
        "used": 171
      },
      {
        "insn": 29754411,
        "free": 23626,
        "used": 172
      },
      {
        "insn": 29756550,
        "free": 23625,
        "used": 173
      },
      {
        "insn": 29758306,
        "free": 23624,
        "used": 174
      },
      {
        "insn": 29760179,
        "free": 23623,
        "used": 175
      },
      {
        "insn": 29761863,
        "free": 23622,
        "used": 176
      },
      {
        "insn": 29764059,
        "free": 23621,
        "used": 177
      },
      {
        "insn": 29765917,
        "free": 23620,
        "used": 178
      },
      {
        "insn": 29776024,
        "free": 23619,
        "used": 179
      },
      {
        "insn": 29780702,
        "free": 23618,
        "used": 180
      },
      {
        "insn": 29782617,
        "free": 23617,
        "used": 181
      },
      {
        "insn": 29784472,
        "free": 23616,
        "used": 182
      },
      {
        "insn": 29786338,
        "free": 23615,
        "used": 183
      },
      {
        "insn": 29788215,
        "free": 23614,
        "used": 184
      },
      {
        "insn": 29803410,
        "free": 23613,
        "used": 185
      },
      {
        "insn": 29805363,
        "free": 23612,
        "used": 186
      },
      {
        "insn": 29813210,
        "free": 23611,
        "used": 187
      },
      {
        "insn": 29817973,
        "free": 23610,
        "used": 188
      },
      {
        "insn": 29819888,
        "free": 23609,
        "used": 189
      },
      {
        "insn": 29870465,
        "free": 23608,
        "used": 190
      },
      {
        "insn": 29872346,
        "free": 23607,
        "used": 191
      },
      {
        "insn": 29874482,
        "free": 23606,
        "used": 192
      },
      {
        "insn": 29876235,
        "free": 23605,
        "used": 193
      },
      {
        "insn": 29878126,
        "free": 23604,
        "used": 194
      },
      {
        "insn": 29879807,
        "free": 23603,
        "used": 195
      },
      {
        "insn": 29881928,
        "free": 23602,
        "used": 196
      },
      {
        "insn": 29883783,
        "free": 23601,
        "used": 197
      },
      {
        "insn": 29893887,
        "free": 23600,
        "used": 198
      },
      {
        "insn": 29898579,
        "free": 23599,
        "used": 199
      },
      {
        "insn": 29900494,
        "free": 23598,
        "used": 200
      },
      {
        "insn": 29902349,
        "free": 23597,
        "used": 201
      },
      {
        "insn": 29904215,
        "free": 23596,
        "used": 202
      },
      {
        "insn": 29906092,
        "free": 23595,
        "used": 203
      },
      {
        "insn": 29921287,
        "free": 23594,
        "used": 204
      },
      {
        "insn": 29923223,
        "free": 23593,
        "used": 205
      },
      {
        "insn": 29931108,
        "free": 23592,
        "used": 206
      },
      {
        "insn": 29935871,
        "free": 23591,
        "used": 207
      },
      {
        "insn": 29937786,
        "free": 23590,
        "used": 208
      },
      {
        "insn": 29988782,
        "free": 23589,
        "used": 209
      },
      {
        "insn": 29990663,
        "free": 23588,
        "used": 210
      },
      {
        "insn": 29992799,
        "free": 23587,
        "used": 211
      },
      {
        "insn": 29994552,
        "free": 23586,
        "used": 212
      },
      {
        "insn": 29996460,
        "free": 23585,
        "used": 213
      },
      {
        "insn": 29998141,
        "free": 23584,
        "used": 214
      },
      {
        "insn": 30000257,
        "free": 23583,
        "used": 215
      },
      {
        "insn": 30002112,
        "free": 23582,
        "used": 216
      },
      {
        "insn": 30012216,
        "free": 23581,
        "used": 217
      },
      {
        "insn": 30016891,
        "free": 23580,
        "used": 218
      },
      {
        "insn": 30018806,
        "free": 23579,
        "used": 219
      },
      {
        "insn": 30020661,
        "free": 23578,
        "used": 220
      },
      {
        "insn": 30022527,
        "free": 23577,
        "used": 221
      },
      {
        "insn": 30024404,
        "free": 23576,
        "used": 222
      },
      {
        "insn": 30039599,
        "free": 23575,
        "used": 223
      },
      {
        "insn": 30041603,
        "free": 23574,
        "used": 224
      },
      {
        "insn": 30049450,
        "free": 23573,
        "used": 225
      },
      {
        "insn": 30054213,
        "free": 23572,
        "used": 226
      },
      {
        "insn": 30056128,
        "free": 23571,
        "used": 227
      },
      {
        "insn": 30106671,
        "free": 23570,
        "used": 228
      },
      {
        "insn": 30108552,
        "free": 23569,
        "used": 229
      },
      {
        "insn": 30110688,
        "free": 23568,
        "used": 230
      },
      {
        "insn": 30112441,
        "free": 23567,
        "used": 231
      },
      {
        "insn": 30114332,
        "free": 23566,
        "used": 232
      },
      {
        "insn": 30116013,
        "free": 23565,
        "used": 233
      },
      {
        "insn": 30118129,
        "free": 23564,
        "used": 234
      },
      {
        "insn": 30119984,
        "free": 23563,
        "used": 235
      },
      {
        "insn": 30130088,
        "free": 23562,
        "used": 236
      },
      {
        "insn": 30134797,
        "free": 23561,
        "used": 237
      },
      {
        "insn": 30136712,
        "free": 23560,
        "used": 238
      },
      {
        "insn": 30138567,
        "free": 23559,
        "used": 239
      },
      {
        "insn": 30140433,
        "free": 23558,
        "used": 240
      },
      {
        "insn": 30142310,
        "free": 23557,
        "used": 241
      },
      {
        "insn": 30157505,
        "free": 23556,
        "used": 242
      },
      {
        "insn": 30159441,
        "free": 23555,
        "used": 243
      },
      {
        "insn": 30167309,
        "free": 23554,
        "used": 244
      },
      {
        "insn": 30172072,
        "free": 23553,
        "used": 245
      },
      {
        "insn": 30173987,
        "free": 23552,
        "used": 246
      },
      {
        "insn": 30224029,
        "free": 23551,
        "used": 247
      },
      {
        "insn": 30225910,
        "free": 23550,
        "used": 248
      },
      {
        "insn": 30228046,
        "free": 23549,
        "used": 249
      },
      {
        "insn": 30229799,
        "free": 23548,
        "used": 250
      },
      {
        "insn": 30231741,
        "free": 23547,
        "used": 251
      },
      {
        "insn": 30233422,
        "free": 23546,
        "used": 252
      },
      {
        "insn": 30235576,
        "free": 23545,
        "used": 253
      },
      {
        "insn": 30237431,
        "free": 23544,
        "used": 254
      },
      {
        "insn": 30247556,
        "free": 23543,
        "used": 255
      },
      {
        "insn": 30252210,
        "free": 23542,
        "used": 256
      },
      {
        "insn": 30254163,
        "free": 23541,
        "used": 257
      },
      {
        "insn": 30256018,
        "free": 23540,
        "used": 258
      },
      {
        "insn": 30257884,
        "free": 23539,
        "used": 259
      },
      {
        "insn": 30259761,
        "free": 23538,
        "used": 260
      },
      {
        "insn": 30274956,
        "free": 23537,
        "used": 261
      },
      {
        "insn": 30276871,
        "free": 23536,
        "used": 262
      },
      {
        "insn": 30284713,
        "free": 23535,
        "used": 263
      },
      {
        "insn": 30289476,
        "free": 23534,
        "used": 264
      },
      {
        "insn": 30291446,
        "free": 23533,
        "used": 265
      },
      {
        "insn": 30341736,
        "free": 23532,
        "used": 266
      },
      {
        "insn": 30343617,
        "free": 23531,
        "used": 267
      },
      {
        "insn": 30345753,
        "free": 23530,
        "used": 268
      },
      {
        "insn": 30347506,
        "free": 23529,
        "used": 269
      },
      {
        "insn": 30349376,
        "free": 23528,
        "used": 270
      },
      {
        "insn": 30351057,
        "free": 23527,
        "used": 271
      },
      {
        "insn": 30353173,
        "free": 23526,
        "used": 272
      },
      {
        "insn": 30355028,
        "free": 23525,
        "used": 273
      },
      {
        "insn": 30365170,
        "free": 23524,
        "used": 274
      },
      {
        "insn": 30369824,
        "free": 23523,
        "used": 275
      },
      {
        "insn": 30371760,
        "free": 23522,
        "used": 276
      },
      {
        "insn": 30373615,
        "free": 23521,
        "used": 277
      },
      {
        "insn": 30375481,
        "free": 23520,
        "used": 278
      },
      {
        "insn": 30377358,
        "free": 23519,
        "used": 279
      },
      {
        "insn": 30392553,
        "free": 23518,
        "used": 280
      },
      {
        "insn": 30394468,
        "free": 23517,
        "used": 281
      },
      {
        "insn": 30402416,
        "free": 23516,
        "used": 282
      },
      {
        "insn": 30407179,
        "free": 23515,
        "used": 283
      },
      {
        "insn": 30409115,
        "free": 23514,
        "used": 284
      },
      {
        "insn": 30464694,
        "free": 23513,
        "used": 285
      },
      {
        "insn": 30466575,
        "free": 23512,
        "used": 286
      },
      {
        "insn": 30468711,
        "free": 23511,
        "used": 287
      },
      {
        "insn": 30470464,
        "free": 23510,
        "used": 288
      },
      {
        "insn": 30472355,
        "free": 23509,
        "used": 289
      },
      {
        "insn": 30474036,
        "free": 23508,
        "used": 290
      },
      {
        "insn": 30476152,
        "free": 23507,
        "used": 291
      },
      {
        "insn": 30478007,
        "free": 23506,
        "used": 292
      },
      {
        "insn": 30488111,
        "free": 23505,
        "used": 293
      },
      {
        "insn": 30492803,
        "free": 23504,
        "used": 294
      },
      {
        "insn": 30494718,
        "free": 23503,
        "used": 295
      },
      {
        "insn": 30496573,
        "free": 23502,
        "used": 296
      },
      {
        "insn": 30498439,
        "free": 23501,
        "used": 297
      },
      {
        "insn": 30500316,
        "free": 23500,
        "used": 298
      },
      {
        "insn": 30515511,
        "free": 23499,
        "used": 299
      },
      {
        "insn": 30517447,
        "free": 23498,
        "used": 300
      },
      {
        "insn": 30525349,
        "free": 23497,
        "used": 301
      },
      {
        "insn": 30530112,
        "free": 23496,
        "used": 302
      },
      {
        "insn": 30532027,
        "free": 23495,
        "used": 303
      },
      {
        "insn": 30583370,
        "free": 23494,
        "used": 304
      },
      {
        "insn": 30585251,
        "free": 23493,
        "used": 305
      },
      {
        "insn": 30587387,
        "free": 23492,
        "used": 306
      },
      {
        "insn": 30589140,
        "free": 23491,
        "used": 307
      },
      {
        "insn": 30591048,
        "free": 23490,
        "used": 308
      },
      {
        "insn": 30592729,
        "free": 23489,
        "used": 309
      },
      {
        "insn": 30594845,
        "free": 23488,
        "used": 310
      },
      {
        "insn": 30596700,
        "free": 23487,
        "used": 311
      },
      {
        "insn": 30606804,
        "free": 23486,
        "used": 312
      },
      {
        "insn": 30611479,
        "free": 23485,
        "used": 313
      },
      {
        "insn": 30613394,
        "free": 23484,
        "used": 314
      },
      {
        "insn": 30615249,
        "free": 23483,
        "used": 315
      },
      {
        "insn": 30617115,
        "free": 23482,
        "used": 316
      },
      {
        "insn": 30618992,
        "free": 23481,
        "used": 317
      },
      {
        "insn": 30634187,
        "free": 23480,
        "used": 318
      },
      {
        "insn": 30636157,
        "free": 23479,
        "used": 319
      },
      {
        "insn": 30644004,
        "free": 23478,
        "used": 320
      },
      {
        "insn": 30648767,
        "free": 23477,
        "used": 321
      },
      {
        "insn": 30650682,
        "free": 23476,
        "used": 322
      },
      {
        "insn": 30672429,
        "free": 23477,
        "used": 321
      },
      {
        "insn": 30672732,
        "free": 23478,
        "used": 320
      },
      {
        "insn": 30673694,
        "free": 23479,
        "used": 319
      },
      {
        "insn": 30673788,
        "free": 23480,
        "used": 318
      },
      {
        "insn": 30673887,
        "free": 23481,
        "used": 317
      },
      {
        "insn": 30673991,
        "free": 23482,
        "used": 316
      },
      {
        "insn": 30674100,
        "free": 23483,
        "used": 315
      },
      {
        "insn": 30782085,
        "free": 23482,
        "used": 316
      },
      {
        "insn": 30783968,
        "free": 23481,
        "used": 317
      },
      {
        "insn": 30786102,
        "free": 23480,
        "used": 318
      },
      {
        "insn": 30788067,
        "free": 23479,
        "used": 319
      },
      {
        "insn": 30789940,
        "free": 23478,
        "used": 320
      },
      {
        "insn": 30791624,
        "free": 23477,
        "used": 321
      },
      {
        "insn": 30793743,
        "free": 23476,
        "used": 322
      },
      {
        "insn": 30795598,
        "free": 23475,
        "used": 323
      },
      {
        "insn": 30805162,
        "free": 23474,
        "used": 324
      },
      {
        "insn": 30809185,
        "free": 23473,
        "used": 325
      },
      {
        "insn": 30811121,
        "free": 23472,
        "used": 326
      },
      {
        "insn": 30812976,
        "free": 23471,
        "used": 327
      },
      {
        "insn": 30814842,
        "free": 23470,
        "used": 328
      },
      {
        "insn": 30816719,
        "free": 23469,
        "used": 329
      },
      {
        "insn": 30819127,
        "free": 23468,
        "used": 330
      },
      {
        "insn": 30821042,
        "free": 23467,
        "used": 331
      },
      {
        "insn": 30823579,
        "free": 23466,
        "used": 332
      },
      {
        "insn": 30824042,
        "free": 23467,
        "used": 331
      },
      {
        "insn": 30824126,
        "free": 23468,
        "used": 330
      },
      {
        "insn": 30824215,
        "free": 23469,
        "used": 329
      },
      {
        "insn": 30824309,
        "free": 23470,
        "used": 328
      },
      {
        "insn": 30824408,
        "free": 23471,
        "used": 327
      },
      {
        "insn": 30824748,
        "free": 23472,
        "used": 326
      },
      {
        "insn": 30824906,
        "free": 23473,
        "used": 325
      },
      {
        "insn": 30825069,
        "free": 23474,
        "used": 324
      },
      {
        "insn": 30825431,
        "free": 23475,
        "used": 323
      },
      {
        "insn": 30825803,
        "free": 23476,
        "used": 322
      },
      {
        "insn": 30825981,
        "free": 23477,
        "used": 321
      },
      {
        "insn": 30826164,
        "free": 23478,
        "used": 320
      },
      {
        "insn": 30826352,
        "free": 23479,
        "used": 319
      },
      {
        "insn": 30826545,
        "free": 23480,
        "used": 318
      },
      {
        "insn": 30826947,
        "free": 23481,
        "used": 317
      },
      {
        "insn": 30827150,
        "free": 23482,
        "used": 316
      },
      {
        "insn": 30827603,
        "free": 23483,
        "used": 315
      },
      {
        "insn": 31091107,
        "free": 23482,
        "used": 316
      },
      {
        "insn": 31092990,
        "free": 23481,
        "used": 317
      },
      {
        "insn": 31095124,
        "free": 23480,
        "used": 318
      },
      {
        "insn": 31097089,
        "free": 23479,
        "used": 319
      },
      {
        "insn": 31098962,
        "free": 23478,
        "used": 320
      },
      {
        "insn": 31100646,
        "free": 23477,
        "used": 321
      },
      {
        "insn": 31102765,
        "free": 23476,
        "used": 322
      },
      {
        "insn": 31104623,
        "free": 23475,
        "used": 323
      },
      {
        "insn": 31114190,
        "free": 23474,
        "used": 324
      },
      {
        "insn": 31118216,
        "free": 23473,
        "used": 325
      },
      {
        "insn": 31120155,
        "free": 23472,
        "used": 326
      },
      {
        "insn": 31122013,
        "free": 23471,
        "used": 327
      },
      {
        "insn": 31123882,
        "free": 23470,
        "used": 328
      },
      {
        "insn": 31125762,
        "free": 23469,
        "used": 329
      },
      {
        "insn": 31128173,
        "free": 23468,
        "used": 330
      },
      {
        "insn": 31130091,
        "free": 23467,
        "used": 331
      },
      {
        "insn": 31132631,
        "free": 23466,
        "used": 332
      },
      {
        "insn": 31133094,
        "free": 23467,
        "used": 331
      },
      {
        "insn": 31133178,
        "free": 23468,
        "used": 330
      },
      {
        "insn": 31133267,
        "free": 23469,
        "used": 329
      },
      {
        "insn": 31133361,
        "free": 23470,
        "used": 328
      },
      {
        "insn": 31133460,
        "free": 23471,
        "used": 327
      },
      {
        "insn": 31133800,
        "free": 23472,
        "used": 326
      },
      {
        "insn": 31133958,
        "free": 23473,
        "used": 325
      },
      {
        "insn": 31134121,
        "free": 23474,
        "used": 324
      },
      {
        "insn": 31134483,
        "free": 23475,
        "used": 323
      },
      {
        "insn": 31134855,
        "free": 23476,
        "used": 322
      },
      {
        "insn": 31135033,
        "free": 23477,
        "used": 321
      },
      {
        "insn": 31135216,
        "free": 23478,
        "used": 320
      },
      {
        "insn": 31135404,
        "free": 23479,
        "used": 319
      },
      {
        "insn": 31135597,
        "free": 23480,
        "used": 318
      },
      {
        "insn": 31136017,
        "free": 23481,
        "used": 317
      },
      {
        "insn": 31136220,
        "free": 23482,
        "used": 316
      },
      {
        "insn": 31136650,
        "free": 23483,
        "used": 315
      },
      {
        "insn": 32653460,
        "free": 23482,
        "used": 316
      },
      {
        "insn": 32655343,
        "free": 23481,
        "used": 317
      },
      {
        "insn": 32657477,
        "free": 23480,
        "used": 318
      },
      {
        "insn": 32659442,
        "free": 23479,
        "used": 319
      },
      {
        "insn": 32661315,
        "free": 23478,
        "used": 320
      },
      {
        "insn": 32662999,
        "free": 23477,
        "used": 321
      },
      {
        "insn": 32665118,
        "free": 23476,
        "used": 322
      },
      {
        "insn": 32666976,
        "free": 23475,
        "used": 323
      },
      {
        "insn": 32676472,
        "free": 23474,
        "used": 324
      },
      {
        "insn": 32680508,
        "free": 23473,
        "used": 325
      },
      {
        "insn": 32682447,
        "free": 23472,
        "used": 326
      },
      {
        "insn": 32684305,
        "free": 23471,
        "used": 327
      },
      {
        "insn": 32686174,
        "free": 23470,
        "used": 328
      },
      {
        "insn": 32688054,
        "free": 23469,
        "used": 329
      },
      {
        "insn": 32690470,
        "free": 23468,
        "used": 330
      },
      {
        "insn": 32692388,
        "free": 23467,
        "used": 331
      },
      {
        "insn": 32694928,
        "free": 23466,
        "used": 332
      },
      {
        "insn": 32695391,
        "free": 23467,
        "used": 331
      },
      {
        "insn": 32695475,
        "free": 23468,
        "used": 330
      },
      {
        "insn": 32695564,
        "free": 23469,
        "used": 329
      },
      {
        "insn": 32695658,
        "free": 23470,
        "used": 328
      },
      {
        "insn": 32695757,
        "free": 23471,
        "used": 327
      },
      {
        "insn": 32696097,
        "free": 23472,
        "used": 326
      },
      {
        "insn": 32696255,
        "free": 23473,
        "used": 325
      },
      {
        "insn": 32696418,
        "free": 23474,
        "used": 324
      },
      {
        "insn": 32696780,
        "free": 23475,
        "used": 323
      },
      {
        "insn": 32697152,
        "free": 23476,
        "used": 322
      },
      {
        "insn": 32697330,
        "free": 23477,
        "used": 321
      },
      {
        "insn": 32697513,
        "free": 23478,
        "used": 320
      },
      {
        "insn": 32697701,
        "free": 23479,
        "used": 319
      },
      {
        "insn": 32697894,
        "free": 23480,
        "used": 318
      },
      {
        "insn": 32698314,
        "free": 23481,
        "used": 317
      },
      {
        "insn": 32698517,
        "free": 23482,
        "used": 316
      },
      {
        "insn": 32698947,
        "free": 23483,
        "used": 315
      },
      {
        "insn": 32830933,
        "free": 23482,
        "used": 316
      },
      {
        "insn": 32832816,
        "free": 23481,
        "used": 317
      },
      {
        "insn": 32834950,
        "free": 23480,
        "used": 318
      },
      {
        "insn": 32836915,
        "free": 23479,
        "used": 319
      },
      {
        "insn": 32838788,
        "free": 23478,
        "used": 320
      },
      {
        "insn": 32840472,
        "free": 23477,
        "used": 321
      },
      {
        "insn": 32842591,
        "free": 23476,
        "used": 322
      },
      {
        "insn": 32844449,
        "free": 23475,
        "used": 323
      },
      {
        "insn": 32853966,
        "free": 23474,
        "used": 324
      },
      {
        "insn": 32858002,
        "free": 23473,
        "used": 325
      },
      {
        "insn": 32859941,
        "free": 23472,
        "used": 326
      },
      {
        "insn": 32861799,
        "free": 23471,
        "used": 327
      },
      {
        "insn": 32863668,
        "free": 23470,
        "used": 328
      },
      {
        "insn": 32865548,
        "free": 23469,
        "used": 329
      },
      {
        "insn": 32867964,
        "free": 23468,
        "used": 330
      },
      {
        "insn": 32869882,
        "free": 23467,
        "used": 331
      },
      {
        "insn": 32872422,
        "free": 23466,
        "used": 332
      },
      {
        "insn": 32872885,
        "free": 23467,
        "used": 331
      },
      {
        "insn": 32872969,
        "free": 23468,
        "used": 330
      },
      {
        "insn": 32873058,
        "free": 23469,
        "used": 329
      },
      {
        "insn": 32873152,
        "free": 23470,
        "used": 328
      },
      {
        "insn": 32873251,
        "free": 23471,
        "used": 327
      },
      {
        "insn": 32873591,
        "free": 23472,
        "used": 326
      },
      {
        "insn": 32873749,
        "free": 23473,
        "used": 325
      },
      {
        "insn": 32873912,
        "free": 23474,
        "used": 324
      },
      {
        "insn": 32874274,
        "free": 23475,
        "used": 323
      },
      {
        "insn": 32874646,
        "free": 23476,
        "used": 322
      },
      {
        "insn": 32874824,
        "free": 23477,
        "used": 321
      },
      {
        "insn": 32875007,
        "free": 23478,
        "used": 320
      },
      {
        "insn": 32875195,
        "free": 23479,
        "used": 319
      },
      {
        "insn": 32875388,
        "free": 23480,
        "used": 318
      },
      {
        "insn": 32875808,
        "free": 23481,
        "used": 317
      },
      {
        "insn": 32876011,
        "free": 23482,
        "used": 316
      },
      {
        "insn": 32876441,
        "free": 23483,
        "used": 315
      },
      {
        "insn": 33008551,
        "free": 23482,
        "used": 316
      },
      {
        "insn": 33010434,
        "free": 23481,
        "used": 317
      },
      {
        "insn": 33012568,
        "free": 23480,
        "used": 318
      },
      {
        "insn": 33014533,
        "free": 23479,
        "used": 319
      },
      {
        "insn": 33016406,
        "free": 23478,
        "used": 320
      },
      {
        "insn": 33018090,
        "free": 23477,
        "used": 321
      },
      {
        "insn": 33020209,
        "free": 23476,
        "used": 322
      },
      {
        "insn": 33022067,
        "free": 23475,
        "used": 323
      },
      {
        "insn": 33031584,
        "free": 23474,
        "used": 324
      },
      {
        "insn": 33035620,
        "free": 23473,
        "used": 325
      },
      {
        "insn": 33037576,
        "free": 23472,
        "used": 326
      },
      {
        "insn": 33039434,
        "free": 23471,
        "used": 327
      },
      {
        "insn": 33041303,
        "free": 23470,
        "used": 328
      },
      {
        "insn": 33043183,
        "free": 23469,
        "used": 329
      },
      {
        "insn": 33045599,
        "free": 23468,
        "used": 330
      },
      {
        "insn": 33047517,
        "free": 23467,
        "used": 331
      },
      {
        "insn": 33050057,
        "free": 23466,
        "used": 332
      },
      {
        "insn": 33050520,
        "free": 23467,
        "used": 331
      },
      {
        "insn": 33050604,
        "free": 23468,
        "used": 330
      },
      {
        "insn": 33050693,
        "free": 23469,
        "used": 329
      },
      {
        "insn": 33050787,
        "free": 23470,
        "used": 328
      },
      {
        "insn": 33050886,
        "free": 23471,
        "used": 327
      },
      {
        "insn": 33051226,
        "free": 23472,
        "used": 326
      },
      {
        "insn": 33051384,
        "free": 23473,
        "used": 325
      },
      {
        "insn": 33051547,
        "free": 23474,
        "used": 324
      },
      {
        "insn": 33051909,
        "free": 23475,
        "used": 323
      },
      {
        "insn": 33052281,
        "free": 23476,
        "used": 322
      },
      {
        "insn": 33052459,
        "free": 23477,
        "used": 321
      },
      {
        "insn": 33052642,
        "free": 23478,
        "used": 320
      },
      {
        "insn": 33052830,
        "free": 23479,
        "used": 319
      },
      {
        "insn": 33053023,
        "free": 23480,
        "used": 318
      },
      {
        "insn": 33053443,
        "free": 23481,
        "used": 317
      },
      {
        "insn": 33053646,
        "free": 23482,
        "used": 316
      },
      {
        "insn": 33054076,
        "free": 23483,
        "used": 315
      },
      {
        "insn": 33186711,
        "free": 23482,
        "used": 316
      },
      {
        "insn": 33188594,
        "free": 23481,
        "used": 317
      },
      {
        "insn": 33190728,
        "free": 23480,
        "used": 318
      },
      {
        "insn": 33192693,
        "free": 23479,
        "used": 319
      },
      {
        "insn": 33194566,
        "free": 23478,
        "used": 320
      },
      {
        "insn": 33196250,
        "free": 23477,
        "used": 321
      },
      {
        "insn": 33198369,
        "free": 23476,
        "used": 322
      },
      {
        "insn": 33200227,
        "free": 23475,
        "used": 323
      },
      {
        "insn": 33209788,
        "free": 23474,
        "used": 324
      },
      {
        "insn": 33214044,
        "free": 23473,
        "used": 325
      },
      {
        "insn": 33215983,
        "free": 23472,
        "used": 326
      },
      {
        "insn": 33217841,
        "free": 23471,
        "used": 327
      },
      {
        "insn": 33219710,
        "free": 23470,
        "used": 328
      },
      {
        "insn": 33221590,
        "free": 23469,
        "used": 329
      },
      {
        "insn": 33224001,
        "free": 23468,
        "used": 330
      },
      {
        "insn": 33225919,
        "free": 23467,
        "used": 331
      },
      {
        "insn": 33228459,
        "free": 23466,
        "used": 332
      },
      {
        "insn": 33228922,
        "free": 23467,
        "used": 331
      },
      {
        "insn": 33229006,
        "free": 23468,
        "used": 330
      },
      {
        "insn": 33229095,
        "free": 23469,
        "used": 329
      },
      {
        "insn": 33229189,
        "free": 23470,
        "used": 328
      },
      {
        "insn": 33229288,
        "free": 23471,
        "used": 327
      },
      {
        "insn": 33229628,
        "free": 23472,
        "used": 326
      },
      {
        "insn": 33229786,
        "free": 23473,
        "used": 325
      },
      {
        "insn": 33229949,
        "free": 23474,
        "used": 324
      },
      {
        "insn": 33230311,
        "free": 23475,
        "used": 323
      },
      {
        "insn": 33230683,
        "free": 23476,
        "used": 322
      },
      {
        "insn": 33230861,
        "free": 23477,
        "used": 321
      },
      {
        "insn": 33231044,
        "free": 23478,
        "used": 320
      },
      {
        "insn": 33231232,
        "free": 23479,
        "used": 319
      },
      {
        "insn": 33231425,
        "free": 23480,
        "used": 318
      },
      {
        "insn": 33231827,
        "free": 23481,
        "used": 317
      },
      {
        "insn": 33232030,
        "free": 23482,
        "used": 316
      },
      {
        "insn": 33232483,
        "free": 23483,
        "used": 315
      },
      {
        "insn": 33392155,
        "free": 23482,
        "used": 316
      },
      {
        "insn": 33532557,
        "free": 23481,
        "used": 317
      },
      {
        "insn": 33534415,
        "free": 23480,
        "used": 318
      },
      {
        "insn": 33536284,
        "free": 23479,
        "used": 319
      },
      {
        "insn": 33538164,
        "free": 23478,
        "used": 320
      },
      {
        "insn": 33540055,
        "free": 23477,
        "used": 321
      },
      {
        "insn": 33541957,
        "free": 23476,
        "used": 322
      },
      {
        "insn": 33543870,
        "free": 23475,
        "used": 323
      },
      {
        "insn": 33545794,
        "free": 23474,
        "used": 324
      },
      {
        "insn": 33547729,
        "free": 23473,
        "used": 325
      },
      {
        "insn": 33549675,
        "free": 23472,
        "used": 326
      },
      {
        "insn": 33620186,
        "free": 23473,
        "used": 325
      },
      {
        "insn": 33620631,
        "free": 23474,
        "used": 324
      },
      {
        "insn": 33621071,
        "free": 23475,
        "used": 323
      },
      {
        "insn": 33621506,
        "free": 23476,
        "used": 322
      },
      {
        "insn": 33621936,
        "free": 23477,
        "used": 321
      },
      {
        "insn": 33622361,
        "free": 23478,
        "used": 320
      },
      {
        "insn": 33622783,
        "free": 23479,
        "used": 319
      },
      {
        "insn": 33623200,
        "free": 23480,
        "used": 318
      },
      {
        "insn": 33623612,
        "free": 23481,
        "used": 317
      },
      {
        "insn": 33624065,
        "free": 23482,
        "used": 316
      },
      {
        "insn": 33624443,
        "free": 23483,
        "used": 315
      },
      {
        "insn": 33852747,
        "free": 23484,
        "used": 314
      },
      {
        "insn": 33852965,
        "free": 23485,
        "used": 313
      },
      {
        "insn": 33853188,
        "free": 23486,
        "used": 312
      },
      {
        "insn": 33853610,
        "free": 23487,
        "used": 311
      },
      {
        "insn": 33854042,
        "free": 23488,
        "used": 310
      },
      {
        "insn": 33854280,
        "free": 23489,
        "used": 309
      },
      {
        "insn": 33854523,
        "free": 23490,
        "used": 308
      },
      {
        "insn": 33854771,
        "free": 23491,
        "used": 307
      },
      {
        "insn": 33855024,
        "free": 23492,
        "used": 306
      },
      {
        "insn": 33855486,
        "free": 23493,
        "used": 305
      },
      {
        "insn": 33855749,
        "free": 23494,
        "used": 304
      },
      {
        "insn": 33856434,
        "free": 23495,
        "used": 303
      },
      {
        "insn": 33878397,
        "free": 23494,
        "used": 304
      },
      {
        "insn": 33880280,
        "free": 23493,
        "used": 305
      },
      {
        "insn": 33882414,
        "free": 23492,
        "used": 306
      },
      {
        "insn": 33884379,
        "free": 23491,
        "used": 307
      },
      {
        "insn": 33886252,
        "free": 23490,
        "used": 308
      },
      {
        "insn": 33887936,
        "free": 23489,
        "used": 309
      },
      {
        "insn": 33890055,
        "free": 23488,
        "used": 310
      },
      {
        "insn": 33891913,
        "free": 23487,
        "used": 311
      },
      {
        "insn": 33901414,
        "free": 23486,
        "used": 312
      },
      {
        "insn": 33905631,
        "free": 23485,
        "used": 313
      },
      {
        "insn": 33907549,
        "free": 23484,
        "used": 314
      },
      {
        "insn": 33909407,
        "free": 23483,
        "used": 315
      },
      {
        "insn": 33911276,
        "free": 23482,
        "used": 316
      },
      {
        "insn": 33913156,
        "free": 23481,
        "used": 317
      },
      {
        "insn": 33915567,
        "free": 23480,
        "used": 318
      },
      {
        "insn": 33917506,
        "free": 23479,
        "used": 319
      },
      {
        "insn": 33920051,
        "free": 23478,
        "used": 320
      },
      {
        "insn": 33920574,
        "free": 23479,
        "used": 319
      },
      {
        "insn": 33920718,
        "free": 23480,
        "used": 318
      },
      {
        "insn": 33920867,
        "free": 23481,
        "used": 317
      },
      {
        "insn": 33921021,
        "free": 23482,
        "used": 316
      },
      {
        "insn": 33921180,
        "free": 23483,
        "used": 315
      },
      {
        "insn": 33921580,
        "free": 23484,
        "used": 314
      },
      {
        "insn": 33921798,
        "free": 23485,
        "used": 313
      },
      {
        "insn": 33922021,
        "free": 23486,
        "used": 312
      },
      {
        "insn": 33922448,
        "free": 23487,
        "used": 311
      },
      {
        "insn": 33922885,
        "free": 23488,
        "used": 310
      },
      {
        "insn": 33923123,
        "free": 23489,
        "used": 309
      },
      {
        "insn": 33923366,
        "free": 23490,
        "used": 308
      },
      {
        "insn": 33923614,
        "free": 23491,
        "used": 307
      },
      {
        "insn": 33923867,
        "free": 23492,
        "used": 306
      },
      {
        "insn": 33924334,
        "free": 23493,
        "used": 305
      },
      {
        "insn": 33924597,
        "free": 23494,
        "used": 304
      },
      {
        "insn": 33925110,
        "free": 23495,
        "used": 303
      },
      {
        "insn": 34046541,
        "free": 23494,
        "used": 304
      },
      {
        "insn": 34048425,
        "free": 23493,
        "used": 305
      },
      {
        "insn": 34050564,
        "free": 23492,
        "used": 306
      },
      {
        "insn": 34052320,
        "free": 23491,
        "used": 307
      },
      {
        "insn": 34054193,
        "free": 23490,
        "used": 308
      },
      {
        "insn": 34055877,
        "free": 23489,
        "used": 309
      },
      {
        "insn": 34057996,
        "free": 23488,
        "used": 310
      },
      {
        "insn": 34059854,
        "free": 23487,
        "used": 311
      },
      {
        "insn": 34069961,
        "free": 23486,
        "used": 312
      },
      {
        "insn": 34074639,
        "free": 23485,
        "used": 313
      },
      {
        "insn": 34076557,
        "free": 23484,
        "used": 314
      },
      {
        "insn": 34078415,
        "free": 23483,
        "used": 315
      },
      {
        "insn": 34080284,
        "free": 23482,
        "used": 316
      },
      {
        "insn": 34082164,
        "free": 23481,
        "used": 317
      },
      {
        "insn": 34097362,
        "free": 23480,
        "used": 318
      },
      {
        "insn": 34099318,
        "free": 23479,
        "used": 319
      },
      {
        "insn": 34107168,
        "free": 23478,
        "used": 320
      },
      {
        "insn": 34111942,
        "free": 23477,
        "used": 321
      },
      {
        "insn": 34113860,
        "free": 23476,
        "used": 322
      },
      {
        "insn": 34221208,
        "free": 23475,
        "used": 323
      },
      {
        "insn": 34223091,
        "free": 23474,
        "used": 324
      },
      {
        "insn": 34225230,
        "free": 23473,
        "used": 325
      },
      {
        "insn": 34227195,
        "free": 23472,
        "used": 326
      },
      {
        "insn": 34229089,
        "free": 23471,
        "used": 327
      },
      {
        "insn": 34230773,
        "free": 23470,
        "used": 328
      },
      {
        "insn": 34232930,
        "free": 23469,
        "used": 329
      },
      {
        "insn": 34234788,
        "free": 23468,
        "used": 330
      },
      {
        "insn": 34244787,
        "free": 23467,
        "used": 331
      },
      {
        "insn": 34249088,
        "free": 23466,
        "used": 332
      },
      {
        "insn": 34251024,
        "free": 23465,
        "used": 333
      },
      {
        "insn": 34252879,
        "free": 23464,
        "used": 334
      },
      {
        "insn": 34254745,
        "free": 23463,
        "used": 335
      },
      {
        "insn": 34256622,
        "free": 23462,
        "used": 336
      },
      {
        "insn": 34259030,
        "free": 23461,
        "used": 337
      },
      {
        "insn": 34260945,
        "free": 23460,
        "used": 338
      },
      {
        "insn": 34263503,
        "free": 23459,
        "used": 339
      },
      {
        "insn": 34263966,
        "free": 23460,
        "used": 338
      },
      {
        "insn": 34264050,
        "free": 23461,
        "used": 337
      },
      {
        "insn": 34264139,
        "free": 23462,
        "used": 336
      },
      {
        "insn": 34264233,
        "free": 23463,
        "used": 335
      },
      {
        "insn": 34264332,
        "free": 23464,
        "used": 334
      },
      {
        "insn": 34264672,
        "free": 23465,
        "used": 333
      },
      {
        "insn": 34264830,
        "free": 23466,
        "used": 332
      },
      {
        "insn": 34264993,
        "free": 23467,
        "used": 331
      },
      {
        "insn": 34265355,
        "free": 23468,
        "used": 330
      },
      {
        "insn": 34265727,
        "free": 23469,
        "used": 329
      },
      {
        "insn": 34265905,
        "free": 23470,
        "used": 328
      },
      {
        "insn": 34266088,
        "free": 23471,
        "used": 327
      },
      {
        "insn": 34266276,
        "free": 23472,
        "used": 326
      },
      {
        "insn": 34266469,
        "free": 23473,
        "used": 325
      },
      {
        "insn": 34266894,
        "free": 23474,
        "used": 324
      },
      {
        "insn": 34267097,
        "free": 23475,
        "used": 323
      },
      {
        "insn": 34267527,
        "free": 23476,
        "used": 322
      },
      {
        "insn": 34458986,
        "free": 23475,
        "used": 323
      },
      {
        "insn": 34460870,
        "free": 23474,
        "used": 324
      },
      {
        "insn": 34463030,
        "free": 23473,
        "used": 325
      },
      {
        "insn": 34464786,
        "free": 23472,
        "used": 326
      },
      {
        "insn": 34466659,
        "free": 23471,
        "used": 327
      },
      {
        "insn": 34468343,
        "free": 23470,
        "used": 328
      },
      {
        "insn": 34470495,
        "free": 23469,
        "used": 329
      },
      {
        "insn": 34472353,
        "free": 23468,
        "used": 330
      },
      {
        "insn": 34482481,
        "free": 23467,
        "used": 331
      },
      {
        "insn": 34487138,
        "free": 23466,
        "used": 332
      },
      {
        "insn": 34489077,
        "free": 23465,
        "used": 333
      },
      {
        "insn": 34490935,
        "free": 23464,
        "used": 334
      },
      {
        "insn": 34492804,
        "free": 23463,
        "used": 335
      },
      {
        "insn": 34494684,
        "free": 23462,
        "used": 336
      },
      {
        "insn": 34509882,
        "free": 23461,
        "used": 337
      },
      {
        "insn": 34511800,
        "free": 23460,
        "used": 338
      },
      {
        "insn": 34519645,
        "free": 23459,
        "used": 339
      },
      {
        "insn": 34524408,
        "free": 23458,
        "used": 340
      },
      {
        "insn": 34526344,
        "free": 23457,
        "used": 341
      },
      {
        "insn": 34619301,
        "free": 23456,
        "used": 342
      },
      {
        "insn": 34621181,
        "free": 23455,
        "used": 343
      },
      {
        "insn": 34623312,
        "free": 23454,
        "used": 344
      },
      {
        "insn": 34625274,
        "free": 23453,
        "used": 345
      },
      {
        "insn": 34627144,
        "free": 23452,
        "used": 346
      },
      {
        "insn": 34628825,
        "free": 23451,
        "used": 347
      },
      {
        "insn": 34630941,
        "free": 23450,
        "used": 348
      },
      {
        "insn": 34632796,
        "free": 23449,
        "used": 349
      },
      {
        "insn": 34642265,
        "free": 23448,
        "used": 350
      },
      {
        "insn": 34646328,
        "free": 23447,
        "used": 351
      },
      {
        "insn": 34648281,
        "free": 23446,
        "used": 352
      },
      {
        "insn": 34650136,
        "free": 23445,
        "used": 353
      },
      {
        "insn": 34652002,
        "free": 23444,
        "used": 354
      },
      {
        "insn": 34653879,
        "free": 23443,
        "used": 355
      },
      {
        "insn": 34656287,
        "free": 23442,
        "used": 356
      },
      {
        "insn": 34658202,
        "free": 23441,
        "used": 357
      },
      {
        "insn": 34660739,
        "free": 23440,
        "used": 358
      },
      {
        "insn": 34661202,
        "free": 23441,
        "used": 357
      },
      {
        "insn": 34661286,
        "free": 23442,
        "used": 356
      },
      {
        "insn": 34661375,
        "free": 23443,
        "used": 355
      },
      {
        "insn": 34661469,
        "free": 23444,
        "used": 354
      },
      {
        "insn": 34661568,
        "free": 23445,
        "used": 353
      },
      {
        "insn": 34661903,
        "free": 23446,
        "used": 352
      },
      {
        "insn": 34662061,
        "free": 23447,
        "used": 351
      },
      {
        "insn": 34662224,
        "free": 23448,
        "used": 350
      },
      {
        "insn": 34662586,
        "free": 23449,
        "used": 349
      },
      {
        "insn": 34662958,
        "free": 23450,
        "used": 348
      },
      {
        "insn": 34663136,
        "free": 23451,
        "used": 347
      },
      {
        "insn": 34663319,
        "free": 23452,
        "used": 346
      },
      {
        "insn": 34663507,
        "free": 23453,
        "used": 345
      },
      {
        "insn": 34663700,
        "free": 23454,
        "used": 344
      },
      {
        "insn": 34664120,
        "free": 23455,
        "used": 343
      },
      {
        "insn": 34664323,
        "free": 23456,
        "used": 342
      },
      {
        "insn": 34664753,
        "free": 23457,
        "used": 341
      },
      {
        "insn": 34751860,
        "free": 23456,
        "used": 342
      },
      {
        "insn": 34753744,
        "free": 23455,
        "used": 343
      },
      {
        "insn": 34755883,
        "free": 23454,
        "used": 344
      },
      {
        "insn": 34757639,
        "free": 23453,
        "used": 345
      },
      {
        "insn": 34759512,
        "free": 23452,
        "used": 346
      },
      {
        "insn": 34761196,
        "free": 23451,
        "used": 347
      },
      {
        "insn": 34763315,
        "free": 23450,
        "used": 348
      },
      {
        "insn": 34765173,
        "free": 23449,
        "used": 349
      },
      {
        "insn": 34775301,
        "free": 23448,
        "used": 350
      },
      {
        "insn": 34779958,
        "free": 23447,
        "used": 351
      },
      {
        "insn": 34781914,
        "free": 23446,
        "used": 352
      },
      {
        "insn": 34783772,
        "free": 23445,
        "used": 353
      },
      {
        "insn": 34785641,
        "free": 23444,
        "used": 354
      },
      {
        "insn": 34787521,
        "free": 23443,
        "used": 355
      },
      {
        "insn": 34802719,
        "free": 23442,
        "used": 356
      },
      {
        "insn": 34804637,
        "free": 23441,
        "used": 357
      },
      {
        "insn": 34812482,
        "free": 23440,
        "used": 358
      },
      {
        "insn": 34817245,
        "free": 23439,
        "used": 359
      },
      {
        "insn": 34819232,
        "free": 23438,
        "used": 360
      },
      {
        "insn": 34867108,
        "free": 23437,
        "used": 361
      },
      {
        "insn": 34868989,
        "free": 23436,
        "used": 362
      },
      {
        "insn": 34871163,
        "free": 23435,
        "used": 363
      },
      {
        "insn": 34872916,
        "free": 23434,
        "used": 364
      },
      {
        "insn": 34874786,
        "free": 23433,
        "used": 365
      },
      {
        "insn": 34876467,
        "free": 23432,
        "used": 366
      },
      {
        "insn": 34878611,
        "free": 23431,
        "used": 367
      },
      {
        "insn": 34880466,
        "free": 23430,
        "used": 368
      },
      {
        "insn": 34890608,
        "free": 23429,
        "used": 369
      },
      {
        "insn": 34895262,
        "free": 23428,
        "used": 370
      },
      {
        "insn": 34897198,
        "free": 23427,
        "used": 371
      },
      {
        "insn": 34899053,
        "free": 23426,
        "used": 372
      },
      {
        "insn": 34900919,
        "free": 23425,
        "used": 373
      },
      {
        "insn": 34902796,
        "free": 23424,
        "used": 374
      },
      {
        "insn": 34917991,
        "free": 23423,
        "used": 375
      },
      {
        "insn": 34919906,
        "free": 23422,
        "used": 376
      },
      {
        "insn": 34927786,
        "free": 23421,
        "used": 377
      },
      {
        "insn": 34932549,
        "free": 23420,
        "used": 378
      },
      {
        "insn": 34934485,
        "free": 23419,
        "used": 379
      },
      {
        "insn": 34981865,
        "free": 23418,
        "used": 380
      },
      {
        "insn": 34983746,
        "free": 23417,
        "used": 381
      },
      {
        "insn": 34985903,
        "free": 23416,
        "used": 382
      },
      {
        "insn": 34987656,
        "free": 23415,
        "used": 383
      },
      {
        "insn": 34989526,
        "free": 23414,
        "used": 384
      },
      {
        "insn": 34991207,
        "free": 23413,
        "used": 385
      },
      {
        "insn": 34993411,
        "free": 23412,
        "used": 386
      },
      {
        "insn": 34995266,
        "free": 23411,
        "used": 387
      },
      {
        "insn": 35005370,
        "free": 23410,
        "used": 388
      },
      {
        "insn": 35010130,
        "free": 23409,
        "used": 389
      },
      {
        "insn": 35012045,
        "free": 23408,
        "used": 390
      },
      {
        "insn": 35013900,
        "free": 23407,
        "used": 391
      },
      {
        "insn": 35015766,
        "free": 23406,
        "used": 392
      },
      {
        "insn": 35017643,
        "free": 23405,
        "used": 393
      },
      {
        "insn": 35032838,
        "free": 23404,
        "used": 394
      },
      {
        "insn": 35034774,
        "free": 23403,
        "used": 395
      },
      {
        "insn": 35042642,
        "free": 23402,
        "used": 396
      },
      {
        "insn": 35047405,
        "free": 23401,
        "used": 397
      },
      {
        "insn": 35049320,
        "free": 23400,
        "used": 398
      },
      {
        "insn": 35096684,
        "free": 23399,
        "used": 399
      },
      {
        "insn": 35098565,
        "free": 23398,
        "used": 400
      },
      {
        "insn": 35100722,
        "free": 23397,
        "used": 401
      },
      {
        "insn": 35102475,
        "free": 23396,
        "used": 402
      },
      {
        "insn": 35104400,
        "free": 23395,
        "used": 403
      },
      {
        "insn": 35106081,
        "free": 23394,
        "used": 404
      },
      {
        "insn": 35108225,
        "free": 23393,
        "used": 405
      },
      {
        "insn": 35110080,
        "free": 23392,
        "used": 406
      },
      {
        "insn": 35120184,
        "free": 23391,
        "used": 407
      },
      {
        "insn": 35124859,
        "free": 23390,
        "used": 408
      },
      {
        "insn": 35126774,
        "free": 23389,
        "used": 409
      },
      {
        "insn": 35128629,
        "free": 23388,
        "used": 410
      },
      {
        "insn": 35130495,
        "free": 23387,
        "used": 411
      },
      {
        "insn": 35132372,
        "free": 23386,
        "used": 412
      },
      {
        "insn": 35147567,
        "free": 23385,
        "used": 413
      },
      {
        "insn": 35149520,
        "free": 23384,
        "used": 414
      },
      {
        "insn": 35157367,
        "free": 23383,
        "used": 415
      },
      {
        "insn": 35162130,
        "free": 23382,
        "used": 416
      },
      {
        "insn": 35164045,
        "free": 23381,
        "used": 417
      },
      {
        "insn": 35212047,
        "free": 23380,
        "used": 418
      },
      {
        "insn": 35213928,
        "free": 23379,
        "used": 419
      },
      {
        "insn": 35216085,
        "free": 23378,
        "used": 420
      },
      {
        "insn": 35217838,
        "free": 23377,
        "used": 421
      },
      {
        "insn": 35219708,
        "free": 23376,
        "used": 422
      },
      {
        "insn": 35221389,
        "free": 23375,
        "used": 423
      },
      {
        "insn": 35223559,
        "free": 23374,
        "used": 424
      },
      {
        "insn": 35225414,
        "free": 23373,
        "used": 425
      },
      {
        "insn": 35235556,
        "free": 23372,
        "used": 426
      },
      {
        "insn": 35240210,
        "free": 23371,
        "used": 427
      },
      {
        "insn": 35242146,
        "free": 23370,
        "used": 428
      },
      {
        "insn": 35244001,
        "free": 23369,
        "used": 429
      },
      {
        "insn": 35245867,
        "free": 23368,
        "used": 430
      },
      {
        "insn": 35247744,
        "free": 23367,
        "used": 431
      },
      {
        "insn": 35262939,
        "free": 23366,
        "used": 432
      },
      {
        "insn": 35264854,
        "free": 23365,
        "used": 433
      },
      {
        "insn": 35272734,
        "free": 23364,
        "used": 434
      },
      {
        "insn": 35277497,
        "free": 23363,
        "used": 435
      },
      {
        "insn": 35279433,
        "free": 23362,
        "used": 436
      },
      {
        "insn": 35327223,
        "free": 23361,
        "used": 437
      },
      {
        "insn": 35329104,
        "free": 23360,
        "used": 438
      },
      {
        "insn": 35331240,
        "free": 23359,
        "used": 439
      },
      {
        "insn": 35332993,
        "free": 23358,
        "used": 440
      },
      {
        "insn": 35334863,
        "free": 23357,
        "used": 441
      },
      {
        "insn": 35336544,
        "free": 23356,
        "used": 442
      },
      {
        "insn": 35338660,
        "free": 23355,
        "used": 443
      },
      {
        "insn": 35340515,
        "free": 23354,
        "used": 444
      },
      {
        "insn": 35350640,
        "free": 23353,
        "used": 445
      },
      {
        "insn": 35355294,
        "free": 23352,
        "used": 446
      },
      {
        "insn": 35357298,
        "free": 23351,
        "used": 447
      },
      {
        "insn": 35359153,
        "free": 23350,
        "used": 448
      },
      {
        "insn": 35361019,
        "free": 23349,
        "used": 449
      },
      {
        "insn": 35362896,
        "free": 23348,
        "used": 450
      },
      {
        "insn": 35378091,
        "free": 23347,
        "used": 451
      },
      {
        "insn": 35380006,
        "free": 23346,
        "used": 452
      },
      {
        "insn": 35387848,
        "free": 23345,
        "used": 453
      },
      {
        "insn": 35392611,
        "free": 23344,
        "used": 454
      },
      {
        "insn": 35394564,
        "free": 23343,
        "used": 455
      },
      {
        "insn": 35441972,
        "free": 23342,
        "used": 456
      },
      {
        "insn": 35443853,
        "free": 23341,
        "used": 457
      },
      {
        "insn": 35445989,
        "free": 23340,
        "used": 458
      },
      {
        "insn": 35447742,
        "free": 23339,
        "used": 459
      },
      {
        "insn": 35449612,
        "free": 23338,
        "used": 460
      },
      {
        "insn": 35451293,
        "free": 23337,
        "used": 461
      },
      {
        "insn": 35453430,
        "free": 23336,
        "used": 462
      },
      {
        "insn": 35455285,
        "free": 23335,
        "used": 463
      },
      {
        "insn": 35465444,
        "free": 23334,
        "used": 464
      },
      {
        "insn": 35470098,
        "free": 23333,
        "used": 465
      },
      {
        "insn": 35472034,
        "free": 23332,
        "used": 466
      },
      {
        "insn": 35473889,
        "free": 23331,
        "used": 467
      },
      {
        "insn": 35475755,
        "free": 23330,
        "used": 468
      },
      {
        "insn": 35477632,
        "free": 23329,
        "used": 469
      },
      {
        "insn": 35492827,
        "free": 23328,
        "used": 470
      },
      {
        "insn": 35494742,
        "free": 23327,
        "used": 471
      },
      {
        "insn": 35502605,
        "free": 23326,
        "used": 472
      },
      {
        "insn": 35507368,
        "free": 23325,
        "used": 473
      },
      {
        "insn": 35509304,
        "free": 23324,
        "used": 474
      },
      {
        "insn": 35556718,
        "free": 23323,
        "used": 475
      },
      {
        "insn": 35558599,
        "free": 23322,
        "used": 476
      },
      {
        "insn": 35560735,
        "free": 23321,
        "used": 477
      },
      {
        "insn": 35562488,
        "free": 23320,
        "used": 478
      },
      {
        "insn": 35564358,
        "free": 23319,
        "used": 479
      },
      {
        "insn": 35566039,
        "free": 23318,
        "used": 480
      },
      {
        "insn": 35568155,
        "free": 23317,
        "used": 481
      },
      {
        "insn": 35570010,
        "free": 23316,
        "used": 482
      },
      {
        "insn": 35580135,
        "free": 23315,
        "used": 483
      },
      {
        "insn": 35584789,
        "free": 23314,
        "used": 484
      },
      {
        "insn": 35586742,
        "free": 23313,
        "used": 485
      },
      {
        "insn": 35588597,
        "free": 23312,
        "used": 486
      },
      {
        "insn": 35590463,
        "free": 23311,
        "used": 487
      },
      {
        "insn": 35592340,
        "free": 23310,
        "used": 488
      },
      {
        "insn": 35607535,
        "free": 23309,
        "used": 489
      },
      {
        "insn": 35609450,
        "free": 23308,
        "used": 490
      },
      {
        "insn": 35617292,
        "free": 23307,
        "used": 491
      },
      {
        "insn": 35622055,
        "free": 23306,
        "used": 492
      },
      {
        "insn": 35624025,
        "free": 23305,
        "used": 493
      },
      {
        "insn": 35671478,
        "free": 23304,
        "used": 494
      },
      {
        "insn": 35673359,
        "free": 23303,
        "used": 495
      },
      {
        "insn": 35675495,
        "free": 23302,
        "used": 496
      },
      {
        "insn": 35677248,
        "free": 23301,
        "used": 497
      },
      {
        "insn": 35679118,
        "free": 23300,
        "used": 498
      },
      {
        "insn": 35680799,
        "free": 23299,
        "used": 499
      },
      {
        "insn": 35682987,
        "free": 23298,
        "used": 500
      },
      {
        "insn": 35684842,
        "free": 23297,
        "used": 501
      },
      {
        "insn": 35694946,
        "free": 23296,
        "used": 502
      },
      {
        "insn": 35699621,
        "free": 23295,
        "used": 503
      },
      {
        "insn": 35701536,
        "free": 23294,
        "used": 504
      },
      {
        "insn": 35703391,
        "free": 23293,
        "used": 505
      },
      {
        "insn": 35705257,
        "free": 23292,
        "used": 506
      },
      {
        "insn": 35707134,
        "free": 23291,
        "used": 507
      },
      {
        "insn": 35722329,
        "free": 23290,
        "used": 508
      },
      {
        "insn": 35724384,
        "free": 23289,
        "used": 509
      },
      {
        "insn": 35732231,
        "free": 23288,
        "used": 510
      },
      {
        "insn": 35736994,
        "free": 23287,
        "used": 511
      },
      {
        "insn": 35738909,
        "free": 23286,
        "used": 512
      },
      {
        "insn": 35874574,
        "free": 23287,
        "used": 511
      },
      {
        "insn": 35874707,
        "free": 23288,
        "used": 510
      },
      {
        "insn": 35874845,
        "free": 23289,
        "used": 509
      },
      {
        "insn": 35875182,
        "free": 23290,
        "used": 508
      },
      {
        "insn": 35875529,
        "free": 23291,
        "used": 507
      },
      {
        "insn": 35875682,
        "free": 23292,
        "used": 506
      },
      {
        "insn": 35875840,
        "free": 23293,
        "used": 505
      },
      {
        "insn": 35876003,
        "free": 23294,
        "used": 504
      },
      {
        "insn": 35876171,
        "free": 23295,
        "used": 503
      },
      {
        "insn": 35876548,
        "free": 23296,
        "used": 502
      },
      {
        "insn": 35876726,
        "free": 23297,
        "used": 501
      },
      {
        "insn": 35877159,
        "free": 23298,
        "used": 500
      },
      {
        "insn": 35937974,
        "free": 23299,
        "used": 499
      },
      {
        "insn": 35938167,
        "free": 23300,
        "used": 498
      },
      {
        "insn": 35938365,
        "free": 23301,
        "used": 497
      },
      {
        "insn": 35938767,
        "free": 23302,
        "used": 496
      },
      {
        "insn": 35939179,
        "free": 23303,
        "used": 495
      },
      {
        "insn": 35939392,
        "free": 23304,
        "used": 494
      },
      {
        "insn": 35939610,
        "free": 23305,
        "used": 493
      },
      {
        "insn": 35939833,
        "free": 23306,
        "used": 492
      },
      {
        "insn": 35940061,
        "free": 23307,
        "used": 491
      },
      {
        "insn": 35940503,
        "free": 23308,
        "used": 490
      },
      {
        "insn": 35940741,
        "free": 23309,
        "used": 489
      },
      {
        "insn": 35941244,
        "free": 23310,
        "used": 488
      },
      {
        "insn": 36001848,
        "free": 23311,
        "used": 487
      },
      {
        "insn": 36002101,
        "free": 23312,
        "used": 486
      },
      {
        "insn": 36002359,
        "free": 23313,
        "used": 485
      },
      {
        "insn": 36002826,
        "free": 23314,
        "used": 484
      },
      {
        "insn": 36003303,
        "free": 23315,
        "used": 483
      },
      {
        "insn": 36003576,
        "free": 23316,
        "used": 482
      },
      {
        "insn": 36003854,
        "free": 23317,
        "used": 481
      },
      {
        "insn": 36004137,
        "free": 23318,
        "used": 480
      },
      {
        "insn": 36004996,
        "free": 23319,
        "used": 479
      },
      {
        "insn": 36005508,
        "free": 23320,
        "used": 478
      },
      {
        "insn": 36005806,
        "free": 23321,
        "used": 477
      },
      {
        "insn": 36006374,
        "free": 23322,
        "used": 476
      },
      {
        "insn": 36067024,
        "free": 23323,
        "used": 475
      },
      {
        "insn": 36067337,
        "free": 23324,
        "used": 474
      },
      {
        "insn": 36067655,
        "free": 23325,
        "used": 473
      },
      {
        "insn": 36068192,
        "free": 23326,
        "used": 472
      },
      {
        "insn": 36068739,
        "free": 23327,
        "used": 471
      },
      {
        "insn": 36069072,
        "free": 23328,
        "used": 470
      },
      {
        "insn": 36069410,
        "free": 23329,
        "used": 469
      },
      {
        "insn": 36069753,
        "free": 23330,
        "used": 468
      },
      {
        "insn": 36070101,
        "free": 23331,
        "used": 467
      },
      {
        "insn": 36070696,
        "free": 23332,
        "used": 466
      },
      {
        "insn": 36071054,
        "free": 23333,
        "used": 465
      },
      {
        "insn": 36071659,
        "free": 23334,
        "used": 464
      },
      {
        "insn": 36132311,
        "free": 23335,
        "used": 463
      },
      {
        "insn": 36132684,
        "free": 23336,
        "used": 462
      },
      {
        "insn": 36133062,
        "free": 23337,
        "used": 461
      },
      {
        "insn": 36133674,
        "free": 23338,
        "used": 460
      },
      {
        "insn": 36134296,
        "free": 23339,
        "used": 459
      },
      {
        "insn": 36134689,
        "free": 23340,
        "used": 458
      },
      {
        "insn": 36135087,
        "free": 23341,
        "used": 457
      },
      {
        "insn": 36135490,
        "free": 23342,
        "used": 456
      },
      {
        "insn": 36135898,
        "free": 23343,
        "used": 455
      },
      {
        "insn": 36136558,
        "free": 23344,
        "used": 454
      },
      {
        "insn": 36136976,
        "free": 23345,
        "used": 453
      },
      {
        "insn": 36137656,
        "free": 23346,
        "used": 452
      },
      {
        "insn": 36198377,
        "free": 23347,
        "used": 451
      },
      {
        "insn": 36198810,
        "free": 23348,
        "used": 450
      },
      {
        "insn": 36199248,
        "free": 23349,
        "used": 449
      },
      {
        "insn": 36199925,
        "free": 23350,
        "used": 448
      },
      {
        "insn": 36201348,
        "free": 23351,
        "used": 447
      },
      {
        "insn": 36201801,
        "free": 23352,
        "used": 446
      },
      {
        "insn": 36202259,
        "free": 23353,
        "used": 445
      },
      {
        "insn": 36202722,
        "free": 23354,
        "used": 444
      },
      {
        "insn": 36203190,
        "free": 23355,
        "used": 443
      },
      {
        "insn": 36203907,
        "free": 23356,
        "used": 442
      },
      {
        "insn": 36204385,
        "free": 23357,
        "used": 441
      },
      {
        "insn": 36205143,
        "free": 23358,
        "used": 440
      },
      {
        "insn": 36265892,
        "free": 23359,
        "used": 439
      },
      {
        "insn": 36266385,
        "free": 23360,
        "used": 438
      },
      {
        "insn": 36266883,
        "free": 23361,
        "used": 437
      },
      {
        "insn": 36267625,
        "free": 23362,
        "used": 436
      },
      {
        "insn": 36268377,
        "free": 23363,
        "used": 435
      },
      {
        "insn": 36268890,
        "free": 23364,
        "used": 434
      },
      {
        "insn": 36269408,
        "free": 23365,
        "used": 433
      },
      {
        "insn": 36269931,
        "free": 23366,
        "used": 432
      },
      {
        "insn": 36270459,
        "free": 23367,
        "used": 431
      },
      {
        "insn": 36271241,
        "free": 23368,
        "used": 430
      },
      {
        "insn": 36271779,
        "free": 23369,
        "used": 429
      },
      {
        "insn": 36272597,
        "free": 23370,
        "used": 428
      },
      {
        "insn": 36333381,
        "free": 23371,
        "used": 427
      },
      {
        "insn": 36333934,
        "free": 23372,
        "used": 426
      },
      {
        "insn": 36334492,
        "free": 23373,
        "used": 425
      },
      {
        "insn": 36335299,
        "free": 23374,
        "used": 424
      },
      {
        "insn": 36336116,
        "free": 23375,
        "used": 423
      },
      {
        "insn": 36336689,
        "free": 23376,
        "used": 422
      },
      {
        "insn": 36337267,
        "free": 23377,
        "used": 421
      },
      {
        "insn": 36337850,
        "free": 23378,
        "used": 420
      },
      {
        "insn": 36338438,
        "free": 23379,
        "used": 419
      },
      {
        "insn": 36339285,
        "free": 23380,
        "used": 418
      },
      {
        "insn": 36339883,
        "free": 23381,
        "used": 417
      },
      {
        "insn": 36340771,
        "free": 23382,
        "used": 416
      },
      {
        "insn": 36401591,
        "free": 23383,
        "used": 415
      },
      {
        "insn": 36402204,
        "free": 23384,
        "used": 414
      },
      {
        "insn": 36402822,
        "free": 23385,
        "used": 413
      },
      {
        "insn": 36403694,
        "free": 23386,
        "used": 412
      },
      {
        "insn": 36404576,
        "free": 23387,
        "used": 411
      },
      {
        "insn": 36405209,
        "free": 23388,
        "used": 410
      },
      {
        "insn": 36405847,
        "free": 23389,
        "used": 409
      },
      {
        "insn": 36406490,
        "free": 23390,
        "used": 408
      },
      {
        "insn": 36407138,
        "free": 23391,
        "used": 407
      },
      {
        "insn": 36408050,
        "free": 23392,
        "used": 406
      },
      {
        "insn": 36408708,
        "free": 23393,
        "used": 405
      },
      {
        "insn": 36409656,
        "free": 23394,
        "used": 404
      },
      {
        "insn": 36470516,
        "free": 23395,
        "used": 403
      },
      {
        "insn": 36471189,
        "free": 23396,
        "used": 402
      },
      {
        "insn": 36471867,
        "free": 23397,
        "used": 401
      },
      {
        "insn": 36472804,
        "free": 23398,
        "used": 400
      },
      {
        "insn": 36473751,
        "free": 23399,
        "used": 399
      },
      {
        "insn": 36474444,
        "free": 23400,
        "used": 398
      },
      {
        "insn": 36475142,
        "free": 23401,
        "used": 397
      },
      {
        "insn": 36475845,
        "free": 23402,
        "used": 396
      },
      {
        "insn": 36476553,
        "free": 23403,
        "used": 395
      },
      {
        "insn": 36477538,
        "free": 23404,
        "used": 394
      },
      {
        "insn": 36478256,
        "free": 23405,
        "used": 393
      },
      {
        "insn": 36479261,
        "free": 23406,
        "used": 392
      },
      {
        "insn": 40627839,
        "free": 23407,
        "used": 391
      },
      {
        "insn": 40628742,
        "free": 23408,
        "used": 390
      },
      {
        "insn": 40630096,
        "free": 23409,
        "used": 389
      },
      {
        "insn": 40630790,
        "free": 23410,
        "used": 388
      },
      {
        "insn": 40631489,
        "free": 23411,
        "used": 387
      },
      {
        "insn": 40632193,
        "free": 23412,
        "used": 386
      },
      {
        "insn": 40632902,
        "free": 23413,
        "used": 385
      },
      {
        "insn": 40704789,
        "free": 23414,
        "used": 384
      },
      {
        "insn": 40706603,
        "free": 23415,
        "used": 383
      },
      {
        "insn": 40707376,
        "free": 23416,
        "used": 382
      },
      {
        "insn": 40708428,
        "free": 23417,
        "used": 381
      },
      {
        "insn": 40709490,
        "free": 23418,
        "used": 380
      },
      {
        "insn": 40710278,
        "free": 23419,
        "used": 379
      },
      {
        "insn": 40711071,
        "free": 23420,
        "used": 378
      },
      {
        "insn": 40711869,
        "free": 23421,
        "used": 377
      },
      {
        "insn": 40712672,
        "free": 23422,
        "used": 376
      },
      {
        "insn": 40713764,
        "free": 23423,
        "used": 375
      },
      {
        "insn": 40714577,
        "free": 23424,
        "used": 374
      },
      {
        "insn": 40715705,
        "free": 23425,
        "used": 373
      },
      {
        "insn": 40735552,
        "free": 23424,
        "used": 374
      },
      {
        "insn": 40737436,
        "free": 23423,
        "used": 375
      },
      {
        "insn": 40739575,
        "free": 23422,
        "used": 376
      },
      {
        "insn": 40741331,
        "free": 23421,
        "used": 377
      },
      {
        "insn": 40743204,
        "free": 23420,
        "used": 378
      },
      {
        "insn": 40744888,
        "free": 23419,
        "used": 379
      },
      {
        "insn": 40747007,
        "free": 23418,
        "used": 380
      },
      {
        "insn": 40748865,
        "free": 23417,
        "used": 381
      },
      {
        "insn": 40758972,
        "free": 23416,
        "used": 382
      },
      {
        "insn": 40763629,
        "free": 23415,
        "used": 383
      },
      {
        "insn": 40765547,
        "free": 23414,
        "used": 384
      },
      {
        "insn": 40767405,
        "free": 23413,
        "used": 385
      },
      {
        "insn": 40769274,
        "free": 23412,
        "used": 386
      },
      {
        "insn": 40771154,
        "free": 23411,
        "used": 387
      },
      {
        "insn": 40786352,
        "free": 23410,
        "used": 388
      },
      {
        "insn": 40788270,
        "free": 23409,
        "used": 389
      },
      {
        "insn": 40796175,
        "free": 23408,
        "used": 390
      },
      {
        "insn": 40800949,
        "free": 23407,
        "used": 391
      },
      {
        "insn": 40802867,
        "free": 23406,
        "used": 392
      },
      {
        "insn": 40850234,
        "free": 23405,
        "used": 393
      },
      {
        "insn": 40852118,
        "free": 23404,
        "used": 394
      },
      {
        "insn": 40854257,
        "free": 23403,
        "used": 395
      },
      {
        "insn": 40856013,
        "free": 23402,
        "used": 396
      },
      {
        "insn": 40857886,
        "free": 23401,
        "used": 397
      },
      {
        "insn": 40859570,
        "free": 23400,
        "used": 398
      },
      {
        "insn": 40861689,
        "free": 23399,
        "used": 399
      },
      {
        "insn": 40863547,
        "free": 23398,
        "used": 400
      },
      {
        "insn": 40873654,
        "free": 23397,
        "used": 401
      },
      {
        "insn": 40878311,
        "free": 23396,
        "used": 402
      },
      {
        "insn": 40880229,
        "free": 23395,
        "used": 403
      },
      {
        "insn": 40882087,
        "free": 23394,
        "used": 404
      },
      {
        "insn": 40883956,
        "free": 23393,
        "used": 405
      },
      {
        "insn": 40885836,
        "free": 23392,
        "used": 406
      },
      {
        "insn": 40901034,
        "free": 23391,
        "used": 407
      },
      {
        "insn": 40902952,
        "free": 23390,
        "used": 408
      },
      {
        "insn": 40910827,
        "free": 23389,
        "used": 409
      },
      {
        "insn": 40915593,
        "free": 23388,
        "used": 410
      },
      {
        "insn": 40917511,
        "free": 23387,
        "used": 411
      },
      {
        "insn": 40964873,
        "free": 23386,
        "used": 412
      },
      {
        "insn": 40966757,
        "free": 23385,
        "used": 413
      },
      {
        "insn": 40968896,
        "free": 23384,
        "used": 414
      },
      {
        "insn": 40970652,
        "free": 23383,
        "used": 415
      },
      {
        "insn": 40972525,
        "free": 23382,
        "used": 416
      },
      {
        "insn": 40974209,
        "free": 23381,
        "used": 417
      },
      {
        "insn": 40976328,
        "free": 23380,
        "used": 418
      },
      {
        "insn": 40978186,
        "free": 23379,
        "used": 419
      },
      {
        "insn": 40988293,
        "free": 23378,
        "used": 420
      },
      {
        "insn": 40992950,
        "free": 23377,
        "used": 421
      },
      {
        "insn": 40994868,
        "free": 23376,
        "used": 422
      },
      {
        "insn": 40996726,
        "free": 23375,
        "used": 423
      },
      {
        "insn": 40998595,
        "free": 23374,
        "used": 424
      },
      {
        "insn": 41000475,
        "free": 23373,
        "used": 425
      },
      {
        "insn": 41015673,
        "free": 23372,
        "used": 426
      },
      {
        "insn": 41017591,
        "free": 23371,
        "used": 427
      },
      {
        "insn": 41025436,
        "free": 23370,
        "used": 428
      },
      {
        "insn": 41030202,
        "free": 23369,
        "used": 429
      },
      {
        "insn": 41032141,
        "free": 23368,
        "used": 430
      },
      {
        "insn": 41079597,
        "free": 23367,
        "used": 431
      },
      {
        "insn": 41081481,
        "free": 23366,
        "used": 432
      },
      {
        "insn": 41083620,
        "free": 23365,
        "used": 433
      },
      {
        "insn": 41085376,
        "free": 23364,
        "used": 434
      },
      {
        "insn": 41087249,
        "free": 23363,
        "used": 435
      },
      {
        "insn": 41088933,
        "free": 23362,
        "used": 436
      },
      {
        "insn": 41091107,
        "free": 23361,
        "used": 437
      },
      {
        "insn": 41092965,
        "free": 23360,
        "used": 438
      },
      {
        "insn": 41103072,
        "free": 23359,
        "used": 439
      },
      {
        "insn": 41107750,
        "free": 23358,
        "used": 440
      },
      {
        "insn": 41109668,
        "free": 23357,
        "used": 441
      },
      {
        "insn": 41111526,
        "free": 23356,
        "used": 442
      },
      {
        "insn": 41113395,
        "free": 23355,
        "used": 443
      },
      {
        "insn": 41115275,
        "free": 23354,
        "used": 444
      },
      {
        "insn": 41130473,
        "free": 23353,
        "used": 445
      },
      {
        "insn": 41132412,
        "free": 23352,
        "used": 446
      },
      {
        "insn": 41140262,
        "free": 23351,
        "used": 447
      },
      {
        "insn": 41145028,
        "free": 23350,
        "used": 448
      },
      {
        "insn": 41146946,
        "free": 23349,
        "used": 449
      },
      {
        "insn": 41194308,
        "free": 23348,
        "used": 450
      },
      {
        "insn": 41196192,
        "free": 23347,
        "used": 451
      },
      {
        "insn": 41198331,
        "free": 23346,
        "used": 452
      },
      {
        "insn": 41200087,
        "free": 23345,
        "used": 453
      },
      {
        "insn": 41201981,
        "free": 23344,
        "used": 454
      },
      {
        "insn": 41203665,
        "free": 23343,
        "used": 455
      },
      {
        "insn": 41205784,
        "free": 23342,
        "used": 456
      },
      {
        "insn": 41207642,
        "free": 23341,
        "used": 457
      },
      {
        "insn": 41217749,
        "free": 23340,
        "used": 458
      },
      {
        "insn": 41222444,
        "free": 23339,
        "used": 459
      },
      {
        "insn": 41224362,
        "free": 23338,
        "used": 460
      },
      {
        "insn": 41226220,
        "free": 23337,
        "used": 461
      },
      {
        "insn": 41228089,
        "free": 23336,
        "used": 462
      },
      {
        "insn": 41229969,
        "free": 23335,
        "used": 463
      },
      {
        "insn": 41245167,
        "free": 23334,
        "used": 464
      },
      {
        "insn": 41247106,
        "free": 23333,
        "used": 465
      },
      {
        "insn": 41254977,
        "free": 23332,
        "used": 466
      },
      {
        "insn": 41259743,
        "free": 23331,
        "used": 467
      },
      {
        "insn": 41261661,
        "free": 23330,
        "used": 468
      },
      {
        "insn": 41310424,
        "free": 23329,
        "used": 469
      },
      {
        "insn": 41312308,
        "free": 23328,
        "used": 470
      },
      {
        "insn": 41314447,
        "free": 23327,
        "used": 471
      },
      {
        "insn": 41316203,
        "free": 23326,
        "used": 472
      },
      {
        "insn": 41318114,
        "free": 23325,
        "used": 473
      },
      {
        "insn": 41319798,
        "free": 23324,
        "used": 474
      },
      {
        "insn": 41321938,
        "free": 23323,
        "used": 475
      },
      {
        "insn": 41323796,
        "free": 23322,
        "used": 476
      },
      {
        "insn": 41333903,
        "free": 23321,
        "used": 477
      },
      {
        "insn": 41338581,
        "free": 23320,
        "used": 478
      },
      {
        "insn": 41340499,
        "free": 23319,
        "used": 479
      },
      {
        "insn": 41342357,
        "free": 23318,
        "used": 480
      },
      {
        "insn": 41344226,
        "free": 23317,
        "used": 481
      },
      {
        "insn": 41346106,
        "free": 23316,
        "used": 482
      },
      {
        "insn": 41361304,
        "free": 23315,
        "used": 483
      },
      {
        "insn": 41363260,
        "free": 23314,
        "used": 484
      },
      {
        "insn": 41371110,
        "free": 23313,
        "used": 485
      },
      {
        "insn": 41375876,
        "free": 23312,
        "used": 486
      },
      {
        "insn": 41377794,
        "free": 23311,
        "used": 487
      },
      {
        "insn": 41425177,
        "free": 23310,
        "used": 488
      },
      {
        "insn": 41427061,
        "free": 23309,
        "used": 489
      },
      {
        "insn": 41429200,
        "free": 23308,
        "used": 490
      },
      {
        "insn": 41430956,
        "free": 23307,
        "used": 491
      },
      {
        "insn": 41432850,
        "free": 23306,
        "used": 492
      },
      {
        "insn": 41434534,
        "free": 23305,
        "used": 493
      },
      {
        "insn": 41436653,
        "free": 23304,
        "used": 494
      },
      {
        "insn": 41438511,
        "free": 23303,
        "used": 495
      },
      {
        "insn": 41448618,
        "free": 23302,
        "used": 496
      },
      {
        "insn": 41453330,
        "free": 23301,
        "used": 497
      },
      {
        "insn": 41455248,
        "free": 23300,
        "used": 498
      },
      {
        "insn": 41457106,
        "free": 23299,
        "used": 499
      },
      {
        "insn": 41458975,
        "free": 23298,
        "used": 500
      },
      {
        "insn": 41460855,
        "free": 23297,
        "used": 501
      },
      {
        "insn": 41476053,
        "free": 23296,
        "used": 502
      },
      {
        "insn": 41477992,
        "free": 23295,
        "used": 503
      },
      {
        "insn": 41485863,
        "free": 23294,
        "used": 504
      },
      {
        "insn": 41490629,
        "free": 23293,
        "used": 505
      },
      {
        "insn": 41492547,
        "free": 23292,
        "used": 506
      },
      {
        "insn": 41540228,
        "free": 23291,
        "used": 507
      },
      {
        "insn": 41542112,
        "free": 23290,
        "used": 508
      },
      {
        "insn": 41544251,
        "free": 23289,
        "used": 509
      },
      {
        "insn": 41546007,
        "free": 23288,
        "used": 510
      },
      {
        "insn": 41547969,
        "free": 23287,
        "used": 511
      },
      {
        "insn": 41549653,
        "free": 23286,
        "used": 512
      },
      {
        "insn": 41551807,
        "free": 23285,
        "used": 513
      },
      {
        "insn": 41553662,
        "free": 23284,
        "used": 514
      },
      {
        "insn": 41563787,
        "free": 23283,
        "used": 515
      },
      {
        "insn": 41568441,
        "free": 23282,
        "used": 516
      },
      {
        "insn": 41570394,
        "free": 23281,
        "used": 517
      },
      {
        "insn": 41572249,
        "free": 23280,
        "used": 518
      },
      {
        "insn": 41574115,
        "free": 23279,
        "used": 519
      },
      {
        "insn": 41575992,
        "free": 23278,
        "used": 520
      },
      {
        "insn": 41591187,
        "free": 23277,
        "used": 521
      },
      {
        "insn": 41593102,
        "free": 23276,
        "used": 522
      },
      {
        "insn": 41600944,
        "free": 23275,
        "used": 523
      },
      {
        "insn": 41605707,
        "free": 23274,
        "used": 524
      },
      {
        "insn": 41607677,
        "free": 23273,
        "used": 525
      },
      {
        "insn": 41655511,
        "free": 23272,
        "used": 526
      },
      {
        "insn": 41657392,
        "free": 23271,
        "used": 527
      },
      {
        "insn": 41659528,
        "free": 23270,
        "used": 528
      },
      {
        "insn": 41661281,
        "free": 23269,
        "used": 529
      },
      {
        "insn": 41663189,
        "free": 23268,
        "used": 530
      },
      {
        "insn": 41664870,
        "free": 23267,
        "used": 531
      },
      {
        "insn": 41666986,
        "free": 23266,
        "used": 532
      },
      {
        "insn": 41668841,
        "free": 23265,
        "used": 533
      },
      {
        "insn": 41678945,
        "free": 23264,
        "used": 534
      },
      {
        "insn": 41683620,
        "free": 23263,
        "used": 535
      },
      {
        "insn": 41685535,
        "free": 23262,
        "used": 536
      },
      {
        "insn": 41687390,
        "free": 23261,
        "used": 537
      },
      {
        "insn": 41689256,
        "free": 23260,
        "used": 538
      },
      {
        "insn": 41691133,
        "free": 23259,
        "used": 539
      },
      {
        "insn": 41706328,
        "free": 23258,
        "used": 540
      },
      {
        "insn": 41708315,
        "free": 23257,
        "used": 541
      },
      {
        "insn": 41716162,
        "free": 23256,
        "used": 542
      },
      {
        "insn": 41720925,
        "free": 23255,
        "used": 543
      },
      {
        "insn": 41722840,
        "free": 23254,
        "used": 544
      },
      {
        "insn": 41770274,
        "free": 23253,
        "used": 545
      },
      {
        "insn": 41772155,
        "free": 23252,
        "used": 546
      },
      {
        "insn": 41774291,
        "free": 23251,
        "used": 547
      },
      {
        "insn": 41776044,
        "free": 23250,
        "used": 548
      },
      {
        "insn": 41777935,
        "free": 23249,
        "used": 549
      },
      {
        "insn": 41779616,
        "free": 23248,
        "used": 550
      },
      {
        "insn": 41781753,
        "free": 23247,
        "used": 551
      },
      {
        "insn": 41783608,
        "free": 23246,
        "used": 552
      },
      {
        "insn": 41793712,
        "free": 23245,
        "used": 553
      },
      {
        "insn": 41798421,
        "free": 23244,
        "used": 554
      },
      {
        "insn": 41800336,
        "free": 23243,
        "used": 555
      },
      {
        "insn": 41802191,
        "free": 23242,
        "used": 556
      },
      {
        "insn": 41804057,
        "free": 23241,
        "used": 557
      },
      {
        "insn": 41805934,
        "free": 23240,
        "used": 558
      },
      {
        "insn": 41821129,
        "free": 23239,
        "used": 559
      },
      {
        "insn": 41823065,
        "free": 23238,
        "used": 560
      },
      {
        "insn": 41830933,
        "free": 23237,
        "used": 561
      },
      {
        "insn": 41835696,
        "free": 23236,
        "used": 562
      },
      {
        "insn": 41837611,
        "free": 23235,
        "used": 563
      },
      {
        "insn": 41884970,
        "free": 23234,
        "used": 564
      },
      {
        "insn": 41886851,
        "free": 23233,
        "used": 565
      },
      {
        "insn": 41888987,
        "free": 23232,
        "used": 566
      },
      {
        "insn": 41890740,
        "free": 23231,
        "used": 567
      },
      {
        "insn": 41892716,
        "free": 23230,
        "used": 568
      },
      {
        "insn": 41894397,
        "free": 23229,
        "used": 569
      },
      {
        "insn": 41896513,
        "free": 23228,
        "used": 570
      },
      {
        "insn": 41898368,
        "free": 23227,
        "used": 571
      },
      {
        "insn": 41908472,
        "free": 23226,
        "used": 572
      },
      {
        "insn": 41913147,
        "free": 23225,
        "used": 573
      },
      {
        "insn": 41915062,
        "free": 23224,
        "used": 574
      },
      {
        "insn": 41916917,
        "free": 23223,
        "used": 575
      },
      {
        "insn": 41918783,
        "free": 23222,
        "used": 576
      },
      {
        "insn": 41920660,
        "free": 23221,
        "used": 577
      },
      {
        "insn": 41935855,
        "free": 23220,
        "used": 578
      },
      {
        "insn": 41937808,
        "free": 23219,
        "used": 579
      },
      {
        "insn": 41945655,
        "free": 23218,
        "used": 580
      },
      {
        "insn": 41950418,
        "free": 23217,
        "used": 581
      },
      {
        "insn": 41952333,
        "free": 23216,
        "used": 582
      },
      {
        "insn": 41999779,
        "free": 23215,
        "used": 583
      },
      {
        "insn": 42001660,
        "free": 23214,
        "used": 584
      },
      {
        "insn": 42003796,
        "free": 23213,
        "used": 585
      },
      {
        "insn": 42005549,
        "free": 23212,
        "used": 586
      },
      {
        "insn": 42007440,
        "free": 23211,
        "used": 587
      },
      {
        "insn": 42009121,
        "free": 23210,
        "used": 588
      },
      {
        "insn": 42011258,
        "free": 23209,
        "used": 589
      },
      {
        "insn": 42013113,
        "free": 23208,
        "used": 590
      },
      {
        "insn": 42023217,
        "free": 23207,
        "used": 591
      },
      {
        "insn": 42027909,
        "free": 23206,
        "used": 592
      },
      {
        "insn": 42029824,
        "free": 23205,
        "used": 593
      },
      {
        "insn": 42031679,
        "free": 23204,
        "used": 594
      },
      {
        "insn": 42033545,
        "free": 23203,
        "used": 595
      },
      {
        "insn": 42035422,
        "free": 23202,
        "used": 596
      },
      {
        "insn": 42050617,
        "free": 23201,
        "used": 597
      },
      {
        "insn": 42052553,
        "free": 23200,
        "used": 598
      },
      {
        "insn": 42060455,
        "free": 23199,
        "used": 599
      },
      {
        "insn": 42065218,
        "free": 23198,
        "used": 600
      },
      {
        "insn": 42067133,
        "free": 23197,
        "used": 601
      },
      {
        "insn": 42128621,
        "free": 23198,
        "used": 600
      },
      {
        "insn": 42128754,
        "free": 23199,
        "used": 599
      },
      {
        "insn": 42128892,
        "free": 23200,
        "used": 598
      },
      {
        "insn": 42129229,
        "free": 23201,
        "used": 597
      },
      {
        "insn": 42129576,
        "free": 23202,
        "used": 596
      },
      {
        "insn": 42129729,
        "free": 23203,
        "used": 595
      },
      {
        "insn": 42129887,
        "free": 23204,
        "used": 594
      },
      {
        "insn": 42130050,
        "free": 23205,
        "used": 593
      },
      {
        "insn": 42130218,
        "free": 23206,
        "used": 592
      },
      {
        "insn": 42130595,
        "free": 23207,
        "used": 591
      },
      {
        "insn": 42130773,
        "free": 23208,
        "used": 590
      },
      {
        "insn": 42131188,
        "free": 23209,
        "used": 589
      },
      {
        "insn": 42192173,
        "free": 23210,
        "used": 588
      },
      {
        "insn": 42192366,
        "free": 23211,
        "used": 587
      },
      {
        "insn": 42192564,
        "free": 23212,
        "used": 586
      },
      {
        "insn": 42192986,
        "free": 23213,
        "used": 585
      },
      {
        "insn": 42193418,
        "free": 23214,
        "used": 584
      },
      {
        "insn": 42193631,
        "free": 23215,
        "used": 583
      },
      {
        "insn": 42193849,
        "free": 23216,
        "used": 582
      },
      {
        "insn": 42194072,
        "free": 23217,
        "used": 581
      },
      {
        "insn": 42194300,
        "free": 23218,
        "used": 580
      },
      {
        "insn": 42194762,
        "free": 23219,
        "used": 579
      },
      {
        "insn": 42195000,
        "free": 23220,
        "used": 578
      },
      {
        "insn": 42195500,
        "free": 23221,
        "used": 577
      },
      {
        "insn": 42256530,
        "free": 23222,
        "used": 576
      },
      {
        "insn": 42256783,
        "free": 23223,
        "used": 575
      },
      {
        "insn": 42257041,
        "free": 23224,
        "used": 574
      },
      {
        "insn": 42257548,
        "free": 23225,
        "used": 573
      },
      {
        "insn": 42258065,
        "free": 23226,
        "used": 572
      },
      {
        "insn": 42258338,
        "free": 23227,
        "used": 571
      },
      {
        "insn": 42258616,
        "free": 23228,
        "used": 570
      },
      {
        "insn": 42258899,
        "free": 23229,
        "used": 569
      },
      {
        "insn": 42259187,
        "free": 23230,
        "used": 568
      },
      {
        "insn": 42259734,
        "free": 23231,
        "used": 567
      },
      {
        "insn": 42260032,
        "free": 23232,
        "used": 566
      },
      {
        "insn": 42260617,
        "free": 23233,
        "used": 565
      },
      {
        "insn": 42321705,
        "free": 23234,
        "used": 564
      },
      {
        "insn": 42322018,
        "free": 23235,
        "used": 563
      },
      {
        "insn": 42322336,
        "free": 23236,
        "used": 562
      },
      {
        "insn": 42322928,
        "free": 23237,
        "used": 561
      },
      {
        "insn": 42323530,
        "free": 23238,
        "used": 560
      },
      {
        "insn": 42323863,
        "free": 23239,
        "used": 559
      },
      {
        "insn": 42324201,
        "free": 23240,
        "used": 558
      },
      {
        "insn": 42324544,
        "free": 23241,
        "used": 557
      },
      {
        "insn": 42324892,
        "free": 23242,
        "used": 556
      },
      {
        "insn": 42325467,
        "free": 23243,
        "used": 555
      },
      {
        "insn": 42325825,
        "free": 23244,
        "used": 554
      },
      {
        "insn": 42326485,
        "free": 23245,
        "used": 553
      },
      {
        "insn": 42387621,
        "free": 23246,
        "used": 552
      },
      {
        "insn": 42387994,
        "free": 23247,
        "used": 551
      },
      {
        "insn": 42388372,
        "free": 23248,
        "used": 550
      },
      {
        "insn": 42389039,
        "free": 23249,
        "used": 549
      },
      {
        "insn": 42389716,
        "free": 23250,
        "used": 548
      },
      {
        "insn": 42390109,
        "free": 23251,
        "used": 547
      },
      {
        "insn": 42390507,
        "free": 23252,
        "used": 546
      },
      {
        "insn": 42390910,
        "free": 23253,
        "used": 545
      },
      {
        "insn": 42391318,
        "free": 23254,
        "used": 544
      },
      {
        "insn": 42391958,
        "free": 23255,
        "used": 543
      },
      {
        "insn": 42392376,
        "free": 23256,
        "used": 542
      },
      {
        "insn": 42393111,
        "free": 23257,
        "used": 541
      },
      {
        "insn": 42454238,
        "free": 23258,
        "used": 540
      },
      {
        "insn": 42454671,
        "free": 23259,
        "used": 539
      },
      {
        "insn": 42455109,
        "free": 23260,
        "used": 538
      },
      {
        "insn": 42455841,
        "free": 23261,
        "used": 537
      },
      {
        "insn": 42456583,
        "free": 23262,
        "used": 536
      },
      {
        "insn": 42457036,
        "free": 23263,
        "used": 535
      },
      {
        "insn": 42457494,
        "free": 23264,
        "used": 534
      },
      {
        "insn": 42457957,
        "free": 23265,
        "used": 533
      },
      {
        "insn": 42458425,
        "free": 23266,
        "used": 532
      },
      {
        "insn": 42459135,
        "free": 23267,
        "used": 531
      },
      {
        "insn": 42459613,
        "free": 23268,
        "used": 530
      },
      {
        "insn": 42460413,
        "free": 23269,
        "used": 529
      },
      {
        "insn": 42521596,
        "free": 23270,
        "used": 528
      },
      {
        "insn": 42522089,
        "free": 23271,
        "used": 527
      },
      {
        "insn": 42522587,
        "free": 23272,
        "used": 526
      },
      {
        "insn": 42523384,
        "free": 23273,
        "used": 525
      },
      {
        "insn": 42524191,
        "free": 23274,
        "used": 524
      },
      {
        "insn": 42524704,
        "free": 23275,
        "used": 523
      },
      {
        "insn": 42525222,
        "free": 23276,
        "used": 522
      },
      {
        "insn": 42525745,
        "free": 23277,
        "used": 521
      },
      {
        "insn": 42526273,
        "free": 23278,
        "used": 520
      },
      {
        "insn": 42527043,
        "free": 23279,
        "used": 519
      },
      {
        "insn": 42527581,
        "free": 23280,
        "used": 518
      },
      {
        "insn": 42528446,
        "free": 23281,
        "used": 517
      },
      {
        "insn": 42589649,
        "free": 23282,
        "used": 516
      },
      {
        "insn": 42590202,
        "free": 23283,
        "used": 515
      },
      {
        "insn": 42590760,
        "free": 23284,
        "used": 514
      },
      {
        "insn": 42591622,
        "free": 23285,
        "used": 513
      },
      {
        "insn": 42592494,
        "free": 23286,
        "used": 512
      },
      {
        "insn": 42593067,
        "free": 23287,
        "used": 511
      },
      {
        "insn": 42593645,
        "free": 23288,
        "used": 510
      },
      {
        "insn": 42594228,
        "free": 23289,
        "used": 509
      },
      {
        "insn": 42594816,
        "free": 23290,
        "used": 508
      },
      {
        "insn": 42595718,
        "free": 23291,
        "used": 507
      },
      {
        "insn": 42596316,
        "free": 23292,
        "used": 506
      },
      {
        "insn": 42597189,
        "free": 23293,
        "used": 505
      },
      {
        "insn": 42658430,
        "free": 23294,
        "used": 504
      },
      {
        "insn": 42659043,
        "free": 23295,
        "used": 503
      },
      {
        "insn": 42659661,
        "free": 23296,
        "used": 502
      },
      {
        "insn": 42660588,
        "free": 23297,
        "used": 501
      },
      {
        "insn": 42661525,
        "free": 23298,
        "used": 500
      },
      {
        "insn": 42662158,
        "free": 23299,
        "used": 499
      },
      {
        "insn": 42662796,
        "free": 23300,
        "used": 498
      },
      {
        "insn": 42663439,
        "free": 23301,
        "used": 497
      },
      {
        "insn": 42664087,
        "free": 23302,
        "used": 496
      },
      {
        "insn": 42664997,
        "free": 23303,
        "used": 495
      },
      {
        "insn": 42665655,
        "free": 23304,
        "used": 494
      },
      {
        "insn": 42666650,
        "free": 23305,
        "used": 493
      },
      {
        "insn": 42727937,
        "free": 23306,
        "used": 492
      },
      {
        "insn": 42728610,
        "free": 23307,
        "used": 491
      },
      {
        "insn": 42729288,
        "free": 23308,
        "used": 490
      },
      {
        "insn": 42730280,
        "free": 23309,
        "used": 489
      },
      {
        "insn": 42731282,
        "free": 23310,
        "used": 488
      },
      {
        "insn": 42731975,
        "free": 23311,
        "used": 487
      },
      {
        "insn": 42732673,
        "free": 23312,
        "used": 486
      },
      {
        "insn": 42733376,
        "free": 23313,
        "used": 485
      },
      {
        "insn": 42734084,
        "free": 23314,
        "used": 484
      },
      {
        "insn": 42735054,
        "free": 23315,
        "used": 483
      },
      {
        "insn": 42735772,
        "free": 23316,
        "used": 482
      },
      {
        "insn": 42736832,
        "free": 23317,
        "used": 481
      },
      {
        "insn": 42798154,
        "free": 23318,
        "used": 480
      },
      {
        "insn": 42798887,
        "free": 23319,
        "used": 479
      },
      {
        "insn": 42799625,
        "free": 23320,
        "used": 478
      },
      {
        "insn": 42800682,
        "free": 23321,
        "used": 477
      },
      {
        "insn": 42801749,
        "free": 23322,
        "used": 476
      },
      {
        "insn": 42802502,
        "free": 23323,
        "used": 475
      },
      {
        "insn": 42803260,
        "free": 23324,
        "used": 474
      },
      {
        "insn": 42804023,
        "free": 23325,
        "used": 473
      },
      {
        "insn": 42804791,
        "free": 23326,
        "used": 472
      },
      {
        "insn": 42805831,
        "free": 23327,
        "used": 471
      },
      {
        "insn": 42806609,
        "free": 23328,
        "used": 470
      },
      {
        "insn": 42807734,
        "free": 23329,
        "used": 469
      },
      {
        "insn": 42869115,
        "free": 23330,
        "used": 468
      },
      {
        "insn": 42869908,
        "free": 23331,
        "used": 467
      },
      {
        "insn": 42870706,
        "free": 23332,
        "used": 466
      },
      {
        "insn": 42871828,
        "free": 23333,
        "used": 465
      },
      {
        "insn": 42872960,
        "free": 23334,
        "used": 464
      },
      {
        "insn": 42873773,
        "free": 23335,
        "used": 463
      },
      {
        "insn": 42874591,
        "free": 23336,
        "used": 462
      },
      {
        "insn": 42875414,
        "free": 23337,
        "used": 461
      },
      {
        "insn": 42876242,
        "free": 23338,
        "used": 460
      },
      {
        "insn": 42877342,
        "free": 23339,
        "used": 459
      },
      {
        "insn": 42878180,
        "free": 23340,
        "used": 458
      },
      {
        "insn": 42879370,
        "free": 23341,
        "used": 457
      },
      {
        "insn": 46592419,
        "free": 23342,
        "used": 456
      },
      {
        "insn": 46593272,
        "free": 23343,
        "used": 455
      },
      {
        "insn": 46594130,
        "free": 23344,
        "used": 454
      },
      {
        "insn": 46595317,
        "free": 23345,
        "used": 453
      },
      {
        "insn": 46596514,
        "free": 23346,
        "used": 452
      },
      {
        "insn": 46597387,
        "free": 23347,
        "used": 451
      },
      {
        "insn": 46598265,
        "free": 23348,
        "used": 450
      },
      {
        "insn": 46599148,
        "free": 23349,
        "used": 449
      },
      {
        "insn": 46600036,
        "free": 23350,
        "used": 448
      },
      {
        "insn": 46601263,
        "free": 23351,
        "used": 447
      },
      {
        "insn": 46602161,
        "free": 23352,
        "used": 446
      },
      {
        "insn": 46603364,
        "free": 23353,
        "used": 445
      },
      {
        "insn": 48890405,
        "free": 23354,
        "used": 444
      },
      {
        "insn": 48891318,
        "free": 23355,
        "used": 443
      },
      {
        "insn": 48892236,
        "free": 23356,
        "used": 442
      },
      {
        "insn": 48893488,
        "free": 23357,
        "used": 441
      },
      {
        "insn": 48894750,
        "free": 23358,
        "used": 440
      },
      {
        "insn": 48895683,
        "free": 23359,
        "used": 439
      },
      {
        "insn": 48896621,
        "free": 23360,
        "used": 438
      },
      {
        "insn": 48897564,
        "free": 23361,
        "used": 437
      },
      {
        "insn": 48898512,
        "free": 23362,
        "used": 436
      },
      {
        "insn": 48899804,
        "free": 23363,
        "used": 435
      },
      {
        "insn": 48900762,
        "free": 23364,
        "used": 434
      },
      {
        "insn": 48902018,
        "free": 23365,
        "used": 433
      },
      {
        "insn": 49118493,
        "free": 23364,
        "used": 434
      },
      {
        "insn": 49120377,
        "free": 23363,
        "used": 435
      },
      {
        "insn": 49122516,
        "free": 23362,
        "used": 436
      },
      {
        "insn": 49124272,
        "free": 23361,
        "used": 437
      },
      {
        "insn": 49126145,
        "free": 23360,
        "used": 438
      },
      {
        "insn": 49127829,
        "free": 23359,
        "used": 439
      },
      {
        "insn": 49129948,
        "free": 23358,
        "used": 440
      },
      {
        "insn": 49131806,
        "free": 23357,
        "used": 441
      },
      {
        "insn": 49141913,
        "free": 23356,
        "used": 442
      },
      {
        "insn": 49146570,
        "free": 23355,
        "used": 443
      },
      {
        "insn": 49148488,
        "free": 23354,
        "used": 444
      },
      {
        "insn": 49150346,
        "free": 23353,
        "used": 445
      },
      {
        "insn": 49152215,
        "free": 23352,
        "used": 446
      },
      {
        "insn": 49154095,
        "free": 23351,
        "used": 447
      },
      {
        "insn": 49169293,
        "free": 23350,
        "used": 448
      },
      {
        "insn": 49171211,
        "free": 23349,
        "used": 449
      },
      {
        "insn": 49179171,
        "free": 23348,
        "used": 450
      },
      {
        "insn": 49183937,
        "free": 23347,
        "used": 451
      },
      {
        "insn": 49185855,
        "free": 23346,
        "used": 452
      },
      {
        "insn": 49233416,
        "free": 23345,
        "used": 453
      },
      {
        "insn": 49235300,
        "free": 23344,
        "used": 454
      },
      {
        "insn": 49237439,
        "free": 23343,
        "used": 455
      },
      {
        "insn": 49239195,
        "free": 23342,
        "used": 456
      },
      {
        "insn": 49241068,
        "free": 23341,
        "used": 457
      },
      {
        "insn": 49242752,
        "free": 23340,
        "used": 458
      },
      {
        "insn": 49244909,
        "free": 23339,
        "used": 459
      },
      {
        "insn": 49246767,
        "free": 23338,
        "used": 460
      },
      {
        "insn": 49256874,
        "free": 23337,
        "used": 461
      },
      {
        "insn": 49261531,
        "free": 23336,
        "used": 462
      },
      {
        "insn": 49263449,
        "free": 23335,
        "used": 463
      },
      {
        "insn": 49265307,
        "free": 23334,
        "used": 464
      },
      {
        "insn": 49267176,
        "free": 23333,
        "used": 465
      },
      {
        "insn": 49269056,
        "free": 23332,
        "used": 466
      },
      {
        "insn": 49284254,
        "free": 23331,
        "used": 467
      },
      {
        "insn": 49286172,
        "free": 23330,
        "used": 468
      },
      {
        "insn": 49294097,
        "free": 23329,
        "used": 469
      },
      {
        "insn": 49298863,
        "free": 23328,
        "used": 470
      },
      {
        "insn": 49300781,
        "free": 23327,
        "used": 471
      },
      {
        "insn": 49348143,
        "free": 23326,
        "used": 472
      },
      {
        "insn": 49350027,
        "free": 23325,
        "used": 473
      },
      {
        "insn": 49352166,
        "free": 23324,
        "used": 474
      },
      {
        "insn": 49353922,
        "free": 23323,
        "used": 475
      },
      {
        "insn": 49355795,
        "free": 23322,
        "used": 476
      },
      {
        "insn": 49357479,
        "free": 23321,
        "used": 477
      },
      {
        "insn": 49359598,
        "free": 23320,
        "used": 478
      },
      {
        "insn": 49361456,
        "free": 23319,
        "used": 479
      },
      {
        "insn": 49371563,
        "free": 23318,
        "used": 480
      },
      {
        "insn": 49376220,
        "free": 23317,
        "used": 481
      },
      {
        "insn": 49378138,
        "free": 23316,
        "used": 482
      },
      {
        "insn": 49379996,
        "free": 23315,
        "used": 483
      },
      {
        "insn": 49381865,
        "free": 23314,
        "used": 484
      },
      {
        "insn": 49383745,
        "free": 23313,
        "used": 485
      },
      {
        "insn": 49398943,
        "free": 23312,
        "used": 486
      },
      {
        "insn": 49400861,
        "free": 23311,
        "used": 487
      },
      {
        "insn": 49408756,
        "free": 23310,
        "used": 488
      },
      {
        "insn": 49413522,
        "free": 23309,
        "used": 489
      },
      {
        "insn": 49415440,
        "free": 23308,
        "used": 490
      },
      {
        "insn": 49462851,
        "free": 23307,
        "used": 491
      },
      {
        "insn": 49464735,
        "free": 23306,
        "used": 492
      },
      {
        "insn": 49466874,
        "free": 23305,
        "used": 493
      },
      {
        "insn": 49468630,
        "free": 23304,
        "used": 494
      },
      {
        "insn": 49470503,
        "free": 23303,
        "used": 495
      },
      {
        "insn": 49472187,
        "free": 23302,
        "used": 496
      },
      {
        "insn": 49474327,
        "free": 23301,
        "used": 497
      },
      {
        "insn": 49476185,
        "free": 23300,
        "used": 498
      },
      {
        "insn": 49486292,
        "free": 23299,
        "used": 499
      },
      {
        "insn": 49490949,
        "free": 23298,
        "used": 500
      },
      {
        "insn": 49492867,
        "free": 23297,
        "used": 501
      },
      {
        "insn": 49494725,
        "free": 23296,
        "used": 502
      },
      {
        "insn": 49496594,
        "free": 23295,
        "used": 503
      },
      {
        "insn": 49498474,
        "free": 23294,
        "used": 504
      },
      {
        "insn": 49513672,
        "free": 23293,
        "used": 505
      },
      {
        "insn": 49515590,
        "free": 23292,
        "used": 506
      },
      {
        "insn": 49523455,
        "free": 23291,
        "used": 507
      },
      {
        "insn": 49528221,
        "free": 23290,
        "used": 508
      },
      {
        "insn": 49530139,
        "free": 23289,
        "used": 509
      },
      {
        "insn": 49577501,
        "free": 23288,
        "used": 510
      },
      {
        "insn": 49579385,
        "free": 23287,
        "used": 511
      },
      {
        "insn": 49581524,
        "free": 23286,
        "used": 512
      },
      {
        "insn": 49583280,
        "free": 23285,
        "used": 513
      },
      {
        "insn": 49585153,
        "free": 23284,
        "used": 514
      },
      {
        "insn": 49586837,
        "free": 23283,
        "used": 515
      },
      {
        "insn": 49588956,
        "free": 23282,
        "used": 516
      },
      {
        "insn": 49590814,
        "free": 23281,
        "used": 517
      },
      {
        "insn": 49600921,
        "free": 23280,
        "used": 518
      },
      {
        "insn": 49605578,
        "free": 23279,
        "used": 519
      },
      {
        "insn": 49607517,
        "free": 23278,
        "used": 520
      },
      {
        "insn": 49609375,
        "free": 23277,
        "used": 521
      },
      {
        "insn": 49611244,
        "free": 23276,
        "used": 522
      },
      {
        "insn": 49613124,
        "free": 23275,
        "used": 523
      },
      {
        "insn": 49628322,
        "free": 23274,
        "used": 524
      },
      {
        "insn": 49630240,
        "free": 23273,
        "used": 525
      },
      {
        "insn": 49638085,
        "free": 23272,
        "used": 526
      },
      {
        "insn": 49642851,
        "free": 23271,
        "used": 527
      },
      {
        "insn": 49644790,
        "free": 23270,
        "used": 528
      },
      {
        "insn": 49692246,
        "free": 23269,
        "used": 529
      },
      {
        "insn": 49694130,
        "free": 23268,
        "used": 530
      },
      {
        "insn": 49696269,
        "free": 23267,
        "used": 531
      },
      {
        "insn": 49698025,
        "free": 23266,
        "used": 532
      },
      {
        "insn": 49699898,
        "free": 23265,
        "used": 533
      },
      {
        "insn": 49701582,
        "free": 23264,
        "used": 534
      },
      {
        "insn": 49703756,
        "free": 23263,
        "used": 535
      },
      {
        "insn": 49705614,
        "free": 23262,
        "used": 536
      },
      {
        "insn": 49715721,
        "free": 23261,
        "used": 537
      },
      {
        "insn": 49720416,
        "free": 23260,
        "used": 538
      },
      {
        "insn": 49722334,
        "free": 23259,
        "used": 539
      },
      {
        "insn": 49724192,
        "free": 23258,
        "used": 540
      },
      {
        "insn": 49726061,
        "free": 23257,
        "used": 541
      },
      {
        "insn": 49727941,
        "free": 23256,
        "used": 542
      },
      {
        "insn": 49743139,
        "free": 23255,
        "used": 543
      },
      {
        "insn": 49745078,
        "free": 23254,
        "used": 544
      },
      {
        "insn": 49752949,
        "free": 23253,
        "used": 545
      },
      {
        "insn": 49757715,
        "free": 23252,
        "used": 546
      },
      {
        "insn": 49759633,
        "free": 23251,
        "used": 547
      },
      {
        "insn": 49806995,
        "free": 23250,
        "used": 548
      },
      {
        "insn": 49808879,
        "free": 23249,
        "used": 549
      },
      {
        "insn": 49811018,
        "free": 23248,
        "used": 550
      },
      {
        "insn": 49812774,
        "free": 23247,
        "used": 551
      },
      {
        "insn": 49814685,
        "free": 23246,
        "used": 552
      },
      {
        "insn": 49816369,
        "free": 23245,
        "used": 553
      },
      {
        "insn": 49818488,
        "free": 23244,
        "used": 554
      },
      {
        "insn": 49820346,
        "free": 23243,
        "used": 555
      },
      {
        "insn": 49830453,
        "free": 23242,
        "used": 556
      },
      {
        "insn": 49835131,
        "free": 23241,
        "used": 557
      },
      {
        "insn": 49837049,
        "free": 23240,
        "used": 558
      },
      {
        "insn": 49838907,
        "free": 23239,
        "used": 559
      },
      {
        "insn": 49840776,
        "free": 23238,
        "used": 560
      },
      {
        "insn": 49842656,
        "free": 23237,
        "used": 561
      },
      {
        "insn": 49857854,
        "free": 23236,
        "used": 562
      },
      {
        "insn": 49859810,
        "free": 23235,
        "used": 563
      },
      {
        "insn": 49867660,
        "free": 23234,
        "used": 564
      },
      {
        "insn": 49872426,
        "free": 23233,
        "used": 565
      },
      {
        "insn": 49874344,
        "free": 23232,
        "used": 566
      },
      {
        "insn": 49964101,
        "free": 23233,
        "used": 565
      },
      {
        "insn": 49964409,
        "free": 23234,
        "used": 564
      },
      {
        "insn": 49964722,
        "free": 23235,
        "used": 563
      },
      {
        "insn": 49965234,
        "free": 23236,
        "used": 562
      },
      {
        "insn": 49965756,
        "free": 23237,
        "used": 561
      },
      {
        "insn": 49966084,
        "free": 23238,
        "used": 560
      },
      {
        "insn": 49966417,
        "free": 23239,
        "used": 559
      },
      {
        "insn": 49966755,
        "free": 23240,
        "used": 558
      },
      {
        "insn": 49967098,
        "free": 23241,
        "used": 557
      },
      {
        "insn": 49967650,
        "free": 23242,
        "used": 556
      },
      {
        "insn": 49968003,
        "free": 23243,
        "used": 555
      },
      {
        "insn": 49968593,
        "free": 23244,
        "used": 554
      },
      {
        "insn": 50029612,
        "free": 23245,
        "used": 553
      },
      {
        "insn": 50029980,
        "free": 23246,
        "used": 552
      },
      {
        "insn": 50030353,
        "free": 23247,
        "used": 551
      },
      {
        "insn": 50030950,
        "free": 23248,
        "used": 550
      },
      {
        "insn": 50031557,
        "free": 23249,
        "used": 549
      },
      {
        "insn": 50031945,
        "free": 23250,
        "used": 548
      },
      {
        "insn": 50032338,
        "free": 23251,
        "used": 547
      },
      {
        "insn": 50032736,
        "free": 23252,
        "used": 546
      },
      {
        "insn": 50033139,
        "free": 23253,
        "used": 545
      },
      {
        "insn": 50033776,
        "free": 23254,
        "used": 544
      },
      {
        "insn": 50034189,
        "free": 23255,
        "used": 543
      },
      {
        "insn": 50034864,
        "free": 23256,
        "used": 542
      },
      {
        "insn": 50095941,
        "free": 23257,
        "used": 541
      },
      {
        "insn": 50096369,
        "free": 23258,
        "used": 540
      },
      {
        "insn": 50096802,
        "free": 23259,
        "used": 539
      },
      {
        "insn": 50097484,
        "free": 23260,
        "used": 538
      },
      {
        "insn": 50098176,
        "free": 23261,
        "used": 537
      },
      {
        "insn": 50098624,
        "free": 23262,
        "used": 536
      },
      {
        "insn": 50099077,
        "free": 23263,
        "used": 535
      },
      {
        "insn": 50099535,
        "free": 23264,
        "used": 534
      },
      {
        "insn": 50099998,
        "free": 23265,
        "used": 533
      },
      {
        "insn": 50100720,
        "free": 23266,
        "used": 532
      },
      {
        "insn": 50101193,
        "free": 23267,
        "used": 531
      },
      {
        "insn": 50101953,
        "free": 23268,
        "used": 530
      },
      {
        "insn": 50163088,
        "free": 23269,
        "used": 529
      },
      {
        "insn": 50163576,
        "free": 23270,
        "used": 528
      },
      {
        "insn": 50164069,
        "free": 23271,
        "used": 527
      },
      {
        "insn": 50164836,
        "free": 23272,
        "used": 526
      },
      {
        "insn": 50165613,
        "free": 23273,
        "used": 525
      },
      {
        "insn": 50166121,
        "free": 23274,
        "used": 524
      },
      {
        "insn": 50166634,
        "free": 23275,
        "used": 523
      },
      {
        "insn": 50167152,
        "free": 23276,
        "used": 522
      },
      {
        "insn": 50167675,
        "free": 23277,
        "used": 521
      },
      {
        "insn": 50168482,
        "free": 23278,
        "used": 520
      },
      {
        "insn": 50169015,
        "free": 23279,
        "used": 519
      },
      {
        "insn": 50169860,
        "free": 23280,
        "used": 518
      },
      {
        "insn": 50231053,
        "free": 23281,
        "used": 517
      },
      {
        "insn": 50231601,
        "free": 23282,
        "used": 516
      },
      {
        "insn": 50232154,
        "free": 23283,
        "used": 515
      },
      {
        "insn": 50233006,
        "free": 23284,
        "used": 514
      },
      {
        "insn": 50233868,
        "free": 23285,
        "used": 513
      },
      {
        "insn": 50234436,
        "free": 23286,
        "used": 512
      },
      {
        "insn": 50235009,
        "free": 23287,
        "used": 511
      },
      {
        "insn": 50235587,
        "free": 23288,
        "used": 510
      },
      {
        "insn": 50236170,
        "free": 23289,
        "used": 509
      },
      {
        "insn": 50237062,
        "free": 23290,
        "used": 508
      },
      {
        "insn": 50237655,
        "free": 23291,
        "used": 507
      },
      {
        "insn": 50238503,
        "free": 23292,
        "used": 506
      },
      {
        "insn": 50299744,
        "free": 23293,
        "used": 505
      },
      {
        "insn": 50300352,
        "free": 23294,
        "used": 504
      },
      {
        "insn": 50300965,
        "free": 23295,
        "used": 503
      },
      {
        "insn": 50301892,
        "free": 23296,
        "used": 502
      },
      {
        "insn": 50302829,
        "free": 23297,
        "used": 501
      },
      {
        "insn": 50303457,
        "free": 23298,
        "used": 500
      },
      {
        "insn": 50304090,
        "free": 23299,
        "used": 499
      },
      {
        "insn": 50304728,
        "free": 23300,
        "used": 498
      },
      {
        "insn": 50305371,
        "free": 23301,
        "used": 497
      },
      {
        "insn": 50306251,
        "free": 23302,
        "used": 496
      },
      {
        "insn": 50306904,
        "free": 23303,
        "used": 495
      },
      {
        "insn": 50307899,
        "free": 23304,
        "used": 494
      },
      {
        "insn": 50369211,
        "free": 23305,
        "used": 493
      },
      {
        "insn": 50369879,
        "free": 23306,
        "used": 492
      },
      {
        "insn": 50370552,
        "free": 23307,
        "used": 491
      },
      {
        "insn": 50371554,
        "free": 23308,
        "used": 490
      },
      {
        "insn": 50372566,
        "free": 23309,
        "used": 489
      },
      {
        "insn": 50373254,
        "free": 23310,
        "used": 488
      },
      {
        "insn": 50373947,
        "free": 23311,
        "used": 487
      },
      {
        "insn": 50374645,
        "free": 23312,
        "used": 486
      },
      {
        "insn": 50375348,
        "free": 23313,
        "used": 485
      },
      {
        "insn": 50376293,
        "free": 23314,
        "used": 484
      },
      {
        "insn": 50377006,
        "free": 23315,
        "used": 483
      },
      {
        "insn": 50378076,
        "free": 23316,
        "used": 482
      },
      {
        "insn": 51680038,
        "free": 23315,
        "used": 483
      },
      {
        "insn": 51681922,
        "free": 23314,
        "used": 484
      },
      {
        "insn": 51684061,
        "free": 23313,
        "used": 485
      },
      {
        "insn": 51685817,
        "free": 23312,
        "used": 486
      },
      {
        "insn": 51687690,
        "free": 23311,
        "used": 487
      },
      {
        "insn": 51689374,
        "free": 23310,
        "used": 488
      },
      {
        "insn": 51691514,
        "free": 23309,
        "used": 489
      },
      {
        "insn": 51693372,
        "free": 23308,
        "used": 490
      },
      {
        "insn": 51703479,
        "free": 23307,
        "used": 491
      },
      {
        "insn": 51708136,
        "free": 23306,
        "used": 492
      },
      {
        "insn": 51710054,
        "free": 23305,
        "used": 493
      },
      {
        "insn": 51711912,
        "free": 23304,
        "used": 494
      },
      {
        "insn": 51713781,
        "free": 23303,
        "used": 495
      },
      {
        "insn": 51715661,
        "free": 23302,
        "used": 496
      },
      {
        "insn": 51730859,
        "free": 23301,
        "used": 497
      },
      {
        "insn": 51732777,
        "free": 23300,
        "used": 498
      },
      {
        "insn": 51740732,
        "free": 23299,
        "used": 499
      },
      {
        "insn": 51745498,
        "free": 23298,
        "used": 500
      },
      {
        "insn": 51747416,
        "free": 23297,
        "used": 501
      },
      {
        "insn": 51794778,
        "free": 23296,
        "used": 502
      },
      {
        "insn": 51796662,
        "free": 23295,
        "used": 503
      },
      {
        "insn": 51798801,
        "free": 23294,
        "used": 504
      },
      {
        "insn": 51800557,
        "free": 23293,
        "used": 505
      },
      {
        "insn": 51802430,
        "free": 23292,
        "used": 506
      },
      {
        "insn": 51804114,
        "free": 23291,
        "used": 507
      },
      {
        "insn": 51806233,
        "free": 23290,
        "used": 508
      },
      {
        "insn": 51808091,
        "free": 23289,
        "used": 509
      },
      {
        "insn": 51818198,
        "free": 23288,
        "used": 510
      },
      {
        "insn": 51822855,
        "free": 23287,
        "used": 511
      },
      {
        "insn": 51824773,
        "free": 23286,
        "used": 512
      },
      {
        "insn": 51826631,
        "free": 23285,
        "used": 513
      },
      {
        "insn": 51828500,
        "free": 23284,
        "used": 514
      },
      {
        "insn": 51830380,
        "free": 23283,
        "used": 515
      },
      {
        "insn": 51845578,
        "free": 23282,
        "used": 516
      },
      {
        "insn": 51847496,
        "free": 23281,
        "used": 517
      },
      {
        "insn": 51855421,
        "free": 23280,
        "used": 518
      },
      {
        "insn": 51860187,
        "free": 23279,
        "used": 519
      },
      {
        "insn": 51862105,
        "free": 23278,
        "used": 520
      },
      {
        "insn": 51909652,
        "free": 23277,
        "used": 521
      },
      {
        "insn": 51911536,
        "free": 23276,
        "used": 522
      },
      {
        "insn": 51913675,
        "free": 23275,
        "used": 523
      },
      {
        "insn": 51915431,
        "free": 23274,
        "used": 524
      },
      {
        "insn": 51917304,
        "free": 23273,
        "used": 525
      },
      {
        "insn": 51918988,
        "free": 23272,
        "used": 526
      },
      {
        "insn": 51921145,
        "free": 23271,
        "used": 527
      },
      {
        "insn": 51923003,
        "free": 23270,
        "used": 528
      },
      {
        "insn": 51933110,
        "free": 23269,
        "used": 529
      },
      {
        "insn": 51937767,
        "free": 23268,
        "used": 530
      },
      {
        "insn": 51939685,
        "free": 23267,
        "used": 531
      },
      {
        "insn": 51941543,
        "free": 23266,
        "used": 532
      },
      {
        "insn": 51943412,
        "free": 23265,
        "used": 533
      },
      {
        "insn": 51945292,
        "free": 23264,
        "used": 534
      },
      {
        "insn": 51960490,
        "free": 23263,
        "used": 535
      },
      {
        "insn": 51962408,
        "free": 23262,
        "used": 536
      },
      {
        "insn": 51970298,
        "free": 23261,
        "used": 537
      },
      {
        "insn": 51975064,
        "free": 23260,
        "used": 538
      },
      {
        "insn": 51976982,
        "free": 23259,
        "used": 539
      },
      {
        "insn": 52024382,
        "free": 23258,
        "used": 540
      },
      {
        "insn": 52026266,
        "free": 23257,
        "used": 541
      },
      {
        "insn": 52028405,
        "free": 23256,
        "used": 542
      },
      {
        "insn": 52030161,
        "free": 23255,
        "used": 543
      },
      {
        "insn": 52032034,
        "free": 23254,
        "used": 544
      },
      {
        "insn": 52033718,
        "free": 23253,
        "used": 545
      },
      {
        "insn": 52035837,
        "free": 23252,
        "used": 546
      },
      {
        "insn": 52037695,
        "free": 23251,
        "used": 547
      },
      {
        "insn": 52047802,
        "free": 23250,
        "used": 548
      },
      {
        "insn": 52052459,
        "free": 23249,
        "used": 549
      },
      {
        "insn": 52054377,
        "free": 23248,
        "used": 550
      },
      {
        "insn": 52056235,
        "free": 23247,
        "used": 551
      },
      {
        "insn": 52058104,
        "free": 23246,
        "used": 552
      },
      {
        "insn": 52059984,
        "free": 23245,
        "used": 553
      },
      {
        "insn": 52075182,
        "free": 23244,
        "used": 554
      },
      {
        "insn": 52077100,
        "free": 23243,
        "used": 555
      },
      {
        "insn": 52084960,
        "free": 23242,
        "used": 556
      },
      {
        "insn": 52089726,
        "free": 23241,
        "used": 557
      },
      {
        "insn": 52091644,
        "free": 23240,
        "used": 558
      },
      {
        "insn": 52139076,
        "free": 23239,
        "used": 559
      },
      {
        "insn": 52140960,
        "free": 23238,
        "used": 560
      },
      {
        "insn": 52143099,
        "free": 23237,
        "used": 561
      },
      {
        "insn": 52144855,
        "free": 23236,
        "used": 562
      },
      {
        "insn": 52146728,
        "free": 23235,
        "used": 563
      },
      {
        "insn": 52148412,
        "free": 23234,
        "used": 564
      },
      {
        "insn": 52150552,
        "free": 23233,
        "used": 565
      },
      {
        "insn": 52152410,
        "free": 23232,
        "used": 566
      },
      {
        "insn": 52162517,
        "free": 23231,
        "used": 567
      },
      {
        "insn": 52167195,
        "free": 23230,
        "used": 568
      },
      {
        "insn": 52169113,
        "free": 23229,
        "used": 569
      },
      {
        "insn": 52170971,
        "free": 23228,
        "used": 570
      },
      {
        "insn": 52172840,
        "free": 23227,
        "used": 571
      },
      {
        "insn": 52174720,
        "free": 23226,
        "used": 572
      },
      {
        "insn": 52189918,
        "free": 23225,
        "used": 573
      },
      {
        "insn": 52191925,
        "free": 23224,
        "used": 574
      },
      {
        "insn": 52199775,
        "free": 23223,
        "used": 575
      },
      {
        "insn": 52204541,
        "free": 23222,
        "used": 576
      },
      {
        "insn": 52206459,
        "free": 23221,
        "used": 577
      },
      {
        "insn": 52254392,
        "free": 23220,
        "used": 578
      },
      {
        "insn": 52256276,
        "free": 23219,
        "used": 579
      },
      {
        "insn": 52258415,
        "free": 23218,
        "used": 580
      },
      {
        "insn": 52260171,
        "free": 23217,
        "used": 581
      },
      {
        "insn": 52262044,
        "free": 23216,
        "used": 582
      },
      {
        "insn": 52263728,
        "free": 23215,
        "used": 583
      },
      {
        "insn": 52265847,
        "free": 23214,
        "used": 584
      },
      {
        "insn": 52267705,
        "free": 23213,
        "used": 585
      },
      {
        "insn": 52277867,
        "free": 23212,
        "used": 586
      },
      {
        "insn": 52282524,
        "free": 23211,
        "used": 587
      },
      {
        "insn": 52284463,
        "free": 23210,
        "used": 588
      },
      {
        "insn": 52286321,
        "free": 23209,
        "used": 589
      },
      {
        "insn": 52288190,
        "free": 23208,
        "used": 590
      },
      {
        "insn": 52290070,
        "free": 23207,
        "used": 591
      },
      {
        "insn": 52305268,
        "free": 23206,
        "used": 592
      },
      {
        "insn": 52307186,
        "free": 23205,
        "used": 593
      },
      {
        "insn": 52315052,
        "free": 23204,
        "used": 594
      },
      {
        "insn": 52319818,
        "free": 23203,
        "used": 595
      },
      {
        "insn": 52321757,
        "free": 23202,
        "used": 596
      },
      {
        "insn": 52369268,
        "free": 23201,
        "used": 597
      },
      {
        "insn": 52371152,
        "free": 23200,
        "used": 598
      },
      {
        "insn": 52373291,
        "free": 23199,
        "used": 599
      },
      {
        "insn": 52375047,
        "free": 23198,
        "used": 600
      },
      {
        "insn": 52376920,
        "free": 23197,
        "used": 601
      },
      {
        "insn": 52378601,
        "free": 23196,
        "used": 602
      },
      {
        "insn": 52380772,
        "free": 23195,
        "used": 603
      },
      {
        "insn": 52382627,
        "free": 23194,
        "used": 604
      },
      {
        "insn": 52392731,
        "free": 23193,
        "used": 605
      },
      {
        "insn": 52397423,
        "free": 23192,
        "used": 606
      },
      {
        "insn": 52399338,
        "free": 23191,
        "used": 607
      },
      {
        "insn": 52401193,
        "free": 23190,
        "used": 608
      },
      {
        "insn": 52403059,
        "free": 23189,
        "used": 609
      },
      {
        "insn": 52404936,
        "free": 23188,
        "used": 610
      },
      {
        "insn": 52420131,
        "free": 23187,
        "used": 611
      },
      {
        "insn": 52422067,
        "free": 23186,
        "used": 612
      },
      {
        "insn": 52429952,
        "free": 23185,
        "used": 613
      },
      {
        "insn": 52434715,
        "free": 23184,
        "used": 614
      },
      {
        "insn": 52436630,
        "free": 23183,
        "used": 615
      },
      {
        "insn": 52483989,
        "free": 23182,
        "used": 616
      },
      {
        "insn": 52485870,
        "free": 23181,
        "used": 617
      },
      {
        "insn": 52488006,
        "free": 23180,
        "used": 618
      },
      {
        "insn": 52489759,
        "free": 23179,
        "used": 619
      },
      {
        "insn": 52491667,
        "free": 23178,
        "used": 620
      },
      {
        "insn": 52493348,
        "free": 23177,
        "used": 621
      },
      {
        "insn": 52495464,
        "free": 23176,
        "used": 622
      },
      {
        "insn": 52497319,
        "free": 23175,
        "used": 623
      },
      {
        "insn": 52507423,
        "free": 23174,
        "used": 624
      },
      {
        "insn": 52512098,
        "free": 23173,
        "used": 625
      },
      {
        "insn": 52514013,
        "free": 23172,
        "used": 626
      },
      {
        "insn": 52515868,
        "free": 23171,
        "used": 627
      },
      {
        "insn": 52517734,
        "free": 23170,
        "used": 628
      },
      {
        "insn": 52519611,
        "free": 23169,
        "used": 629
      },
      {
        "insn": 52534806,
        "free": 23168,
        "used": 630
      },
      {
        "insn": 52536844,
        "free": 23167,
        "used": 631
      },
      {
        "insn": 52544691,
        "free": 23166,
        "used": 632
      },
      {
        "insn": 52549454,
        "free": 23165,
        "used": 633
      },
      {
        "insn": 52551369,
        "free": 23164,
        "used": 634
      },
      {
        "insn": 52598798,
        "free": 23163,
        "used": 635
      },
      {
        "insn": 52600679,
        "free": 23162,
        "used": 636
      },
      {
        "insn": 52602815,
        "free": 23161,
        "used": 637
      },
      {
        "insn": 52604568,
        "free": 23160,
        "used": 638
      },
      {
        "insn": 52606459,
        "free": 23159,
        "used": 639
      },
      {
        "insn": 52608140,
        "free": 23158,
        "used": 640
      },
      {
        "insn": 52610277,
        "free": 23157,
        "used": 641
      },
      {
        "insn": 52612132,
        "free": 23156,
        "used": 642
      },
      {
        "insn": 52622236,
        "free": 23155,
        "used": 643
      },
      {
        "insn": 52626945,
        "free": 23154,
        "used": 644
      },
      {
        "insn": 52628860,
        "free": 23153,
        "used": 645
      },
      {
        "insn": 52630715,
        "free": 23152,
        "used": 646
      },
      {
        "insn": 52632581,
        "free": 23151,
        "used": 647
      },
      {
        "insn": 52634458,
        "free": 23150,
        "used": 648
      },
      {
        "insn": 52649653,
        "free": 23149,
        "used": 649
      },
      {
        "insn": 52651589,
        "free": 23148,
        "used": 650
      },
      {
        "insn": 52659457,
        "free": 23147,
        "used": 651
      },
      {
        "insn": 52664220,
        "free": 23146,
        "used": 652
      },
      {
        "insn": 52666135,
        "free": 23145,
        "used": 653
      },
      {
        "insn": 52713494,
        "free": 23144,
        "used": 654
      },
      {
        "insn": 52715375,
        "free": 23143,
        "used": 655
      },
      {
        "insn": 52717511,
        "free": 23142,
        "used": 656
      },
      {
        "insn": 52719264,
        "free": 23141,
        "used": 657
      },
      {
        "insn": 52721206,
        "free": 23140,
        "used": 658
      },
      {
        "insn": 52722887,
        "free": 23139,
        "used": 659
      },
      {
        "insn": 52725003,
        "free": 23138,
        "used": 660
      },
      {
        "insn": 52726858,
        "free": 23137,
        "used": 661
      },
      {
        "insn": 52736962,
        "free": 23136,
        "used": 662
      },
      {
        "insn": 52741637,
        "free": 23135,
        "used": 663
      },
      {
        "insn": 52743552,
        "free": 23134,
        "used": 664
      },
      {
        "insn": 52745407,
        "free": 23133,
        "used": 665
      },
      {
        "insn": 52747273,
        "free": 23132,
        "used": 666
      },
      {
        "insn": 52749150,
        "free": 23131,
        "used": 667
      },
      {
        "insn": 52764345,
        "free": 23130,
        "used": 668
      },
      {
        "insn": 52766298,
        "free": 23129,
        "used": 669
      },
      {
        "insn": 52774145,
        "free": 23128,
        "used": 670
      },
      {
        "insn": 52778908,
        "free": 23127,
        "used": 671
      },
      {
        "insn": 52780823,
        "free": 23126,
        "used": 672
      },
      {
        "insn": 52828359,
        "free": 23125,
        "used": 673
      },
      {
        "insn": 52830240,
        "free": 23124,
        "used": 674
      },
      {
        "insn": 52832376,
        "free": 23123,
        "used": 675
      },
      {
        "insn": 52834129,
        "free": 23122,
        "used": 676
      },
      {
        "insn": 52836020,
        "free": 23121,
        "used": 677
      },
      {
        "insn": 52837701,
        "free": 23120,
        "used": 678
      },
      {
        "insn": 52839855,
        "free": 23119,
        "used": 679
      },
      {
        "insn": 52841710,
        "free": 23118,
        "used": 680
      },
      {
        "insn": 52851852,
        "free": 23117,
        "used": 681
      },
      {
        "insn": 52856506,
        "free": 23116,
        "used": 682
      },
      {
        "insn": 52858442,
        "free": 23115,
        "used": 683
      },
      {
        "insn": 52860297,
        "free": 23114,
        "used": 684
      },
      {
        "insn": 52862163,
        "free": 23113,
        "used": 685
      },
      {
        "insn": 52864040,
        "free": 23112,
        "used": 686
      },
      {
        "insn": 52879235,
        "free": 23111,
        "used": 687
      },
      {
        "insn": 52881150,
        "free": 23110,
        "used": 688
      },
      {
        "insn": 52889064,
        "free": 23109,
        "used": 689
      },
      {
        "insn": 52893827,
        "free": 23108,
        "used": 690
      },
      {
        "insn": 52895763,
        "free": 23107,
        "used": 691
      },
      {
        "insn": 52943143,
        "free": 23106,
        "used": 692
      },
      {
        "insn": 52945024,
        "free": 23105,
        "used": 693
      },
      {
        "insn": 52947160,
        "free": 23104,
        "used": 694
      },
      {
        "insn": 52948913,
        "free": 23103,
        "used": 695
      },
      {
        "insn": 52950783,
        "free": 23102,
        "used": 696
      },
      {
        "insn": 52952464,
        "free": 23101,
        "used": 697
      },
      {
        "insn": 52954580,
        "free": 23100,
        "used": 698
      },
      {
        "insn": 52956435,
        "free": 23099,
        "used": 699
      },
      {
        "insn": 52966560,
        "free": 23098,
        "used": 700
      },
      {
        "insn": 52971214,
        "free": 23097,
        "used": 701
      },
      {
        "insn": 52973184,
        "free": 23096,
        "used": 702
      },
      {
        "insn": 52975039,
        "free": 23095,
        "used": 703
      },
      {
        "insn": 52976905,
        "free": 23094,
        "used": 704
      },
      {
        "insn": 52978782,
        "free": 23093,
        "used": 705
      },
      {
        "insn": 52993977,
        "free": 23092,
        "used": 706
      },
      {
        "insn": 52995892,
        "free": 23091,
        "used": 707
      },
      {
        "insn": 53003734,
        "free": 23090,
        "used": 708
      },
      {
        "insn": 53008497,
        "free": 23089,
        "used": 709
      },
      {
        "insn": 53010450,
        "free": 23088,
        "used": 710
      },
      {
        "insn": 53060807,
        "free": 23089,
        "used": 709
      },
      {
        "insn": 53061110,
        "free": 23090,
        "used": 708
      },
      {
        "insn": 53062694,
        "free": 23091,
        "used": 707
      },
      {
        "insn": 53062788,
        "free": 23092,
        "used": 706
      },
      {
        "insn": 53062887,
        "free": 23093,
        "used": 705
      },
      {
        "insn": 53062991,
        "free": 23094,
        "used": 704
      },
      {
        "insn": 53063100,
        "free": 23095,
        "used": 703
      },
      {
        "insn": 53124838,
        "free": 23096,
        "used": 702
      },
      {
        "insn": 53125006,
        "free": 23097,
        "used": 701
      },
      {
        "insn": 53125179,
        "free": 23098,
        "used": 700
      },
      {
        "insn": 53125561,
        "free": 23099,
        "used": 699
      },
      {
        "insn": 53125953,
        "free": 23100,
        "used": 698
      },
      {
        "insn": 53126141,
        "free": 23101,
        "used": 697
      },
      {
        "insn": 53126334,
        "free": 23102,
        "used": 696
      },
      {
        "insn": 53126532,
        "free": 23103,
        "used": 695
      },
      {
        "insn": 53126735,
        "free": 23104,
        "used": 694
      },
      {
        "insn": 53127157,
        "free": 23105,
        "used": 693
      },
      {
        "insn": 53127370,
        "free": 23106,
        "used": 692
      },
      {
        "insn": 53127830,
        "free": 23107,
        "used": 691
      },
      {
        "insn": 53188806,
        "free": 23108,
        "used": 690
      },
      {
        "insn": 53189034,
        "free": 23109,
        "used": 689
      },
      {
        "insn": 53189267,
        "free": 23110,
        "used": 688
      },
      {
        "insn": 53189734,
        "free": 23111,
        "used": 687
      },
      {
        "insn": 53190211,
        "free": 23112,
        "used": 686
      },
      {
        "insn": 53190459,
        "free": 23113,
        "used": 685
      },
      {
        "insn": 53190712,
        "free": 23114,
        "used": 684
      },
      {
        "insn": 53190970,
        "free": 23115,
        "used": 683
      },
      {
        "insn": 53191233,
        "free": 23116,
        "used": 682
      },
      {
        "insn": 53191740,
        "free": 23117,
        "used": 681
      },
      {
        "insn": 53192013,
        "free": 23118,
        "used": 680
      },
      {
        "insn": 53192558,
        "free": 23119,
        "used": 679
      },
      {
        "insn": 53253597,
        "free": 23120,
        "used": 678
      },
      {
        "insn": 53253885,
        "free": 23121,
        "used": 677
      },
      {
        "insn": 53254178,
        "free": 23122,
        "used": 676
      },
      {
        "insn": 53254730,
        "free": 23123,
        "used": 675
      },
      {
        "insn": 53255292,
        "free": 23124,
        "used": 674
      },
      {
        "insn": 53255600,
        "free": 23125,
        "used": 673
      },
      {
        "insn": 53255913,
        "free": 23126,
        "used": 672
      },
      {
        "insn": 53256231,
        "free": 23127,
        "used": 671
      },
      {
        "insn": 53256554,
        "free": 23128,
        "used": 670
      },
      {
        "insn": 53257146,
        "free": 23129,
        "used": 669
      },
      {
        "insn": 53257479,
        "free": 23130,
        "used": 668
      },
      {
        "insn": 53258109,
        "free": 23131,
        "used": 667
      },
      {
        "insn": 53319257,
        "free": 23132,
        "used": 666
      },
      {
        "insn": 53319605,
        "free": 23133,
        "used": 665
      },
      {
        "insn": 53319958,
        "free": 23134,
        "used": 664
      },
      {
        "insn": 53320585,
        "free": 23135,
        "used": 663
      },
      {
        "insn": 53321222,
        "free": 23136,
        "used": 662
      },
      {
        "insn": 53321590,
        "free": 23137,
        "used": 661
      },
      {
        "insn": 53321963,
        "free": 23138,
        "used": 660
      },
      {
        "insn": 53322341,
        "free": 23139,
        "used": 659
      },
      {
        "insn": 53322724,
        "free": 23140,
        "used": 658
      },
      {
        "insn": 53323391,
        "free": 23141,
        "used": 657
      },
      {
        "insn": 53323784,
        "free": 23142,
        "used": 656
      },
      {
        "insn": 53324489,
        "free": 23143,
        "used": 655
      },
      {
        "insn": 53385628,
        "free": 23144,
        "used": 654
      },
      {
        "insn": 53386036,
        "free": 23145,
        "used": 653
      },
      {
        "insn": 53386449,
        "free": 23146,
        "used": 652
      },
      {
        "insn": 53387161,
        "free": 23147,
        "used": 651
      },
      {
        "insn": 53387883,
        "free": 23148,
        "used": 650
      },
      {
        "insn": 53388311,
        "free": 23149,
        "used": 649
      },
      {
        "insn": 53388744,
        "free": 23150,
        "used": 648
      },
      {
        "insn": 53389182,
        "free": 23151,
        "used": 647
      },
      {
        "insn": 53389625,
        "free": 23152,
        "used": 646
      },
      {
        "insn": 53390300,
        "free": 23153,
        "used": 645
      },
      {
        "insn": 53390753,
        "free": 23154,
        "used": 644
      },
      {
        "insn": 53391533,
        "free": 23155,
        "used": 643
      },
      {
        "insn": 53452720,
        "free": 23156,
        "used": 642
      },
      {
        "insn": 53453188,
        "free": 23157,
        "used": 641
      },
      {
        "insn": 53453661,
        "free": 23158,
        "used": 640
      },
      {
        "insn": 53454448,
        "free": 23159,
        "used": 639
      },
      {
        "insn": 53455245,
        "free": 23160,
        "used": 638
      },
      {
        "insn": 53455733,
        "free": 23161,
        "used": 637
      },
      {
        "insn": 53456226,
        "free": 23162,
        "used": 636
      },
      {
        "insn": 53456724,
        "free": 23163,
        "used": 635
      },
      {
        "insn": 53457227,
        "free": 23164,
        "used": 634
      },
      {
        "insn": 53458054,
        "free": 23165,
        "used": 633
      },
      {
        "insn": 53458567,
        "free": 23166,
        "used": 632
      },
      {
        "insn": 53459340,
        "free": 23167,
        "used": 631
      },
      {
        "insn": 53520511,
        "free": 23168,
        "used": 630
      },
      {
        "insn": 53521039,
        "free": 23169,
        "used": 629
      },
      {
        "insn": 53521572,
        "free": 23170,
        "used": 628
      },
      {
        "insn": 53522424,
        "free": 23171,
        "used": 627
      },
      {
        "insn": 53523286,
        "free": 23172,
        "used": 626
      },
      {
        "insn": 53523834,
        "free": 23173,
        "used": 625
      },
      {
        "insn": 53524387,
        "free": 23174,
        "used": 624
      },
      {
        "insn": 53524945,
        "free": 23175,
        "used": 623
      },
      {
        "insn": 53525508,
        "free": 23176,
        "used": 622
      },
      {
        "insn": 53526308,
        "free": 23177,
        "used": 621
      },
      {
        "insn": 53526881,
        "free": 23178,
        "used": 620
      },
      {
        "insn": 53527801,
        "free": 23179,
        "used": 619
      },
      {
        "insn": 53589074,
        "free": 23180,
        "used": 618
      },
      {
        "insn": 53589662,
        "free": 23181,
        "used": 617
      },
      {
        "insn": 53590255,
        "free": 23182,
        "used": 616
      },
      {
        "insn": 53591182,
        "free": 23183,
        "used": 615
      },
      {
        "insn": 53592119,
        "free": 23184,
        "used": 614
      },
      {
        "insn": 53592727,
        "free": 23185,
        "used": 613
      },
      {
        "insn": 53593340,
        "free": 23186,
        "used": 612
      },
      {
        "insn": 53593958,
        "free": 23187,
        "used": 611
      },
      {
        "insn": 53594581,
        "free": 23188,
        "used": 610
      },
      {
        "insn": 53595446,
        "free": 23189,
        "used": 609
      },
      {
        "insn": 53596079,
        "free": 23190,
        "used": 608
      },
      {
        "insn": 53597074,
        "free": 23191,
        "used": 607
      },
      {
        "insn": 53658321,
        "free": 23192,
        "used": 606
      },
      {
        "insn": 53658969,
        "free": 23193,
        "used": 605
      },
      {
        "insn": 53659622,
        "free": 23194,
        "used": 604
      },
      {
        "insn": 53660614,
        "free": 23195,
        "used": 603
      },
      {
        "insn": 53661616,
        "free": 23196,
        "used": 602
      },
      {
        "insn": 53662284,
        "free": 23197,
        "used": 601
      },
      {
        "insn": 53662957,
        "free": 23198,
        "used": 600
      },
      {
        "insn": 53663635,
        "free": 23199,
        "used": 599
      },
      {
        "insn": 53664318,
        "free": 23200,
        "used": 598
      },
      {
        "insn": 53665243,
        "free": 23201,
        "used": 597
      },
      {
        "insn": 53665936,
        "free": 23202,
        "used": 596
      },
      {
        "insn": 53666996,
        "free": 23203,
        "used": 595
      },
      {
        "insn": 53728258,
        "free": 23204,
        "used": 594
      },
      {
        "insn": 53728966,
        "free": 23205,
        "used": 593
      },
      {
        "insn": 53729679,
        "free": 23206,
        "used": 592
      },
      {
        "insn": 53730736,
        "free": 23207,
        "used": 591
      },
      {
        "insn": 53731803,
        "free": 23208,
        "used": 590
      },
      {
        "insn": 53732531,
        "free": 23209,
        "used": 589
      },
      {
        "insn": 53733264,
        "free": 23210,
        "used": 588
      },
      {
        "insn": 53734002,
        "free": 23211,
        "used": 587
      },
      {
        "insn": 53734745,
        "free": 23212,
        "used": 586
      },
      {
        "insn": 53735740,
        "free": 23213,
        "used": 585
      },
      {
        "insn": 53736493,
        "free": 23214,
        "used": 584
      },
      {
        "insn": 53737618,
        "free": 23215,
        "used": 583
      },
      {
        "insn": 53798936,
        "free": 23216,
        "used": 582
      },
      {
        "insn": 53799704,
        "free": 23217,
        "used": 581
      },
      {
        "insn": 53800477,
        "free": 23218,
        "used": 580
      },
      {
        "insn": 53801599,
        "free": 23219,
        "used": 579
      },
      {
        "insn": 53802731,
        "free": 23220,
        "used": 578
      },
      {
        "insn": 53803519,
        "free": 23221,
        "used": 577
      },
      {
        "insn": 53804312,
        "free": 23222,
        "used": 576
      },
      {
        "insn": 53805110,
        "free": 23223,
        "used": 575
      },
      {
        "insn": 53805913,
        "free": 23224,
        "used": 574
      },
      {
        "insn": 53807075,
        "free": 23225,
        "used": 573
      },
      {
        "insn": 53807888,
        "free": 23226,
        "used": 572
      },
      {
        "insn": 53808976,
        "free": 23227,
        "used": 571
      },
      {
        "insn": 53870350,
        "free": 23228,
        "used": 570
      },
      {
        "insn": 53871178,
        "free": 23229,
        "used": 569
      },
      {
        "insn": 53872011,
        "free": 23230,
        "used": 568
      },
      {
        "insn": 53873198,
        "free": 23231,
        "used": 567
      },
      {
        "insn": 53874395,
        "free": 23232,
        "used": 566
      },
      {
        "insn": 53875243,
        "free": 23233,
        "used": 565
      },
      {
        "insn": 53876096,
        "free": 23234,
        "used": 564
      },
      {
        "insn": 53876954,
        "free": 23235,
        "used": 563
      },
      {
        "insn": 53877817,
        "free": 23236,
        "used": 562
      },
      {
        "insn": 53879044,
        "free": 23237,
        "used": 561
      },
      {
        "insn": 53879917,
        "free": 23238,
        "used": 560
      },
      {
        "insn": 53881065,
        "free": 23239,
        "used": 559
      },
      {
        "insn": 54376323,
        "free": 23240,
        "used": 558
      },
      {
        "insn": 54377211,
        "free": 23241,
        "used": 557
      },
      {
        "insn": 54378104,
        "free": 23242,
        "used": 556
      },
      {
        "insn": 54379356,
        "free": 23243,
        "used": 555
      },
      {
        "insn": 54380618,
        "free": 23244,
        "used": 554
      },
      {
        "insn": 54381526,
        "free": 23245,
        "used": 553
      },
      {
        "insn": 54382439,
        "free": 23246,
        "used": 552
      },
      {
        "insn": 54383357,
        "free": 23247,
        "used": 551
      },
      {
        "insn": 54384280,
        "free": 23248,
        "used": 550
      },
      {
        "insn": 54385572,
        "free": 23249,
        "used": 549
      },
      {
        "insn": 54386505,
        "free": 23250,
        "used": 548
      },
      {
        "insn": 54387723,
        "free": 23251,
        "used": 547
      },
      {
        "insn": 54448995,
        "free": 23252,
        "used": 546
      },
      {
        "insn": 54449943,
        "free": 23253,
        "used": 545
      },
      {
        "insn": 54450896,
        "free": 23254,
        "used": 544
      },
      {
        "insn": 54452213,
        "free": 23255,
        "used": 543
      },
      {
        "insn": 54453540,
        "free": 23256,
        "used": 542
      },
      {
        "insn": 54454508,
        "free": 23257,
        "used": 541
      },
      {
        "insn": 54455481,
        "free": 23258,
        "used": 540
      },
      {
        "insn": 54456459,
        "free": 23259,
        "used": 539
      },
      {
        "insn": 54457442,
        "free": 23260,
        "used": 538
      },
      {
        "insn": 54458799,
        "free": 23261,
        "used": 537
      },
      {
        "insn": 54459792,
        "free": 23262,
        "used": 536
      },
      {
        "insn": 54461080,
        "free": 23263,
        "used": 535
      },
      {
        "insn": 54522442,
        "free": 23264,
        "used": 534
      },
      {
        "insn": 54523450,
        "free": 23265,
        "used": 533
      },
      {
        "insn": 54524463,
        "free": 23266,
        "used": 532
      },
      {
        "insn": 54525855,
        "free": 23267,
        "used": 531
      },
      {
        "insn": 54527257,
        "free": 23268,
        "used": 530
      },
      {
        "insn": 54528285,
        "free": 23269,
        "used": 529
      },
      {
        "insn": 54529318,
        "free": 23270,
        "used": 528
      },
      {
        "insn": 54530356,
        "free": 23271,
        "used": 527
      },
      {
        "insn": 54531399,
        "free": 23272,
        "used": 526
      },
      {
        "insn": 54532831,
        "free": 23273,
        "used": 525
      },
      {
        "insn": 54533884,
        "free": 23274,
        "used": 524
      },
      {
        "insn": 54535237,
        "free": 23275,
        "used": 523
      },
      {
        "insn": 54596545,
        "free": 23276,
        "used": 522
      },
      {
        "insn": 54597613,
        "free": 23277,
        "used": 521
      },
      {
        "insn": 54598686,
        "free": 23278,
        "used": 520
      },
      {
        "insn": 54600143,
        "free": 23279,
        "used": 519
      },
      {
        "insn": 54601610,
        "free": 23280,
        "used": 518
      },
      {
        "insn": 54602698,
        "free": 23281,
        "used": 517
      },
      {
        "insn": 54603791,
        "free": 23282,
        "used": 516
      },
      {
        "insn": 54604889,
        "free": 23283,
        "used": 515
      },
      {
        "insn": 54605992,
        "free": 23284,
        "used": 514
      },
      {
        "insn": 54607489,
        "free": 23285,
        "used": 513
      },
      {
        "insn": 54608602,
        "free": 23286,
        "used": 512
      },
      {
        "insn": 54610025,
        "free": 23287,
        "used": 511
      },
      {
        "insn": 54655112,
        "free": 23288,
        "used": 510
      },
      {
        "insn": 54656410,
        "free": 23289,
        "used": 509
      },
      {
        "insn": 54659149,
        "free": 23290,
        "used": 508
      },
      {
        "insn": 54660238,
        "free": 23291,
        "used": 507
      },
      {
        "insn": 54661332,
        "free": 23292,
        "used": 506
      },
      {
        "insn": 54662431,
        "free": 23293,
        "used": 505
      },
      {
        "insn": 54663535,
        "free": 23294,
        "used": 504
      },
      {
        "insn": 54687072,
        "free": 23295,
        "used": 503
      },
      {
        "insn": 54688405,
        "free": 23296,
        "used": 502
      },
      {
        "insn": 54691159,
        "free": 23297,
        "used": 501
      },
      {
        "insn": 54692283,
        "free": 23298,
        "used": 500
      },
      {
        "insn": 54693412,
        "free": 23299,
        "used": 499
      },
      {
        "insn": 54694546,
        "free": 23300,
        "used": 498
      },
      {
        "insn": 54695685,
        "free": 23301,
        "used": 497
      },
      {
        "insn": 54719250,
        "free": 23302,
        "used": 496
      },
      {
        "insn": 54720618,
        "free": 23303,
        "used": 495
      },
      {
        "insn": 54723440,
        "free": 23304,
        "used": 494
      },
      {
        "insn": 54724599,
        "free": 23305,
        "used": 493
      },
      {
        "insn": 54725763,
        "free": 23306,
        "used": 492
      },
      {
        "insn": 54726932,
        "free": 23307,
        "used": 491
      },
      {
        "insn": 54728106,
        "free": 23308,
        "used": 490
      },
      {
        "insn": 54752150,
        "free": 23309,
        "used": 489
      },
      {
        "insn": 54753553,
        "free": 23310,
        "used": 488
      },
      {
        "insn": 54756748,
        "free": 23311,
        "used": 487
      },
      {
        "insn": 54757942,
        "free": 23312,
        "used": 486
      },
      {
        "insn": 54759141,
        "free": 23313,
        "used": 485
      },
      {
        "insn": 54760345,
        "free": 23314,
        "used": 484
      },
      {
        "insn": 54761554,
        "free": 23315,
        "used": 483
      },
      {
        "insn": 54785221,
        "free": 23316,
        "used": 482
      },
      {
        "insn": 54786659,
        "free": 23317,
        "used": 481
      },
      {
        "insn": 54789526,
        "free": 23318,
        "used": 480
      },
      {
        "insn": 54790755,
        "free": 23319,
        "used": 479
      },
      {
        "insn": 54791989,
        "free": 23320,
        "used": 478
      },
      {
        "insn": 54793228,
        "free": 23321,
        "used": 477
      },
      {
        "insn": 54794472,
        "free": 23322,
        "used": 476
      },
      {
        "insn": 54818205,
        "free": 23323,
        "used": 475
      },
      {
        "insn": 54819678,
        "free": 23324,
        "used": 474
      },
      {
        "insn": 54822472,
        "free": 23325,
        "used": 473
      },
      {
        "insn": 54823736,
        "free": 23326,
        "used": 472
      },
      {
        "insn": 54825005,
        "free": 23327,
        "used": 471
      },
      {
        "insn": 54826279,
        "free": 23328,
        "used": 470
      },
      {
        "insn": 54827558,
        "free": 23329,
        "used": 469
      },
      {
        "insn": 54851325,
        "free": 23330,
        "used": 468
      },
      {
        "insn": 54852833,
        "free": 23331,
        "used": 467
      },
      {
        "insn": 54855642,
        "free": 23332,
        "used": 466
      },
      {
        "insn": 54856941,
        "free": 23333,
        "used": 465
      },
      {
        "insn": 54858245,
        "free": 23334,
        "used": 464
      },
      {
        "insn": 54859554,
        "free": 23335,
        "used": 463
      },
      {
        "insn": 54860868,
        "free": 23336,
        "used": 462
      },
      {
        "insn": 54885387,
        "free": 23337,
        "used": 461
      },
      {
        "insn": 54886930,
        "free": 23338,
        "used": 460
      },
      {
        "insn": 54890308,
        "free": 23339,
        "used": 459
      },
      {
        "insn": 54891642,
        "free": 23340,
        "used": 458
      },
      {
        "insn": 54892981,
        "free": 23341,
        "used": 457
      },
      {
        "insn": 54894325,
        "free": 23342,
        "used": 456
      },
      {
        "insn": 54895674,
        "free": 23343,
        "used": 455
      },
      {
        "insn": 54919504,
        "free": 23344,
        "used": 454
      },
      {
        "insn": 54922753,
        "free": 23345,
        "used": 453
      },
      {
        "insn": 54925513,
        "free": 23346,
        "used": 452
      },
      {
        "insn": 54926882,
        "free": 23347,
        "used": 451
      },
      {
        "insn": 54928256,
        "free": 23348,
        "used": 450
      },
      {
        "insn": 54929635,
        "free": 23349,
        "used": 449
      },
      {
        "insn": 54931019,
        "free": 23350,
        "used": 448
      },
      {
        "insn": 54954946,
        "free": 23351,
        "used": 447
      },
      {
        "insn": 54956559,
        "free": 23352,
        "used": 446
      },
      {
        "insn": 54959371,
        "free": 23353,
        "used": 445
      },
      {
        "insn": 54960775,
        "free": 23354,
        "used": 444
      },
      {
        "insn": 54962184,
        "free": 23355,
        "used": 443
      },
      {
        "insn": 54963598,
        "free": 23356,
        "used": 442
      },
      {
        "insn": 54965017,
        "free": 23357,
        "used": 441
      },
      {
        "insn": 54989010,
        "free": 23358,
        "used": 440
      },
      {
        "insn": 54990658,
        "free": 23359,
        "used": 439
      },
      {
        "insn": 54993502,
        "free": 23360,
        "used": 438
      },
      {
        "insn": 54994941,
        "free": 23361,
        "used": 437
      },
      {
        "insn": 54996385,
        "free": 23362,
        "used": 436
      },
      {
        "insn": 54997834,
        "free": 23363,
        "used": 435
      },
      {
        "insn": 54999288,
        "free": 23364,
        "used": 434
      },
      {
        "insn": 55023260,
        "free": 23365,
        "used": 433
      },
      {
        "insn": 55024943,
        "free": 23366,
        "used": 432
      },
      {
        "insn": 55027802,
        "free": 23367,
        "used": 431
      },
      {
        "insn": 55029276,
        "free": 23368,
        "used": 430
      },
      {
        "insn": 55030755,
        "free": 23369,
        "used": 429
      },
      {
        "insn": 55032239,
        "free": 23370,
        "used": 428
      },
      {
        "insn": 55033728,
        "free": 23371,
        "used": 427
      },
      {
        "insn": 55057765,
        "free": 23372,
        "used": 426
      },
      {
        "insn": 55059483,
        "free": 23373,
        "used": 425
      },
      {
        "insn": 55062435,
        "free": 23374,
        "used": 424
      },
      {
        "insn": 55063944,
        "free": 23375,
        "used": 423
      },
      {
        "insn": 55065458,
        "free": 23376,
        "used": 422
      },
      {
        "insn": 55066977,
        "free": 23377,
        "used": 421
      },
      {
        "insn": 55068501,
        "free": 23378,
        "used": 420
      },
      {
        "insn": 55092567,
        "free": 23379,
        "used": 419
      },
      {
        "insn": 55094320,
        "free": 23380,
        "used": 418
      },
      {
        "insn": 55097307,
        "free": 23381,
        "used": 417
      },
      {
        "insn": 55098851,
        "free": 23382,
        "used": 416
      },
      {
        "insn": 55100400,
        "free": 23383,
        "used": 415
      },
      {
        "insn": 55101954,
        "free": 23384,
        "used": 414
      },
      {
        "insn": 55103513,
        "free": 23385,
        "used": 413
      },
      {
        "insn": 55127573,
        "free": 23386,
        "used": 412
      },
      {
        "insn": 55129361,
        "free": 23387,
        "used": 411
      },
      {
        "insn": 55132245,
        "free": 23388,
        "used": 410
      },
      {
        "insn": 55133824,
        "free": 23389,
        "used": 409
      },
      {
        "insn": 55135408,
        "free": 23390,
        "used": 408
      },
      {
        "insn": 55136997,
        "free": 23391,
        "used": 407
      },
      {
        "insn": 55138591,
        "free": 23392,
        "used": 406
      },
      {
        "insn": 55163541,
        "free": 23393,
        "used": 405
      },
      {
        "insn": 55165364,
        "free": 23394,
        "used": 404
      },
      {
        "insn": 55168832,
        "free": 23395,
        "used": 403
      },
      {
        "insn": 55170446,
        "free": 23396,
        "used": 402
      },
      {
        "insn": 55172065,
        "free": 23397,
        "used": 401
      },
      {
        "insn": 55173689,
        "free": 23398,
        "used": 400
      },
      {
        "insn": 55175318,
        "free": 23399,
        "used": 399
      },
      {
        "insn": 55199478,
        "free": 23400,
        "used": 398
      },
      {
        "insn": 55201336,
        "free": 23401,
        "used": 397
      },
      {
        "insn": 55204225,
        "free": 23402,
        "used": 396
      },
      {
        "insn": 55205874,
        "free": 23403,
        "used": 395
      },
      {
        "insn": 55207528,
        "free": 23404,
        "used": 394
      },
      {
        "insn": 55209187,
        "free": 23405,
        "used": 393
      },
      {
        "insn": 55210851,
        "free": 23406,
        "used": 392
      },
      {
        "insn": 55235161,
        "free": 23407,
        "used": 391
      },
      {
        "insn": 55237054,
        "free": 23408,
        "used": 390
      },
      {
        "insn": 55240081,
        "free": 23409,
        "used": 389
      },
      {
        "insn": 55241765,
        "free": 23410,
        "used": 388
      },
      {
        "insn": 55243454,
        "free": 23411,
        "used": 387
      },
      {
        "insn": 55245148,
        "free": 23412,
        "used": 386
      },
      {
        "insn": 55246847,
        "free": 23413,
        "used": 385
      },
      {
        "insn": 55271092,
        "free": 23414,
        "used": 384
      },
      {
        "insn": 55273020,
        "free": 23415,
        "used": 383
      },
      {
        "insn": 55275929,
        "free": 23416,
        "used": 382
      },
      {
        "insn": 55277648,
        "free": 23417,
        "used": 381
      },
      {
        "insn": 55279372,
        "free": 23418,
        "used": 380
      },
      {
        "insn": 55281101,
        "free": 23419,
        "used": 379
      },
      {
        "insn": 55282835,
        "free": 23420,
        "used": 378
      },
      {
        "insn": 55307579,
        "free": 23421,
        "used": 377
      },
      {
        "insn": 55309542,
        "free": 23422,
        "used": 376
      },
      {
        "insn": 55312599,
        "free": 23423,
        "used": 375
      },
      {
        "insn": 55314353,
        "free": 23424,
        "used": 374
      },
      {
        "insn": 55316112,
        "free": 23425,
        "used": 373
      },
      {
        "insn": 55317876,
        "free": 23426,
        "used": 372
      },
      {
        "insn": 55319645,
        "free": 23427,
        "used": 371
      },
      {
        "insn": 55343980,
        "free": 23428,
        "used": 370
      },
      {
        "insn": 55345978,
        "free": 23429,
        "used": 369
      },
      {
        "insn": 55348883,
        "free": 23430,
        "used": 368
      },
      {
        "insn": 55350672,
        "free": 23431,
        "used": 367
      },
      {
        "insn": 55352466,
        "free": 23432,
        "used": 366
      },
      {
        "insn": 55354265,
        "free": 23433,
        "used": 365
      },
      {
        "insn": 55356069,
        "free": 23434,
        "used": 364
      },
      {
        "insn": 55380895,
        "free": 23435,
        "used": 363
      },
      {
        "insn": 55382928,
        "free": 23436,
        "used": 362
      },
      {
        "insn": 55385918,
        "free": 23437,
        "used": 361
      },
      {
        "insn": 55387742,
        "free": 23438,
        "used": 360
      },
      {
        "insn": 55389571,
        "free": 23439,
        "used": 359
      },
      {
        "insn": 55391405,
        "free": 23440,
        "used": 358
      },
      {
        "insn": 55393244,
        "free": 23441,
        "used": 357
      },
      {
        "insn": 55417595,
        "free": 23442,
        "used": 356
      },
      {
        "insn": 55419663,
        "free": 23443,
        "used": 355
      },
      {
        "insn": 55422641,
        "free": 23444,
        "used": 354
      },
      {
        "insn": 55424500,
        "free": 23445,
        "used": 353
      },
      {
        "insn": 55426364,
        "free": 23446,
        "used": 352
      },
      {
        "insn": 55428233,
        "free": 23447,
        "used": 351
      },
      {
        "insn": 55430107,
        "free": 23448,
        "used": 350
      },
      {
        "insn": 55454532,
        "free": 23449,
        "used": 349
      },
      {
        "insn": 55456635,
        "free": 23450,
        "used": 348
      },
      {
        "insn": 55459636,
        "free": 23451,
        "used": 347
      },
      {
        "insn": 55461530,
        "free": 23452,
        "used": 346
      },
      {
        "insn": 55463429,
        "free": 23453,
        "used": 345
      },
      {
        "insn": 55465333,
        "free": 23454,
        "used": 344
      },
      {
        "insn": 55467242,
        "free": 23455,
        "used": 343
      },
      {
        "insn": 55491638,
        "free": 23456,
        "used": 342
      },
      {
        "insn": 55493776,
        "free": 23457,
        "used": 341
      },
      {
        "insn": 55496922,
        "free": 23458,
        "used": 340
      },
      {
        "insn": 55498851,
        "free": 23459,
        "used": 339
      },
      {
        "insn": 55500785,
        "free": 23460,
        "used": 338
      },
      {
        "insn": 55502724,
        "free": 23461,
        "used": 337
      },
      {
        "insn": 55504668,
        "free": 23462,
        "used": 336
      },
      {
        "insn": 55529349,
        "free": 23463,
        "used": 335
      },
      {
        "insn": 55531522,
        "free": 23464,
        "used": 334
      },
      {
        "insn": 55534624,
        "free": 23465,
        "used": 333
      },
      {
        "insn": 55536588,
        "free": 23466,
        "used": 332
      },
      {
        "insn": 55538557,
        "free": 23467,
        "used": 331
      },
      {
        "insn": 55540531,
        "free": 23468,
        "used": 330
      },
      {
        "insn": 55542510,
        "free": 23469,
        "used": 329
      },
      {
        "insn": 55567015,
        "free": 23470,
        "used": 328
      },
      {
        "insn": 55569223,
        "free": 23471,
        "used": 327
      },
      {
        "insn": 55572340,
        "free": 23472,
        "used": 326
      },
      {
        "insn": 55574339,
        "free": 23473,
        "used": 325
      },
      {
        "insn": 55576343,
        "free": 23474,
        "used": 324
      },
      {
        "insn": 55578352,
        "free": 23475,
        "used": 323
      },
      {
        "insn": 55580366,
        "free": 23476,
        "used": 322
      },
      {
        "insn": 55605018,
        "free": 23477,
        "used": 321
      },
      {
        "insn": 55607261,
        "free": 23478,
        "used": 320
      },
      {
        "insn": 55610220,
        "free": 23479,
        "used": 319
      },
      {
        "insn": 55612254,
        "free": 23480,
        "used": 318
      },
      {
        "insn": 55614293,
        "free": 23481,
        "used": 317
      },
      {
        "insn": 55616337,
        "free": 23482,
        "used": 316
      },
      {
        "insn": 55618386,
        "free": 23483,
        "used": 315
      },
      {
        "insn": 55642987,
        "free": 23484,
        "used": 314
      },
      {
        "insn": 55645265,
        "free": 23485,
        "used": 313
      },
      {
        "insn": 55648285,
        "free": 23486,
        "used": 312
      },
      {
        "insn": 55650354,
        "free": 23487,
        "used": 311
      },
      {
        "insn": 55652428,
        "free": 23488,
        "used": 310
      },
      {
        "insn": 55654507,
        "free": 23489,
        "used": 309
      },
      {
        "insn": 55656591,
        "free": 23490,
        "used": 308
      },
      {
        "insn": 55681587,
        "free": 23491,
        "used": 307
      },
      {
        "insn": 55683900,
        "free": 23492,
        "used": 306
      },
      {
        "insn": 55686874,
        "free": 23493,
        "used": 305
      },
      {
        "insn": 55688978,
        "free": 23494,
        "used": 304
      },
      {
        "insn": 55691087,
        "free": 23495,
        "used": 303
      },
      {
        "insn": 55693201,
        "free": 23496,
        "used": 302
      },
      {
        "insn": 55695320,
        "free": 23497,
        "used": 301
      },
      {
        "insn": 55720014,
        "free": 23498,
        "used": 300
      },
      {
        "insn": 55722362,
        "free": 23499,
        "used": 299
      },
      {
        "insn": 55725393,
        "free": 23500,
        "used": 298
      },
      {
        "insn": 55727532,
        "free": 23501,
        "used": 297
      },
      {
        "insn": 55729676,
        "free": 23502,
        "used": 296
      },
      {
        "insn": 55731825,
        "free": 23503,
        "used": 295
      },
      {
        "insn": 55733979,
        "free": 23504,
        "used": 294
      },
      {
        "insn": 55759463,
        "free": 23505,
        "used": 293
      },
      {
        "insn": 55761846,
        "free": 23506,
        "used": 292
      },
      {
        "insn": 55765700,
        "free": 23507,
        "used": 291
      },
      {
        "insn": 55767874,
        "free": 23508,
        "used": 290
      },
      {
        "insn": 55770053,
        "free": 23509,
        "used": 289
      },
      {
        "insn": 55772237,
        "free": 23510,
        "used": 288
      },
      {
        "insn": 55774426,
        "free": 23511,
        "used": 287
      },
      {
        "insn": 55799133,
        "free": 23512,
        "used": 286
      },
      {
        "insn": 55801551,
        "free": 23513,
        "used": 285
      },
      {
        "insn": 55804648,
        "free": 23514,
        "used": 284
      },
      {
        "insn": 55806857,
        "free": 23515,
        "used": 283
      },
      {
        "insn": 55809071,
        "free": 23516,
        "used": 282
      },
      {
        "insn": 55811290,
        "free": 23517,
        "used": 281
      },
      {
        "insn": 55813514,
        "free": 23518,
        "used": 280
      },
      {
        "insn": 55838485,
        "free": 23519,
        "used": 279
      },
      {
        "insn": 55840938,
        "free": 23520,
        "used": 278
      },
      {
        "insn": 55844098,
        "free": 23521,
        "used": 277
      },
      {
        "insn": 55846342,
        "free": 23522,
        "used": 276
      },
      {
        "insn": 55848591,
        "free": 23523,
        "used": 275
      },
      {
        "insn": 55850845,
        "free": 23524,
        "used": 274
      },
      {
        "insn": 55853104,
        "free": 23525,
        "used": 273
      },
      {
        "insn": 55877877,
        "free": 23526,
        "used": 272
      },
      {
        "insn": 55880365,
        "free": 23527,
        "used": 271
      },
      {
        "insn": 55883457,
        "free": 23528,
        "used": 270
      },
      {
        "insn": 55885736,
        "free": 23529,
        "used": 269
      },
      {
        "insn": 55888020,
        "free": 23530,
        "used": 268
      },
      {
        "insn": 55890309,
        "free": 23531,
        "used": 267
      },
      {
        "insn": 55892603,
        "free": 23532,
        "used": 266
      },
      {
        "insn": 55917467,
        "free": 23533,
        "used": 265
      },
      {
        "insn": 55919990,
        "free": 23534,
        "used": 264
      },
      {
        "insn": 55923145,
        "free": 23535,
        "used": 263
      },
      {
        "insn": 55925459,
        "free": 23536,
        "used": 262
      },
      {
        "insn": 55927778,
        "free": 23537,
        "used": 261
      },
      {
        "insn": 55930102,
        "free": 23538,
        "used": 260
      },
      {
        "insn": 55932431,
        "free": 23539,
        "used": 259
      },
      {
        "insn": 55957257,
        "free": 23540,
        "used": 258
      },
      {
        "insn": 55959815,
        "free": 23541,
        "used": 257
      },
      {
        "insn": 55962907,
        "free": 23542,
        "used": 256
      },
      {
        "insn": 55965256,
        "free": 23543,
        "used": 255
      },
      {
        "insn": 55967610,
        "free": 23544,
        "used": 254
      },
      {
        "insn": 55969969,
        "free": 23545,
        "used": 253
      },
      {
        "insn": 55972333,
        "free": 23546,
        "used": 252
      },
      {
        "insn": 55997442,
        "free": 23547,
        "used": 251
      },
      {
        "insn": 56000035,
        "free": 23548,
        "used": 250
      },
      {
        "insn": 56003127,
        "free": 23549,
        "used": 249
      },
      {
        "insn": 56005511,
        "free": 23550,
        "used": 248
      },
      {
        "insn": 56007900,
        "free": 23551,
        "used": 247
      },
      {
        "insn": 56010294,
        "free": 23552,
        "used": 246
      },
      {
        "insn": 56012693,
        "free": 23553,
        "used": 245
      },
      {
        "insn": 56037597,
        "free": 23554,
        "used": 244
      },
      {
        "insn": 56040225,
        "free": 23555,
        "used": 243
      },
      {
        "insn": 56043345,
        "free": 23556,
        "used": 242
      },
      {
        "insn": 56045764,
        "free": 23557,
        "used": 241
      },
      {
        "insn": 56048188,
        "free": 23558,
        "used": 240
      },
      {
        "insn": 56050617,
        "free": 23559,
        "used": 239
      },
      {
        "insn": 56053051,
        "free": 23560,
        "used": 238
      },
      {
        "insn": 56137426,
        "free": 23561,
        "used": 237
      },
      {
        "insn": 56139919,
        "free": 23562,
        "used": 236
      },
      {
        "insn": 56142417,
        "free": 23563,
        "used": 235
      },
      {
        "insn": 56145297,
        "free": 23564,
        "used": 234
      },
      {
        "insn": 56148064,
        "free": 23565,
        "used": 233
      },
      {
        "insn": 56150577,
        "free": 23566,
        "used": 232
      },
      {
        "insn": 56153095,
        "free": 23567,
        "used": 231
      },
      {
        "insn": 56155618,
        "free": 23568,
        "used": 230
      },
      {
        "insn": 56158146,
        "free": 23569,
        "used": 229
      },
      {
        "insn": 56160943,
        "free": 23570,
        "used": 228
      },
      {
        "insn": 56163481,
        "free": 23571,
        "used": 227
      },
      {
        "insn": 56166364,
        "free": 23572,
        "used": 226
      },
      {
        "insn": 56267446,
        "free": 23573,
        "used": 225
      },
      {
        "insn": 56270169,
        "free": 23574,
        "used": 224
      },
      {
        "insn": 56273649,
        "free": 23575,
        "used": 223
      },
      {
        "insn": 56276163,
        "free": 23576,
        "used": 222
      },
      {
        "insn": 56278682,
        "free": 23577,
        "used": 221
      },
      {
        "insn": 56281206,
        "free": 23578,
        "used": 220
      },
      {
        "insn": 56283735,
        "free": 23579,
        "used": 219
      },
      {
        "insn": 56355659,
        "free": 23580,
        "used": 218
      },
      {
        "insn": 56358417,
        "free": 23581,
        "used": 217
      },
      {
        "insn": 56361894,
        "free": 23582,
        "used": 216
      },
      {
        "insn": 56364443,
        "free": 23583,
        "used": 215
      },
      {
        "insn": 56366997,
        "free": 23584,
        "used": 214
      },
      {
        "insn": 56369556,
        "free": 23585,
        "used": 213
      },
      {
        "insn": 56372120,
        "free": 23586,
        "used": 212
      },
      {
        "insn": 56444017,
        "free": 23587,
        "used": 211
      },
      {
        "insn": 56446810,
        "free": 23588,
        "used": 210
      },
      {
        "insn": 56450373,
        "free": 23589,
        "used": 209
      },
      {
        "insn": 56452957,
        "free": 23590,
        "used": 208
      },
      {
        "insn": 56455546,
        "free": 23591,
        "used": 207
      },
      {
        "insn": 56458140,
        "free": 23592,
        "used": 206
      },
      {
        "insn": 56460739,
        "free": 23593,
        "used": 205
      },
      {
        "insn": 56532743,
        "free": 23594,
        "used": 204
      },
      {
        "insn": 56535571,
        "free": 23595,
        "used": 203
      },
      {
        "insn": 56539058,
        "free": 23596,
        "used": 202
      },
      {
        "insn": 56541677,
        "free": 23597,
        "used": 201
      },
      {
        "insn": 56544301,
        "free": 23598,
        "used": 200
      },
      {
        "insn": 56546930,
        "free": 23599,
        "used": 199
      },
      {
        "insn": 56549564,
        "free": 23600,
        "used": 198
      },
      {
        "insn": 56624211,
        "free": 23601,
        "used": 197
      },
      {
        "insn": 56627074,
        "free": 23602,
        "used": 196
      },
      {
        "insn": 56630624,
        "free": 23603,
        "used": 195
      },
      {
        "insn": 56633278,
        "free": 23604,
        "used": 194
      },
      {
        "insn": 56635937,
        "free": 23605,
        "used": 193
      },
      {
        "insn": 56638601,
        "free": 23606,
        "used": 192
      },
      {
        "insn": 56641270,
        "free": 23607,
        "used": 191
      },
      {
        "insn": 56712894,
        "free": 23608,
        "used": 190
      },
      {
        "insn": 56715792,
        "free": 23609,
        "used": 189
      },
      {
        "insn": 56719211,
        "free": 23610,
        "used": 188
      },
      {
        "insn": 56721900,
        "free": 23611,
        "used": 187
      },
      {
        "insn": 56724594,
        "free": 23612,
        "used": 186
      },
      {
        "insn": 56727293,
        "free": 23613,
        "used": 185
      },
      {
        "insn": 56729997,
        "free": 23614,
        "used": 184
      },
      {
        "insn": 56802135,
        "free": 23615,
        "used": 183
      },
      {
        "insn": 56805068,
        "free": 23616,
        "used": 182
      },
      {
        "insn": 56808502,
        "free": 23617,
        "used": 181
      },
      {
        "insn": 56811226,
        "free": 23618,
        "used": 180
      },
      {
        "insn": 56813955,
        "free": 23619,
        "used": 179
      },
      {
        "insn": 56816689,
        "free": 23620,
        "used": 178
      },
      {
        "insn": 56819428,
        "free": 23621,
        "used": 177
      },
      {
        "insn": 57110430,
        "free": 23622,
        "used": 176
      },
      {
        "insn": 57113228,
        "free": 23623,
        "used": 175
      },
      {
        "insn": 57116031,
        "free": 23624,
        "used": 174
      },
      {
        "insn": 57119119,
        "free": 23625,
        "used": 173
      },
      {
        "insn": 57122166,
        "free": 23626,
        "used": 172
      },
      {
        "insn": 57124984,
        "free": 23627,
        "used": 171
      },
      {
        "insn": 57127807,
        "free": 23628,
        "used": 170
      },
      {
        "insn": 57130635,
        "free": 23629,
        "used": 169
      },
      {
        "insn": 57133468,
        "free": 23630,
        "used": 168
      },
      {
        "insn": 57136618,
        "free": 23631,
        "used": 167
      },
      {
        "insn": 57139461,
        "free": 23632,
        "used": 166
      },
      {
        "insn": 57142566,
        "free": 23633,
        "used": 165
      },
      {
        "insn": 57281350,
        "free": 23634,
        "used": 164
      },
      {
        "insn": 57284378,
        "free": 23635,
        "used": 163
      },
      {
        "insn": 57287863,
        "free": 23636,
        "used": 162
      },
      {
        "insn": 57290682,
        "free": 23637,
        "used": 161
      },
      {
        "insn": 57293506,
        "free": 23638,
        "used": 160
      },
      {
        "insn": 57296335,
        "free": 23639,
        "used": 159
      },
      {
        "insn": 57299169,
        "free": 23640,
        "used": 158
      },
      {
        "insn": 57427103,
        "free": 23641,
        "used": 157
      },
      {
        "insn": 57429996,
        "free": 23642,
        "used": 156
      },
      {
        "insn": 57432894,
        "free": 23643,
        "used": 155
      },
      {
        "insn": 57436036,
        "free": 23644,
        "used": 154
      },
      {
        "insn": 57439188,
        "free": 23645,
        "used": 153
      },
      {
        "insn": 57442101,
        "free": 23646,
        "used": 152
      },
      {
        "insn": 57445019,
        "free": 23647,
        "used": 151
      },
      {
        "insn": 57447942,
        "free": 23648,
        "used": 150
      },
      {
        "insn": 57450870,
        "free": 23649,
        "used": 149
      },
      {
        "insn": 57454098,
        "free": 23650,
        "used": 148
      },
      {
        "insn": 57457036,
        "free": 23651,
        "used": 147
      },
      {
        "insn": 57460325,
        "free": 23652,
        "used": 146
      },
      {
        "insn": 57561120,
        "free": 23653,
        "used": 145
      },
      {
        "insn": 57564243,
        "free": 23654,
        "used": 144
      },
      {
        "insn": 57567812,
        "free": 23655,
        "used": 143
      },
      {
        "insn": 57570726,
        "free": 23656,
        "used": 142
      },
      {
        "insn": 57573645,
        "free": 23657,
        "used": 141
      },
      {
        "insn": 57576569,
        "free": 23658,
        "used": 140
      },
      {
        "insn": 57579498,
        "free": 23659,
        "used": 139
      },
      {
        "insn": 57651718,
        "free": 23660,
        "used": 138
      },
      {
        "insn": 57654876,
        "free": 23661,
        "used": 137
      },
      {
        "insn": 57658601,
        "free": 23662,
        "used": 136
      },
      {
        "insn": 57661550,
        "free": 23663,
        "used": 135
      },
      {
        "insn": 57664504,
        "free": 23664,
        "used": 134
      },
      {
        "insn": 57667463,
        "free": 23665,
        "used": 133
      },
      {
        "insn": 57670427,
        "free": 23666,
        "used": 132
      },
      {
        "insn": 57747075,
        "free": 23667,
        "used": 131
      },
      {
        "insn": 57750268,
        "free": 23668,
        "used": 130
      },
      {
        "insn": 57753966,
        "free": 23669,
        "used": 129
      },
      {
        "insn": 57756950,
        "free": 23670,
        "used": 128
      },
      {
        "insn": 57759939,
        "free": 23671,
        "used": 127
      },
      {
        "insn": 57762933,
        "free": 23672,
        "used": 126
      },
      {
        "insn": 57765932,
        "free": 23673,
        "used": 125
      },
      {
        "insn": 57957804,
        "free": 23674,
        "used": 124
      },
      {
        "insn": 57960862,
        "free": 23675,
        "used": 123
      },
      {
        "insn": 57963925,
        "free": 23676,
        "used": 122
      },
      {
        "insn": 57967212,
        "free": 23677,
        "used": 121
      },
      {
        "insn": 57970509,
        "free": 23678,
        "used": 120
      },
      {
        "insn": 57973587,
        "free": 23679,
        "used": 119
      },
      {
        "insn": 57976670,
        "free": 23680,
        "used": 118
      },
      {
        "insn": 57979758,
        "free": 23681,
        "used": 117
      },
      {
        "insn": 57982851,
        "free": 23682,
        "used": 116
      },
      {
        "insn": 57986211,
        "free": 23683,
        "used": 115
      },
      {
        "insn": 57989314,
        "free": 23684,
        "used": 114
      },
      {
        "insn": 57992727,
        "free": 23685,
        "used": 113
      },
      {
        "insn": 58055416,
        "free": 23686,
        "used": 112
      },
      {
        "insn": 58058704,
        "free": 23687,
        "used": 111
      },
      {
        "insn": 58062424,
        "free": 23688,
        "used": 110
      },
      {
        "insn": 58065503,
        "free": 23689,
        "used": 109
      },
      {
        "insn": 58068587,
        "free": 23690,
        "used": 108
      },
      {
        "insn": 58071676,
        "free": 23691,
        "used": 107
      },
      {
        "insn": 58074770,
        "free": 23692,
        "used": 106
      }
    ],
    "forks": [
      {
        "insn": 26710023,
        "parent_pid": 0,
        "child_pid": 1
      },
      {
        "insn": 27531833,
        "parent_pid": 1,
        "child_pid": 2
      },
      {
        "insn": 27826259,
        "parent_pid": 2,
        "child_pid": 3
      },
      {
        "insn": 27944592,
        "parent_pid": 2,
        "child_pid": 4
      },
      {
        "insn": 29702164,
        "parent_pid": 2,
        "child_pid": 5
      },
      {
        "insn": 29820609,
        "parent_pid": 2,
        "child_pid": 6
      },
      {
        "insn": 29938921,
        "parent_pid": 2,
        "child_pid": 7
      },
      {
        "insn": 30056815,
        "parent_pid": 2,
        "child_pid": 8
      },
      {
        "insn": 30174653,
        "parent_pid": 2,
        "child_pid": 9
      },
      {
        "insn": 30292629,
        "parent_pid": 2,
        "child_pid": 10
      },
      {
        "insn": 30411135,
        "parent_pid": 2,
        "child_pid": 11
      },
      {
        "insn": 30532693,
        "parent_pid": 2,
        "child_pid": 12
      },
      {
        "insn": 30651369,
        "parent_pid": 2,
        "child_pid": 13
      },
      {
        "insn": 34114761,
        "parent_pid": 11,
        "child_pid": 3
      },
      {
        "insn": 34527283,
        "parent_pid": 12,
        "child_pid": 14
      },
      {
        "insn": 34820112,
        "parent_pid": 13,
        "child_pid": 15
      },
      {
        "insn": 34935172,
        "parent_pid": 13,
        "child_pid": 16
      },
      {
        "insn": 35049986,
        "parent_pid": 13,
        "child_pid": 17
      },
      {
        "insn": 35165354,
        "parent_pid": 13,
        "child_pid": 18
      },
      {
        "insn": 35280530,
        "parent_pid": 13,
        "child_pid": 19
      },
      {
        "insn": 35395230,
        "parent_pid": 13,
        "child_pid": 20
      },
      {
        "insn": 35510025,
        "parent_pid": 13,
        "child_pid": 21
      },
      {
        "insn": 35624691,
        "parent_pid": 13,
        "child_pid": 22
      },
      {
        "insn": 35740031,
        "parent_pid": 13,
        "child_pid": 23
      },
      {
        "insn": 40803533,
        "parent_pid": 13,
        "child_pid": 14
      },
      {
        "insn": 40918177,
        "parent_pid": 13,
        "child_pid": 24
      },
      {
        "insn": 41032807,
        "parent_pid": 13,
        "child_pid": 25
      },
      {
        "insn": 41147612,
        "parent_pid": 13,
        "child_pid": 26
      },
      {
        "insn": 41263679,
        "parent_pid": 13,
        "child_pid": 27
      },
      {
        "insn": 41378481,
        "parent_pid": 13,
        "child_pid": 28
      },
      {
        "insn": 41493213,
        "parent_pid": 13,
        "child_pid": 29
      },
      {
        "insn": 41608818,
        "parent_pid": 13,
        "child_pid": 30
      },
      {
        "insn": 41723527,
        "parent_pid": 13,
        "child_pid": 31
      },
      {
        "insn": 41838277,
        "parent_pid": 13,
        "child_pid": 32
      },
      {
        "insn": 41953037,
        "parent_pid": 13,
        "child_pid": 33
      },
      {
        "insn": 42067799,
        "parent_pid": 13,
        "child_pid": 34
      },
      {
        "insn": 49186521,
        "parent_pid": 13,
        "child_pid": 35
      },
      {
        "insn": 49301447,
        "parent_pid": 13,
        "child_pid": 36
      },
      {
        "insn": 49416106,
        "parent_pid": 13,
        "child_pid": 37
      },
      {
        "insn": 49530805,
        "parent_pid": 13,
        "child_pid": 38
      },
      {
        "insn": 49645456,
        "parent_pid": 13,
        "child_pid": 39
      },
      {
        "insn": 49760299,
        "parent_pid": 13,
        "child_pid": 40
      },
      {
        "insn": 49875031,
        "parent_pid": 13,
        "child_pid": 41
      },
      {
        "insn": 51748082,
        "parent_pid": 13,
        "child_pid": 42
      },
      {
        "insn": 51862792,
        "parent_pid": 13,
        "child_pid": 43
      },
      {
        "insn": 51977686,
        "parent_pid": 13,
        "child_pid": 44
      },
      {
        "insn": 52092331,
        "parent_pid": 13,
        "child_pid": 45
      },
      {
        "insn": 52207696,
        "parent_pid": 13,
        "child_pid": 46
      },
      {
        "insn": 52322478,
        "parent_pid": 13,
        "child_pid": 47
      },
      {
        "insn": 52437296,
        "parent_pid": 13,
        "child_pid": 48
      },
      {
        "insn": 52552056,
        "parent_pid": 13,
        "child_pid": 49
      },
      {
        "insn": 52666801,
        "parent_pid": 13,
        "child_pid": 50
      },
      {
        "insn": 52781527,
        "parent_pid": 13,
        "child_pid": 51
      },
      {
        "insn": 52896450,
        "parent_pid": 13,
        "child_pid": 52
      },
      {
        "insn": 53011116,
        "parent_pid": 13,
        "child_pid": 53
      }
    ],
    "switches": {
      "idle_to_process": 138,
      "process_to_idle": 137
    },
    "switch_entries": 275,
    "kernel_start_insn": 10762845,
    "faults": [
      {
        "insn": 33801871,
        "cpu": 0,
        "flags": 0,
        "discon_type": 2,
        "priv": 1,
        "from_pc": 1472,
        "to_pc": 18446744073709547520,
        "scause": 15,
        "sepc": 1472,
        "stval": 49152,
        "satp": 9223372036855309309,
        "sstatus": 9223372045444734976,
        "a": [
          4096,
          20480,
          56,
          20480,
          0,
          7396,
          10,
          64
        ],
        "sp": 48848,
        "mcause": 9,
        "mepc": 2149618676,
        "mtval": 0
      }
    ]
  },
  "report": {
    "schema": "nodefusion.artifact-evidence/1",
    "run": "rcore-2026A-ch5-basic-observed-v2",
    "kernel_kind": "rcore",
    "source_sha256": {
      "trace.nfb": "6fcf51476f287dbd03a45b2dc7c196c9f326f7a34b4af55173e6c411e9037673",
      "manifest.json": "c12b334ff8ac53f97ee8c82bbef08f7dd6011e3d2f4ce6147943ba956dd46125",
      "watchlist.json": "e8bdbd2d1c9f786762dab2845f596077adbd0db2eaa58472463c40d5d5fc7832",
      "kernel_layout.json": "1f6edd9913bf37e30d1948a86f0767e7cdcb3b5dacc12ca8c2b9b4a0b8d85abd"
    },
    "kernel_elf_sha256": "ea10230c10962abf548ee30b5343a266c538bbe266aa022070cf278caec67b0b",
    "archive_bytes": {
      "trace.nfb": 53337280,
      "kernel_elf": 5234600
    },
    "html_sha256": "e5b9dba450a0f1901b0fb736842e81c48e946361889ff5da2f1bb93d271717ad",
    "html_bytes": 2329288,
    "function_trace": {
      "kind": "return-matched observed frames",
      "raw": 84337,
      "retained": 84337,
      "returns": 544666,
      "matched_returns": 57174,
      "nested_entries": 17978
    },
    "event_selection": {
      "applied": false,
      "policy": "kind-preserving/systematic-v5",
      "raw": 127198,
      "retained": 127198,
      "dropped": 0,
      "target_limit": 150000,
      "minimum_spare": 25000,
      "always_keep": "all events when the raw stream fits",
      "priority_raw": 83270,
      "spare_raw": 43928,
      "spare_budget": 0,
      "stride": 1,
      "retained_kinds": {
        "firmware.trap": 19,
        "func._ZN17compiler_builtins3mem6memcmp17he7310feea8ae4946E": 43,
        "func._ZN17compiler_builtins3mem6memcpy17ha62f30a1264ab51cE": 995,
        "func._ZN17compiler_builtins3mem6memset17hb3cc3e7988f20252E": 1491,
        "func._ZN17compiler_builtins3mem7memmove17h6641c454cd41b91bE": 417,
        "func._ZN22buddy_system_allocator4Heap4init17h47bfef144f322583E": 1,
        "func._ZN22buddy_system_allocator4Heap5alloc17hb52723857453e8d6E": 1312,
        "func._ZN22buddy_system_allocator4Heap7dealloc17h2382b66f51d78f86E": 1284,
        "func._ZN2os15kernel_log_info17he7eb3005c801817eE": 1,
        "func._ZN2os4task9processor15current_trap_cx17h37576fa5877bb1b0E": 1488,
        "func._ZN2os4task9processor18current_user_token17h7b385e281d5f1fefE": 1289,
        "func._ZN2os6loader20get_app_data_by_name17h0b4fe3c40ebdecdfE": 14,
        "func._ZN2os6loader9list_apps17hbac7ab73ba2e4c6cE": 1,
        "func._ZN2os7console5print17h259fbd0040a35667E": 1150,
        "func._ZN3log10set_logger17h2e922c1b310ebd70E": 1,
        "func._ZN3log13__private_api3loc17h74db97cb7d8ca37fE": 785,
        "func._ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h3f14c221c18e4f09E": 1,
        "func._ZN42_$LT$str$u20$as$u20$core..fmt..Display$GT$3fmt17hb8c43d55b60732c2E": 359,
        "func._ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h1c05db3ffb69a1e2E": 785,
        "func._ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h39f2fab819e69901E": 43,
        "func._ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17hb03337872ca5c760E": 316,
        "func._ZN49_$LT$log..Level$u20$as$u20$core..fmt..Display$GT$3fmt17h35020c6a1a0c2e7aE": 785,
        "func._ZN4core3fmt3num3imp52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h0b957f153e4158c7E": 785,
        "func._ZN4core3fmt3num3imp54_$LT$impl$u20$core..fmt..Display$u20$for$u20$isize$GT$3fmt17h32c7e1571ae6b44cE": 97,
        "func._ZN4core3fmt3num3imp54_$LT$impl$u20$core..fmt..Display$u20$for$u20$usize$GT$3fmt17h83de4ff3c495723bE": 770,
        "func._ZN4core3fmt3num3imp7fmt_u6417h5142f3088252957cE": 1652,
        "func._ZN4core3fmt3num55_$LT$impl$u20$core..fmt..LowerHex$u20$for$u20$usize$GT$3fmt17hc86b5565edb93905E": 20,
        "func._ZN4core3fmt5Write10write_char17h3dbf66e4bcd45ae0E": 69,
        "func._ZN4core3fmt5write17h49a560cace6c89d2E": 1935,
        "func._ZN4core3fmt8builders10DebugTuple5field17h162956c99153b8a6E": 1,
        "func._ZN4core3fmt9Formatter12pad_integral12write_prefix17h155331fd35b09c53E": 1672,
        "func._ZN4core3fmt9Formatter12pad_integral17h8b1ffde32503eca3E": 1672,
        "func._ZN4core3fmt9Formatter25debug_tuple_field1_finish17h7b601b839df38242E": 1,
        "func._ZN4core3fmt9Formatter3pad17heef45ae07d2799a9E": 1144,
        "func._ZN4core3fmt9Formatter9write_str17h181bd84b330b3504E": 1,
        "func._ZN4core3ptr109drop_in_place$LT$alloc..vec..drain..Drain$LT$alloc..sync..Arc$LT$os..task..task..TaskControlBlock$GT$$GT$$GT$17h55e00f11b91dd746E": 54,
        "func._ZN4core3ptr77drop_in_place$LT$alloc..sync..Arc$LT$os..task..task..TaskControlBlock$GT$$GT$17h1e507565745c0727E": 54,
        "func._ZN4core3str8converts9from_utf817hd70ee2e837c58dd3E": 359,
        "func._ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17h11b33aca4f687c3fE.llvm.16392842407942260741": 1,
        "func._ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17h6725eab204e3ddfeE.llvm.16392842407942260741": 3,
        "func._ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17h77de66cfa8653b3fE.llvm.16392842407942260741": 1,
        "func._ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17h93c85578dc907596E.llvm.16392842407942260741": 1,
        "func._ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17hacdbba4d48230619E.llvm.16392842407942260741": 1,
        "func._ZN54_$LT$os..logging..SimpleLogger$u20$as$u20$log..Log$GT$3log17hb67c4766b081d986E.llvm.8971997074201242157": 785,
        "func._ZN56_$LT$os..console..Stdout$u20$as$u20$core..fmt..Write$GT$9write_str17h5b2cf8a168a60b67E": 7699,
        "func._ZN59_$LT$core..fmt..Arguments$u20$as$u20$core..fmt..Display$GT$3fmt17hb9ea72e8555fec20E": 785,
        "func._ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$6insert17h3066ea9ee2f5fc1cE": 953,
        "func._ZN5alloc11collections5btree3map5entry30OccupiedEntry$LT$K$C$V$C$A$GT$9remove_kv17hb4417fe4429410b4E": 119,
        "func._ZN5alloc11collections5btree4node210Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..Edge$GT$16insert_recursing17hdea21c2fa1292932E": 551,
        "func._ZN5alloc11collections5btree6remove259_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14remove_leaf_kv17hecb11ceeaade770aE": 119,
        "func._ZN5alloc11collections5btree6remove269_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$18remove_kv_tracking17h96ac68a250cfaca3E": 119,
        "func._ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Dying$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..Edge$GT$$GT$27deallocating_next_unchecked17h0d2c5158ac8032deE": 805,
        "func._ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$4grow17hbe266473ab246931E.llvm.14106671731014623185": 4,
        "func._ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$9wrap_copy17hd94ab80b0faf3e05E.llvm.14106671731014623185": 138,
        "func._ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h5f7085439107f66dE": 54,
        "func._ZN5alloc7raw_vec11finish_grow17ha28be5cc43b0e77fE.llvm.6014734106839564757": 783,
        "func._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h00071a624ea45ac4E": 434,
        "func._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h12947443f43ca279E": 179,
        "func._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h5e81cd5d71ba5b65E": 143,
        "func._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17ha298e8977af23e84E": 27,
        "func._ZN61_$LT$log..__private_api..GlobalLogger$u20$as$u20$log..Log$GT$3log17hd9ca19187fb665faE": 785,
        "func._ZN66_$LT$riscv..register..scause..Trap$u20$as$u20$core..fmt..Debug$GT$3fmt17hd450c9ed7d44b3a8E": 1,
        "func._ZN79_$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h47fdeb6091ae8e02E": 54,
        "func._ZN87_$LT$buddy_system_allocator..LockedHeap$u20$as$u20$core..alloc..global..GlobalAlloc$GT$5alloc17h5940a8cc4f3113a7E": 1312,
        "func._ZN87_$LT$buddy_system_allocator..LockedHeap$u20$as$u20$core..alloc..global..GlobalAlloc$GT$7dealloc17h303cab0338830abbE": 1284,
        "func._ZN8xmas_elf7ElfFile14program_header17h33fe96bc4d1e97faE": 70,
        "func._ZN8xmas_elf7ElfFile3new17h20f397223943fbdaE": 14,
        "func._ZN8xmas_elf7program13ProgramHeader8get_type17h5cbcce3512fdef57E": 70,
        "func._ZN8xmas_elf7program20parse_program_header17h91c3887ed5253558E": 70,
        "func._ZN99_$LT$alloc..collections..btree..map..BTreeMap$LT$K$C$V$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17ha2b340a8329e80b7E": 456,
        "func.memcmp": 43,
        "func.memcpy": 995,
        "func.memmove": 417,
        "func.memset": 1491,
        "func.recycle_data_pages": 54,
        "func.remap_test": 1,
        "func.rust_main": 1,
        "func.schedule": 54,
        "func.trace_to_idle": 54,
        "func.unmap": 54,
        "func.waitpid": 97,
        "heap.alloc": 1052,
        "heap.free": 1024,
        "heap.init": 1,
        "heap.realloc": 260,
        "interrupt.timer": 22,
        "pagetable.map": 33279,
        "pagetable.new": 70,
        "pagetable.unmap": 119,
        "phys.alloc": 1365,
        "phys.free": 1259,
        "proc.create": 1,
        "proc.exec": 13,
        "proc.exit": 54,
        "proc.fork": 55,
        "proc.initproc": 1,
        "sbi.call": 39094,
        "sched.enter": 1,
        "sched.switch": 275,
        "sched.yield": 83,
        "syscall.dispatch": 771,
        "syscall.enter": 771,
        "syscall.exec": 13,
        "syscall.exit": 53,
        "syscall.fork": 55,
        "syscall.getpid": 1,
        "syscall.read": 113,
        "syscall.sbrk": 8,
        "syscall.waitpid": 97,
        "syscall.write": 370,
        "syscall.yield": 61,
        "task.kstack_alloc": 56,
        "task.kstack_free": 54,
        "task.pid_free": 54,
        "trap.enter": 794,
        "trap.page_fault": 1,
        "trap.userret": 794,
        "vm.copy": 55,
        "vm.from_elf": 14,
        "vm.grow": 6,
        "vm.init": 1,
        "vm.kernel_init": 1,
        "vm.map": 475,
        "vm.remove_area": 54,
        "vm.shrink": 1,
        "vm.translate_buffer": 482,
        "vm.translate_str": 13,
        "vm.unmap": 55
      },
      "dropped_kinds": {}
    },
    "coverage": {
      "status": "complete",
      "percent": 100.0,
      "passed": 145665,
      "total": 145665,
      "metrics": {
        "covered": 14,
        "applicable": 14,
        "not_applicable": [
          "bcache_hit_rate",
          "bcache_hits",
          "bcache_reads",
          "disk_io",
          "log_commits"
        ],
        "missing": [],
        "sampled": []
      },
      "semantic_events": {
        "raw": 83270,
        "unknown": 0,
        "unknown_fields": {},
        "dropped_from_interactive": 0
      },
      "snapshots": {
        "checked": 319,
        "incomplete": 0,
        "physical_memory": 0,
        "physical_counters": 0,
        "processes": 0,
        "resources": 0,
        "pre_initialization": {
          "physical_memory": 0,
          "physical_counters": 117,
          "processes": 132,
          "resources": 0
        }
      },
      "snapshot_not_applicable": [],
      "manifest_fields": {
        "cells": 61348,
        "states": {
          "absent": 4382,
          "empty": 187,
          "present": 56779
        },
        "not_applicable": 4382,
        "unresolved": 0
      },
      "full_watch_scope": true,
      "function_watch_drops": 0,
      "function_stacks_available": true,
      "observation_points": {
        "unresolved": [],
        "reported_missing": 68,
        "layout_missing": [
          "app_manager",
          "task_manager_inner"
        ]
      },
      "blockers": []
    },
    "source_view": {
      "run": "rcore-2026A-ch5-basic-observed-v2",
      "files": 21,
      "locations": 373,
      "revision": "023a5a0885fed8ae999406f17a494777c3e59af1"
    }
  },
  "console_sha256": "9295aba323a25fdd8240fea1382d4127b8339e6c49198b28cfb57f1073967789",
  "outcome": "completed",
  "trace_complete": true,
  "started_utc": "2026-09-27T14:58:49.215438+00:00",
  "qemu_command": "cd \"/home/joseph/nf/education-2026A-20260927/rcore-ch5-observed-v2\" && exec qemu-system-riscv64 -machine virt -bios default -kernel os/target/riscv64gc-unknown-none-elf/release/os.bin -m 128M -smp 1 -nographic -qmp tcp:127.0.0.1:58417,server=on,wait=off -plugin /home/joseph/nf/education-2026A-20260927/tool/nodefusion/plugin/libnf.so,out=/home/joseph/nf/education-2026A-20260927/runs/rcore-2026A-ch5-basic-observed-v2/trace.nfb,sample=200000,snap=200000,maxram=268435456,returns=1,snapstart=0,bootsnap=0,ramsize=134217728,watch=/home/joseph/nf/education-2026A-20260927/runs/rcore-2026A-ch5-basic-observed-v2/watchlist.txt -icount shift=3",
  "archive": {
    "run_path": "/home/joseph/nf/education-2026A-20260927/runs/rcore-2026A-ch5-basic-observed-v2",
    "trace_sha256": "6fcf51476f287dbd03a45b2dc7c196c9f326f7a34b4af55173e6c411e9037673",
    "trace_bytes": 53337280
  },
  "attribution_analysis_source": {
    "nodefusion_commit": "bce9de05d36d5cdd0afc71121e7c9b1016c08664",
    "deployed_source_files": {
      "nodefusion/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/_vendor/elftools/__init__.py": "9385fdca231d9ad83e27a59aa1bc59b252efad8c24cf08c9f39e0b543f675746",
      "nodefusion/_vendor/elftools/common/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/_vendor/elftools/common/construct_utils.py": "d1de2461e60636b52cfc446d00f7a31f152f2ccc43c1a53bc2ba82187ca1e460",
      "nodefusion/_vendor/elftools/common/exceptions.py": "bedd7aa994281100ba13a40dfaad8b03eec17a725a1c4cb23893572d99bbd1ef",
      "nodefusion/_vendor/elftools/common/utils.py": "36a5f64bfb3aab0dba30d9fa05aa1b3f9fbbf86f297eee27c7c12652f5ac308b",
      "nodefusion/_vendor/elftools/construct/__init__.py": "15104eb011a640e4268a9b9221d07201a0360ff0b1c8b49e252ef41fdfbb35de",
      "nodefusion/_vendor/elftools/construct/adapters.py": "5745745b25eb849174ee5c3179b9867b03e0471633e9eac8276aa439fe4c8841",
      "nodefusion/_vendor/elftools/construct/core.py": "df9719893de6454f5bc4c912afc892bcc278ef45ac1553bf4a409278ba347c9d",
      "nodefusion/_vendor/elftools/construct/debug.py": "491486779e464e0f4a59cfd429d8e93c577a0f0d9b969847e69400a3c86acb1c",
      "nodefusion/_vendor/elftools/construct/lib/__init__.py": "973420ec247c18b9e5488743bb099ae82f19c7287ef31dcb529a7283b6e42eb3",
      "nodefusion/_vendor/elftools/construct/lib/binary.py": "f18e4161a11bc95732bd01c577cbe98373081afd5b4112b02fec51a0e1df2e11",
      "nodefusion/_vendor/elftools/construct/lib/bitstream.py": "ee8081769bed1d00a086399c8749a847c1a48b8d08637506bf7d1229b6e1808a",
      "nodefusion/_vendor/elftools/construct/lib/container.py": "0385a420febf5bac714153ceaadd192ff9d09862bc7e17c203bf759aa18b2bb4",
      "nodefusion/_vendor/elftools/construct/lib/hex.py": "55f82dc36f273347c08e9e469fd497368241453b7a63e69e167ad6b316e5e2c7",
      "nodefusion/_vendor/elftools/construct/macros.py": "0244e84cf4f598ac8da7c3d8f1f09b06112a508e71fb8d381b377f1c0472a4e3",
      "nodefusion/_vendor/elftools/dwarf/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/_vendor/elftools/dwarf/abbrevtable.py": "d7d338a6eddd4c1fe02c66d9c2b1c202c36ebcfda28f438a0ac0546dc5a63eb1",
      "nodefusion/_vendor/elftools/dwarf/aranges.py": "399d17d0e3cc18527337d60c1ffc0cfcfc8d5ddcf86af1ef6c359453538344e3",
      "nodefusion/_vendor/elftools/dwarf/callframe.py": "6c77dd3c1b482434d8d86f35922f0c88b1a71c1c19055fa512224d44876a4b5a",
      "nodefusion/_vendor/elftools/dwarf/compileunit.py": "2681263026c2bdd3fd9033e60230024e6b25ca90280df91c3ae0b0fe97bdb9d3",
      "nodefusion/_vendor/elftools/dwarf/constants.py": "30377a1636c5ac41b7a09f7c79c6bae67b49696c4e9b9d904a1a0acaba7dabdb",
      "nodefusion/_vendor/elftools/dwarf/datatype_cpp.py": "b3df1fc9ef56f941e0b38a9ad5da05a3c3821dd1cdc4b440c7c1934bee00a770",
      "nodefusion/_vendor/elftools/dwarf/descriptions.py": "6692ed493344018f4d96fdb70e9b04bdb3ec1428df0448f17fc8ffab2a205851",
      "nodefusion/_vendor/elftools/dwarf/die.py": "b653e8091a49f6926a955d8c05f26c36798ece3d902c00d2b5da10af637bfce7",
      "nodefusion/_vendor/elftools/dwarf/dwarf_expr.py": "db6d4cb9f3f1ee7e85ac1f9286831093d1b65f8c472fe0f9331a7aa164782bcb",
      "nodefusion/_vendor/elftools/dwarf/dwarf_util.py": "2e1cc3030a3cc669e0832e3cb5d4b1e3c82e22ff5a1164e6a878931f8531ce0d",
      "nodefusion/_vendor/elftools/dwarf/dwarfinfo.py": "3cfff046c35f7b063ba4288f1d9bb5167be4f3fdda0af756a299d832d660b75f",
      "nodefusion/_vendor/elftools/dwarf/enums.py": "10d18e4acabc383b8e8527cf4c011874dc9459c3bc30bd65b9212885a146bd7a",
      "nodefusion/_vendor/elftools/dwarf/lineprogram.py": "d9472d85b8c62fe56a7d6371d8cdb8af6268416970bdf909898ccb2606fa850c",
      "nodefusion/_vendor/elftools/dwarf/locationlists.py": "5167c3fb6208e3bafe0a52fc4d48eb164dc84dbd4980643acec19be26639a194",
      "nodefusion/_vendor/elftools/dwarf/namelut.py": "4b62eb965afd3e099835eb8bb9112f2d1ec89cb42adc6b55c1f113b6068d17b3",
      "nodefusion/_vendor/elftools/dwarf/ranges.py": "da3856ee646cf5b305751fa73a2d5fd9b0a21413377ca11cf93ce20e7040386e",
      "nodefusion/_vendor/elftools/dwarf/structs.py": "dfb1d6d755bcc7cf9a0363620e470c5b4a74bf7499a32d82f261652ffe71bef8",
      "nodefusion/_vendor/elftools/dwarf/typeunit.py": "c1bae01e11001941ebd0a10b72d569b4a0800600b3006b20a0b37f88536d1bc9",
      "nodefusion/_vendor/elftools/ehabi/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/_vendor/elftools/ehabi/constants.py": "a386df95ebe53338db1cdfe498a06acf8e976007b5fab5c4eed2b8904932caa8",
      "nodefusion/_vendor/elftools/ehabi/decoder.py": "3380c750ed972e33510a42a1d4de725f744cfc156e44a5d50ae199239cacb10e",
      "nodefusion/_vendor/elftools/ehabi/ehabiinfo.py": "e442ea16826888c9903893db8ccd9cb47f9f634476c1837812c84b6ce4be1b4c",
      "nodefusion/_vendor/elftools/ehabi/structs.py": "5ebdda74af71d7637d41eb0510403d8776d3b7ea70f715edc58aabc836aaae87",
      "nodefusion/_vendor/elftools/elf/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/_vendor/elftools/elf/constants.py": "d805c36820815a58fce8593206a5527c46009756b9397298d086679b6a9d9f23",
      "nodefusion/_vendor/elftools/elf/descriptions.py": "02771b6d1d4eb829b7334e417f580f78eb253c14f895c427c99b870537d363ef",
      "nodefusion/_vendor/elftools/elf/dynamic.py": "13c2621f118f30c6a8b6a0d999bdf8a7d082f0c2b7713eb4203d7b877082f0f7",
      "nodefusion/_vendor/elftools/elf/elffile.py": "0b8629b86828f0f05dea1200261ffaf1849ae675e52943e88a37e6a5e0b73d51",
      "nodefusion/_vendor/elftools/elf/enums.py": "9beb3eb13c4dfe6e2e75ed5db7a75dbb6da7917ed7ea7ad9c2ab7b697c284256",
      "nodefusion/_vendor/elftools/elf/gnuversions.py": "d22136e3242cf4ff379154b5c830706f3be1d77ee41ffab7efeed57e4876c740",
      "nodefusion/_vendor/elftools/elf/hash.py": "538c9b253f89a4b200eeb9c7d82f9cd0c3ae08146b3295538363ba5fced3627a",
      "nodefusion/_vendor/elftools/elf/notes.py": "17cf2c2a9ec9a0bf8f3415cbaeca42d3ab8f1102556251b290a2814e86f16f63",
      "nodefusion/_vendor/elftools/elf/relocation.py": "b0fd391fe0e293ac7dc5bdad495a8d2e72454442c35291781952fa5016f77b0f",
      "nodefusion/_vendor/elftools/elf/sections.py": "5acbfe427062f3f80cad1d556c4113d60136cbe526636e621a6e820ade5d6ab5",
      "nodefusion/_vendor/elftools/elf/segments.py": "103f945c2c7d67eff713609ea189601e94c0e7122274110c6b20d038a5b8bf74",
      "nodefusion/_vendor/elftools/elf/structs.py": "a0f439925915d7f1a69938673da2cebefd0d10860d60caddc81370ce017d8623",
      "nodefusion/host/__init__.py": "eb4e72c7ca2b3242527b39bd840ced588631e97404cea0e72e3131406cdeec59",
      "nodefusion/host/__main__.py": "13a1a5b340cdcfc1902b62be90e508c7c71886000d5bf087e7854aadf09fb35e",
      "nodefusion/host/analyze.py": "310d26f5c89334c05ee697bb5709a8e8bbce140bcb67f2d3450a09232a3d38b7",
      "nodefusion/host/assets/app.css": "0607be541e6bcd789a1964e74a6677a87d5d593684d6ac809782056ab7c0695a",
      "nodefusion/host/assets/app.js": "c253b16d88ddc73d1c78ec3729800800ad255b923712893dbe12f66faab2aca2",
      "nodefusion/host/bundle.py": "f6117f48b073e117dc0ffa6cdf1af4984d173b3a8f16808730e3746b51c2ad33",
      "nodefusion/host/callstack.py": "a091f8123f33797a628ebcaabbeae721fe458b009b69cee6697221971b7f2fc0",
      "nodefusion/host/cdp.py": "983be57750320be8265405b3fa4c3490288a34bba5b2f0c32820d51895210264",
      "nodefusion/host/cli.py": "6a2f09d5d4ea15299e3f9cbc0f7a2312a322e9c43beb3837d61b2276787af9dd",
      "nodefusion/host/dwarf.py": "158545b640bd312050c9cef773a19f0de839229cb08925a0298a5bb2751b5993",
      "nodefusion/host/elfid.py": "43c44bed9a69fa2b92fc7520342843e71caf0c6a3849d2b23b54e9a22dfdcfa0",
      "nodefusion/host/guest.py": "6871f08f11b9eda17b8a0618e8b8f43a544ddf05a37d7b530daa18d30d4c455a",
      "nodefusion/host/kernels.py": "10dcd1d97aae33b5b389d4106bdf5867468df41a39ce769300448f6d1727b103",
      "nodefusion/host/layout.py": "2f74bd4970af88fa38519c850fbcc494b8a1e4f5ddf7ed87897a442175f0ab82",
      "nodefusion/host/nfelf.py": "5495b1bc5e3406268ba66054e831dfb3fc8857c47b881d95cd995bafa65c5315",
      "nodefusion/host/nftrace.py": "d4fa97efd6527535ab90e4c623e8211bf8b9bf7d189beee47b56b216718c2f76",
      "nodefusion/host/procview.py": "ae1874f57bafa6b694c50aa3c0185671e60fcf0f784d139ee5e807e2f98e9689",
      "nodefusion/host/record.py": "ed6668c5711bcddff0e30a4b82eaf9235e6700746ce186042e39e45219b55428",
      "nodefusion/host/render.py": "46d000d2f40eb934180fba10ec8d8ccb8cc5d1e53e558304fdba941bfcff7dd8",
      "nodefusion/host/resources.py": "019a7be1fc7d86f221f2a67c3a5f7df271d1901500371a02a2113518483fb702",
      "nodefusion/host/shell.py": "08a9b0318ab79c0642d9a0b29683dc65b86c4e529f547530baf4e60b1e67f0af",
      "nodefusion/host/video.py": "1f49810a036f9388ae10153b8691504ed79c3e8b0e19a6bc2818de2ef1fe699d",
      "nodefusion/host/watchlist.py": "1b820dd5d741a118b28959b44d95b886e5fe7518dd5beef3e5561e3cf39822d1",
      "nodefusion/host/wslenv.py": "6b8f5d9e3f71b292e51c980f921dd498315c510d952ef90b24dfbf775b3afa6c",
      "nodefusion/manifests/alien.toml": "da290fe1014168a7e8f44844f30430c3041a14550449c5d51fa06847f23f7aeb",
      "nodefusion/manifests/arceos.toml": "cad48257d081aa1c660d3e7af2f4fbec79bbe232322c71453a9a5b1c9ac7be44",
      "nodefusion/manifests/axvisor.toml": "d6cd2cc9d9662f74a5d25f29e8d02591ae5a205fe18166307ef430edbc7432b3",
      "nodefusion/manifests/rcore.toml": "4a6c4746a885ce7ed68a374516188f02d5955028c94ecfa7e73c5ddf08b73e75",
      "nodefusion/manifests/rel4.toml": "ca43c2847a9ca757542ef3ed3e276dc7130c92b25150c73deb3e2a20faf8c37e",
      "nodefusion/manifests/starry.toml": "8a3ce9735d4c948322962b8c532be334034ad608aac28a041bb58876012dcae8",
      "nodefusion/manifests/ucore.toml": "7ca738a5abfb1c21afdb75b44c2fc0ce81b19d3d2db9aa3d820850b8abf74327",
      "nodefusion/manifests/xv6.toml": "0f501a4441214a2de3b1b50d39665ee23faad6f93024b3b92d30f542bc9b7964",
      "nodefusion/model/__init__.py": "9864ab2acb9890ed2fcbf815f30042fd97e3bd5ce069531f8c76fa2eed60b9d0",
      "nodefusion/model/ctxbuild.py": "552c0d3d87d640e73bfb4c3fc237453c7b84298c721f2d37594c85d1ab5eb86d",
      "nodefusion/model/dwarfsrc.py": "02688f5f8419ba6c8fd64ea4f347929f74c8b70299b632223c5535bab298f265",
      "nodefusion/model/exec.py": "148e68fa1c7054716e4fcb3e7bddb7c0d384ab6a6bfcb00bd15f7a869f6d86ec",
      "nodefusion/model/kinds.py": "0432ef9f134654bc36554ec55afcb9f91c593110cdacf0a58d0ac4d1d05ac569",
      "nodefusion/model/layout.py": "cd2639282b0c4fac684d06309e11e95922213d3d32698f275e65dd060f677fd6",
      "nodefusion/model/manifest.py": "d592aaac9ae308760cda947327c0d7c0e964a26d517740ed66838747e2334a22",
      "nodefusion/model/plan.py": "374fbb225a6717c2c391ac8bdda54aa957638821a45b2865b40a7be9bcc808c6",
      "nodefusion/model/probe.py": "30546d56bbd47ef12567826b49dd910de07e2af8fffc5c4350e04a57f70da5b8",
      "nodefusion/model/readers/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/model/readers/containers.py": "6eec01bd4f30858e1eda2ee7de890a9d93f94eda25e02d0a1bdf3558d31a1610",
      "nodefusion/model/readers/pointers.py": "72f989d643df6bdd477494023aac2da851f2d1f123d5e1e64b7629a0be6eae6b",
      "nodefusion/model/readers/registry.py": "2c35cc0b1f8db857e67c08e9c7976bf47c6ab21faabb4e242d8a0be42f9634ee",
      "nodefusion/model/readers/scalars.py": "a145fe5c4a250cc11fe44d0a4caabae908fbc44994335663955230296f695cbc",
      "nodefusion/model/resolve.py": "0c588760d0ec6494617007b02d786285ba190593935f574f6c53b99ad62ac8c0",
      "nodefusion/model/roles.py": "8d35b0497bd0b2d9abf639d9803fc6b7bd1e1ee5153c0f47ff53a26356dcc8c5",
      "nodefusion/model/rt.py": "3d62e9c6169e89a2593b29ff49919e84a2dda1df1b6fc16d3e54c7cc5d1744af",
      "nodefusion/model/snapshot.py": "e9c4ce76b858a9003e43d9eec363e1b88d4024338c3401b7a47a9871fe5dab7a",
      "nodefusion/model/symbols.py": "05812b00228ba601209ec909213381d47272efdbcac3957914f4590a1d705cfe",
      "nodefusion/model/watchsel.py": "bc3a9d6763950c265efaacce3f0c98194f54808d676b449c5b320b3a90cc7bf1",
      "nodefusion/tests/conftest.py": "2dfa19b096e309beadff0df9a05761d412ec6234e74968854292d7bfecf1b7a5",
      "nodefusion/tests/crosscheck_artifacts.py": "6ee173a31795c3875f93af0a0eaebcb27346c185c24e3f1d32846f5ca89d60a0",
      "nodefusion/tests/fuzz_trace.py": "af6189a6538747d369f982dfb86016f5e48842da0ce73f651b63c0b482b1c37e",
      "nodefusion/tests/kernelelf.py": "9a35d1389243849c6ed16f801a007568eb1304eee3d2cf3bcb8d1e38e12e2aed",
      "nodefusion/tests/stress_pagetable.py": "5db6d3671739ad5d0a3f76908049126185ea000726d0044d4d87ef215f26f737",
      "nodefusion/tests/test_absent_declaration.py": "535d4ace194fc5f923ba989e18634b55cffd0660eaefdfc7a59dcb4377eac266",
      "nodefusion/tests/test_analysis_lookup_cache.py": "aa4fbc0b8f06c64278bc5b11edf21cfe3ec737e3f0d88901b52478aca29765f3",
      "nodefusion/tests/test_analyze_alias.py": "345f6cbd8fae2a7c7729130460112a08a23599461234865f2da72055c3621064",
      "nodefusion/tests/test_arg_names.py": "a0f4cd7c7017da1926fc317d6c73bcb6bd4bacde579e3818fa277079991a4af4",
      "nodefusion/tests/test_artifact_guard.py": "8b53fababf688ceaf4afd1556d3c1352d3a13c60ea43fe14e3d3eae24698d1d0",
      "nodefusion/tests/test_artifact_output_safety.py": "cbed1bfa5928e7b12edc85b506f8018dd3216f017c43461525daf0a299bea9aa",
      "nodefusion/tests/test_bundle_shape.py": "34d227f2726d1820160288b225243b51fe3583839ff52ee245a814eb1c27f81d",
      "nodefusion/tests/test_cache_hit_contract.py": "087277fe75bf38d8e83453b3671da4825f7586382fc1fa5300b3dc79272fbee7",
      "nodefusion/tests/test_calibration_failure_reason.py": "02449f59da919dc09781a66ad57789a98775b3888d1480f4f3064b4d8a1139da",
      "nodefusion/tests/test_callstack.py": "f81c2f42b453d26287f1cbab835cff47a2722d8c62b486529fbbcfc20c94c872",
      "nodefusion/tests/test_capability_notes.py": "a2fb61afdc826c0c5408ea3b385761f896b27191e54881c3e10b10a2f01cc272",
      "nodefusion/tests/test_compact_capability_ui.py": "07542f2beb95353f3dd3861ca3ffcec93d1f46c966c3dd74c82d27fc3b6427ad",
      "nodefusion/tests/test_consolidate_artifacts.py": "5ffa4d01f5adb051f2153c3097d2264dfa7c63533f4cf6c09159fc50cd843cdd",
      "nodefusion/tests/test_context_switch_snapshot.py": "db5c77b5ab4ad93d34a96266386dbeec80694db7482bfa5856c1547f773ccb9d",
      "nodefusion/tests/test_corpus_selection.py": "1717ce9682ecde7a05675b790914a8e5a590e1d83556944ddbfff1e38918d050",
      "nodefusion/tests/test_coverage_evidence.py": "fdbb041e7339f8d94a52a1833b01e315657a749e9bc7d21fee6a2724f23a86f3",
      "nodefusion/tests/test_demangle_v0.py": "9f91c7ab6d2f681368c63d2bde9109cb4dd501f4d5df3e1f728a7b8975a0b061",
      "nodefusion/tests/test_dwarf_generic_base.py": "f9204c883a298151406288885c32c04fd1e7db423fe6cb0747f0f4392ba0fef5",
      "nodefusion/tests/test_dwarf_tombstones.py": "ed608be359e8180a5355cafe93e64d417543cc014461710f55fcd5997bef7295",
      "nodefusion/tests/test_dwarfsrc_location.py": "bcd7c6e8cf00a086fd9c712ffa35aebfbb4e09aaf20ddaedc4f2f5b41604cad9",
      "nodefusion/tests/test_elf_archive.py": "573747576adf2bf4daf66d5f99b6a149eff663ebcd6743b79b4b39d57d20dda5",
      "nodefusion/tests/test_elfid.py": "3efd46b3688e79f7ccc376abb32f20b495b7c074dbd84c5181d67fade3db729c",
      "nodefusion/tests/test_event_kind_pairs_measured_from_runs.py": "ef1a4ce55dc22b8f1073f3d4ac9120b30c68cf0877ba6e4dc5788f81217cdf55",
      "nodefusion/tests/test_event_kind_registry.py": "276bb984ee002622d0284558df13234328a3779853c5b1681d71d827069bfd9d",
      "nodefusion/tests/test_event_kinds.py": "7d066f949905b4df866f0ebfa3ead6cc3b78c7d8416d8b0a5660332dd2f6ef47",
      "nodefusion/tests/test_event_snapshot_throttle.py": "2709d806da483ef8bcdb57ddb6c59a73da83a859b793d7cd5d15891ccfcedd87",
      "nodefusion/tests/test_event_when_branches.py": "0b866c908cbc40deca18830293d161eb9b1f3401792d3fed1b1041e7e9b5e2de",
      "nodefusion/tests/test_exec_iter_map.py": "026e1e908df1884c4d241902c845dd72a43c095e5ab28e94fb7069f621698562",
      "nodefusion/tests/test_exec_walk.py": "67fc662f5b36cff81c1c1ab6a1dfe842081a05a1c3f69a64e8d212da0b7cb985",
      "nodefusion/tests/test_func_events_scope.py": "de9f69b6673c312537ce72cfd6c91baa4355749558609ca0b696c21d8f790198",
      "nodefusion/tests/test_kernel_elf_fixture.py": "ada3976b4b49734884bdb9b3844886e92251240671fe8ae219ed1f70c32c935b",
      "nodefusion/tests/test_kernel_image_fit.py": "32c7bd1bf3b66c7071b36582ca32838af2777157f1ae999a46785e6a39675476",
      "nodefusion/tests/test_kernel_integrations.py": "8e3ecdcf6ad5ea3b7fa44a3e3244a2c9678255b62c02d8cd48de9cfc1189b376",
      "nodefusion/tests/test_kernel_view.py": "4cc544296573cab8df9858947e6d7040fb22aba4b29aac1b43a565b39d9e7ab5",
      "nodefusion/tests/test_kind_three_states.py": "64764f687af895b3b37bc69179f2729f49efe2fb5fc5a24ecc09c41ea38e70ed",
      "nodefusion/tests/test_layout_routing.py": "14631aae85b75dcb1c1c5cec92c344f1c01433e2ae6eb90a3c105ac583372a5c",
      "nodefusion/tests/test_list_arceos.py": "22dbff8051cf7076ad5be6f919ed6d9a0c7a70bd1b6e09ca2f6589b5fb94493f",
      "nodefusion/tests/test_list_wiring.py": "e5f187b746738a5ca027936468df8ab7d2e48e32fe550eca3fa57f217c60d5cb",
      "nodefusion/tests/test_manifest_docs.py": "9be0200ca41d0f0512519356c81911cbbaf2aca63530d99e2aba53de9a1eea37",
      "nodefusion/tests/test_manifest_lint.py": "ad03a1e3519feb79fbeacdbe6576f90b05e7c6c9cb3034c44bd1032163b69888",
      "nodefusion/tests/test_manifest_roles.py": "b1a8fca196f9b37b614f3cd39abe33ad64c58894d1c933996d553c8f573d147e",
      "nodefusion/tests/test_manifest_vocabulary.py": "834eb61d446df47b1c6ebcd4e8a7347eabc24486da052b4be8f5b0660b0f631d",
      "nodefusion/tests/test_metric_deps_are_kinds_not_xv6_names.py": "07f411bb3fcbb14c2eb6c222f4a4928426a86a45d82f11cb242130c49eb6c717",
      "nodefusion/tests/test_no_build.py": "f831e3504531cdd9f8f588428e7a7e86fa420bdee27cbf74522fac05bb27d6fa",
      "nodefusion/tests/test_pagetable_arch.py": "9946ed7788d72107d6c6ea81fa4204843e1a0ae291add95259f3e96a0f661eb2",
      "nodefusion/tests/test_path_index_gate.py": "8486e4f1d0d8f91800321a7907ae6797a59d6576cae0614c8db6f91c8ecee9ae",
      "nodefusion/tests/test_percpu_layout.py": "4ecfcf97552e678173bca5fe81eb661bc7f417ba2f4ea4de3c540ba956152495",
      "nodefusion/tests/test_percpu_runtime_layout.py": "ba54784385c6a6716eb3f3317635c8b2dd09b40e5e3e5e6112ca5b92d4e7c62c",
      "nodefusion/tests/test_phys_alloc_gate.py": "a1b68458d8268d052082ad92b80f86753c46423eec7c86c3bdd6019e23b8186a",
      "nodefusion/tests/test_plan_iter_map.py": "58fcacc67e31cf6638ce4d846dccf32312ae17caed1d9470d0ba468fd95a4b5a",
      "nodefusion/tests/test_plan_percpu.py": "5ece34163ede167484cc5edd5d3255d8514935af7a385b171b1b64c6e928140e",
      "nodefusion/tests/test_plan_steps.py": "0241755b6c85983779fad700e2eba5332ab595cc64e6297e8358ba4d15f9dfb7",
      "nodefusion/tests/test_procs_gate.py": "8acd3d3e2398fcd008dd4f5bae735183008eb4cecf6f4c09d0fffaefdf50cd8d",
      "nodefusion/tests/test_procview.py": "9f48157ccc96833a83a42f2f3c3eb26a82bd7f6918c0c3c91a6052c5d9657428",
      "nodefusion/tests/test_profile_from_manifest.py": "9f7cf3aa6cb931445e9e6c763bf2c30b1505e4b728f759514033994b5b60b16c",
      "nodefusion/tests/test_rcore_fs_vocabulary.py": "48c49c9f091d4c964715cf55216b8354ea59697a0ef58ec18850f5e8e89f80c5",
      "nodefusion/tests/test_rcore_inlined_halves.py": "fd61e489c857fcaa5cdbe2466e74b1ba6a547eb7b18fd12fbda80ce927c6f516",
      "nodefusion/tests/test_readers_containers.py": "b0f882dd388f9bc3796b8f5d8c29d72c7dd6b5d8b7866055f810a7bbb2295d2f",
      "nodefusion/tests/test_readers_pointers.py": "e15d27e41ca320d960720f6760ffd0ff6216f658c74ab373148dc3307fa24fd8",
      "nodefusion/tests/test_readers_registry.py": "b139bcca13c15f203e73a427d9d6dc5804b97fc76a28d14025325f191cc4a6a5",
      "nodefusion/tests/test_readers_scalars.py": "3a15bf0648767fb8e7d24044aeb61eb312ace64ab51f834e0a2dfe39072b9cd5",
      "nodefusion/tests/test_record_icount.py": "b84db1f0c55683e9ccf8eaafdcef09dd37bb67a5fa555814d4d750ff97f844df",
      "nodefusion/tests/test_recording_tail.py": "833b8e33c6d111b49790beea1ba7ab81b23bd7ea907a2155f981967bcb61a614",
      "nodefusion/tests/test_regenerate_artifact.py": "4b2046cdcc98219c4181ca174f4ca02b6e3b5cfbfdd7bb6506c85112007e21f3",
      "nodefusion/tests/test_resolve.py": "b14f432eb380c5514b73431978b01b0d715ed9a49f92deb547358fb35dd4d8ec",
      "nodefusion/tests/test_resources.py": "0860476f362a770bd04355592a83fdb15aa9df3787c6c740d407cb8ee4fc817e",
      "nodefusion/tests/test_sampled_counts_are_not_exact.py": "7bd598eb07ef0b067cee3460ef0c61d18b8b918ae697d80b01617cf73eaf0a9a",
      "nodefusion/tests/test_shell_verdict.py": "22baff1ad7cb43b5c5574b424812c40b194e30e3800921429659f7b31cbe20f4",
      "nodefusion/tests/test_snapshot.py": "17ef07a10857516f2fd29186157b945ff67490d2cdac94166cf370e96171e034",
      "nodefusion/tests/test_source_combine.py": "506ebb5c6dda153e92b854887fb671cf4aa08d33fd8305b359139a1d38ee4349",
      "nodefusion/tests/test_spec_nftrace_registry.py": "c529a4ed1f86bee4951e4699b09d466d51a5bd0623accc49bff9abcfdf15e615",
      "nodefusion/tests/test_split_rawvec.py": "e80f55fc42e246f3f638979500c7c40548eb0f630c512a93b8eaa00df312eac4",
      "nodefusion/tests/test_switch_attribution.py": "c773376888e9dc2ce87ddbebc14ccb0649ea77da189319692e20aff16eddb73d",
      "nodefusion/tests/test_symbols_static_wrapper.py": "cf634a6545564e8949b9129cee0c5f01f3dcf60effd49883c3b908aa28af7f82",
      "nodefusion/tests/test_trace_complete.py": "ac33d1da9aba97c98c68502188522a253709e96cf3fbb8d3c94b85c661cea366",
      "nodefusion/tests/test_trace_streaming.py": "6c972f95a790afac5b9aa84320038bf0eab41b926126334db7290d095f2b1e10",
      "nodefusion/tests/test_units.py": "c5b167cca227c5620b958329f5461232bc73e22997e5fe58a02859bb3664feef",
      "nodefusion/tests/test_unobservable_does_not_speak_for_the_kernel.py": "448c03147a2306d8205762bdc9a9e0d9e8d5eb0e0c5199d17d80c2f076f87547",
      "nodefusion/tests/test_video_sections.py": "c84c17b471460ae45a25341a8f893768816f57a9eb94e9f9a90e7e20406c4a31",
      "nodefusion/tests/test_watchlist_wire.py": "1e01dd4fde92169c0ab1296dbd249865cddde4173ec8de3c71c39f61356f74c3",
      "nodefusion/tests/test_watchsel.py": "89c8bb635534d079e0502d1c118f32eaa806250d74195a9d99bb71d07aabcd2d",
      "nodefusion/tools/crosscheck_decoder.py": "2f69a3f636d910f93f24939bcd03b41d9b0a17184ce4a4b15250e00f65b47a28",
      "nodefusion/tools/crosscheck_dwarf.py": "b30ecfa371c6959b2522db6d9edabf7e0c7be238feef34ff9411d76a4b4fdf01",
      "nodefusion/tools/crosscheck_layout.py": "d77ebd7aaa1ace070392eca0051f1b34dbf65d08c355edf87101b7e449aa7106",
      "nodefusion/tools/crosscheck_offsetof.py": "732e30d19129e0a1f15e33a2c1f96d940abaa1a26829b8f0d7bc44bf873cdc87",
      "nodefusion/tools/crosscheck_procinfo.py": "c3d6dd588b28d9252ddb712dea0ab8d3212dffed7f9256b9b936860fa0dfb8a9",
      "nodefusion/tools/crosscheck_procs.py": "b497c8fd050c0d6d1e4154eda00c1eef05502d3826546b1165b8a740c6fee562",
      "nodefusion/tools/crosscheck_resources.py": "98b04ac869e3c9e38020728473d480b8ed0b15385bc1d530e466919807ad1ac3",
      "nodefusion/tools/crosscheck_watchsel.py": "52142d49e919f2f040371b404cabdef0d0edbbf977abdcb1af5063b910d0aad8",
      "nodefusion/tools/survey_chapters.py": "6952dbdb8036916acd17bd5f642ea0b62aa10cbbec2bb4227e58f5132683589b",
      "scripts/benchmark_trace.py": "0faf86ba735bc31a20ee8e7ae3d3aad8aef78f0f43cdd33e831658f4e2a71494",
      "scripts/consolidate_artifacts.py": "31700c7f0a1f21fef653e061115b0091aa1a4ce539b9baa9cb48ad914889dadd",
      "scripts/finalize_artifacts.py": "a10224f43e0554eeb347a201dfd29781fbe0a39b979f890cccbec65e76cea9eb",
      "scripts/regenerate_artifact.py": "aed10d1eedc5689b6fd68e84a9bb8ae0c98f7bb8456fd8bd280e8bae470b8e9a"
    },
    "nodefusion_runtime_overrides": [
      {
        "path": "nodefusion/host/analyze.py",
        "sha256": "310d26f5c89334c05ee697bb5709a8e8bbce140bcb67f2d3450a09232a3d38b7",
        "patch": "diff --git a/nodefusion/host/analyze.py b/nodefusion/host/analyze.py\nindex a6ca1e7..7108a60 100644\n--- a/nodefusion/host/analyze.py\n+++ b/nodefusion/host/analyze.py\n@@ -642,6 +642,12 @@ class Analysis:\n         from ..model.manifest import _COMPLETENESS\n         from ..model.snapshot import _completeness\n         got = _completeness(res.sources)[\"completeness\"]\n+        if got == \"total\":\n+            from ..model.resolve import PRESENT\n+            contexts = [field for entity in ents.res.entities if entity.sources\n+                        for field in entity.fields if field.role == \"sched_context\"]\n+            if not any(field.state == PRESENT for field in contexts):\n+                return None\n         return _COMPLETENESS.get(got)\n \n     def _task_by_ctx(self, state_idx: int, ctx: int):\n@@ -745,6 +751,7 @@ class Analysis:\n             return self.states[i].ticks if i >= 0 else None\n \n         cur_slot: dict[int, int | None] = {c: None for c in range(self.ncpu)}\n+        self._semantic_current: dict[int, tuple[int | None, str | None]] = {}\n \n         merged = heapq.merge(\n             ((d.insn, 0, \"discon\", d) for d in tr.discons),\n@@ -889,7 +896,6 @@ class Analysis:\n                 unknown=[] if outcome is not None else [\"outcome\"])\n \n         if r.type == self.NFT_SCHED_SWITCH:\n-            pid, proc = self._attribute(r.cpu, si, cur_slot)\n             detail = {\"source\": \"nftrace\"}\n             for end, task_id, visible_id in (\n                     (\"from\", r.a[0], r.a[2]), (\"to\", r.a[1], r.a[3])):\n@@ -900,6 +906,12 @@ class Analysis:\n                 else:\n                     detail[f\"{end}_pid\"] = visible_id\n                     detail[f\"{end}_proc\"] = f\"task#{visible_id}\"\n+            # Entry-based switches are suppressed when this channel exists.\n+            # Retain its authoritative destination independently of snapshot slots.\n+            if not hasattr(self, \"_semantic_current\"):\n+                self._semantic_current = {}\n+            pid, proc = detail[\"to_pid\"], detail[\"to_proc\"]\n+            self._semantic_current[r.cpu] = (pid, proc)\n             return Event(\n                 insn=r.insn, cpu=r.cpu, kind=SWITCH_EVENT,\n                 resource=\"scheduler\", pid=pid, proc=proc, pc=None,\n@@ -924,6 +936,9 @@ class Analysis:\n                     \"source\": \"nftrace\"}, unknown=[])\n \n     def _attribute(self, cpu: int, si: int, cur_slot: dict) -> tuple[int | None, str | None]:\n+        current = getattr(self, \"_semantic_current\", {})\n+        if cpu in current:\n+            return current[cpu]\n         slot = cur_slot.get(cpu)\n         if slot is None:\n             return None, None\n"
      },
      {
        "path": "nodefusion/host/record.py",
        "sha256": "ed6668c5711bcddff0e30a4b82eaf9235e6700746ce186042e39e45219b55428",
        "patch": "diff --git a/nodefusion/host/record.py b/nodefusion/host/record.py\nindex ac7695e..93323e0 100644\n--- a/nodefusion/host/record.py\n+++ b/nodefusion/host/record.py\n@@ -399,6 +399,10 @@ class Recorder:\n                     f\"内核自己按顺序跑完所有应用，没有地方喂命令。\")\n \n \n+    @property\n+    def interactive_workload(self) -> bool:\n+        return self.profile.interactive and bool(self.cfg.program) and self.cfg.program != NO_PROGRAM\n+\n     def effective_lab_stage(self) -> int | None:\n         if self.cfg.lab_stage is not None:\n             return self.cfg.lab_stage\n@@ -445,8 +449,7 @@ class Recorder:\n                 f\"--no-build：这次没有编译，直接用了现成的 \"\n                 f\"{self.kernel_elf_path}（修改时间 \"\n                 f\"{mt.strftime('%Y-%m-%d %H:%M UTC')}）。\"\n-                \"也就是说**没人验证过这份二进制是当前源码编出来的**；\"\n-                \"它可能是任何时候留下的。ELF 指纹见 kernel_elf_identity。\")\n+                \"ELF 校验和见 kernel_elf_identity。\")\n             return \"(--no-build：跳过构建)\"\n \n         mv = self._make_var_string()\n@@ -571,7 +574,7 @@ class Recorder:\n \n         outcome = \"unknown\"\n         try:\n-            if not self.profile.interactive:\n+            if not self.interactive_workload:\n                 outcome = self._drive_headless(proc, reader)\n             else:\n                 outcome = self._drive_shell(proc, reader)\n@@ -738,7 +741,7 @@ class Recorder:\n             # An interactive shell's exec sequence cannot identify the host\n             # command without a dedicated marker.\n             prog_start = _program_start_from_trace(\n-                tr, wl_json, interactive=self.profile.interactive)\n+                tr, wl_json, interactive=self.interactive_workload)\n             tmp_trace.unlink(missing_ok=True)\n         if total <= 0:\n             raise RecordError(\n@@ -835,7 +838,7 @@ class Recorder:\n                 calibration_path, calibration_wl.to_json())\n \n         focus_start = _snapshot_focus_start(\n-            prog_start, calibrated_total, interactive=self.profile.interactive)\n+            prog_start, calibrated_total, interactive=self.interactive_workload)\n \n         if c.snap_insns is not None:\n             snap_insns = c.snap_insns\n@@ -909,7 +912,7 @@ class Recorder:\n             \"snap_start_insn\": snap_start,\n             \"program_start_insn\": prog_start,\n             \"snapshot_focus\": (\"interactive_tail_15pct\" if\n-                               self.profile.interactive and not prog_start and\n+                               self.interactive_workload and not prog_start and\n                                c.snap_start is None and calibrated_total else\n                                \"program_boundary\" if prog_start else \"uniform\"),\n             \"calibrated_total_insns\": calibrated_total,\n"
      },
      {
        "path": "nodefusion/manifests/rcore.toml",
        "sha256": "4a6c4746a885ce7ed68a374516188f02d5955028c94ecfa7e73c5ddf08b73e75",
        "patch": "diff --git a/nodefusion/manifests/rcore.toml b/nodefusion/manifests/rcore.toml\nindex 3579114..01e843c 100644\n--- a/nodefusion/manifests/rcore.toml\n+++ b/nodefusion/manifests/rcore.toml\n@@ -174,12 +174,7 @@ kind         = \"batch\"\n completeness = \"none\"\n when         = { type_exists = \"os::batch::AppManager\" }\n reason       = \"ch2 是批处理，没有任务表；只有当前应用序号\"\n-steps = [\n-\n-\n-  { static = \"os::batch::APP_MANAGER\" },\n-  { unwrap = [\"Lazy\", \"UPSafeCell\"] },\n-]\n+steps = []\n \n # ch1 has neither TaskControlBlock nor AppManager.  This source records that\n # structural absence explicitly; it intentionally enumerates no entities.\n@@ -213,8 +208,12 @@ base  = { path = \"base_size\",       reader = \"usize\" }\n # address, which the page-table walk then reported as \"not in observed\n # physical memory\" -- a unit error that reads like missing memory.\n # `.__0` rather than the tuple struct itself so no field offset is assumed.\n-pgtbl = { path = \"inner.memory_set.page_table.root_ppn.__0\", reader = \"ppn\", role = \"address_space_root\" }\n-prio  = { path = \"inner.priority\",  reader = \"usize\", role = \"priority\" }\n+pgtbl = { path = \"memory_set.page_table.root_ppn.__0\", reader = \"ppn\", role = \"address_space_root\" }\n+prio  = { path = \"inner.prio\",      reader = \"usize\", role = \"priority\" }\n+priority = { path = \"inner.priority\", reader = \"usize\", role = \"priority\" }\n+stride = { path = \"inner.stride\", reader = \"usize\" }\n+heap_bottom = { path = \"inner.heap_bottom\", reader = \"usize\" }\n+program_brk = { path = \"inner.program_brk\", reader = \"usize\" }\n \n \n \n@@ -223,7 +222,7 @@ exit  = { path = \"inner.exit_code\", reader = \"i32\", role = \"exit_code\" }\n \n \n \n-trapcx = { path = \"inner.trap_cx_ppn.__0\", reader = \"ppn\", role = \"trap_context\" }\n+trapcx = { path = \"trap_cx_ppn.__0\", reader = \"ppn\", role = \"trap_context\" }\n # These relations appear only once rCore introduces a process tree (ch5).\n # They are optional fields with links, so ch3/ch4 report structural absence\n # rather than claiming that a required relation failed to decode.\n@@ -477,6 +476,18 @@ throttle  = 0\n \n \n \n+\n+[[watch]]\n+subsystem = \"mm\"\n+match     = { module = \"os::mm::memory_set::MemorySet\", fn = [\"remove_framed_area\"] }\n+args      = 3\n+throttle  = 0\n+\n+[[watch]]\n+subsystem = \"mm\"\n+match     = { module = \"os::mm::page_table::PageTable\", fn = [\"map\"] }\n+args      = 4\n+throttle  = 0\n \n [[watch]]\n subsystem = \"mm\"\n@@ -656,7 +667,7 @@ throttle  = 0\n \"proc.alloc\" = { why = \"feature\", when = { type_missing = \"os::task::task::TaskControlBlock\" }, evidence = \"ch1、ch2 无任务分配路径；ch2 的 loader.c 复用同一应用内存区依次装入二进制，ch3 起引入 TaskControlBlock。\" }\n \"proc.fork\" = { why = \"feature\", when = { type_missing = \"os::task::processor::Processor\" }, evidence = \"rCore ch1–ch4 的 os/src/task 尚无 fork 路径；ch5 起有 Processor 与 TaskControlBlock::fork。按当前 ELF 的 Processor 类型核对阶段。\" }\n \"proc.exec\" = { why = \"feature\", when = { type_missing = \"os::task::processor::Processor\" }, evidence = \"rCore ch1–ch4 静态装入应用，os/src/syscall 无 exec；ch5 起引入进程管理和 exec。按当前 ELF 的 Processor 类型核对阶段。\" }\n-\"vm.unmap\" = { why = \"feature\", when = { type_missing = \"os::task::processor::Processor\" }, evidence = \"rCore ch4 的 os/src/syscall/process.rs 中 sys_munmap 明确为 NOT IMPLEMENTED YET；ch5 起有进程内存回收。按当前 ELF 的 Processor 类型区分阶段。\" }\n+\"vm.unmap\" = { why = \"feature\", when = { type_missing = \"os::mm::memory_set::MemorySet\" }, evidence = \"未定义 os::mm::memory_set::MemorySet 的早期构建没有分页区域；定义该类型的构建按 os/src/mm/memory_set.rs 中的区域取消映射路径检查，包括 2026A 的 remove_framed_area。\" }\n \"phys.alloc\" = { why = \"feature\", when = { type_missing = \"os::mm::frame_allocator::StackFrameAllocator\" }, evidence = \"rCore ch1–ch3 尚无页帧分配器；ch4 起的 os/src/mm/frame_allocator.rs 定义 StackFrameAllocator。按当前 ELF 的该类型核对阶段。\" }\n \"phys.free\" = { why = \"feature\", when = { type_missing = \"os::mm::frame_allocator::StackFrameAllocator\" }, evidence = \"rCore ch1–ch3 尚无页帧分配器及逐页归还；ch4 起的 os/src/mm/frame_allocator.rs 实现分配与回收。按当前 ELF 的类型核对阶段。\" }\n \"vm.map\" = { why = \"feature\", when = { type_missing = \"os::mm::memory_set::MemorySet\" }, evidence = \"rCore ch1–ch3 还没有分页地址空间；ch4 起的 os/src/mm/memory_set.rs 定义 MemorySet 并建立区域映射。按当前 ELF 的类型核对阶段。\" }\n@@ -828,7 +839,7 @@ throttle  = 0\n \n \"os::mm::frame_allocator::frame_dealloc\" = \"phys.free\"\n \"os::mm::frame_allocator::frame_alloc\" = \"phys.alloc\"\n-\"os::mm::page_table::PageTable::map\" = \"pagetable.map\"\n+\"os::mm::page_table::PageTable::map\" = { kind = \"pagetable.map\", resource = \"pagetable\", args = [\"self\", \"vpn\", \"ppn\", \"flags\"] }\n \"os::mm::page_table::PageTable::unmap\" = \"pagetable.unmap\"\n \"os::mm::page_table::PageTable::new\" = \"pagetable.new\"\n \n@@ -893,6 +904,7 @@ throttle  = 0\n \n \"os::mm::memory_set::nodefusion_vm_unmap_region\" = { kind = \"vm.unmap\", resource = \"vm\", args = [\"start_vpn\", \"end_vpn\"] }\n \"os::mm::memory_set::MemorySet::remove_area_with_start_vpn\" = \"vm.remove_area\"\n+\"os::mm::memory_set::MemorySet::remove_framed_area\" = { kind = \"vm.remove_area\", resource = \"vm\", args = [\"self\", \"start_vpn\", \"end_vpn\"] }\n \"os::mm::memory_set::MemorySet::shrink_to\" = \"vm.shrink\"\n \"os::mm::memory_set::MemorySet::append_to\" = \"vm.grow\"\n \"os::mm::init\" = \"vm.init\"\n@@ -1550,3 +1562,35 @@ opts = [\n [syscalls]\n files   = [\"os/src/syscall/mod.rs\"]\n pattern = 'const\\s+SYSCALL_(?P<name>\\w+)\\s*:\\s*usize\\s*=\\s*(?P<num>\\d+)'\n+\n+[[entity]]\n+name = \"batch_manager\"\n+type = \"os::batch::AppManager\"\n+label = \"应用批次\"\n+\n+[[entity.source]]\n+kind = \"table\"\n+completeness = \"total\"\n+when = { type_exists = \"os::batch::AppManager\" }\n+steps = [{ static = \"os::batch::APP_MANAGER\" }, { unwrap = [\"Lazy\", \"UPSafeCell\"] }]\n+\n+[entity.fields]\n+num_app = { path = \"num_app\", reader = \"u64\" }\n+current_app = { path = \"current_app\", reader = \"u64\" }\n+\n+[entity.table]\n+empty = \"当前没有应用批次。\"\n+  [[entity.table.column]]\n+  key = \"num_app\"\n+  label = \"应用数\"\n+  [[entity.table.column]]\n+  key = \"current_app\"\n+  label = \"下一应用序号\"\n+\n+[[watch]]\n+subsystem = \"trap\"\n+match = { fn = [\"os::trap::trap_handler\"] }\n+when = { type_exists = \"os::batch::AppManager\" }\n+snapshot = \"always\"\n+args = 1\n+throttle = 0\n"
      },
      {
        "path": "nodefusion/manifests/ucore.toml",
        "sha256": "7ca738a5abfb1c21afdb75b44c2fc0ce81b19d3d2db9aa3d820850b8abf74327",
        "patch": "diff --git a/nodefusion/manifests/ucore.toml b/nodefusion/manifests/ucore.toml\nindex 4312842..750f358 100644\n--- a/nodefusion/manifests/ucore.toml\n+++ b/nodefusion/manifests/ucore.toml\n@@ -33,17 +33,29 @@ steps = [\n   { iter = \"array\" },\n ]\n \n+[[entity.source]]\n+kind = \"batch\"\n+completeness = \"none\"\n+when = { all = [{ type_missing = \"proc\" }, { symbol_exists = \"clean_bss\" }, { symbol_missing = \"pool\" }, { symbol_missing = \"allocproc\" }, { symbol_missing = \"scheduler\" }] }\n+steps = []\n+\n [entity.liveness]\n-skip_when = { field = \"state\", equals = \"P_UNUSED\" }\n+skip_when = { field = \"state\", one_of = [\"UNUSED\", \"P_UNUSED\"] }\n \n [entity.fields]\n pid         = { path = \"pid\",         reader = \"i32\",  role = \"id\" }\n state       = { path = \"state\",       reader = \"enum\", enum = \"procstate\", role = \"state\" }\n \n [entity.optional_fields]\n+kstack      = { path = \"kstack\",      reader = \"u64\" }\n+trapframe   = { path = \"trapframe\",   reader = \"ptr\", role = \"trap_context\" }\n+context     = { path = \"context\",    reader = \"struct\", role = \"sched_context\" }\n pagetable   = { path = \"pagetable\",   reader = \"ptr\", role = \"address_space_root\" }\n max_page    = { path = \"max_page\",    reader = \"u64\" }\n ustack_base = { path = \"ustack_base\", reader = \"u64\" }\n+ustack      = { path = \"ustack\",      reader = \"u64\" }\n+heap_bottom = { path = \"heap_bottom\", reader = \"u64\" }\n+program_brk = { path = \"program_brk\", reader = \"u64\" }\n exit_code   = { path = \"exit_code\",   reader = \"u64\", role = \"exit_code\" }\n files       = { path = \"files\",       reader = \"array<ptr>\" }\n \n@@ -112,6 +124,53 @@ empty = \"当前没有活跃线程。\"\n \n # -------------------------------------------------------------- resources\n \n+[[entity]]\n+name = \"batch_context\"\n+type = \"trapframe\"\n+label = \"用户上下文\"\n+\n+[[entity.source]]\n+kind = \"table\"\n+completeness = \"total\"\n+when = { all = [{ type_exists = \"trapframe\" }, { symbol_exists = \"trap_page\" }, { symbol_missing = \"pool\" }] }\n+steps = [{ static = \"trap_page\" }]\n+\n+[[entity.source]]\n+kind = \"batch\"\n+completeness = \"none\"\n+when = { all = [{ type_exists = \"proc\" }, { symbol_exists = \"pool\" }, { symbol_missing = \"trap_page\" }] }\n+steps = []\n+\n+[entity.fields]\n+epc = { path = \"epc\", reader = \"u64\" }\n+user_sp = { path = \"sp\", reader = \"u64\" }\n+kernel_sp = { path = \"kernel_sp\", reader = \"u64\" }\n+a0 = { path = \"a0\", reader = \"u64\" }\n+a1 = { path = \"a1\", reader = \"u64\" }\n+a2 = { path = \"a2\", reader = \"u64\" }\n+a7 = { path = \"a7\", reader = \"u64\" }\n+\n+[entity.table]\n+empty = \"本构建没有独立的批处理上下文。\"\n+  [[entity.table.column]]\n+  key = \"epc\"\n+  label = \"返回地址\"\n+  format = \"hex\"\n+  [[entity.table.column]]\n+  key = \"user_sp\"\n+  label = \"用户栈\"\n+  format = \"hex\"\n+  [[entity.table.column]]\n+  key = \"kernel_sp\"\n+  label = \"内核栈\"\n+  format = \"hex\"\n+  [[entity.table.column]]\n+  key = \"a7\"\n+  label = \"a7\"\n+  [[entity.table.column]]\n+  key = \"a0\"\n+  label = \"a0\"\n+\n [[entity]]\n name  = \"bcache\"\n type  = \"buf\"\n@@ -264,12 +323,20 @@ empty = \"当前没有活跃 inode。\"\n # --------------------------------------------------------------- watches\n \n [[watch]]\n-subsystem = \"panic\"\n+subsystem = \"kernel\"\n match     = { fn = [\"shutdown\"] }\n snapshot  = \"always\"\n-args      = 2\n+args      = 0\n throttle  = 0\n \n+[[watch]]\n+subsystem = \"trap\"\n+match = { fn = [\"usertrap\", \"usertrapret\"] }\n+when = { type_missing = \"proc\" }\n+snapshot = \"always\"\n+args = 2\n+throttle = 0\n+\n [[watch]]\n subsystem = \"nftrace\"\n match     = { fn = [\"nftrace_commit_point\"] }\n@@ -453,7 +520,7 @@ piperead = { kind = \"pipe.read\", resource = \"pipe\" }\n pipewrite = { kind = \"pipe.write\", resource = \"pipe\" }\n pipeclose = { kind = \"pipe.close\", resource = \"pipe\" }\n \n-shutdown = { kind = \"kernel.panic\", args = [\"reason\"] }\n+shutdown = { kind = \"kernel.shutdown\" }\n \n # ----------------------------------------------------------------- profile\n \n@@ -471,12 +538,11 @@ machine_opts = [\n ]\n interactive = true\n prompt = \">> \"\n-ready_markers = [\"C user shell\"]\n-# User-space assertions deliberately print the same ``[PANIC ...]`` prefix as\n-# the kernel logger and then return a non-zero test status.  Treating that text\n-# as a kernel panic truncates aggregate suites halfway through; the shell's\n-# exit line and QEMU termination provide unambiguous outcomes instead.\n-panic_markers = [\"core dumped\"]\n+ready_markers = [\"hello wrold!\", \"C user shell\", \"start scheduler!\"]\n+done_markers = [\"ALL DONE\", \"all app are over!\", \"all apps over\"]\n+# User faults and assertions share the kernel's diagnostic text. Completion\n+# markers, process exit lines and QEMU termination determine the outcome.\n+panic_markers = []\n halt_markers = []\n stdin_preload = true\n stdin_pad = \"\\n\"\n"
      },
      {
        "path": "nodefusion/model/dwarfsrc.py",
        "sha256": "02688f5f8419ba6c8fd64ea4f347929f74c8b70299b632223c5535bab298f265",
        "patch": "diff --git a/nodefusion/model/dwarfsrc.py b/nodefusion/model/dwarfsrc.py\nindex 6716ea1..2dd0640 100644\n--- a/nodefusion/model/dwarfsrc.py\n+++ b/nodefusion/model/dwarfsrc.py\n@@ -99,6 +99,10 @@ class DwarfSource:\n         if not elf.has_dwarf_info():\n             raise RuntimeError(f\"{self.path} 里没有调试信息（.debug_info）\")\n         self.e_machine = elf.header[\"e_machine\"]\n+        symtab = elf.get_section_by_name('.symtab')\n+        self.defined_symbols = (None if symtab is None else\n+                                {s.name for s in symtab.iter_symbols()\n+                                 if s.name and s['st_shndx'] != 'SHN_UNDEF'})\n         self._exec_ranges = self._exec_sections(elf)\n         self._parse(elf.get_dwarf_info())\n         self._index_short()\n"
      },
      {
        "path": "nodefusion/model/kinds.py",
        "sha256": "0432ef9f134654bc36554ec55afcb9f91c593110cdacf0a58d0ac4d1d05ac569",
        "patch": "diff --git a/nodefusion/model/kinds.py b/nodefusion/model/kinds.py\nindex c9da0ea..5551612 100644\n--- a/nodefusion/model/kinds.py\n+++ b/nodefusion/model/kinds.py\n@@ -17,7 +17,7 @@ KINDS: frozenset[str] = frozenset({\n     \"inode.write\",\n     \"interrupt.clock\", \"interrupt.dispatch\", \"interrupt.external\",\n     \"interrupt.other\", \"interrupt.software\", \"interrupt.timer\",\n-    \"kernel.alloc_error\", \"kernel.panic\",\n+    \"kernel.alloc_error\", \"kernel.panic\", \"kernel.shutdown\",\n     \"log.begin\", \"log.commit\", \"log.end\", \"log.install\", \"log.recover\",\n     \"log.write\", \"log.write_blocks\",\n     \"pagetable.freewalk\", \"pagetable.map\", \"pagetable.new\", \"pagetable.unmap\",\n"
      },
      {
        "path": "nodefusion/model/resolve.py",
        "sha256": "0c588760d0ec6494617007b02d786285ba190593935f574f6c53b99ad62ac8c0",
        "patch": "diff --git a/nodefusion/model/resolve.py b/nodefusion/model/resolve.py\nindex 5c9b606..a655199 100644\n--- a/nodefusion/model/resolve.py\n+++ b/nodefusion/model/resolve.py\n@@ -127,6 +127,24 @@ def resolve_path(dw: DwarfSource, start: StructLayout, path: str,\n def eval_when(dw: DwarfSource, pred: dict | None) -> tuple[bool, str]:\n     if not pred:\n         return True, \"无条件\"\n+    if not isinstance(pred, dict) or len(pred) != 1:\n+        return False, \"when 需要一种谓词\"\n+    if 'all' in pred:\n+        children = pred['all']\n+        if not isinstance(children, list) or not children or any(not isinstance(p, dict) or not p for p in children):\n+            return False, \"all 需要非空的谓词数组\"\n+        results = [eval_when(dw, child) for child in children]\n+        return all(hit for hit, _ in results), '；'.join(reason for _, reason in results)\n+    if 'symbol_exists' in pred or 'symbol_missing' in pred:\n+        key = next(iter(pred))\n+        name = pred[key]\n+        if not isinstance(name, str) or not name.strip():\n+            return False, \"符号名不能为空\"\n+        symbols = getattr(dw, 'defined_symbols', None)\n+        if symbols is None:\n+            return False, \"没有完整 ELF 符号表\"\n+        exists = name in symbols\n+        return (exists if key == 'symbol_exists' else not exists), f\"符号 {name} {'在' if exists else '不在'}\"\n \n     if \"type_exists\" in pred:\n         want = pred[\"type_exists\"]\n"
      },
      {
        "path": "nodefusion/model/snapshot.py",
        "sha256": "e9c4ce76b858a9003e43d9eec363e1b88d4024338c3401b7a47a9871fe5dab7a",
        "patch": "diff --git a/nodefusion/model/snapshot.py b/nodefusion/model/snapshot.py\nindex fa095ef..0bf7cb7 100644\n--- a/nodefusion/model/snapshot.py\n+++ b/nodefusion/model/snapshot.py\n@@ -68,6 +68,8 @@ def is_live(entity: Entity, liveness: dict | None) -> bool:\n         return True\n     if \"equals\" in sw:\n         return f.value != sw[\"equals\"]\n+    if \"one_of\" in sw:\n+        return f.value not in sw[\"one_of\"]\n     return True\n \n \n"
      },
      {
        "path": "nodefusion/host/bundle.py",
        "sha256": "f6117f48b073e117dc0ffa6cdf1af4984d173b3a8f16808730e3746b51c2ad33",
        "patch": "diff --git a/nodefusion/host/bundle.py b/nodefusion/host/bundle.py\nindex a31f11f..4a3967a 100644\n--- a/nodefusion/host/bundle.py\n+++ b/nodefusion/host/bundle.py\n@@ -15,6 +15,7 @@ from .analyze import Analysis\n MAX_EVENTS = 150_000\n \n MIN_SPARE_EVENTS = 25_000\n+MIN_KIND_EVENTS = 64\n \n DIAGNOSTIC_PREFIXES = (\"func.\",)\n \n@@ -57,6 +58,25 @@ class Interner:\n         return i\n \n \n+def _kind_budgets(counts: dict[str, int], budget: int) -> tuple[dict[str, int], int]:\n+    if not counts:\n+        return {}, 0\n+    floor = min(MIN_KIND_EVENTS, budget // len(counts))\n+    if floor == 0:\n+        return {kind: int(index < budget) for index, kind in enumerate(counts)}, 0\n+    quotas = {kind: min(count, floor) for kind, count in counts.items()}\n+    remaining = budget - sum(quotas.values())\n+    residual_total = sum(counts.values()) - sum(quotas.values())\n+    cumulative = 0\n+    if residual_total:\n+        for kind, count in counts.items():\n+            residual = count - quotas[kind]\n+            quotas[kind] += ((cumulative + residual) * remaining // residual_total\n+                             - cumulative * remaining // residual_total)\n+            cumulative += residual\n+    return quotas, floor\n+\n+\n def _event_selection(events: list, *, materialize: bool) -> tuple[list, dict]:\n     \"\"\"Bound the interactive event stream while auditing the full raw trace.\"\"\"\n     raw_kinds = Counter(e.kind for e in events)\n@@ -65,7 +85,7 @@ def _event_selection(events: list, *, materialize: bool) -> tuple[list, dict]:\n     if len(events) <= MAX_EVENTS:\n         return (events if materialize else []), {\n             \"applied\": False,\n-            \"policy\": \"kind-preserving/systematic-v3\",\n+            \"policy\": \"kind-preserving/systematic-v5\",\n             \"raw\": len(events), \"retained\": len(events), \"dropped\": 0,\n             \"target_limit\": MAX_EVENTS, \"minimum_spare\": MIN_SPARE_EVENTS,\n             \"always_keep\": \"all events when the raw stream fits\",\n@@ -77,37 +97,32 @@ def _event_selection(events: list, *, materialize: bool) -> tuple[list, dict]:\n         }\n \n     spare_raw = len(events) - priority_raw\n-    semantic_kinds = {k for k in raw_kinds if _is_semantic(k)}\n-    reserved_spare = min(MIN_SPARE_EVENTS, spare_raw)\n+    semantic_counts = {k: count for k, count in raw_kinds.items() if _is_semantic(k)}\n+    reserved_spare = min(MIN_SPARE_EVENTS, spare_raw, MAX_EVENTS)\n     priority_budget = min(priority_raw, MAX_EVENTS - reserved_spare)\n+    quotas, kind_floor = _kind_budgets(semantic_counts, priority_budget)\n     room = MAX_EVENTS - priority_budget\n-    step = max(1, spare_raw // room) if room > 0 and spare_raw else 1\n+    diagnostic_counts = {k: count for k, count in raw_kinds.items() if not _is_semantic(k)}\n+    diagnostic_quotas, diagnostic_floor = _kind_budgets(diagnostic_counts, min(room, spare_raw))\n+    quotas.update(diagnostic_quotas)\n     chosen: list = []\n     retained_kinds: Counter = Counter()\n     dropped_kinds: dict[str, int] = {}\n-    spare_seen = 0\n-    spare_kept = 0\n     semantic_seen = 0\n-    first_kinds: set[str] = set()\n-    nonfirst_seen = 0\n-    nonfirst_total = priority_raw - len(semantic_kinds)\n-    nonfirst_budget = max(0, priority_budget - len(semantic_kinds))\n+    seen_by_kind: Counter = Counter()\n     for e in events:\n         if _is_semantic(e.kind):\n             semantic_seen += 1\n-            if e.kind not in first_kinds:\n-                first_kinds.add(e.kind)\n-                retain = len(first_kinds) <= priority_budget\n-            else:\n-                retain = (nonfirst_total > 0 and\n-                          (nonfirst_seen + 1) * nonfirst_budget // nonfirst_total\n-                          > nonfirst_seen * nonfirst_budget // nonfirst_total)\n-                nonfirst_seen += 1\n+        seen = seen_by_kind[e.kind]\n+        seen_by_kind[e.kind] += 1\n+        quota = quotas[e.kind]\n+        total = raw_kinds[e.kind]\n+        if seen == 0:\n+            retain = quota > 0\n         else:\n-            retain = room > 0 and spare_kept < room and spare_seen % step == 0\n-            spare_seen += 1\n-            if retain:\n-                spare_kept += 1\n+            retain = (quota > 1 and\n+                      seen * (quota - 1) // (total - 1)\n+                      > (seen - 1) * (quota - 1) // (total - 1))\n         if retain:\n             retained_kinds[e.kind] += 1\n             if materialize:\n@@ -120,15 +135,19 @@ def _event_selection(events: list, *, materialize: bool) -> tuple[list, dict]:\n \n     return chosen, {\n         \"applied\": True,\n-        \"policy\": \"kind-preserving/systematic-v3\",\n+        \"policy\": \"kind-preserving/systematic-v5\",\n         \"raw\": len(events), \"retained\": retained, \"dropped\": dropped,\n         \"target_limit\": MAX_EVENTS, \"minimum_spare\": MIN_SPARE_EVENTS,\n-        \"always_keep\": \"first event of each normalized kind within budget\",\n+        \"always_keep\": \"all events of kinds whose count fits their per-kind budget\",\n         \"priority_raw\": priority_raw, \"spare_raw\": spare_raw,\n         \"semantic_budget\": priority_budget,\n+        \"minimum_per_kind\": kind_floor,\n+        \"semantic_kind_budgets\": {k: quotas[k] for k in sorted(semantic_counts)},\n+        \"diagnostic_kind_budgets\": dict(sorted(diagnostic_quotas.items())),\n+        \"minimum_per_diagnostic_kind\": diagnostic_floor,\n         \"semantic_retained\": semantic_seen - sum(v for k, v in dropped_kinds.items()\n                                                 if _is_semantic(k)),\n-        \"spare_budget\": room, \"stride\": step if room > 0 and spare_raw else None,\n+        \"spare_budget\": room, \"stride\": None,\n         \"retained_kinds\": dict(sorted(retained_kinds.items())),\n         \"dropped_kinds\": dict(sorted(dropped_kinds.items())),\n     }\n"
      },
      {
        "path": "nodefusion/tests/test_bundle_shape.py",
        "sha256": "34d227f2726d1820160288b225243b51fe3583839ff52ee245a814eb1c27f81d",
        "patch": "diff --git a/nodefusion/tests/test_bundle_shape.py b/nodefusion/tests/test_bundle_shape.py\nindex 40bd9fe..025791a 100644\n--- a/nodefusion/tests/test_bundle_shape.py\n+++ b/nodefusion/tests/test_bundle_shape.py\n@@ -1,5 +1,6 @@\n \n import sys\n+from collections import Counter\n from pathlib import Path\n from types import SimpleNamespace as NS\n \n@@ -144,7 +145,8 @@ def test_event_selection_metadata_accounts_for_every_raw_event(monkeypatch):\n     assert audit[\"priority_raw\"] == 4\n     assert audit[\"spare_raw\"] == 26\n     assert audit[\"spare_budget\"] == 6\n-    assert audit[\"stride\"] == 4\n+    assert audit[\"stride\"] is None\n+    assert audit['diagnostic_kind_budgets'] == {'func.hot_path': 6}\n     assert sum(audit[\"retained_kinds\"].values()) == audit[\"retained\"]\n     assert sum(audit[\"dropped_kinds\"].values()) == audit[\"dropped\"]\n     assert [e.insn for e in selected[:4]] == [0, 1, 2, 3]\n@@ -156,10 +158,9 @@ def test_bounded_selector_preserves_order_and_systematic_sample(monkeypatch):\n     events = [NS(kind=(\"proc.fork\" if i in {2, 7} else \"func.hot\"), insn=i)\n               for i in range(12)]\n     selected, audit = B._select_events(events)\n-    # Ten diagnostics, four spare slots => old spare[::2][:4], interleaved\n-    # with both semantic events in original timeline order.\n-    assert [event.insn for event in selected] == [0, 2, 3, 5, 7, 8]\n-    assert audit[\"stride\"] == 2\n+    # Four per-kind positions include the first and last diagnostic entries.\n+    assert [event.insn for event in selected] == [0, 2, 4, 7, 8, 11]\n+    assert audit[\"stride\"] is None\n     assert audit[\"retained\"] == 6\n \n \n@@ -178,6 +179,79 @@ def test_large_semantic_stream_stays_browser_bounded(monkeypatch):\n     assert audit[\"raw\"] == audit[\"retained\"] + audit[\"dropped\"]\n \n \n+def test_rare_semantic_events_survive_hot_kinds_without_kernel_allowlists(monkeypatch):\n+    monkeypatch.setattr(B, 'MAX_EVENTS', 200)\n+    monkeypatch.setattr(B, 'MIN_SPARE_EVENTS', 25)\n+    events = [NS(kind='pagetable.map', insn=i) for i in range(5000)]\n+    events += [NS(kind='future_namespace.branch', insn=5000 + i) for i in range(13)]\n+    events += [NS(kind='trap.page_fault', insn=5013 + i) for i in range(4)]\n+    events += [NS(kind='func.loop', insn=5017 + i) for i in range(1000)]\n+    selected, audit = B._select_events(events)\n+    assert len(selected) == audit['retained'] == 200\n+    assert audit['retained_kinds']['future_namespace.branch'] == 13\n+    assert audit['retained_kinds']['trap.page_fault'] == 4\n+    assert audit['retained_kinds']['func.loop'] == 25\n+    assert audit['semantic_retained'] == 175\n+    assert audit['semantic_kind_budgets']['pagetable.map'] == 158\n+    hot = [item.insn for item in selected if item.kind == 'pagetable.map']\n+    assert hot[0] == 0 and hot[-1] == 4999\n+    assert [item.insn for item in selected] == sorted(item.insn for item in selected)\n+    assert B._select_events(events)[0] == selected\n+    empty, accounting = B._event_selection(events, materialize=False)\n+    assert empty == [] and accounting == audit\n+    for kind, count in Counter(item.kind for item in events).items():\n+        assert audit['retained_kinds'].get(kind, 0) + audit['dropped_kinds'].get(kind, 0) == count\n+\n+\n+def test_more_semantic_kinds_than_slots_is_still_bounded(monkeypatch):\n+    monkeypatch.setattr(B, 'MAX_EVENTS', 7)\n+    monkeypatch.setattr(B, 'MIN_SPARE_EVENTS', 2)\n+    events = [NS(kind=f'new.kind{i}', insn=i) for i in range(20)]\n+    events += [NS(kind='func.noise', insn=20 + i) for i in range(20)]\n+    selected, audit = B._select_events(events)\n+    assert len(selected) == 7\n+    assert audit['semantic_retained'] == 5 and audit['retained_kinds']['func.noise'] == 2\n+    assert sum(audit['semantic_kind_budgets'].values()) == 5\n+    assert [item.kind for item in selected[:5]] == [f'new.kind{i}' for i in range(5)]\n+    assert sum(audit['dropped_kinds'].values()) == 33\n+    assert B._event_selection(events, materialize=False)[1] == audit\n+\n+\n+def test_rare_function_entries_survive_hot_diagnostic_functions(monkeypatch):\n+    monkeypatch.setattr(B, 'MAX_EVENTS', 100)\n+    monkeypatch.setattr(B, 'MIN_SPARE_EVENTS', 25)\n+    events = [NS(kind='syscall.enter', insn=i) for i in range(1000)]\n+    events += [NS(kind='func.format', insn=1000 + i) for i in range(2000)]\n+    events += [NS(kind='func.unmap', insn=3000 + i) for i in range(2)]\n+    selected, audit = B._select_events(events)\n+    assert len(selected) == 100\n+    assert audit['retained_kinds']['func.unmap'] == 2\n+    assert audit['retained_kinds']['func.format'] == 23\n+    assert not audit['dropped_kinds'].get('func.unmap')\n+    assert selected[-1] is events[-1]\n+\n+\n+def test_kind_quotas_use_the_budget_without_exceeding_raw_counts():\n+    for counts in [{'one': 1}, {'a': 2, 'b': 1000, 'c': 9},\n+                   {str(index): index + 1 for index in range(100)}]:\n+        total = sum(counts.values())\n+        for budget in range(min(total, 300) + 1):\n+            quotas, floor = B._kind_budgets(counts, budget)\n+            assert sum(quotas.values()) == budget\n+            assert all(0 <= quotas[kind] <= count for kind, count in counts.items())\n+            assert all(quotas[kind] == count for kind, count in counts.items() if count <= floor)\n+\n+\n+def test_diagnostic_reservation_cannot_exceed_total_budget(monkeypatch):\n+    monkeypatch.setattr(B, 'MAX_EVENTS', 4)\n+    monkeypatch.setattr(B, 'MIN_SPARE_EVENTS', 25)\n+    events = [NS(kind='syscall.enter', insn=0)]\n+    events += [NS(kind='func.hot', insn=i) for i in range(1, 30)]\n+    selected, audit = B._select_events(events)\n+    assert len(selected) == 4 and audit['semantic_budget'] == 0\n+    assert audit['dropped_kinds']['syscall.enter'] == 1\n+\n+\n def test_interactive_sampling_does_not_erase_raw_semantic_coverage(monkeypatch):\n     monkeypatch.setattr(B, \"MAX_EVENTS\", 10)\n     monkeypatch.setattr(B, \"MIN_SPARE_EVENTS\", 3)\n"
      },
      {
        "path": "nodefusion/tests/test_kernel_integrations.py",
        "sha256": "8e3ecdcf6ad5ea3b7fa44a3e3244a2c9678255b62c02d8cd48de9cfc1189b376",
        "patch": "diff --git a/nodefusion/tests/test_kernel_integrations.py b/nodefusion/tests/test_kernel_integrations.py\nindex a285e88..b33e6b0 100644\n--- a/nodefusion/tests/test_kernel_integrations.py\n+++ b/nodefusion/tests/test_kernel_integrations.py\n@@ -64,7 +64,7 @@ def test_rcore_patch_and_manifest_agree_on_the_per_region_hook():\n     assert manifest.events[symbol].kind == \"vm.unmap\"\n     assert manifest.events[symbol].args == [\"start_vpn\", \"end_vpn\"]\n     assert manifest.absent[\"vm.unmap\"].when == {\n-        \"type_missing\": \"os::task::processor::Processor\"}\n+        \"type_missing\": \"os::mm::memory_set::MemorySet\"}\n \n \n def test_rcore_patch_exports_exact_physical_allocation_results():\n@@ -79,6 +79,38 @@ def test_rcore_patch_exports_exact_physical_allocation_results():\n     assert \"nodefusion_trace_sched_switch\" in patch\n \n \n+def test_rcore_reference_region_removal_is_an_attempt_not_a_success_event():\n+    manifest = load(ROOT / 'manifests/rcore.toml')\n+    symbol = 'os::mm::memory_set::MemorySet::remove_framed_area'\n+    assert manifest.events[symbol].kind == 'vm.remove_area'\n+    assert manifest.events[symbol].args == ['self', 'start_vpn', 'end_vpn']\n+    dedicated = next(index for index, watch in enumerate(manifest.watches)\n+                     if watch.match.get('fn') == ['remove_framed_area'])\n+    inline = next(index for index, watch in enumerate(manifest.watches)\n+                  if watch.match.get('fn') == ['frame_alloc', 'frame_dealloc', 'unmap', 'init_heap'])\n+    assert dedicated < inline\n+    assert manifest.watches[dedicated].args == 3\n+    assert not manifest.watches[dedicated].inlined\n+\n+\n+def test_rcore_2026a_ch4_observation_patch_preserves_region_acceptance():\n+    patch = (INTEGRATIONS / 'rcore-2026a-ch4-observation.patch').read_text()\n+    assert patch.index('})?;') < patch.index('nodefusion_vm_unmap_region(start.0, end.0);')\n+    assert patch.index('nodefusion_vm_unmap_region(start.0, end.0);') < patch.index('let mut area = self.areas.remove(index);')\n+    assert 'const NFT_ALLOCATOR_STATE: u64 = 6;' in patch\n+    assert 'a: [free_pages as u64, used_pages as u64, 0, 0]' in patch\n+    assert 'nodefusion_trace_page(NFT_KALLOC, paddr, free_pages, used_pages)' in patch\n+    assert 'nodefusion_trace_page(NFT_KFREE, PhysAddr::from(ppn).0, free_pages, used_pages)' in patch\n+    assert 'GlobalAlloc::alloc(&self.0, layout)' in patch\n+    assert 'GlobalAlloc::dealloc(&self.0, ptr, layout)' in patch\n+    manifest = load(ROOT / 'manifests/rcore.toml')\n+    event = manifest.events['os::mm::page_table::PageTable::map']\n+    assert event.kind == 'pagetable.map' and event.args == ['self', 'vpn', 'ppn', 'flags']\n+    rule = next(watch for watch in manifest.watches\n+                if watch.match == {'module': 'os::mm::page_table::PageTable', 'fn': ['map']})\n+    assert rule.args == 4 and not rule.inlined\n+\n+\n def test_rcore_chapter_patches_preserve_per_region_and_scheduler_identity():\n     for chapter in (6, 8):\n         patch = (INTEGRATIONS / f\"rcore-ch{chapter}-nodefusion.patch\").read_text(\n@@ -94,6 +126,43 @@ def test_rcore_chapter_patches_preserve_per_region_and_scheduler_identity():\n     assert \"block_current_and_run_next\" in ch8\n \n \n+def test_2026a_ch5_observation_preserves_allocator_and_switch_semantics():\n+    rust = (INTEGRATIONS / 'rcore-2026a-ch5-observation.patch').read_text()\n+    c = (INTEGRATIONS / 'ucore-2026a-ch5-observation.patch').read_text()\n+    for patch in (rust, c):\n+        assert 'nftrace_commit_point' in patch\n+        assert 'nodefusion_pagetable_map' in patch or '#[inline(never)]' in patch\n+    assert 'self.allocated -= 1;' in rust\n+    assert 'self.allocated += 1;' in rust\n+    assert 'if result.is_some()' in rust\n+    assert 'frame.as_ref().map_or(0, |frame| PhysAddr::from(frame.ppn).0)' in rust\n+    assert 'pub(crate) const NO_TASK: usize = usize::MAX;' in rust\n+    assert 'emit(4, [from_task as u64, to_task as u64, from_pid as u64, to_pid as u64])' in rust\n+    assert 'crate::nftrace::NO_TASK, next_pid' in rust\n+    assert 'crate::nftrace::sched_switch(task_id, idle, pid, crate::nftrace::NO_TASK)' in rust\n+    assert rust.index('add_task(new_task);') < rust.index('crate::nftrace::process_fork(current_task.getpid(), new_pid);')\n+    assert 'nf_used_pages--;' in c\n+    assert 'nf_used_pages++;' in c\n+    assert c.index('nf_used_pages--;') < c.index('nftrace_page_free((uint64)pa, nf_free_pages, nf_used_pages);')\n+    assert c.index('add_task(np);') < c.index('nftrace_proc_fork(p->pid, np->pid);')\n+    assert 'nftrace_sched_switch((uint64)&idle, (uint64)p, (uint64)-1, p->pid);' in c\n+    assert 'nftrace_sched_switch((uint64)p, (uint64)&idle, p->pid, (uint64)-1);' in c\n+    assert c.index('*pte = PA2PTE(pa) | perm | PTE_V;') < c.index('nodefusion_pagetable_map(a, pa, perm | PTE_V);')\n+\n+\n+def test_rcore_2026a_ch5_region_hooks_only_describe_explicit_pte_removal():\n+    patch = (INTEGRATIONS / 'rcore-2026a-ch5-observation.patch').read_text()\n+    assert 'if mapped_end > area.vpn_range.get_start()' in patch\n+    assert 'nodefusion_vm_unmap_region(area.vpn_range.get_start().0, mapped_end.0);' in patch\n+    assert 'if self.vpn_range.get_start() < self.vpn_range.get_end()' in patch\n+    assert 'nodefusion_vm_unmap_region(self.vpn_range.get_start().0, self.vpn_range.get_end().0);' in patch\n+    assert 'if new_end < self.vpn_range.get_end()' in patch\n+    assert 'nodefusion_vm_unmap_region(new_end.0, self.vpn_range.get_end().0);' in patch\n+    # Releasing data-frame ownership on exit leaves the zombie page table alive.\n+    # Do not invent explicit PTE-removal events for that separate operation.\n+    assert 'self.areas.clear();' not in patch\n+\n+\n def test_rcore_ch8_keeps_applicable_vm_and_signal_watchpoints_callable():\n     patch = (INTEGRATIONS / \"rcore-page-table-observation-points.patch\").read_text()\n     assert patch.count(\"#[inline(never)]\") == 6\n@@ -161,7 +230,7 @@ def test_rcore_filesystem_absence_depends_on_the_resolved_build(monkeypatch):\n             (\"proc.alloc\", \"os::task::task::TaskControlBlock\"),\n             (\"proc.fork\", \"os::task::processor::Processor\"),\n             (\"proc.exec\", \"os::task::processor::Processor\"),\n-            (\"vm.unmap\", \"os::task::processor::Processor\"),\n+            (\"vm.unmap\", \"os::mm::memory_set::MemorySet\"),\n             (\"phys.alloc\", \"os::mm::frame_allocator::StackFrameAllocator\"),\n             (\"phys.free\", \"os::mm::frame_allocator::StackFrameAllocator\"),\n             (\"vm.map\", \"os::mm::memory_set::MemorySet\"),\n@@ -189,6 +258,28 @@ def test_ucore_patch_and_manifest_supply_exact_semantics():\n     assert manifest.absent[\"log.commit\"].why == \"feature\"\n \n \n+def test_ucore_2026a_ch4_patch_observes_allocator_results_and_committed_ptes():\n+    patch = (INTEGRATIONS / 'ucore-2026a-ch4-observation.patch').read_text()\n+    paths = [line.split(' b/', 1)[1] for line in patch.splitlines() if line.startswith('diff --git ')]\n+    assert set(paths) == {'os/kalloc.c', 'os/vm.c', 'os/nftrace.c', 'os/nftrace.h'}\n+    assert 'NFT_KALLOC = 1' in patch and 'NFT_KFREE = 5' in patch and 'NFT_ALLOCATOR_STATE = 6' in patch\n+    assert 'nftrace_page_alloc((uint64)l, 1, nf_free_pages, nf_used_pages)' in patch\n+    assert 'nftrace_page_free((uint64)pa, 1, nf_free_pages, nf_used_pages)' in patch\n+    assert 'nftrace_allocator_state(nf_free_pages, nf_used_pages)' in patch\n+    assert patch.index('*pte = PA2PTE(pa) | perm | PTE_V;') < patch.index('nodefusion_pagetable_map(a, pa, perm | PTE_V);')\n+    assert 'const struct nftrace_record record = { type, { a0, a1, a2, a3 } }' in patch\n+\n+\n+def test_ucore_2026a_ch4_page_table_experiment_owns_and_reclaims_its_pages():\n+    patch = (INTEGRATIONS / 'ucore-2026a-ch4-pagetable-experiment.patch').read_text()\n+    assert patch.index('uvmunmap(table, va, 1, 0)') < patch.index('uvmunmap(table, va, 1, 1)')\n+    assert patch.index('uvmunmap(table, TRAMPOLINE, 1, 0)') < patch.index('freewalk(table)')\n+    assert 'walkaddr(table, va + 0x123) != (uint64)frame' in patch\n+    assert 'useraddr(table, va + 0x123) != (uint64)frame + 0x123' in patch\n+    assert 'frame[0x123] != 0x5a' in patch\n+    assert patch.index('kvm_init();') < patch.index('nodefusion_pagetable_experiment();', patch.index('kvm_init();'))\n+\n+\n def test_ucore_showcase_fixes_remain_separate_from_observation_patch():\n     observation = (INTEGRATIONS / \"ucore-nodefusion.patch\").read_text()\n     kernel_fix = (INTEGRATIONS / \"ucore-ch8-showcase.patch\").read_text()\n@@ -204,6 +295,13 @@ def test_ucore_manifest_covers_all_eight_measured_shapes():\n     manifest = load(ROOT / \"manifests\" / \"ucore.toml\")\n     assert manifest.detect == {\"all_symbol\": [\"digits\", \"SBI_SHUTDOWN\"]}\n     assert manifest.derive_feature_absence_from_symbols is True\n+    process = manifest.entity(\"process\")\n+    assert process.liveness[\"skip_when\"] == {\n+        \"field\": \"state\", \"one_of\": [\"UNUSED\", \"P_UNUSED\"]}\n+    fields = {field.name: field for field in process.fields}\n+    assert fields[\"context\"].role == \"sched_context\"\n+    assert fields[\"trapframe\"].role == \"trap_context\"\n+    assert all(fields[name].optional for name in (\"context\", \"trapframe\", \"kstack\"))\n     parent = next(field for field in manifest.entity(\"process\").relations\n                   if field.name == \"parent\")\n     assert parent.optional is True\n"
      },
      {
        "path": "nodefusion/tests/test_resolve.py",
        "sha256": "b14f432eb380c5514b73431978b01b0d715ed9a49f92deb547358fb35dd4d8ec",
        "patch": "diff --git a/nodefusion/tests/test_resolve.py b/nodefusion/tests/test_resolve.py\nindex 0eeed28..585b0a8 100644\n--- a/nodefusion/tests/test_resolve.py\n+++ b/nodefusion/tests/test_resolve.py\n@@ -97,6 +97,30 @@ def test_missing_field_is_absent_not_a_failure():\n     assert resolve_path(dw, tcb, \"inner.priority\").state == ABSENT\n \n \n+def test_rcore_priority_spellings_resolve_without_kernel_branches():\n+    from nodefusion.model.manifest import builtin_dir, load\n+    from nodefusion.model.snapshot import Entity, Field\n+\n+    manifest = load(builtin_dir() / \"rcore.toml\")\n+    specs = [field for entity in manifest.entities if entity.name == \"task\"\n+             for field in entity.fields if field.role == \"priority\"]\n+    assert {field.path for field in specs} == {\"inner.prio\", \"inner.priority\"}\n+    assert all(field.optional for field in specs)\n+    for spelling in (\"prio\", \"priority\", None):\n+        dw, tcb = chain()\n+        if spelling:\n+            dw._s[6].fields[spelling] = 136\n+        fields = {}\n+        for spec in specs:\n+            resolved = resolve_path(dw, tcb, spec.path)\n+            fields[spec.name] = Field(spec.name, resolved.state,\n+                                      value=16 if resolved.state == PRESENT else None,\n+                                      role=spec.role)\n+        entity = Entity(\"task\", 0x1000, fields=fields)\n+        assert entity.role(\"priority\") == (16 if spelling else None)\n+        assert sum(field.ok for field in fields.values()) == (1 if spelling else 0)\n+\n+\n def test_missing_field_names_the_payload_type_not_just_the_wrapper():\n     dw, tcb = chain()\n     why = resolve_path(dw, tcb, \"inner.priority\").reason or \"\"\n"
      },
      {
        "path": "nodefusion/host/assets/app.css",
        "sha256": "0607be541e6bcd789a1964e74a6677a87d5d593684d6ac809782056ab7c0695a",
        "patch": "diff --git a/nodefusion/host/assets/app.css b/nodefusion/host/assets/app.css\nindex 88f5f82..d7124ab 100644\n--- a/nodefusion/host/assets/app.css\n+++ b/nodefusion/host/assets/app.css\n@@ -460,8 +460,8 @@ tr.sel td { background: color-mix(in oklch, var(--accent) 12%, var(--bg)); }\n   .right { width: 100%; max-height: 340px; border-left: 0; border-top: 1px solid var(--line); padding: 14px; }\n   .main.detail-collapsed .right { display: none; }\n   #evscroll { height: 54vh; }\n-  .trace-grid { grid-template-columns: 1fr; }\n-  .function-tree, .function-sequence { max-height: 42vh; }\n+  .trace-grid { grid-template-columns: 1fr; min-height: 0; align-items: start; }\n+  .function-tree, .function-sequence { min-height: 0; max-height: 42vh; }\n }\n @media (max-width: 560px) {\n   .brand-kicker, .shortcut-hint { display: none; }\n"
      },
      {
        "path": "nodefusion/host/assets/app.js",
        "sha256": "c253b16d88ddc73d1c78ec3729800800ad255b923712893dbe12f66faab2aca2",
        "patch": "diff --git a/nodefusion/host/assets/app.js b/nodefusion/host/assets/app.js\nindex 7f1256e..a87dcd9 100644\n--- a/nodefusion/host/assets/app.js\n+++ b/nodefusion/host/assets/app.js\n@@ -28,6 +28,7 @@ const NF = {\n   selPage: null,\n   selPid: null,\n   filters: { text: '', kind: '', res: '', pid: '', cpu: '', group: '', from: '', to: '' },\n+  functionFilters: {text: '', cpu: '', limit: '80', grouping: null},\n };\n \n /* ------------------------------------------------------------------ 工具 */\n@@ -1641,6 +1642,10 @@ function renderFunctions() {\n   if (returns.nested_entries) grouping.appendChild(new Option('观测调用链', 'stack'));\n   if (returns.nested_entries) grouping.value = 'stack';\n   else if (!entries.some((e) => e.caller)) grouping.value = 'namespace';\n+  search.value = NF.functionFilters.text;\n+  cpu.value = NF.functionFilters.cpu;\n+  limit.value = NF.functionFilters.limit;\n+  if ([...grouping.options].some(option => option.value === NF.functionFilters.grouping)) grouping.value = NF.functionFilters.grouping;\n   controls.appendChild(search); controls.appendChild(cpu); controls.appendChild(grouping);\n   controls.appendChild(limit); p.appendChild(controls);\n \n@@ -1658,6 +1663,7 @@ function renderFunctions() {\n   grid.appendChild(treePanel); grid.appendChild(sequencePanel); p.appendChild(grid);\n \n   function paint() {\n+    NF.functionFilters = {text: search.value, cpu: cpu.value, limit: limit.value, grouping: grouping.value};\n     const q = search.value.trim().toLowerCase();\n     const selectedCpu = cpu.value;\n     const filtered = entries.filter((e) => (!q || e.fn.toLowerCase().includes(q) || e.caller.toLowerCase().includes(q) || (e.path || []).some((name) => name.toLowerCase().includes(q))) && (selectedCpu === '' || String(e.cpu) === selectedCpu));\n"
      },
      {
        "path": "nodefusion/tests/test_phys_alloc_gate.py",
        "sha256": "a1b68458d8268d052082ad92b80f86753c46423eec7c86c3bdd6019e23b8186a",
        "patch": "diff --git a/nodefusion/tests/test_phys_alloc_gate.py b/nodefusion/tests/test_phys_alloc_gate.py\nindex 3cb406d..ec2bc43 100644\n--- a/nodefusion/tests/test_phys_alloc_gate.py\n+++ b/nodefusion/tests/test_phys_alloc_gate.py\n@@ -128,6 +128,51 @@ def test_sched_semantic_record_fills_both_endpoints_without_snapshots():\n     assert event.detail[\"from_proc\"] == \"kernel-task#41\"\n     assert event.detail[\"to_task_id\"] == 42\n     assert event.detail[\"to_pid\"] == 7\n+    assert event.pid == 7\n+    assert a._attribute(0, -1, {}) == (7, \"task#7\")\n+\n+\n+def test_semantic_switch_attribution_survives_missing_and_reused_snapshot_slots():\n+    a = object.__new__(A.Analysis)\n+    a._pid_by_slot_at = lambda *_: (99, \"stale slot\")\n+    slots = {0: 3, 1: 4}\n+    assert a._attribute(0, 0, slots) == (99, \"stale slot\")\n+    a._nftrace_event(NfTraceRec(insn=100, cpu=0, type=a.NFT_SCHED_SWITCH,\n+                              a=(10, 20, a.NFT_NO_TASK, 7)), -1, slots)\n+    assert a._attribute(0, -1, {}) == (7, \"task#7\")\n+    assert a._attribute(0, 200, slots) == (7, \"task#7\")\n+    assert a._attribute(1, 0, slots) == (99, \"stale slot\")\n+    alloc = a._nftrace_event(NfTraceRec(insn=101, cpu=0, type=a.NFT_KALLOC,\n+                                      a=(0x81234000, 1, 9, 1)), -1, {})\n+    assert alloc.pid == 7\n+\n+\n+def test_semantic_switches_track_each_cpu_and_distinguish_pid_zero_from_idle():\n+    a = object.__new__(A.Analysis)\n+    for cpu, pid in [(0, 0), (1, 7)]:\n+        a._nftrace_event(NfTraceRec(insn=100 + cpu, cpu=cpu, type=a.NFT_SCHED_SWITCH,\n+                                  a=(10 + cpu, 20 + cpu, a.NFT_NO_TASK, pid)), -1, {})\n+    assert a._attribute(0, -1, {}) == (0, \"task#0\")\n+    assert a._attribute(1, -1, {}) == (7, \"task#7\")\n+    a._nftrace_event(NfTraceRec(insn=102, cpu=0, type=a.NFT_SCHED_SWITCH,\n+                              a=(20, 10, 0, a.NFT_NO_TASK)), -1, {})\n+    assert a._attribute(0, -1, {}) == (None, \"kernel-task#10\")\n+    assert a._attribute(1, -1, {}) == (7, \"task#7\")\n+\n+\n+def test_rebuilding_events_resets_semantic_ownership_without_using_future_switches():\n+    a = object.__new__(A.Analysis)\n+    a.ncpu = 1\n+    a.states = []\n+    a.events = []\n+    a._semantic_current = {0: (99, \"previous analysis\")}\n+    a.trace = NS(discons=[], watch_hits=[], nftrace=[\n+        NfTraceRec(insn=1, cpu=0, type=a.NFT_KALLOC, a=(0x81234000, 1, 9, 1)),\n+        NfTraceRec(insn=2, cpu=0, type=a.NFT_SCHED_SWITCH, a=(10, 20, a.NFT_NO_TASK, 7)),\n+        NfTraceRec(insn=3, cpu=0, type=a.NFT_KALLOC, a=(0x81235000, 1, 8, 2)),\n+    ])\n+    a.build_events()\n+    assert [event.pid for event in a.events] == [None, 7, 7]\n \n \n def test_kfree_semantic_record_has_physical_range():\n"
      }
    ],
    "source_file_hashes_after": {
      "nodefusion/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/_vendor/elftools/__init__.py": "9385fdca231d9ad83e27a59aa1bc59b252efad8c24cf08c9f39e0b543f675746",
      "nodefusion/_vendor/elftools/common/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/_vendor/elftools/common/construct_utils.py": "d1de2461e60636b52cfc446d00f7a31f152f2ccc43c1a53bc2ba82187ca1e460",
      "nodefusion/_vendor/elftools/common/exceptions.py": "bedd7aa994281100ba13a40dfaad8b03eec17a725a1c4cb23893572d99bbd1ef",
      "nodefusion/_vendor/elftools/common/utils.py": "36a5f64bfb3aab0dba30d9fa05aa1b3f9fbbf86f297eee27c7c12652f5ac308b",
      "nodefusion/_vendor/elftools/construct/__init__.py": "15104eb011a640e4268a9b9221d07201a0360ff0b1c8b49e252ef41fdfbb35de",
      "nodefusion/_vendor/elftools/construct/adapters.py": "5745745b25eb849174ee5c3179b9867b03e0471633e9eac8276aa439fe4c8841",
      "nodefusion/_vendor/elftools/construct/core.py": "df9719893de6454f5bc4c912afc892bcc278ef45ac1553bf4a409278ba347c9d",
      "nodefusion/_vendor/elftools/construct/debug.py": "491486779e464e0f4a59cfd429d8e93c577a0f0d9b969847e69400a3c86acb1c",
      "nodefusion/_vendor/elftools/construct/lib/__init__.py": "973420ec247c18b9e5488743bb099ae82f19c7287ef31dcb529a7283b6e42eb3",
      "nodefusion/_vendor/elftools/construct/lib/binary.py": "f18e4161a11bc95732bd01c577cbe98373081afd5b4112b02fec51a0e1df2e11",
      "nodefusion/_vendor/elftools/construct/lib/bitstream.py": "ee8081769bed1d00a086399c8749a847c1a48b8d08637506bf7d1229b6e1808a",
      "nodefusion/_vendor/elftools/construct/lib/container.py": "0385a420febf5bac714153ceaadd192ff9d09862bc7e17c203bf759aa18b2bb4",
      "nodefusion/_vendor/elftools/construct/lib/hex.py": "55f82dc36f273347c08e9e469fd497368241453b7a63e69e167ad6b316e5e2c7",
      "nodefusion/_vendor/elftools/construct/macros.py": "0244e84cf4f598ac8da7c3d8f1f09b06112a508e71fb8d381b377f1c0472a4e3",
      "nodefusion/_vendor/elftools/dwarf/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/_vendor/elftools/dwarf/abbrevtable.py": "d7d338a6eddd4c1fe02c66d9c2b1c202c36ebcfda28f438a0ac0546dc5a63eb1",
      "nodefusion/_vendor/elftools/dwarf/aranges.py": "399d17d0e3cc18527337d60c1ffc0cfcfc8d5ddcf86af1ef6c359453538344e3",
      "nodefusion/_vendor/elftools/dwarf/callframe.py": "6c77dd3c1b482434d8d86f35922f0c88b1a71c1c19055fa512224d44876a4b5a",
      "nodefusion/_vendor/elftools/dwarf/compileunit.py": "2681263026c2bdd3fd9033e60230024e6b25ca90280df91c3ae0b0fe97bdb9d3",
      "nodefusion/_vendor/elftools/dwarf/constants.py": "30377a1636c5ac41b7a09f7c79c6bae67b49696c4e9b9d904a1a0acaba7dabdb",
      "nodefusion/_vendor/elftools/dwarf/datatype_cpp.py": "b3df1fc9ef56f941e0b38a9ad5da05a3c3821dd1cdc4b440c7c1934bee00a770",
      "nodefusion/_vendor/elftools/dwarf/descriptions.py": "6692ed493344018f4d96fdb70e9b04bdb3ec1428df0448f17fc8ffab2a205851",
      "nodefusion/_vendor/elftools/dwarf/die.py": "b653e8091a49f6926a955d8c05f26c36798ece3d902c00d2b5da10af637bfce7",
      "nodefusion/_vendor/elftools/dwarf/dwarf_expr.py": "db6d4cb9f3f1ee7e85ac1f9286831093d1b65f8c472fe0f9331a7aa164782bcb",
      "nodefusion/_vendor/elftools/dwarf/dwarf_util.py": "2e1cc3030a3cc669e0832e3cb5d4b1e3c82e22ff5a1164e6a878931f8531ce0d",
      "nodefusion/_vendor/elftools/dwarf/dwarfinfo.py": "3cfff046c35f7b063ba4288f1d9bb5167be4f3fdda0af756a299d832d660b75f",
      "nodefusion/_vendor/elftools/dwarf/enums.py": "10d18e4acabc383b8e8527cf4c011874dc9459c3bc30bd65b9212885a146bd7a",
      "nodefusion/_vendor/elftools/dwarf/lineprogram.py": "d9472d85b8c62fe56a7d6371d8cdb8af6268416970bdf909898ccb2606fa850c",
      "nodefusion/_vendor/elftools/dwarf/locationlists.py": "5167c3fb6208e3bafe0a52fc4d48eb164dc84dbd4980643acec19be26639a194",
      "nodefusion/_vendor/elftools/dwarf/namelut.py": "4b62eb965afd3e099835eb8bb9112f2d1ec89cb42adc6b55c1f113b6068d17b3",
      "nodefusion/_vendor/elftools/dwarf/ranges.py": "da3856ee646cf5b305751fa73a2d5fd9b0a21413377ca11cf93ce20e7040386e",
      "nodefusion/_vendor/elftools/dwarf/structs.py": "dfb1d6d755bcc7cf9a0363620e470c5b4a74bf7499a32d82f261652ffe71bef8",
      "nodefusion/_vendor/elftools/dwarf/typeunit.py": "c1bae01e11001941ebd0a10b72d569b4a0800600b3006b20a0b37f88536d1bc9",
      "nodefusion/_vendor/elftools/ehabi/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/_vendor/elftools/ehabi/constants.py": "a386df95ebe53338db1cdfe498a06acf8e976007b5fab5c4eed2b8904932caa8",
      "nodefusion/_vendor/elftools/ehabi/decoder.py": "3380c750ed972e33510a42a1d4de725f744cfc156e44a5d50ae199239cacb10e",
      "nodefusion/_vendor/elftools/ehabi/ehabiinfo.py": "e442ea16826888c9903893db8ccd9cb47f9f634476c1837812c84b6ce4be1b4c",
      "nodefusion/_vendor/elftools/ehabi/structs.py": "5ebdda74af71d7637d41eb0510403d8776d3b7ea70f715edc58aabc836aaae87",
      "nodefusion/_vendor/elftools/elf/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/_vendor/elftools/elf/constants.py": "d805c36820815a58fce8593206a5527c46009756b9397298d086679b6a9d9f23",
      "nodefusion/_vendor/elftools/elf/descriptions.py": "02771b6d1d4eb829b7334e417f580f78eb253c14f895c427c99b870537d363ef",
      "nodefusion/_vendor/elftools/elf/dynamic.py": "13c2621f118f30c6a8b6a0d999bdf8a7d082f0c2b7713eb4203d7b877082f0f7",
      "nodefusion/_vendor/elftools/elf/elffile.py": "0b8629b86828f0f05dea1200261ffaf1849ae675e52943e88a37e6a5e0b73d51",
      "nodefusion/_vendor/elftools/elf/enums.py": "9beb3eb13c4dfe6e2e75ed5db7a75dbb6da7917ed7ea7ad9c2ab7b697c284256",
      "nodefusion/_vendor/elftools/elf/gnuversions.py": "d22136e3242cf4ff379154b5c830706f3be1d77ee41ffab7efeed57e4876c740",
      "nodefusion/_vendor/elftools/elf/hash.py": "538c9b253f89a4b200eeb9c7d82f9cd0c3ae08146b3295538363ba5fced3627a",
      "nodefusion/_vendor/elftools/elf/notes.py": "17cf2c2a9ec9a0bf8f3415cbaeca42d3ab8f1102556251b290a2814e86f16f63",
      "nodefusion/_vendor/elftools/elf/relocation.py": "b0fd391fe0e293ac7dc5bdad495a8d2e72454442c35291781952fa5016f77b0f",
      "nodefusion/_vendor/elftools/elf/sections.py": "5acbfe427062f3f80cad1d556c4113d60136cbe526636e621a6e820ade5d6ab5",
      "nodefusion/_vendor/elftools/elf/segments.py": "103f945c2c7d67eff713609ea189601e94c0e7122274110c6b20d038a5b8bf74",
      "nodefusion/_vendor/elftools/elf/structs.py": "a0f439925915d7f1a69938673da2cebefd0d10860d60caddc81370ce017d8623",
      "nodefusion/host/__init__.py": "eb4e72c7ca2b3242527b39bd840ced588631e97404cea0e72e3131406cdeec59",
      "nodefusion/host/__main__.py": "13a1a5b340cdcfc1902b62be90e508c7c71886000d5bf087e7854aadf09fb35e",
      "nodefusion/host/analyze.py": "310d26f5c89334c05ee697bb5709a8e8bbce140bcb67f2d3450a09232a3d38b7",
      "nodefusion/host/assets/app.css": "0607be541e6bcd789a1964e74a6677a87d5d593684d6ac809782056ab7c0695a",
      "nodefusion/host/assets/app.js": "c253b16d88ddc73d1c78ec3729800800ad255b923712893dbe12f66faab2aca2",
      "nodefusion/host/bundle.py": "f6117f48b073e117dc0ffa6cdf1af4984d173b3a8f16808730e3746b51c2ad33",
      "nodefusion/host/callstack.py": "a091f8123f33797a628ebcaabbeae721fe458b009b69cee6697221971b7f2fc0",
      "nodefusion/host/cdp.py": "983be57750320be8265405b3fa4c3490288a34bba5b2f0c32820d51895210264",
      "nodefusion/host/cli.py": "6a2f09d5d4ea15299e3f9cbc0f7a2312a322e9c43beb3837d61b2276787af9dd",
      "nodefusion/host/dwarf.py": "158545b640bd312050c9cef773a19f0de839229cb08925a0298a5bb2751b5993",
      "nodefusion/host/elfid.py": "43c44bed9a69fa2b92fc7520342843e71caf0c6a3849d2b23b54e9a22dfdcfa0",
      "nodefusion/host/guest.py": "6871f08f11b9eda17b8a0618e8b8f43a544ddf05a37d7b530daa18d30d4c455a",
      "nodefusion/host/kernels.py": "10dcd1d97aae33b5b389d4106bdf5867468df41a39ce769300448f6d1727b103",
      "nodefusion/host/layout.py": "2f74bd4970af88fa38519c850fbcc494b8a1e4f5ddf7ed87897a442175f0ab82",
      "nodefusion/host/nfelf.py": "5495b1bc5e3406268ba66054e831dfb3fc8857c47b881d95cd995bafa65c5315",
      "nodefusion/host/nftrace.py": "d4fa97efd6527535ab90e4c623e8211bf8b9bf7d189beee47b56b216718c2f76",
      "nodefusion/host/procview.py": "ae1874f57bafa6b694c50aa3c0185671e60fcf0f784d139ee5e807e2f98e9689",
      "nodefusion/host/record.py": "ed6668c5711bcddff0e30a4b82eaf9235e6700746ce186042e39e45219b55428",
      "nodefusion/host/render.py": "46d000d2f40eb934180fba10ec8d8ccb8cc5d1e53e558304fdba941bfcff7dd8",
      "nodefusion/host/resources.py": "019a7be1fc7d86f221f2a67c3a5f7df271d1901500371a02a2113518483fb702",
      "nodefusion/host/shell.py": "08a9b0318ab79c0642d9a0b29683dc65b86c4e529f547530baf4e60b1e67f0af",
      "nodefusion/host/video.py": "1f49810a036f9388ae10153b8691504ed79c3e8b0e19a6bc2818de2ef1fe699d",
      "nodefusion/host/watchlist.py": "1b820dd5d741a118b28959b44d95b886e5fe7518dd5beef3e5561e3cf39822d1",
      "nodefusion/host/wslenv.py": "6b8f5d9e3f71b292e51c980f921dd498315c510d952ef90b24dfbf775b3afa6c",
      "nodefusion/manifests/alien.toml": "da290fe1014168a7e8f44844f30430c3041a14550449c5d51fa06847f23f7aeb",
      "nodefusion/manifests/arceos.toml": "cad48257d081aa1c660d3e7af2f4fbec79bbe232322c71453a9a5b1c9ac7be44",
      "nodefusion/manifests/axvisor.toml": "d6cd2cc9d9662f74a5d25f29e8d02591ae5a205fe18166307ef430edbc7432b3",
      "nodefusion/manifests/rcore.toml": "4a6c4746a885ce7ed68a374516188f02d5955028c94ecfa7e73c5ddf08b73e75",
      "nodefusion/manifests/rel4.toml": "ca43c2847a9ca757542ef3ed3e276dc7130c92b25150c73deb3e2a20faf8c37e",
      "nodefusion/manifests/starry.toml": "8a3ce9735d4c948322962b8c532be334034ad608aac28a041bb58876012dcae8",
      "nodefusion/manifests/ucore.toml": "7ca738a5abfb1c21afdb75b44c2fc0ce81b19d3d2db9aa3d820850b8abf74327",
      "nodefusion/manifests/xv6.toml": "0f501a4441214a2de3b1b50d39665ee23faad6f93024b3b92d30f542bc9b7964",
      "nodefusion/model/__init__.py": "9864ab2acb9890ed2fcbf815f30042fd97e3bd5ce069531f8c76fa2eed60b9d0",
      "nodefusion/model/ctxbuild.py": "552c0d3d87d640e73bfb4c3fc237453c7b84298c721f2d37594c85d1ab5eb86d",
      "nodefusion/model/dwarfsrc.py": "02688f5f8419ba6c8fd64ea4f347929f74c8b70299b632223c5535bab298f265",
      "nodefusion/model/exec.py": "148e68fa1c7054716e4fcb3e7bddb7c0d384ab6a6bfcb00bd15f7a869f6d86ec",
      "nodefusion/model/kinds.py": "0432ef9f134654bc36554ec55afcb9f91c593110cdacf0a58d0ac4d1d05ac569",
      "nodefusion/model/layout.py": "cd2639282b0c4fac684d06309e11e95922213d3d32698f275e65dd060f677fd6",
      "nodefusion/model/manifest.py": "d592aaac9ae308760cda947327c0d7c0e964a26d517740ed66838747e2334a22",
      "nodefusion/model/plan.py": "374fbb225a6717c2c391ac8bdda54aa957638821a45b2865b40a7be9bcc808c6",
      "nodefusion/model/probe.py": "30546d56bbd47ef12567826b49dd910de07e2af8fffc5c4350e04a57f70da5b8",
      "nodefusion/model/readers/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "nodefusion/model/readers/containers.py": "6eec01bd4f30858e1eda2ee7de890a9d93f94eda25e02d0a1bdf3558d31a1610",
      "nodefusion/model/readers/pointers.py": "72f989d643df6bdd477494023aac2da851f2d1f123d5e1e64b7629a0be6eae6b",
      "nodefusion/model/readers/registry.py": "2c35cc0b1f8db857e67c08e9c7976bf47c6ab21faabb4e242d8a0be42f9634ee",
      "nodefusion/model/readers/scalars.py": "a145fe5c4a250cc11fe44d0a4caabae908fbc44994335663955230296f695cbc",
      "nodefusion/model/resolve.py": "0c588760d0ec6494617007b02d786285ba190593935f574f6c53b99ad62ac8c0",
      "nodefusion/model/roles.py": "8d35b0497bd0b2d9abf639d9803fc6b7bd1e1ee5153c0f47ff53a26356dcc8c5",
      "nodefusion/model/rt.py": "3d62e9c6169e89a2593b29ff49919e84a2dda1df1b6fc16d3e54c7cc5d1744af",
      "nodefusion/model/snapshot.py": "e9c4ce76b858a9003e43d9eec363e1b88d4024338c3401b7a47a9871fe5dab7a",
      "nodefusion/model/symbols.py": "05812b00228ba601209ec909213381d47272efdbcac3957914f4590a1d705cfe",
      "nodefusion/model/watchsel.py": "bc3a9d6763950c265efaacce3f0c98194f54808d676b449c5b320b3a90cc7bf1",
      "nodefusion/tests/conftest.py": "2dfa19b096e309beadff0df9a05761d412ec6234e74968854292d7bfecf1b7a5",
      "nodefusion/tests/crosscheck_artifacts.py": "6ee173a31795c3875f93af0a0eaebcb27346c185c24e3f1d32846f5ca89d60a0",
      "nodefusion/tests/fuzz_trace.py": "af6189a6538747d369f982dfb86016f5e48842da0ce73f651b63c0b482b1c37e",
      "nodefusion/tests/kernelelf.py": "9a35d1389243849c6ed16f801a007568eb1304eee3d2cf3bcb8d1e38e12e2aed",
      "nodefusion/tests/stress_pagetable.py": "5db6d3671739ad5d0a3f76908049126185ea000726d0044d4d87ef215f26f737",
      "nodefusion/tests/test_absent_declaration.py": "535d4ace194fc5f923ba989e18634b55cffd0660eaefdfc7a59dcb4377eac266",
      "nodefusion/tests/test_analysis_lookup_cache.py": "aa4fbc0b8f06c64278bc5b11edf21cfe3ec737e3f0d88901b52478aca29765f3",
      "nodefusion/tests/test_analyze_alias.py": "345f6cbd8fae2a7c7729130460112a08a23599461234865f2da72055c3621064",
      "nodefusion/tests/test_arg_names.py": "a0f4cd7c7017da1926fc317d6c73bcb6bd4bacde579e3818fa277079991a4af4",
      "nodefusion/tests/test_artifact_guard.py": "8b53fababf688ceaf4afd1556d3c1352d3a13c60ea43fe14e3d3eae24698d1d0",
      "nodefusion/tests/test_artifact_output_safety.py": "cbed1bfa5928e7b12edc85b506f8018dd3216f017c43461525daf0a299bea9aa",
      "nodefusion/tests/test_bundle_shape.py": "34d227f2726d1820160288b225243b51fe3583839ff52ee245a814eb1c27f81d",
      "nodefusion/tests/test_cache_hit_contract.py": "087277fe75bf38d8e83453b3671da4825f7586382fc1fa5300b3dc79272fbee7",
      "nodefusion/tests/test_calibration_failure_reason.py": "02449f59da919dc09781a66ad57789a98775b3888d1480f4f3064b4d8a1139da",
      "nodefusion/tests/test_callstack.py": "f81c2f42b453d26287f1cbab835cff47a2722d8c62b486529fbbcfc20c94c872",
      "nodefusion/tests/test_capability_notes.py": "a2fb61afdc826c0c5408ea3b385761f896b27191e54881c3e10b10a2f01cc272",
      "nodefusion/tests/test_compact_capability_ui.py": "07542f2beb95353f3dd3861ca3ffcec93d1f46c966c3dd74c82d27fc3b6427ad",
      "nodefusion/tests/test_consolidate_artifacts.py": "5ffa4d01f5adb051f2153c3097d2264dfa7c63533f4cf6c09159fc50cd843cdd",
      "nodefusion/tests/test_context_switch_snapshot.py": "db5c77b5ab4ad93d34a96266386dbeec80694db7482bfa5856c1547f773ccb9d",
      "nodefusion/tests/test_corpus_selection.py": "1717ce9682ecde7a05675b790914a8e5a590e1d83556944ddbfff1e38918d050",
      "nodefusion/tests/test_coverage_evidence.py": "fdbb041e7339f8d94a52a1833b01e315657a749e9bc7d21fee6a2724f23a86f3",
      "nodefusion/tests/test_demangle_v0.py": "9f91c7ab6d2f681368c63d2bde9109cb4dd501f4d5df3e1f728a7b8975a0b061",
      "nodefusion/tests/test_dwarf_generic_base.py": "f9204c883a298151406288885c32c04fd1e7db423fe6cb0747f0f4392ba0fef5",
      "nodefusion/tests/test_dwarf_tombstones.py": "ed608be359e8180a5355cafe93e64d417543cc014461710f55fcd5997bef7295",
      "nodefusion/tests/test_dwarfsrc_location.py": "bcd7c6e8cf00a086fd9c712ffa35aebfbb4e09aaf20ddaedc4f2f5b41604cad9",
      "nodefusion/tests/test_elf_archive.py": "573747576adf2bf4daf66d5f99b6a149eff663ebcd6743b79b4b39d57d20dda5",
      "nodefusion/tests/test_elfid.py": "3efd46b3688e79f7ccc376abb32f20b495b7c074dbd84c5181d67fade3db729c",
      "nodefusion/tests/test_event_kind_pairs_measured_from_runs.py": "ef1a4ce55dc22b8f1073f3d4ac9120b30c68cf0877ba6e4dc5788f81217cdf55",
      "nodefusion/tests/test_event_kind_registry.py": "276bb984ee002622d0284558df13234328a3779853c5b1681d71d827069bfd9d",
      "nodefusion/tests/test_event_kinds.py": "7d066f949905b4df866f0ebfa3ead6cc3b78c7d8416d8b0a5660332dd2f6ef47",
      "nodefusion/tests/test_event_snapshot_throttle.py": "2709d806da483ef8bcdb57ddb6c59a73da83a859b793d7cd5d15891ccfcedd87",
      "nodefusion/tests/test_event_when_branches.py": "0b866c908cbc40deca18830293d161eb9b1f3401792d3fed1b1041e7e9b5e2de",
      "nodefusion/tests/test_exec_iter_map.py": "026e1e908df1884c4d241902c845dd72a43c095e5ab28e94fb7069f621698562",
      "nodefusion/tests/test_exec_walk.py": "67fc662f5b36cff81c1c1ab6a1dfe842081a05a1c3f69a64e8d212da0b7cb985",
      "nodefusion/tests/test_func_events_scope.py": "de9f69b6673c312537ce72cfd6c91baa4355749558609ca0b696c21d8f790198",
      "nodefusion/tests/test_kernel_elf_fixture.py": "ada3976b4b49734884bdb9b3844886e92251240671fe8ae219ed1f70c32c935b",
      "nodefusion/tests/test_kernel_image_fit.py": "32c7bd1bf3b66c7071b36582ca32838af2777157f1ae999a46785e6a39675476",
      "nodefusion/tests/test_kernel_integrations.py": "8e3ecdcf6ad5ea3b7fa44a3e3244a2c9678255b62c02d8cd48de9cfc1189b376",
      "nodefusion/tests/test_kernel_view.py": "4cc544296573cab8df9858947e6d7040fb22aba4b29aac1b43a565b39d9e7ab5",
      "nodefusion/tests/test_kind_three_states.py": "64764f687af895b3b37bc69179f2729f49efe2fb5fc5a24ecc09c41ea38e70ed",
      "nodefusion/tests/test_layout_routing.py": "14631aae85b75dcb1c1c5cec92c344f1c01433e2ae6eb90a3c105ac583372a5c",
      "nodefusion/tests/test_list_arceos.py": "22dbff8051cf7076ad5be6f919ed6d9a0c7a70bd1b6e09ca2f6589b5fb94493f",
      "nodefusion/tests/test_list_wiring.py": "e5f187b746738a5ca027936468df8ab7d2e48e32fe550eca3fa57f217c60d5cb",
      "nodefusion/tests/test_manifest_docs.py": "9be0200ca41d0f0512519356c81911cbbaf2aca63530d99e2aba53de9a1eea37",
      "nodefusion/tests/test_manifest_lint.py": "ad03a1e3519feb79fbeacdbe6576f90b05e7c6c9cb3034c44bd1032163b69888",
      "nodefusion/tests/test_manifest_roles.py": "b1a8fca196f9b37b614f3cd39abe33ad64c58894d1c933996d553c8f573d147e",
      "nodefusion/tests/test_manifest_vocabulary.py": "834eb61d446df47b1c6ebcd4e8a7347eabc24486da052b4be8f5b0660b0f631d",
      "nodefusion/tests/test_metric_deps_are_kinds_not_xv6_names.py": "07f411bb3fcbb14c2eb6c222f4a4928426a86a45d82f11cb242130c49eb6c717",
      "nodefusion/tests/test_no_build.py": "f831e3504531cdd9f8f588428e7a7e86fa420bdee27cbf74522fac05bb27d6fa",
      "nodefusion/tests/test_pagetable_arch.py": "9946ed7788d72107d6c6ea81fa4204843e1a0ae291add95259f3e96a0f661eb2",
      "nodefusion/tests/test_path_index_gate.py": "8486e4f1d0d8f91800321a7907ae6797a59d6576cae0614c8db6f91c8ecee9ae",
      "nodefusion/tests/test_percpu_layout.py": "4ecfcf97552e678173bca5fe81eb661bc7f417ba2f4ea4de3c540ba956152495",
      "nodefusion/tests/test_percpu_runtime_layout.py": "ba54784385c6a6716eb3f3317635c8b2dd09b40e5e3e5e6112ca5b92d4e7c62c",
      "nodefusion/tests/test_phys_alloc_gate.py": "a1b68458d8268d052082ad92b80f86753c46423eec7c86c3bdd6019e23b8186a",
      "nodefusion/tests/test_plan_iter_map.py": "58fcacc67e31cf6638ce4d846dccf32312ae17caed1d9470d0ba468fd95a4b5a",
      "nodefusion/tests/test_plan_percpu.py": "5ece34163ede167484cc5edd5d3255d8514935af7a385b171b1b64c6e928140e",
      "nodefusion/tests/test_plan_steps.py": "0241755b6c85983779fad700e2eba5332ab595cc64e6297e8358ba4d15f9dfb7",
      "nodefusion/tests/test_procs_gate.py": "8acd3d3e2398fcd008dd4f5bae735183008eb4cecf6f4c09d0fffaefdf50cd8d",
      "nodefusion/tests/test_procview.py": "9f48157ccc96833a83a42f2f3c3eb26a82bd7f6918c0c3c91a6052c5d9657428",
      "nodefusion/tests/test_profile_from_manifest.py": "9f7cf3aa6cb931445e9e6c763bf2c30b1505e4b728f759514033994b5b60b16c",
      "nodefusion/tests/test_rcore_fs_vocabulary.py": "48c49c9f091d4c964715cf55216b8354ea59697a0ef58ec18850f5e8e89f80c5",
      "nodefusion/tests/test_rcore_inlined_halves.py": "fd61e489c857fcaa5cdbe2466e74b1ba6a547eb7b18fd12fbda80ce927c6f516",
      "nodefusion/tests/test_readers_containers.py": "b0f882dd388f9bc3796b8f5d8c29d72c7dd6b5d8b7866055f810a7bbb2295d2f",
      "nodefusion/tests/test_readers_pointers.py": "e15d27e41ca320d960720f6760ffd0ff6216f658c74ab373148dc3307fa24fd8",
      "nodefusion/tests/test_readers_registry.py": "b139bcca13c15f203e73a427d9d6dc5804b97fc76a28d14025325f191cc4a6a5",
      "nodefusion/tests/test_readers_scalars.py": "3a15bf0648767fb8e7d24044aeb61eb312ace64ab51f834e0a2dfe39072b9cd5",
      "nodefusion/tests/test_record_icount.py": "b84db1f0c55683e9ccf8eaafdcef09dd37bb67a5fa555814d4d750ff97f844df",
      "nodefusion/tests/test_recording_tail.py": "833b8e33c6d111b49790beea1ba7ab81b23bd7ea907a2155f981967bcb61a614",
      "nodefusion/tests/test_regenerate_artifact.py": "4b2046cdcc98219c4181ca174f4ca02b6e3b5cfbfdd7bb6506c85112007e21f3",
      "nodefusion/tests/test_resolve.py": "b14f432eb380c5514b73431978b01b0d715ed9a49f92deb547358fb35dd4d8ec",
      "nodefusion/tests/test_resources.py": "0860476f362a770bd04355592a83fdb15aa9df3787c6c740d407cb8ee4fc817e",
      "nodefusion/tests/test_sampled_counts_are_not_exact.py": "7bd598eb07ef0b067cee3460ef0c61d18b8b918ae697d80b01617cf73eaf0a9a",
      "nodefusion/tests/test_shell_verdict.py": "22baff1ad7cb43b5c5574b424812c40b194e30e3800921429659f7b31cbe20f4",
      "nodefusion/tests/test_snapshot.py": "17ef07a10857516f2fd29186157b945ff67490d2cdac94166cf370e96171e034",
      "nodefusion/tests/test_source_combine.py": "506ebb5c6dda153e92b854887fb671cf4aa08d33fd8305b359139a1d38ee4349",
      "nodefusion/tests/test_spec_nftrace_registry.py": "c529a4ed1f86bee4951e4699b09d466d51a5bd0623accc49bff9abcfdf15e615",
      "nodefusion/tests/test_split_rawvec.py": "e80f55fc42e246f3f638979500c7c40548eb0f630c512a93b8eaa00df312eac4",
      "nodefusion/tests/test_switch_attribution.py": "c773376888e9dc2ce87ddbebc14ccb0649ea77da189319692e20aff16eddb73d",
      "nodefusion/tests/test_symbols_static_wrapper.py": "cf634a6545564e8949b9129cee0c5f01f3dcf60effd49883c3b908aa28af7f82",
      "nodefusion/tests/test_trace_complete.py": "ac33d1da9aba97c98c68502188522a253709e96cf3fbb8d3c94b85c661cea366",
      "nodefusion/tests/test_trace_streaming.py": "6c972f95a790afac5b9aa84320038bf0eab41b926126334db7290d095f2b1e10",
      "nodefusion/tests/test_units.py": "c5b167cca227c5620b958329f5461232bc73e22997e5fe58a02859bb3664feef",
      "nodefusion/tests/test_unobservable_does_not_speak_for_the_kernel.py": "448c03147a2306d8205762bdc9a9e0d9e8d5eb0e0c5199d17d80c2f076f87547",
      "nodefusion/tests/test_video_sections.py": "c84c17b471460ae45a25341a8f893768816f57a9eb94e9f9a90e7e20406c4a31",
      "nodefusion/tests/test_watchlist_wire.py": "1e01dd4fde92169c0ab1296dbd249865cddde4173ec8de3c71c39f61356f74c3",
      "nodefusion/tests/test_watchsel.py": "89c8bb635534d079e0502d1c118f32eaa806250d74195a9d99bb71d07aabcd2d",
      "nodefusion/tools/crosscheck_decoder.py": "2f69a3f636d910f93f24939bcd03b41d9b0a17184ce4a4b15250e00f65b47a28",
      "nodefusion/tools/crosscheck_dwarf.py": "b30ecfa371c6959b2522db6d9edabf7e0c7be238feef34ff9411d76a4b4fdf01",
      "nodefusion/tools/crosscheck_layout.py": "d77ebd7aaa1ace070392eca0051f1b34dbf65d08c355edf87101b7e449aa7106",
      "nodefusion/tools/crosscheck_offsetof.py": "732e30d19129e0a1f15e33a2c1f96d940abaa1a26829b8f0d7bc44bf873cdc87",
      "nodefusion/tools/crosscheck_procinfo.py": "c3d6dd588b28d9252ddb712dea0ab8d3212dffed7f9256b9b936860fa0dfb8a9",
      "nodefusion/tools/crosscheck_procs.py": "b497c8fd050c0d6d1e4154eda00c1eef05502d3826546b1165b8a740c6fee562",
      "nodefusion/tools/crosscheck_resources.py": "98b04ac869e3c9e38020728473d480b8ed0b15385bc1d530e466919807ad1ac3",
      "nodefusion/tools/crosscheck_watchsel.py": "52142d49e919f2f040371b404cabdef0d0edbbf977abdcb1af5063b910d0aad8",
      "nodefusion/tools/survey_chapters.py": "6952dbdb8036916acd17bd5f642ea0b62aa10cbbec2bb4227e58f5132683589b",
      "scripts/benchmark_trace.py": "0faf86ba735bc31a20ee8e7ae3d3aad8aef78f0f43cdd33e831658f4e2a71494",
      "scripts/consolidate_artifacts.py": "31700c7f0a1f21fef653e061115b0091aa1a4ce539b9baa9cb48ad914889dadd",
      "scripts/finalize_artifacts.py": "a10224f43e0554eeb347a201dfd29781fbe0a39b979f890cccbec65e76cea9eb",
      "scripts/regenerate_artifact.py": "aed10d1eedc5689b6fd68e84a9bb8ae0c98f7bb8456fd8bd280e8bae470b8e9a"
    },
    "command": [
      "/home/joseph/nf/venv313/bin/python",
      "-m",
      "scripts.regenerate_artifact",
      "--run",
      "/home/joseph/nf/education-2026A-20260927/runs/rcore-2026A-ch5-basic-observed-v2",
      "--out",
      "/home/joseph/nf/education-2026A-20260927/runs/rcore-2026A-ch5-basic-observed-v2/rcore-2026A-ch5-basic-observed-v2.html",
      "--replace",
      "--strict"
    ],
    "cwd": "/home/joseph/nf/education-2026A-20260927/tool",
    "driver_sha256": "a86cb6178b65789bdf03d54eb85d5b61e084b592b80a02030cf7aa372e539ca3",
    "source_archive": {
      "path": "/home/joseph/nf/education-2026A-20260927/rcore-2026A-ch5-basic-observed-v2-attribution-analysis-source.tar.gz",
      "sha256": "296f8573032cddf17f1c6ffd68b306b9b088a2b0ff63a4f6d8b563db56cb5be2",
      "bytes": 629595
    },
    "previous_analysis_path": "/home/joseph/nf/education-2026A-20260927/runs/rcore-2026A-ch5-basic-observed-v2/analysis-before-attribution",
    "previous_html_sha256": "05d826b5545bb9017d017db0387eb6149fe3ac7d5932fbfdde220655c2b1d1fa",
    "source_sha256": {
      "trace.nfb": "6fcf51476f287dbd03a45b2dc7c196c9f326f7a34b4af55173e6c411e9037673",
      "manifest.json": "c12b334ff8ac53f97ee8c82bbef08f7dd6011e3d2f4ce6147943ba956dd46125",
      "watchlist.json": "e8bdbd2d1c9f786762dab2845f596077adbd0db2eaa58472463c40d5d5fc7832",
      "kernel_layout.json": "1f6edd9913bf37e30d1948a86f0767e7cdcb3b5dacc12ca8c2b9b4a0b8d85abd"
    },
    "event_selection": {
      "applied": false,
      "policy": "kind-preserving/systematic-v5",
      "raw": 127198,
      "retained": 127198,
      "dropped": 0,
      "target_limit": 150000,
      "minimum_spare": 25000,
      "always_keep": "all events when the raw stream fits",
      "priority_raw": 83270,
      "spare_raw": 43928,
      "spare_budget": 0,
      "stride": 1,
      "retained_kinds": {
        "firmware.trap": 19,
        "func._ZN17compiler_builtins3mem6memcmp17he7310feea8ae4946E": 43,
        "func._ZN17compiler_builtins3mem6memcpy17ha62f30a1264ab51cE": 995,
        "func._ZN17compiler_builtins3mem6memset17hb3cc3e7988f20252E": 1491,
        "func._ZN17compiler_builtins3mem7memmove17h6641c454cd41b91bE": 417,
        "func._ZN22buddy_system_allocator4Heap4init17h47bfef144f322583E": 1,
        "func._ZN22buddy_system_allocator4Heap5alloc17hb52723857453e8d6E": 1312,
        "func._ZN22buddy_system_allocator4Heap7dealloc17h2382b66f51d78f86E": 1284,
        "func._ZN2os15kernel_log_info17he7eb3005c801817eE": 1,
        "func._ZN2os4task9processor15current_trap_cx17h37576fa5877bb1b0E": 1488,
        "func._ZN2os4task9processor18current_user_token17h7b385e281d5f1fefE": 1289,
        "func._ZN2os6loader20get_app_data_by_name17h0b4fe3c40ebdecdfE": 14,
        "func._ZN2os6loader9list_apps17hbac7ab73ba2e4c6cE": 1,
        "func._ZN2os7console5print17h259fbd0040a35667E": 1150,
        "func._ZN3log10set_logger17h2e922c1b310ebd70E": 1,
        "func._ZN3log13__private_api3loc17h74db97cb7d8ca37fE": 785,
        "func._ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h3f14c221c18e4f09E": 1,
        "func._ZN42_$LT$str$u20$as$u20$core..fmt..Display$GT$3fmt17hb8c43d55b60732c2E": 359,
        "func._ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h1c05db3ffb69a1e2E": 785,
        "func._ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h39f2fab819e69901E": 43,
        "func._ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17hb03337872ca5c760E": 316,
        "func._ZN49_$LT$log..Level$u20$as$u20$core..fmt..Display$GT$3fmt17h35020c6a1a0c2e7aE": 785,
        "func._ZN4core3fmt3num3imp52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h0b957f153e4158c7E": 785,
        "func._ZN4core3fmt3num3imp54_$LT$impl$u20$core..fmt..Display$u20$for$u20$isize$GT$3fmt17h32c7e1571ae6b44cE": 97,
        "func._ZN4core3fmt3num3imp54_$LT$impl$u20$core..fmt..Display$u20$for$u20$usize$GT$3fmt17h83de4ff3c495723bE": 770,
        "func._ZN4core3fmt3num3imp7fmt_u6417h5142f3088252957cE": 1652,
        "func._ZN4core3fmt3num55_$LT$impl$u20$core..fmt..LowerHex$u20$for$u20$usize$GT$3fmt17hc86b5565edb93905E": 20,
        "func._ZN4core3fmt5Write10write_char17h3dbf66e4bcd45ae0E": 69,
        "func._ZN4core3fmt5write17h49a560cace6c89d2E": 1935,
        "func._ZN4core3fmt8builders10DebugTuple5field17h162956c99153b8a6E": 1,
        "func._ZN4core3fmt9Formatter12pad_integral12write_prefix17h155331fd35b09c53E": 1672,
        "func._ZN4core3fmt9Formatter12pad_integral17h8b1ffde32503eca3E": 1672,
        "func._ZN4core3fmt9Formatter25debug_tuple_field1_finish17h7b601b839df38242E": 1,
        "func._ZN4core3fmt9Formatter3pad17heef45ae07d2799a9E": 1144,
        "func._ZN4core3fmt9Formatter9write_str17h181bd84b330b3504E": 1,
        "func._ZN4core3ptr109drop_in_place$LT$alloc..vec..drain..Drain$LT$alloc..sync..Arc$LT$os..task..task..TaskControlBlock$GT$$GT$$GT$17h55e00f11b91dd746E": 54,
        "func._ZN4core3ptr77drop_in_place$LT$alloc..sync..Arc$LT$os..task..task..TaskControlBlock$GT$$GT$17h1e507565745c0727E": 54,
        "func._ZN4core3str8converts9from_utf817hd70ee2e837c58dd3E": 359,
        "func._ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17h11b33aca4f687c3fE.llvm.16392842407942260741": 1,
        "func._ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17h6725eab204e3ddfeE.llvm.16392842407942260741": 3,
        "func._ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17h77de66cfa8653b3fE.llvm.16392842407942260741": 1,
        "func._ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17h93c85578dc907596E.llvm.16392842407942260741": 1,
        "func._ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17hacdbba4d48230619E.llvm.16392842407942260741": 1,
        "func._ZN54_$LT$os..logging..SimpleLogger$u20$as$u20$log..Log$GT$3log17hb67c4766b081d986E.llvm.8971997074201242157": 785,
        "func._ZN56_$LT$os..console..Stdout$u20$as$u20$core..fmt..Write$GT$9write_str17h5b2cf8a168a60b67E": 7699,
        "func._ZN59_$LT$core..fmt..Arguments$u20$as$u20$core..fmt..Display$GT$3fmt17hb9ea72e8555fec20E": 785,
        "func._ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$6insert17h3066ea9ee2f5fc1cE": 953,
        "func._ZN5alloc11collections5btree3map5entry30OccupiedEntry$LT$K$C$V$C$A$GT$9remove_kv17hb4417fe4429410b4E": 119,
        "func._ZN5alloc11collections5btree4node210Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..Edge$GT$16insert_recursing17hdea21c2fa1292932E": 551,
        "func._ZN5alloc11collections5btree6remove259_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14remove_leaf_kv17hecb11ceeaade770aE": 119,
        "func._ZN5alloc11collections5btree6remove269_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$18remove_kv_tracking17h96ac68a250cfaca3E": 119,
        "func._ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Dying$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..Edge$GT$$GT$27deallocating_next_unchecked17h0d2c5158ac8032deE": 805,
        "func._ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$4grow17hbe266473ab246931E.llvm.14106671731014623185": 4,
        "func._ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$9wrap_copy17hd94ab80b0faf3e05E.llvm.14106671731014623185": 138,
        "func._ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h5f7085439107f66dE": 54,
        "func._ZN5alloc7raw_vec11finish_grow17ha28be5cc43b0e77fE.llvm.6014734106839564757": 783,
        "func._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h00071a624ea45ac4E": 434,
        "func._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h12947443f43ca279E": 179,
        "func._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h5e81cd5d71ba5b65E": 143,
        "func._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17ha298e8977af23e84E": 27,
        "func._ZN61_$LT$log..__private_api..GlobalLogger$u20$as$u20$log..Log$GT$3log17hd9ca19187fb665faE": 785,
        "func._ZN66_$LT$riscv..register..scause..Trap$u20$as$u20$core..fmt..Debug$GT$3fmt17hd450c9ed7d44b3a8E": 1,
        "func._ZN79_$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h47fdeb6091ae8e02E": 54,
        "func._ZN87_$LT$buddy_system_allocator..LockedHeap$u20$as$u20$core..alloc..global..GlobalAlloc$GT$5alloc17h5940a8cc4f3113a7E": 1312,
        "func._ZN87_$LT$buddy_system_allocator..LockedHeap$u20$as$u20$core..alloc..global..GlobalAlloc$GT$7dealloc17h303cab0338830abbE": 1284,
        "func._ZN8xmas_elf7ElfFile14program_header17h33fe96bc4d1e97faE": 70,
        "func._ZN8xmas_elf7ElfFile3new17h20f397223943fbdaE": 14,
        "func._ZN8xmas_elf7program13ProgramHeader8get_type17h5cbcce3512fdef57E": 70,
        "func._ZN8xmas_elf7program20parse_program_header17h91c3887ed5253558E": 70,
        "func._ZN99_$LT$alloc..collections..btree..map..BTreeMap$LT$K$C$V$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17ha2b340a8329e80b7E": 456,
        "func.memcmp": 43,
        "func.memcpy": 995,
        "func.memmove": 417,
        "func.memset": 1491,
        "func.recycle_data_pages": 54,
        "func.remap_test": 1,
        "func.rust_main": 1,
        "func.schedule": 54,
        "func.trace_to_idle": 54,
        "func.unmap": 54,
        "func.waitpid": 97,
        "heap.alloc": 1052,
        "heap.free": 1024,
        "heap.init": 1,
        "heap.realloc": 260,
        "interrupt.timer": 22,
        "pagetable.map": 33279,
        "pagetable.new": 70,
        "pagetable.unmap": 119,
        "phys.alloc": 1365,
        "phys.free": 1259,
        "proc.create": 1,
        "proc.exec": 13,
        "proc.exit": 54,
        "proc.fork": 55,
        "proc.initproc": 1,
        "sbi.call": 39094,
        "sched.enter": 1,
        "sched.switch": 275,
        "sched.yield": 83,
        "syscall.dispatch": 771,
        "syscall.enter": 771,
        "syscall.exec": 13,
        "syscall.exit": 53,
        "syscall.fork": 55,
        "syscall.getpid": 1,
        "syscall.read": 113,
        "syscall.sbrk": 8,
        "syscall.waitpid": 97,
        "syscall.write": 370,
        "syscall.yield": 61,
        "task.kstack_alloc": 56,
        "task.kstack_free": 54,
        "task.pid_free": 54,
        "trap.enter": 794,
        "trap.page_fault": 1,
        "trap.userret": 794,
        "vm.copy": 55,
        "vm.from_elf": 14,
        "vm.grow": 6,
        "vm.init": 1,
        "vm.kernel_init": 1,
        "vm.map": 475,
        "vm.remove_area": 54,
        "vm.shrink": 1,
        "vm.translate_buffer": 482,
        "vm.translate_str": 13,
        "vm.unmap": 55
      },
      "dropped_kinds": {}
    },
    "function_entries": {
      "raw": 84337,
      "retained": 84337
    },
    "function_returns": {
      "raw": 544666,
      "matched": 53872,
      "nested_entries": 3270
    },
    "pid_attribution": {
      "firmware.trap": {
        "events": 19,
        "with_pid": 0
      },
      "func.rust_main": {
        "events": 1,
        "with_pid": 0
      },
      "func.memset": {
        "events": 1491,
        "with_pid": 1401
      },
      "func._ZN17compiler_builtins3mem6memset17hb3cc3e7988f20252E": {
        "events": 1491,
        "with_pid": 1401
      },
      "func._ZN2os15kernel_log_info17he7eb3005c801817eE": {
        "events": 1,
        "with_pid": 0
      },
      "func._ZN3log10set_logger17h2e922c1b310ebd70E": {
        "events": 1,
        "with_pid": 0
      },
      "func._ZN2os7console5print17h259fbd0040a35667E": {
        "events": 1150,
        "with_pid": 1088
      },
      "func._ZN4core3fmt5write17h49a560cace6c89d2E": {
        "events": 1935,
        "with_pid": 1859
      },
      "func._ZN56_$LT$os..console..Stdout$u20$as$u20$core..fmt..Write$GT$9write_str17h5b2cf8a168a60b67E": {
        "events": 7699,
        "with_pid": 7457
      },
      "sbi.call": {
        "events": 39094,
        "with_pid": 37759
      },
      "func._ZN3log13__private_api3loc17h74db97cb7d8ca37fE": {
        "events": 785,
        "with_pid": 771
      },
      "func._ZN61_$LT$log..__private_api..GlobalLogger$u20$as$u20$log..Log$GT$3log17hd9ca19187fb665faE": {
        "events": 785,
        "with_pid": 771
      },
      "func._ZN54_$LT$os..logging..SimpleLogger$u20$as$u20$log..Log$GT$3log17hb67c4766b081d986E.llvm.8971997074201242157": {
        "events": 785,
        "with_pid": 771
      },
      "func._ZN4core3fmt3num3imp52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h0b957f153e4158c7E": {
        "events": 785,
        "with_pid": 771
      },
      "func._ZN4core3fmt3num3imp7fmt_u6417h5142f3088252957cE": {
        "events": 1652,
        "with_pid": 1638
      },
      "func._ZN4core3fmt9Formatter12pad_integral17h8b1ffde32503eca3E": {
        "events": 1672,
        "with_pid": 1640
      },
      "func._ZN4core3fmt9Formatter12pad_integral12write_prefix17h155331fd35b09c53E": {
        "events": 1672,
        "with_pid": 1640
      },
      "func._ZN49_$LT$log..Level$u20$as$u20$core..fmt..Display$GT$3fmt17h35020c6a1a0c2e7aE": {
        "events": 785,
        "with_pid": 771
      },
      "func._ZN4core3fmt9Formatter3pad17heef45ae07d2799a9E": {
        "events": 1144,
        "with_pid": 1087
      },
      "func._ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h1c05db3ffb69a1e2E": {
        "events": 785,
        "with_pid": 771
      },
      "func._ZN59_$LT$core..fmt..Arguments$u20$as$u20$core..fmt..Display$GT$3fmt17hb9ea72e8555fec20E": {
        "events": 785,
        "with_pid": 771
      },
      "func._ZN4core3fmt3num55_$LT$impl$u20$core..fmt..LowerHex$u20$for$u20$usize$GT$3fmt17hc86b5565edb93905E": {
        "events": 20,
        "with_pid": 2
      },
      "func._ZN4core3fmt5Write10write_char17h3dbf66e4bcd45ae0E": {
        "events": 69,
        "with_pid": 58
      },
      "vm.init": {
        "events": 1,
        "with_pid": 0
      },
      "heap.init": {
        "events": 1,
        "with_pid": 0
      },
      "func._ZN22buddy_system_allocator4Heap4init17h47bfef144f322583E": {
        "events": 1,
        "with_pid": 0
      },
      "func._ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17h77de66cfa8653b3fE.llvm.16392842407942260741": {
        "events": 1,
        "with_pid": 0
      },
      "func._ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17h11b33aca4f687c3fE.llvm.16392842407942260741": {
        "events": 1,
        "with_pid": 0
      },
      "vm.kernel_init": {
        "events": 1,
        "with_pid": 0
      },
      "pagetable.new": {
        "events": 70,
        "with_pid": 68
      },
      "phys.alloc": {
        "events": 1365,
        "with_pid": 1279
      },
      "heap.alloc": {
        "events": 1052,
        "with_pid": 1038
      },
      "func._ZN87_$LT$buddy_system_allocator..LockedHeap$u20$as$u20$core..alloc..global..GlobalAlloc$GT$5alloc17h5940a8cc4f3113a7E": {
        "events": 1312,
        "with_pid": 1284
      },
      "func._ZN22buddy_system_allocator4Heap5alloc17hb52723857453e8d6E": {
        "events": 1312,
        "with_pid": 1284
      },
      "pagetable.map": {
        "events": 33279,
        "with_pid": 1007
      },
      "func._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h12947443f43ca279E": {
        "events": 179,
        "with_pid": 170
      },
      "func._ZN5alloc7raw_vec11finish_grow17ha28be5cc43b0e77fE.llvm.6014734106839564757": {
        "events": 783,
        "with_pid": 765
      },
      "heap.realloc": {
        "events": 260,
        "with_pid": 246
      },
      "func.memcpy": {
        "events": 995,
        "with_pid": 974
      },
      "func._ZN17compiler_builtins3mem6memcpy17ha62f30a1264ab51cE": {
        "events": 995,
        "with_pid": 974
      },
      "func._ZN87_$LT$buddy_system_allocator..LockedHeap$u20$as$u20$core..alloc..global..GlobalAlloc$GT$7dealloc17h303cab0338830abbE": {
        "events": 1284,
        "with_pid": 1270
      },
      "func._ZN22buddy_system_allocator4Heap7dealloc17h2382b66f51d78f86E": {
        "events": 1284,
        "with_pid": 1270
      },
      "vm.map": {
        "events": 475,
        "with_pid": 463
      },
      "func._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h5e81cd5d71ba5b65E": {
        "events": 143,
        "with_pid": 139
      },
      "func.remap_test": {
        "events": 1,
        "with_pid": 0
      },
      "proc.initproc": {
        "events": 1,
        "with_pid": 0
      },
      "func._ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17hacdbba4d48230619E.llvm.16392842407942260741": {
        "events": 1,
        "with_pid": 0
      },
      "func._ZN2os6loader20get_app_data_by_name17h0b4fe3c40ebdecdfE": {
        "events": 14,
        "with_pid": 13
      },
      "func._ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17h93c85578dc907596E.llvm.16392842407942260741": {
        "events": 1,
        "with_pid": 0
      },
      "func._ZN4core3str8converts9from_utf817hd70ee2e837c58dd3E": {
        "events": 359,
        "with_pid": 316
      },
      "func._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h00071a624ea45ac4E": {
        "events": 434,
        "with_pid": 429
      },
      "func.memcmp": {
        "events": 43,
        "with_pid": 40
      },
      "func._ZN17compiler_builtins3mem6memcmp17he7310feea8ae4946E": {
        "events": 43,
        "with_pid": 40
      },
      "proc.create": {
        "events": 1,
        "with_pid": 0
      },
      "vm.from_elf": {
        "events": 14,
        "with_pid": 13
      },
      "func._ZN8xmas_elf7ElfFile3new17h20f397223943fbdaE": {
        "events": 14,
        "with_pid": 13
      },
      "func._ZN8xmas_elf7ElfFile14program_header17h33fe96bc4d1e97faE": {
        "events": 70,
        "with_pid": 65
      },
      "func._ZN8xmas_elf7program20parse_program_header17h91c3887ed5253558E": {
        "events": 70,
        "with_pid": 65
      },
      "func._ZN8xmas_elf7program13ProgramHeader8get_type17h5cbcce3512fdef57E": {
        "events": 70,
        "with_pid": 65
      },
      "func._ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$6insert17h3066ea9ee2f5fc1cE": {
        "events": 953,
        "with_pid": 939
      },
      "func._ZN5alloc11collections5btree4node210Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..Edge$GT$16insert_recursing17hdea21c2fa1292932E": {
        "events": 551,
        "with_pid": 543
      },
      "func._ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17h6725eab204e3ddfeE.llvm.16392842407942260741": {
        "events": 3,
        "with_pid": 0
      },
      "task.kstack_alloc": {
        "events": 56,
        "with_pid": 55
      },
      "func._ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$4grow17hbe266473ab246931E.llvm.14106671731014623185": {
        "events": 4,
        "with_pid": 3
      },
      "func._ZN2os6loader9list_apps17hbac7ab73ba2e4c6cE": {
        "events": 1,
        "with_pid": 0
      },
      "func._ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h39f2fab819e69901E": {
        "events": 43,
        "with_pid": 0
      },
      "func._ZN42_$LT$str$u20$as$u20$core..fmt..Display$GT$3fmt17hb8c43d55b60732c2E": {
        "events": 359,
        "with_pid": 316
      },
      "sched.enter": {
        "events": 1,
        "with_pid": 0
      },
      "func._ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$9wrap_copy17hd94ab80b0faf3e05E.llvm.14106671731014623185": {
        "events": 138,
        "with_pid": 0
      },
      "sched.switch": {
        "events": 275,
        "with_pid": 138
      },
      "trap.userret": {
        "events": 794,
        "with_pid": 794
      },
      "func._ZN2os4task9processor18current_user_token17h7b385e281d5f1fefE": {
        "events": 1289,
        "with_pid": 1289
      },
      "syscall.enter": {
        "events": 771,
        "with_pid": 771
      },
      "trap.enter": {
        "events": 794,
        "with_pid": 794
      },
      "func._ZN2os4task9processor15current_trap_cx17h37576fa5877bb1b0E": {
        "events": 1488,
        "with_pid": 1488
      },
      "syscall.dispatch": {
        "events": 771,
        "with_pid": 771
      },
      "syscall.fork": {
        "events": 55,
        "with_pid": 55
      },
      "func._ZN4core3fmt3num3imp54_$LT$impl$u20$core..fmt..Display$u20$for$u20$usize$GT$3fmt17h83de4ff3c495723bE": {
        "events": 770,
        "with_pid": 770
      },
      "vm.copy": {
        "events": 55,
        "with_pid": 55
      },
      "proc.fork": {
        "events": 55,
        "with_pid": 55
      },
      "syscall.waitpid": {
        "events": 97,
        "with_pid": 97
      },
      "func._ZN4core3fmt3num3imp54_$LT$impl$u20$core..fmt..Display$u20$for$u20$isize$GT$3fmt17h32c7e1571ae6b44cE": {
        "events": 97,
        "with_pid": 97
      },
      "func.waitpid": {
        "events": 97,
        "with_pid": 97
      },
      "syscall.yield": {
        "events": 61,
        "with_pid": 61
      },
      "sched.yield": {
        "events": 83,
        "with_pid": 83
      },
      "syscall.exec": {
        "events": 13,
        "with_pid": 13
      },
      "vm.translate_str": {
        "events": 13,
        "with_pid": 13
      },
      "func._ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17ha298e8977af23e84E": {
        "events": 27,
        "with_pid": 27
      },
      "proc.exec": {
        "events": 13,
        "with_pid": 13
      },
      "phys.free": {
        "events": 1259,
        "with_pid": 1259
      },
      "heap.free": {
        "events": 1024,
        "with_pid": 1024
      },
      "func._ZN99_$LT$alloc..collections..btree..map..BTreeMap$LT$K$C$V$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17ha2b340a8329e80b7E": {
        "events": 456,
        "with_pid": 456
      },
      "func._ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Dying$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..Edge$GT$$GT$27deallocating_next_unchecked17h0d2c5158ac8032deE": {
        "events": 805,
        "with_pid": 805
      },
      "syscall.write": {
        "events": 370,
        "with_pid": 370
      },
      "vm.translate_buffer": {
        "events": 482,
        "with_pid": 482
      },
      "func._ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17hb03337872ca5c760E": {
        "events": 316,
        "with_pid": 316
      },
      "syscall.read": {
        "events": 113,
        "with_pid": 113
      },
      "func.memmove": {
        "events": 417,
        "with_pid": 348
      },
      "func._ZN17compiler_builtins3mem7memmove17h6641c454cd41b91bE": {
        "events": 417,
        "with_pid": 348
      },
      "interrupt.timer": {
        "events": 22,
        "with_pid": 22
      },
      "syscall.exit": {
        "events": 53,
        "with_pid": 53
      },
      "proc.exit": {
        "events": 54,
        "with_pid": 54
      },
      "func._ZN4core3ptr109drop_in_place$LT$alloc..vec..drain..Drain$LT$alloc..sync..Arc$LT$os..task..task..TaskControlBlock$GT$$GT$$GT$17h55e00f11b91dd746E": {
        "events": 54,
        "with_pid": 54
      },
      "func._ZN79_$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h47fdeb6091ae8e02E": {
        "events": 54,
        "with_pid": 54
      },
      "func.recycle_data_pages": {
        "events": 54,
        "with_pid": 54
      },
      "func._ZN4core3ptr77drop_in_place$LT$alloc..sync..Arc$LT$os..task..task..TaskControlBlock$GT$$GT$17h1e507565745c0727E": {
        "events": 54,
        "with_pid": 54
      },
      "func.trace_to_idle": {
        "events": 54,
        "with_pid": 54
      },
      "func.schedule": {
        "events": 54,
        "with_pid": 0
      },
      "func._ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h5f7085439107f66dE": {
        "events": 54,
        "with_pid": 54
      },
      "task.pid_free": {
        "events": 54,
        "with_pid": 54
      },
      "task.kstack_free": {
        "events": 54,
        "with_pid": 54
      },
      "vm.remove_area": {
        "events": 54,
        "with_pid": 54
      },
      "func.unmap": {
        "events": 54,
        "with_pid": 54
      },
      "vm.unmap": {
        "events": 55,
        "with_pid": 55
      },
      "func._ZN5alloc11collections5btree3map5entry30OccupiedEntry$LT$K$C$V$C$A$GT$9remove_kv17hb4417fe4429410b4E": {
        "events": 119,
        "with_pid": 119
      },
      "func._ZN5alloc11collections5btree6remove269_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$18remove_kv_tracking17h96ac68a250cfaca3E": {
        "events": 119,
        "with_pid": 119
      },
      "func._ZN5alloc11collections5btree6remove259_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14remove_leaf_kv17hecb11ceeaade770aE": {
        "events": 119,
        "with_pid": 119
      },
      "pagetable.unmap": {
        "events": 119,
        "with_pid": 119
      },
      "syscall.sbrk": {
        "events": 8,
        "with_pid": 8
      },
      "vm.grow": {
        "events": 6,
        "with_pid": 6
      },
      "vm.shrink": {
        "events": 1,
        "with_pid": 1
      },
      "trap.page_fault": {
        "events": 1,
        "with_pid": 1
      },
      "func._ZN66_$LT$riscv..register..scause..Trap$u20$as$u20$core..fmt..Debug$GT$3fmt17hd450c9ed7d44b3a8E": {
        "events": 1,
        "with_pid": 1
      },
      "func._ZN4core3fmt9Formatter25debug_tuple_field1_finish17h7b601b839df38242E": {
        "events": 1,
        "with_pid": 1
      },
      "func._ZN4core3fmt8builders10DebugTuple5field17h162956c99153b8a6E": {
        "events": 1,
        "with_pid": 1
      },
      "func._ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h3f14c221c18e4f09E": {
        "events": 1,
        "with_pid": 1
      },
      "func._ZN4core3fmt9Formatter9write_str17h181bd84b330b3504E": {
        "events": 1,
        "with_pid": 1
      },
      "syscall.getpid": {
        "events": 1,
        "with_pid": 1
      }
    }
  },
  "previous_report": {
    "html_sha256": "7108a0e955bbf35bc8667bc6d82d414de1ba8fce27e63c704c79301edfc7239c",
    "html_bytes": 2179347,
    "function_trace": {
      "kind": "return-matched observed frames",
      "raw": 84337,
      "retained": 84337,
      "returns": 544666,
      "matched_returns": 53872,
      "nested_entries": 3270
    }
  }
}
