- let data = decompress(&mut rem, None)?;
- for rep in ib.reps {
- let mut slice = &data[rep.payload_offset as usize..rep.payload_size as usize];
- let mut base_phase = false;
- let mut bases = Vec::<String>::new();
-
- while !slice.is_empty() {
- // TODO: proper parsing
- let cmd = u32::from_le_bytes(slice[..4].try_into().unwrap());
- slice = &slice[4..];
-
- dbg!(cmd);
-
- if cmd == 0 {
- base_phase = !base_phase;
- if base_phase {
- bases.clear();
- }
- continue;
- }
-
- // let i = slice.iter().position(|&b| b == 0).unwrap_or(slice.len());
- let i = slice.iter().position(|&b| b == 0).unwrap();
- // dbg!(i, &slice[..i]);
- let s = std::str::from_utf8(&slice[..i]).unwrap(); // TODO
- // dbg!(i, s);
- slice = &slice[i + 1..];
-
- let s = if let Some(val) = bases.get(cmd as usize - 1) {
- val.clone() + s
- } else {
- s.to_owned()
- };
-
- if base_phase {
- bases.push(s);
- dbg!(&bases);
- } else {
- dbg!(s);
- }
- }
- }