🗂️ Shard File Analysis

{filename} {formatBytes(fileSize)}
{#if data.file_info.length > 0}

File Information ({data.file_info.length} files) - Verification: {verificationStatus} Metadata: {metadataStatus}

{#each data.file_info as fileInfo, fileIndex} toggleFileExpansion(fileIndex)} role="button" tabindex="0" onkeydown={(e) => e.key === "Enter" && toggleFileExpansion(fileIndex)} > {#if expandedFiles.has(fileIndex)} {/if} {/each}
File Hash Entries Total Length SHA256
{expandedFiles.has(fileIndex) ? "▼" : "▶"} {formatHash(fileInfo.header.file_hash)} {fileInfo.header.num_entries} {formatBytes( fileInfo.entries.reduce( (sum, entry) => sum + entry.unpacked_segment_bytes, 0 ) )} {#if fileInfo.metadata_ext} {formatHash(fileInfo.metadata_ext.sha256)} {:else} {/if}

Data Entries for File

{#each fileInfo.entries as entry, entryIndex} {/each}
Entry # CAS Hash Chunk Range Unpacked Size
{entryIndex + 1} {formatHash(entry.cas_hash)} {entry.chunk_index_start} - {entry.chunk_index_end} {formatBytes( entry.unpacked_segment_bytes )}
{/if} {#if data.cas_info.length > 0}

CAS Information ({data.cas_info.length} XORBs)

{#each data.cas_info as casInfo} {/each}
CAS Hash Chunks Bytes in CAS Bytes on Disk Compression
{formatHash(casInfo.header.cas_hash)} {casInfo.header.num_entries} {formatBytes(casInfo.header.num_bytes_in_cas)} {formatBytes(casInfo.header.num_bytes_on_disk)} {casInfo.header.num_bytes_in_cas > 0 ? ( (casInfo.header.num_bytes_on_disk / casInfo.header.num_bytes_in_cas) * 100 ).toFixed(1) + "%" : "N/A"}
{/if}