aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSigma-Ohio <crt@teleco.ch>2025-06-09 00:42:33 +0200
committerSigma-Ohio <crt@teleco.ch>2025-06-09 00:42:33 +0200
commit24462f8cdcd280fad3d444fa7dc5278497e831f4 (patch)
treec51e3a6a9f93683eb1d048f0529590cd810dfc6a
parent7ceba5a0f3cbeb6ab15bc7f99aec87741ef177ea (diff)
send help
-rw-r--r--README.md52
-rw-r--r--executables/raus.py29
-rw-r--r--executables/remove_duplicates.py29
-rw-r--r--firmware/IP-BUTTON.BOD.binbin0 -> 282639 bytes
-rw-r--r--research/bad-bruteforcing/attempt-1.txt54
-rw-r--r--research/bad-bruteforcing/grouped/allzone-sequence.txt256
-rw-r--r--research/bad-bruteforcing/grouped/melody-16-vol3-once-zone-all.txt256
-rw-r--r--research/bad-bruteforcing/grouped/melody15-repeat3-zone8-volume-increments.txt7
-rw-r--r--research/bad-bruteforcing/grouped/melody15-vol3-repeat2-zone16-sequecnce.txt256
-rw-r--r--research/bad-bruteforcing/grouped/melody15-vol3-repeat2-zone8-sequence.txt256
-rw-r--r--research/bad-bruteforcing/grouped/melody15-vol3-zone8-repeat-increments.txt5
-rw-r--r--research/bad-bruteforcing/grouped/melody16-vol3-repeat2-zone-all-sequence.txt256
-rw-r--r--research/bad-bruteforcing/grouped/stop-zone-all-partial-sequence.txt33
-rw-r--r--research/bad-bruteforcing/random-captures.txt160
-rw-r--r--research/bad-bruteforcing/reveng-formatted/allzone-sequence.txt256
-rw-r--r--research/bad-bruteforcing/reveng-formatted/melody-16-vol3-once-zone-all.txt256
-rw-r--r--research/bad-bruteforcing/reveng-formatted/melody15-repeat3-zone8-volume-increments.txt7
-rw-r--r--research/bad-bruteforcing/reveng-formatted/melody15-vol3-repeat2-zone16-sequecnce.txt256
-rw-r--r--research/bad-bruteforcing/reveng-formatted/melody15-vol3-repeat2-zone8-sequence.txt256
-rw-r--r--research/bad-bruteforcing/reveng-formatted/melody15-vol3-zone8-repeat-increments.txt5
-rw-r--r--research/bad-bruteforcing/reveng-formatted/melody16-vol3-repeat2-zone-all-sequence.txt256
-rw-r--r--research/bad-bruteforcing/reveng-formatted/stop-zone-all-partial-sequence.txt33
-rw-r--r--research/bad-bruteforcing/sequence.txt256
-rw-r--r--research/executables/bulk_checksum_verifier.py0
-rw-r--r--research/executables/calculate_packet_checksum.py0
-rw-r--r--research/executables/claude-ai-slop/checksum_bruteforce.py367
-rw-r--r--research/executables/claude-ai-slop/mel_checksum_cracker.py319
-rw-r--r--research/executables/claude-ai-slop/mel_protocol_checksum_analyzer.py231
-rw-r--r--research/executables/claude-ai-slop/pattern_finder.py229
-rw-r--r--research/firmware-strings/HARMONY-TRIO.txt3
-rw-r--r--research/firmware-strings/TRIO.md122
-rw-r--r--snmp-mibs/BODET-Control-box.mib131
-rw-r--r--snmp-mibs/BODET-Flash.mib150
-rw-r--r--snmp-mibs/BODET-Harmonys_Trio.mib168
-rw-r--r--snmp-mibs/BODET-Sigma.mib214
-rw-r--r--snmp-mibs/BODET-Speaker.mib162
-rw-r--r--snmp-mibs/SNMPv2-SMI.mib356
-rw-r--r--snmp-mibs/SNMPv2-TC.mib781
38 files changed, 6454 insertions, 9 deletions
diff --git a/README.md b/README.md
index 5a2eae4..b62615d 100644
--- a/README.md
+++ b/README.md
@@ -244,4 +244,54 @@ The `executables/hexen.py` script provides a utility to send raw hex payloads an
* If you press Enter, nothing is saved for that attempt.
* The script checks if the directory for the `MAGIC` file exists and if the file is writable, providing error messages if issues are encountered.
-This tool aims to simplify the process of testing variations of known packet structures, especially when only the checksum isnt known \ No newline at end of file
+This tool aims to simplify the process of testing variations of known packet structures, especially when only the checksum isnt known
+
+# MQX ARM M4 Firmware Analysis Tools
+
+This toolkit provides specialized tools for analyzing MQX ARM M4 firmware, with a particular focus on identifying IP packet checksum algorithms.
+
+## Tools Overview
+
+1. **improved_disassembler.py**: An enhanced disassembler with visual formatting, pattern recognition, and network protocol awareness.
+
+2. **checksum_finder.py**: A specialized tool focused specifically on finding checksum algorithms in firmware.
+
+## Installation
+
+Install the required dependencies:
+
+```bash
+pip install -r requirements.txt
+```
+
+## Usage
+
+### Analyzing firmware with the improved disassembler
+
+```bash
+python improved_disassembler.py path/to/firmware.bin -o analysis_output.txt -b 0x08000000
+```
+
+### Finding checksum algorithms
+
+```bash
+python checksum_finder.py path/to/firmware.bin -o checksum_analysis.txt -b 0x08000000
+```
+
+## Tool Features
+
+- Color-coded output for better readability (in terminal)
+- Detection of network-related strings and constants
+- Pattern-based identification of common checksum algorithms
+- Context-aware disassembly around potential checksum code
+- Export analysis to text files for further examination
+
+## Understanding the Results
+
+The tools look for:
+
+- **IP header constants**: Values commonly found in IP header processing (0x0800, 0x45, 0x06, etc.)
+- **Checksum patterns**: Common instruction sequences used in checksum calculations
+- **Network strings**: TCP/IP-related strings in the firmware
+
+When a potential checksum implementation is found, the tools provide the surrounding context to help understand the algorithm. \ No newline at end of file
diff --git a/executables/raus.py b/executables/raus.py
new file mode 100644
index 0000000..2480fce
--- /dev/null
+++ b/executables/raus.py
@@ -0,0 +1,29 @@
+import os
+import sys # Add this import
+
+def remove_duplicate_lines(filepath):
+ # Read the file and split it into lines
+ with open(filepath, 'r') as file:
+ lines = file.readlines()
+
+ # Remove duplicates by converting the list of lines to a set, then back to a list
+ # This also sorts the lines, as sets do not maintain order
+ unique_lines = list(set(lines))
+
+ # Sort the lines if needed (optional, depending on whether you want to maintain original order)
+ unique_lines.sort()
+
+ # Write the unique lines back to the file
+ with open(filepath, 'w') as file:
+ file.writelines(unique_lines)
+
+if __name__ == "__main__":
+ # Get filepath from command line arguments
+ if len(sys.argv) < 2:
+ print("Usage: python remove_duplicates.py <path_to_file>")
+ sys.exit(1)
+
+ file_to_process = sys.argv[1]
+
+ print(f"Processing file: {file_to_process}")
+ remove_duplicate_lines(file_to_process) \ No newline at end of file
diff --git a/executables/remove_duplicates.py b/executables/remove_duplicates.py
new file mode 100644
index 0000000..2480fce
--- /dev/null
+++ b/executables/remove_duplicates.py
@@ -0,0 +1,29 @@
+import os
+import sys # Add this import
+
+def remove_duplicate_lines(filepath):
+ # Read the file and split it into lines
+ with open(filepath, 'r') as file:
+ lines = file.readlines()
+
+ # Remove duplicates by converting the list of lines to a set, then back to a list
+ # This also sorts the lines, as sets do not maintain order
+ unique_lines = list(set(lines))
+
+ # Sort the lines if needed (optional, depending on whether you want to maintain original order)
+ unique_lines.sort()
+
+ # Write the unique lines back to the file
+ with open(filepath, 'w') as file:
+ file.writelines(unique_lines)
+
+if __name__ == "__main__":
+ # Get filepath from command line arguments
+ if len(sys.argv) < 2:
+ print("Usage: python remove_duplicates.py <path_to_file>")
+ sys.exit(1)
+
+ file_to_process = sys.argv[1]
+
+ print(f"Processing file: {file_to_process}")
+ remove_duplicate_lines(file_to_process) \ No newline at end of file
diff --git a/firmware/IP-BUTTON.BOD.bin b/firmware/IP-BUTTON.BOD.bin
new file mode 100644
index 0000000..b4deef3
--- /dev/null
+++ b/firmware/IP-BUTTON.BOD.bin
Binary files differ
diff --git a/research/bad-bruteforcing/attempt-1.txt b/research/bad-bruteforcing/attempt-1.txt
index 5a52303..b859fac 100644
--- a/research/bad-bruteforcing/attempt-1.txt
+++ b/research/bad-bruteforcing/attempt-1.txt
@@ -1,6 +1,48 @@
-Changeing Volume :
-4d454c0021010004ff300180000000000000000000000000010202010f010001ff
-fa
-fa
-4d454c0021010004ff300180000000000000000000000000010102010f010001fa
-4d454c0021010004ff300180000000000000000000000000010102010f010001fa
+Universal Stop, system officially doesnt support stopping individual Zones so I technically dont care too much about its checksum :
+4d454c001a01002dff5002ffffffffffffffffffffffff0f0118
+
+What happens when sequence number rolls over :
+4d454c00210100ffff300180000000000000000000000000010302010f010000f5
+4d454c0021010000ff300180000000000000000000000000010302010f010001f4
+4d454c0021010001ff300180000000000000000000000000010302010f010001fb
+
+
+Tests using Sequence 00 (mostly) :
+
+Repeat Increments for Melody 15 in Zone 8 at Volume 3 and bruteforced Checksums:
+4d454c0021010000ff300180000000000000000000000000010301010f010001f3
+4d454c0021010000ff300180000000000000000000000000010302010f010001f4
+4d454c0021010000ff300180000000000000000000000000010303010f010001f5
+4d454c0021010000ff300180000000000000000000000000010304010f010001f6
+4d454c0021010000ff300180000000000000000000000000010305010f010001f7
+
+
+Volume Increments for Melody 15 in Zone 8 with 3 Repetitions and bruteforced Checksum:
+4d454c0021010000ff300180000000000000000000000000010103010f010001f3
+4d454c0021010000ff300180000000000000000000000000010203010f010001f1
+4d454c0021010000ff300180000000000000000000000000010303010f010001f5
+4d454c0021010000ff300180000000000000000000000000010403010f010001f4
+4d454c0021010000ff300180000000000000000000000000010503010f010001f7
+4d454c0021010000ff300180000000000000000000000000010603010f010001f6
+4d454c0021010000ff300180000000000000000000000000010703010f010001c9
+
+Changign Zones from 8 to 8 and 16 :
+4d454c0021010000ff300180800000000000000000000000010103010f01000173
+
+Melody 1 in Zone 8 and 16 only once at Volume one Sequence Number 2:
+4d454c0021010002ff30018080000000000000000000000001010101010100014d
+
+Melody 1 in Zone 1 once at Volume one Sequence Number 3 :
+4d454c0021010003ff300101000000000000000000000000010101010101000149
+
+Meoldy 1 in Zone 8 and 16 only once at Volume one Sequencence Number 0:
+4d454c0021010000ff300180800000000000000000000000010101010101000143
+
+Melody 1 in Zone 1 once at Volume one Sequencey Number 0 Repetition Increments:
+4d454c0021010000ff300101000000000000000000000000010101010101000144
+4d454c0021010000ff300101000000000000000000000000010102010101000143
+4d454c0021010000ff300101000000000000000000000000010102010101000142
+
+Melody 1 in Zone 1 once at Volume 2 Sequence Number 0 Volume increments :
+4d454c0021010000ff300101000000000000000000000000010101010101000144
+4d454c0021010000ff300101000000000000000000000000010201010101000145 \ No newline at end of file
diff --git a/research/bad-bruteforcing/grouped/allzone-sequence.txt b/research/bad-bruteforcing/grouped/allzone-sequence.txt
new file mode 100644
index 0000000..c85b0b3
--- /dev/null
+++ b/research/bad-bruteforcing/grouped/allzone-sequence.txt
@@ -0,0 +1,256 @@
+4d454c0021010000ff3001ffffffffffffffffffffffff0f01030201100100015e
+4d454c0021010001ff3001ffffffffffffffffffffffff0f010302011001000151
+4d454c0021010002ff3001ffffffffffffffffffffffff0f010302011001000150
+4d454c0021010003ff3001ffffffffffffffffffffffff0f010302011001000153
+4d454c0021010004ff3001ffffffffffffffffffffffff0f010302011001000152
+4d454c0021010005ff3001ffffffffffffffffffffffff0f010302011001000155
+4d454c0021010006ff3001ffffffffffffffffffffffff0f010302011001000154
+4d454c0021010007ff3001ffffffffffffffffffffffff0f010302011001000157
+4d454c0021010008ff3001ffffffffffffffffffffffff0f010302011001000156
+4d454c0021010009ff3001ffffffffffffffffffffffff0f010302011001000149
+4d454c002101000aff3001ffffffffffffffffffffffff0f010302011001000148
+4d454c002101000bff3001ffffffffffffffffffffffff0f01030201100100014b
+4d454c002101000cff3001ffffffffffffffffffffffff0f01030201100100014a
+4d454c002101000dff3001ffffffffffffffffffffffff0f01030201100100014d
+4d454c002101000eff3001ffffffffffffffffffffffff0f01030201100100014c
+4d454c002101000fff3001ffffffffffffffffffffffff0f01030201100100014f
+4d454c0021010010ff3001ffffffffffffffffffffffff0f01030201100100014e
+4d454c0021010011ff3001ffffffffffffffffffffffff0f010302011001000141
+4d454c0021010012ff3001ffffffffffffffffffffffff0f010302011001000140
+4d454c0021010013ff3001ffffffffffffffffffffffff0f010302011001000143
+4d454c0021010014ff3001ffffffffffffffffffffffff0f010302011001000142
+4d454c0021010015ff3001ffffffffffffffffffffffff0f010302011001000145
+4d454c0021010016ff3001ffffffffffffffffffffffff0f010302011001000144
+4d454c0021010017ff3001ffffffffffffffffffffffff0f010302011001000147
+4d454c0021010018ff3001ffffffffffffffffffffffff0f010302011001000146
+4d454c0021010019ff3001ffffffffffffffffffffffff0f010302011001000179
+4d454c002101001aff3001ffffffffffffffffffffffff0f010302011001000178
+4d454c002101001bff3001ffffffffffffffffffffffff0f01030201100100017b
+4d454c002101001cff3001ffffffffffffffffffffffff0f01030201100100017a
+4d454c002101001dff3001ffffffffffffffffffffffff0f01030201100100017d
+4d454c002101001eff3001ffffffffffffffffffffffff0f01030201100100017c
+4d454c002101001fff3001ffffffffffffffffffffffff0f01030201100100017f
+4d454c0021010020ff3001ffffffffffffffffffffffff0f01030201100100017e
+4d454c0021010021ff3001ffffffffffffffffffffffff0f010302011001000171
+4d454c0021010022ff3001ffffffffffffffffffffffff0f010302011001000170
+4d454c0021010023ff3001ffffffffffffffffffffffff0f010302011001000173
+4d454c0021010024ff3001ffffffffffffffffffffffff0f010302011001000172
+4d454c0021010025ff3001ffffffffffffffffffffffff0f010302011001000175
+4d454c0021010026ff3001ffffffffffffffffffffffff0f010302011001000174
+4d454c0021010027ff3001ffffffffffffffffffffffff0f010302011001000177
+4d454c0021010028ff3001ffffffffffffffffffffffff0f010302011001000176
+4d454c0021010029ff3001ffffffffffffffffffffffff0f010302011001000169
+4d454c002101002aff3001ffffffffffffffffffffffff0f010302011001000168
+4d454c002101002bff3001ffffffffffffffffffffffff0f01030201100100016b
+4d454c002101002cff3001ffffffffffffffffffffffff0f01030201100100016a
+4d454c002101002dff3001ffffffffffffffffffffffff0f01030201100100016d
+4d454c002101002eff3001ffffffffffffffffffffffff0f01030201100100016c
+4d454c002101002fff3001ffffffffffffffffffffffff0f01030201100100016f
+4d454c0021010030ff3001ffffffffffffffffffffffff0f01030201100100016e
+4d454c0021010031ff3001ffffffffffffffffffffffff0f010302011001000161
+4d454c0021010032ff3001ffffffffffffffffffffffff0f010302011001000160
+4d454c0021010033ff3001ffffffffffffffffffffffff0f010302011001000163
+4d454c0021010034ff3001ffffffffffffffffffffffff0f010302011001000162
+4d454c0021010035ff3001ffffffffffffffffffffffff0f010302011001000165
+4d454c0021010036ff3001ffffffffffffffffffffffff0f010302011001000164
+4d454c0021010037ff3001ffffffffffffffffffffffff0f010302011001000167
+4d454c0021010038ff3001ffffffffffffffffffffffff0f010302011001000166
+4d454c0021010039ff3001ffffffffffffffffffffffff0f010302011001000119
+4d454c002101003aff3001ffffffffffffffffffffffff0f010302011001000118
+4d454c002101003bff3001ffffffffffffffffffffffff0f01030201100100011b
+4d454c002101003cff3001ffffffffffffffffffffffff0f01030201100100011a
+4d454c002101003dff3001ffffffffffffffffffffffff0f01030201100100011d
+4d454c002101003eff3001ffffffffffffffffffffffff0f01030201100100011c
+4d454c002101003fff3001ffffffffffffffffffffffff0f01030201100100011f
+4d454c0021010040ff3001ffffffffffffffffffffffff0f01030201100100011e
+4d454c0021010041ff3001ffffffffffffffffffffffff0f010302011001000111
+4d454c0021010042ff3001ffffffffffffffffffffffff0f010302011001000110
+4d454c0021010043ff3001ffffffffffffffffffffffff0f010302011001000113
+4d454c0021010044ff3001ffffffffffffffffffffffff0f010302011001000112
+4d454c0021010045ff3001ffffffffffffffffffffffff0f010302011001000115
+4d454c0021010046ff3001ffffffffffffffffffffffff0f010302011001000114
+4d454c0021010047ff3001ffffffffffffffffffffffff0f010302011001000117
+4d454c0021010048ff3001ffffffffffffffffffffffff0f010302011001000116
+4d454c0021010049ff3001ffffffffffffffffffffffff0f010302011001000109
+4d454c002101004aff3001ffffffffffffffffffffffff0f010302011001000108
+4d454c002101004bff3001ffffffffffffffffffffffff0f01030201100100010b
+4d454c002101004cff3001ffffffffffffffffffffffff0f01030201100100010a
+4d454c002101004dff3001ffffffffffffffffffffffff0f01030201100100010d
+4d454c002101004eff3001ffffffffffffffffffffffff0f01030201100100010c
+4d454c002101004fff3001ffffffffffffffffffffffff0f01030201100100010f
+4d454c0021010050ff3001ffffffffffffffffffffffff0f01030201100100010e
+4d454c0021010051ff3001ffffffffffffffffffffffff0f010302011001000101
+4d454c0021010052ff3001ffffffffffffffffffffffff0f010302011001000100
+4d454c0021010053ff3001ffffffffffffffffffffffff0f010302011001000103
+4d454c0021010054ff3001ffffffffffffffffffffffff0f010302011001000102
+4d454c0021010055ff3001ffffffffffffffffffffffff0f010302011001000105
+4d454c0021010056ff3001ffffffffffffffffffffffff0f010302011001000104
+4d454c0021010057ff3001ffffffffffffffffffffffff0f010302011001000107
+4d454c0021010058ff3001ffffffffffffffffffffffff0f010302011001000106
+4d454c0021010059ff3001ffffffffffffffffffffffff0f010302011001000139
+4d454c002101005aff3001ffffffffffffffffffffffff0f010302011001000138
+4d454c002101005bff3001ffffffffffffffffffffffff0f01030201100100013b
+4d454c002101005cff3001ffffffffffffffffffffffff0f01030201100100013a
+4d454c002101005dff3001ffffffffffffffffffffffff0f01030201100100013d
+4d454c002101005eff3001ffffffffffffffffffffffff0f01030201100100013c
+4d454c002101005fff3001ffffffffffffffffffffffff0f01030201100100013f
+4d454c0021010060ff3001ffffffffffffffffffffffff0f01030201100100013e
+4d454c0021010061ff3001ffffffffffffffffffffffff0f010302011001000131
+4d454c0021010062ff3001ffffffffffffffffffffffff0f010302011001000130
+4d454c0021010063ff3001ffffffffffffffffffffffff0f010302011001000133
+4d454c0021010064ff3001ffffffffffffffffffffffff0f010302011001000132
+4d454c0021010065ff3001ffffffffffffffffffffffff0f010302011001000135
+4d454c0021010066ff3001ffffffffffffffffffffffff0f010302011001000134
+4d454c0021010067ff3001ffffffffffffffffffffffff0f010302011001000137
+4d454c0021010068ff3001ffffffffffffffffffffffff0f010302011001000136
+4d454c0021010069ff3001ffffffffffffffffffffffff0f010302011001000129
+4d454c002101006aff3001ffffffffffffffffffffffff0f010302011001000128
+4d454c002101006bff3001ffffffffffffffffffffffff0f01030201100100012b
+4d454c002101006cff3001ffffffffffffffffffffffff0f01030201100100012a
+4d454c002101006dff3001ffffffffffffffffffffffff0f01030201100100012d
+4d454c002101006eff3001ffffffffffffffffffffffff0f01030201100100012c
+4d454c002101006fff3001ffffffffffffffffffffffff0f01030201100100012f
+4d454c0021010070ff3001ffffffffffffffffffffffff0f01030201100100012e
+4d454c0021010071ff3001ffffffffffffffffffffffff0f010302011001000121
+4d454c0021010072ff3001ffffffffffffffffffffffff0f010302011001000120
+4d454c0021010073ff3001ffffffffffffffffffffffff0f010302011001000123
+4d454c0021010074ff3001ffffffffffffffffffffffff0f010302011001000122
+4d454c0021010075ff3001ffffffffffffffffffffffff0f010302011001000125
+4d454c0021010076ff3001ffffffffffffffffffffffff0f010302011001000124
+4d454c0021010077ff3001ffffffffffffffffffffffff0f010302011001000127
+4d454c0021010078ff3001ffffffffffffffffffffffff0f010302011001000126
+4d454c0021010079ff3001ffffffffffffffffffffffff0f0103020110010001d9
+4d454c002101007aff3001ffffffffffffffffffffffff0f0103020110010001d8
+4d454c002101007bff3001ffffffffffffffffffffffff0f0103020110010001db
+4d454c002101007cff3001ffffffffffffffffffffffff0f0103020110010001da
+4d454c002101007dff3001ffffffffffffffffffffffff0f0103020110010001dd
+4d454c002101007eff3001ffffffffffffffffffffffff0f0103020110010001dc
+4d454c002101007fff3001ffffffffffffffffffffffff0f0103020110010001df
+4d454c0021010080ff3001ffffffffffffffffffffffff0f0103020110010001de
+4d454c0021010081ff3001ffffffffffffffffffffffff0f0103020110010001d1
+4d454c0021010082ff3001ffffffffffffffffffffffff0f0103020110010001d0
+4d454c0021010083ff3001ffffffffffffffffffffffff0f0103020110010001d3
+4d454c0021010084ff3001ffffffffffffffffffffffff0f0103020110010001d2
+4d454c0021010085ff3001ffffffffffffffffffffffff0f0103020110010001d5
+4d454c0021010086ff3001ffffffffffffffffffffffff0f0103020110010001d4
+4d454c0021010087ff3001ffffffffffffffffffffffff0f0103020110010001d7
+4d454c0021010088ff3001ffffffffffffffffffffffff0f0103020110010001d6
+4d454c0021010089ff3001ffffffffffffffffffffffff0f0103020110010001c9
+4d454c002101008aff3001ffffffffffffffffffffffff0f0103020110010001c8
+4d454c002101008bff3001ffffffffffffffffffffffff0f0103020110010001cb
+4d454c002101008cff3001ffffffffffffffffffffffff0f0103020110010001ca
+4d454c002101008dff3001ffffffffffffffffffffffff0f0103020110010001cd
+4d454c002101008eff3001ffffffffffffffffffffffff0f0103020110010001cc
+4d454c002101008fff3001ffffffffffffffffffffffff0f0103020110010001cf
+4d454c0021010090ff3001ffffffffffffffffffffffff0f0103020110010001ce
+4d454c0021010091ff3001ffffffffffffffffffffffff0f0103020110010001c1
+4d454c0021010092ff3001ffffffffffffffffffffffff0f0103020110010001c0
+4d454c0021010093ff3001ffffffffffffffffffffffff0f0103020110010001c3
+4d454c0021010094ff3001ffffffffffffffffffffffff0f0103020110010001c2
+4d454c0021010095ff3001ffffffffffffffffffffffff0f0103020110010001c5
+4d454c0021010096ff3001ffffffffffffffffffffffff0f0103020110010001c4
+4d454c0021010097ff3001ffffffffffffffffffffffff0f0103020110010001c7
+4d454c0021010098ff3001ffffffffffffffffffffffff0f0103020110010001c6
+4d454c0021010099ff3001ffffffffffffffffffffffff0f0103020110010001f9
+4d454c002101009aff3001ffffffffffffffffffffffff0f0103020110010001f8
+4d454c002101009bff3001ffffffffffffffffffffffff0f0103020110010001fb
+4d454c002101009cff3001ffffffffffffffffffffffff0f0103020110010001fa
+4d454c002101009dff3001ffffffffffffffffffffffff0f0103020110010001fd
+4d454c002101009eff3001ffffffffffffffffffffffff0f0103020110010001fc
+4d454c002101009fff3001ffffffffffffffffffffffff0f0103020110010001ff
+4d454c00210100a0ff3001ffffffffffffffffffffffff0f0103020110010001fe
+4d454c00210100a1ff3001ffffffffffffffffffffffff0f0103020110010001f1
+4d454c00210100a2ff3001ffffffffffffffffffffffff0f0103020110010001f0
+4d454c00210100a3ff3001ffffffffffffffffffffffff0f0103020110010001f3
+4d454c00210100a4ff3001ffffffffffffffffffffffff0f0103020110010001f2
+4d454c00210100a5ff3001ffffffffffffffffffffffff0f0103020110010001f5
+4d454c00210100a6ff3001ffffffffffffffffffffffff0f0103020110010001f4
+4d454c00210100a7ff3001ffffffffffffffffffffffff0f0103020110010001f7
+4d454c00210100a8ff3001ffffffffffffffffffffffff0f0103020110010001f6
+4d454c00210100a9ff3001ffffffffffffffffffffffff0f0103020110010001e9
+4d454c00210100aaff3001ffffffffffffffffffffffff0f0103020110010001e8
+4d454c00210100abff3001ffffffffffffffffffffffff0f0103020110010001eb
+4d454c00210100acff3001ffffffffffffffffffffffff0f0103020110010001ea
+4d454c00210100adff3001ffffffffffffffffffffffff0f0103020110010001ed
+4d454c00210100aeff3001ffffffffffffffffffffffff0f0103020110010001ec
+4d454c00210100afff3001ffffffffffffffffffffffff0f0103020110010001ef
+4d454c00210100b0ff3001ffffffffffffffffffffffff0f0103020110010001ee
+4d454c00210100b1ff3001ffffffffffffffffffffffff0f0103020110010001e1
+4d454c00210100b2ff3001ffffffffffffffffffffffff0f0103020110010001e0
+4d454c00210100b3ff3001ffffffffffffffffffffffff0f0103020110010001e3
+4d454c00210100b4ff3001ffffffffffffffffffffffff0f0103020110010001e2
+4d454c00210100b5ff3001ffffffffffffffffffffffff0f0103020110010001e5
+4d454c00210100b6ff3001ffffffffffffffffffffffff0f0103020110010001e4
+4d454c00210100b7ff3001ffffffffffffffffffffffff0f0103020110010001e7
+4d454c00210100b8ff3001ffffffffffffffffffffffff0f0103020110010001e6
+4d454c00210100b9ff3001ffffffffffffffffffffffff0f010302011001000199
+4d454c00210100baff3001ffffffffffffffffffffffff0f010302011001000198
+4d454c00210100bbff3001ffffffffffffffffffffffff0f01030201100100019b
+4d454c00210100bcff3001ffffffffffffffffffffffff0f01030201100100019a
+4d454c00210100bdff3001ffffffffffffffffffffffff0f01030201100100019d
+4d454c00210100beff3001ffffffffffffffffffffffff0f01030201100100019c
+4d454c00210100bfff3001ffffffffffffffffffffffff0f01030201100100019f
+4d454c00210100c0ff3001ffffffffffffffffffffffff0f01030201100100019e
+4d454c00210100c1ff3001ffffffffffffffffffffffff0f010302011001000191
+4d454c00210100c2ff3001ffffffffffffffffffffffff0f010302011001000190
+4d454c00210100c3ff3001ffffffffffffffffffffffff0f010302011001000193
+4d454c00210100c4ff3001ffffffffffffffffffffffff0f010302011001000192
+4d454c00210100c5ff3001ffffffffffffffffffffffff0f010302011001000195
+4d454c00210100c6ff3001ffffffffffffffffffffffff0f010302011001000194
+4d454c00210100c7ff3001ffffffffffffffffffffffff0f010302011001000197
+4d454c00210100c8ff3001ffffffffffffffffffffffff0f010302011001000196
+4d454c00210100c9ff3001ffffffffffffffffffffffff0f010302011001000189
+4d454c00210100caff3001ffffffffffffffffffffffff0f010302011001000188
+4d454c00210100cbff3001ffffffffffffffffffffffff0f01030201100100018b
+4d454c00210100ccff3001ffffffffffffffffffffffff0f01030201100100018a
+4d454c00210100cdff3001ffffffffffffffffffffffff0f01030201100100018d
+4d454c00210100ceff3001ffffffffffffffffffffffff0f01030201100100018c
+4d454c00210100cfff3001ffffffffffffffffffffffff0f01030201100100018f
+4d454c00210100d0ff3001ffffffffffffffffffffffff0f01030201100100018e
+4d454c00210100d1ff3001ffffffffffffffffffffffff0f010302011001000181
+4d454c00210100d2ff3001ffffffffffffffffffffffff0f010302011001000180
+4d454c00210100d3ff3001ffffffffffffffffffffffff0f010302011001000183
+4d454c00210100d4ff3001ffffffffffffffffffffffff0f010302011001000182
+4d454c00210100d5ff3001ffffffffffffffffffffffff0f010302011001000185
+4d454c00210100d6ff3001ffffffffffffffffffffffff0f010302011001000184
+4d454c00210100d7ff3001ffffffffffffffffffffffff0f010302011001000187
+4d454c00210100d8ff3001ffffffffffffffffffffffff0f010302011001000186
+4d454c00210100d9ff3001ffffffffffffffffffffffff0f0103020110010001b9
+4d454c00210100daff3001ffffffffffffffffffffffff0f0103020110010001b8
+4d454c00210100dbff3001ffffffffffffffffffffffff0f0103020110010001bb
+4d454c00210100dcff3001ffffffffffffffffffffffff0f0103020110010001ba
+4d454c00210100ddff3001ffffffffffffffffffffffff0f0103020110010001bd
+4d454c00210100deff3001ffffffffffffffffffffffff0f0103020110010001bc
+4d454c00210100dfff3001ffffffffffffffffffffffff0f0103020110010001bf
+4d454c00210100e0ff3001ffffffffffffffffffffffff0f0103020110010001be
+4d454c00210100e1ff3001ffffffffffffffffffffffff0f0103020110010001b1
+4d454c00210100e2ff3001ffffffffffffffffffffffff0f0103020110010001b0
+4d454c00210100e3ff3001ffffffffffffffffffffffff0f0103020110010001b3
+4d454c00210100e4ff3001ffffffffffffffffffffffff0f0103020110010001b2
+4d454c00210100e5ff3001ffffffffffffffffffffffff0f0103020110010001b5
+4d454c00210100e6ff3001ffffffffffffffffffffffff0f0103020110010001b4
+4d454c00210100e7ff3001ffffffffffffffffffffffff0f0103020110010001b7
+4d454c00210100e8ff3001ffffffffffffffffffffffff0f0103020110010001b6
+4d454c00210100e9ff3001ffffffffffffffffffffffff0f0103020110010001a9
+4d454c00210100eaff3001ffffffffffffffffffffffff0f0103020110010001a8
+4d454c00210100ebff3001ffffffffffffffffffffffff0f0103020110010001ab
+4d454c00210100ecff3001ffffffffffffffffffffffff0f0103020110010001aa
+4d454c00210100edff3001ffffffffffffffffffffffff0f0103020110010001ad
+4d454c00210100eeff3001ffffffffffffffffffffffff0f0103020110010001ac
+4d454c00210100efff3001ffffffffffffffffffffffff0f0103020110010001af
+4d454c00210100f0ff3001ffffffffffffffffffffffff0f0103020110010001ae
+4d454c00210100f1ff3001ffffffffffffffffffffffff0f0103020110010001a1
+4d454c00210100f2ff3001ffffffffffffffffffffffff0f0103020110010001a0
+4d454c00210100f3ff3001ffffffffffffffffffffffff0f0103020110010001a3
+4d454c00210100f4ff3001ffffffffffffffffffffffff0f0103020110010001a2
+4d454c00210100f5ff3001ffffffffffffffffffffffff0f0103020110010001a5
+4d454c00210100f6ff3001ffffffffffffffffffffffff0f0103020110010001a4
+4d454c00210100f7ff3001ffffffffffffffffffffffff0f0103020110010001a7
+4d454c00210100f8ff3001ffffffffffffffffffffffff0f0103020110010001a6
+4d454c00210100f9ff3001ffffffffffffffffffffffff0f010302011001000059
+4d454c00210100faff3001ffffffffffffffffffffffff0f010302011001000058
+4d454c00210100fbff3001ffffffffffffffffffffffff0f01030201100100005b
+4d454c00210100fcff3001ffffffffffffffffffffffff0f01030201100100005a
+4d454c00210100fdff3001ffffffffffffffffffffffff0f01030201100100005d
+4d454c00210100feff3001ffffffffffffffffffffffff0f01030201100100005c
+4d454c00210100ffff3001ffffffffffffffffffffffff0f01030201100100005f \ No newline at end of file
diff --git a/research/bad-bruteforcing/grouped/melody-16-vol3-once-zone-all.txt b/research/bad-bruteforcing/grouped/melody-16-vol3-once-zone-all.txt
new file mode 100644
index 0000000..8b6df4a
--- /dev/null
+++ b/research/bad-bruteforcing/grouped/melody-16-vol3-once-zone-all.txt
@@ -0,0 +1,256 @@
+4d454c0021010000ff3001ffffffffffffffffffffffff0f010301011001000159
+4d454c0021010001ff3001ffffffffffffffffffffffff0f010301011001000156
+4d454c0021010002ff3001ffffffffffffffffffffffff0f010301011001000157
+4d454c0021010003ff3001ffffffffffffffffffffffff0f010301011001000154
+4d454c0021010004ff3001ffffffffffffffffffffffff0f010301011001000155
+4d454c0021010005ff3001ffffffffffffffffffffffff0f010301011001000152
+4d454c0021010006ff3001ffffffffffffffffffffffff0f010301011001000153
+4d454c0021010007ff3001ffffffffffffffffffffffff0f010301011001000150
+4d454c0021010008ff3001ffffffffffffffffffffffff0f010301011001000151
+4d454c0021010009ff3001ffffffffffffffffffffffff0f01030101100100014e
+4d454c002101000aff3001ffffffffffffffffffffffff0f01030101100100014f
+4d454c002101000bff3001ffffffffffffffffffffffff0f01030101100100014c
+4d454c002101000cff3001ffffffffffffffffffffffff0f01030101100100014d
+4d454c002101000dff3001ffffffffffffffffffffffff0f01030101100100014a
+4d454c002101000eff3001ffffffffffffffffffffffff0f01030101100100014b
+4d454c002101000fff3001ffffffffffffffffffffffff0f010301011001000148
+4d454c0021010010ff3001ffffffffffffffffffffffff0f010301011001000149
+4d454c0021010011ff3001ffffffffffffffffffffffff0f010301011001000146
+4d454c0021010012ff3001ffffffffffffffffffffffff0f010301011001000147
+4d454c0021010013ff3001ffffffffffffffffffffffff0f010301011001000144
+4d454c0021010014ff3001ffffffffffffffffffffffff0f010301011001000145
+4d454c0021010015ff3001ffffffffffffffffffffffff0f010301011001000142
+4d454c0021010016ff3001ffffffffffffffffffffffff0f010301011001000143
+4d454c0021010017ff3001ffffffffffffffffffffffff0f010301011001000140
+4d454c0021010018ff3001ffffffffffffffffffffffff0f010301011001000141
+4d454c0021010019ff3001ffffffffffffffffffffffff0f01030101100100017e
+4d454c002101001aff3001ffffffffffffffffffffffff0f01030101100100017f
+4d454c002101001bff3001ffffffffffffffffffffffff0f01030101100100017c
+4d454c002101001cff3001ffffffffffffffffffffffff0f01030101100100017d
+4d454c002101001dff3001ffffffffffffffffffffffff0f01030101100100017a
+4d454c002101001eff3001ffffffffffffffffffffffff0f01030101100100017b
+4d454c002101001fff3001ffffffffffffffffffffffff0f010301011001000178
+4d454c0021010020ff3001ffffffffffffffffffffffff0f010301011001000179
+4d454c0021010021ff3001ffffffffffffffffffffffff0f010301011001000176
+4d454c0021010022ff3001ffffffffffffffffffffffff0f010301011001000177
+4d454c0021010023ff3001ffffffffffffffffffffffff0f010301011001000174
+4d454c0021010024ff3001ffffffffffffffffffffffff0f010301011001000175
+4d454c0021010025ff3001ffffffffffffffffffffffff0f010301011001000172
+4d454c0021010026ff3001ffffffffffffffffffffffff0f010301011001000173
+4d454c0021010027ff3001ffffffffffffffffffffffff0f010301011001000170
+4d454c0021010028ff3001ffffffffffffffffffffffff0f010301011001000171
+4d454c0021010029ff3001ffffffffffffffffffffffff0f01030101100100016e
+4d454c002101002aff3001ffffffffffffffffffffffff0f01030101100100016f
+4d454c002101002bff3001ffffffffffffffffffffffff0f01030101100100016c
+4d454c002101002cff3001ffffffffffffffffffffffff0f01030101100100016d
+4d454c002101002dff3001ffffffffffffffffffffffff0f01030101100100016a
+4d454c002101002eff3001ffffffffffffffffffffffff0f01030101100100016b
+4d454c002101002fff3001ffffffffffffffffffffffff0f010301011001000168
+4d454c0021010030ff3001ffffffffffffffffffffffff0f010301011001000169
+4d454c0021010031ff3001ffffffffffffffffffffffff0f010301011001000166
+4d454c0021010032ff3001ffffffffffffffffffffffff0f010301011001000167
+4d454c0021010033ff3001ffffffffffffffffffffffff0f010301011001000164
+4d454c0021010034ff3001ffffffffffffffffffffffff0f010301011001000165
+4d454c0021010035ff3001ffffffffffffffffffffffff0f010301011001000162
+4d454c0021010036ff3001ffffffffffffffffffffffff0f010301011001000163
+4d454c0021010037ff3001ffffffffffffffffffffffff0f010301011001000160
+4d454c0021010038ff3001ffffffffffffffffffffffff0f010301011001000161
+4d454c0021010039ff3001ffffffffffffffffffffffff0f01030101100100011e
+4d454c002101003aff3001ffffffffffffffffffffffff0f01030101100100011f
+4d454c002101003bff3001ffffffffffffffffffffffff0f01030101100100011c
+4d454c002101003cff3001ffffffffffffffffffffffff0f01030101100100011d
+4d454c002101003dff3001ffffffffffffffffffffffff0f01030101100100011a
+4d454c002101003eff3001ffffffffffffffffffffffff0f01030101100100011b
+4d454c002101003fff3001ffffffffffffffffffffffff0f010301011001000118
+4d454c0021010040ff3001ffffffffffffffffffffffff0f010301011001000119
+4d454c0021010041ff3001ffffffffffffffffffffffff0f010301011001000116
+4d454c0021010042ff3001ffffffffffffffffffffffff0f010301011001000117
+4d454c0021010043ff3001ffffffffffffffffffffffff0f010301011001000114
+4d454c0021010044ff3001ffffffffffffffffffffffff0f010301011001000115
+4d454c0021010045ff3001ffffffffffffffffffffffff0f010301011001000112
+4d454c0021010046ff3001ffffffffffffffffffffffff0f010301011001000113
+4d454c0021010047ff3001ffffffffffffffffffffffff0f010301011001000110
+4d454c0021010048ff3001ffffffffffffffffffffffff0f010301011001000111
+4d454c0021010049ff3001ffffffffffffffffffffffff0f01030101100100010e
+4d454c002101004aff3001ffffffffffffffffffffffff0f01030101100100010f
+4d454c002101004bff3001ffffffffffffffffffffffff0f01030101100100010c
+4d454c002101004cff3001ffffffffffffffffffffffff0f01030101100100010d
+4d454c002101004dff3001ffffffffffffffffffffffff0f01030101100100010a
+4d454c002101004eff3001ffffffffffffffffffffffff0f01030101100100010b
+4d454c002101004fff3001ffffffffffffffffffffffff0f010301011001000108
+4d454c0021010050ff3001ffffffffffffffffffffffff0f010301011001000109
+4d454c0021010051ff3001ffffffffffffffffffffffff0f010301011001000106
+4d454c0021010052ff3001ffffffffffffffffffffffff0f010301011001000107
+4d454c0021010053ff3001ffffffffffffffffffffffff0f010301011001000104
+4d454c0021010054ff3001ffffffffffffffffffffffff0f010301011001000105
+4d454c0021010055ff3001ffffffffffffffffffffffff0f010301011001000102
+4d454c0021010056ff3001ffffffffffffffffffffffff0f010301011001000103
+4d454c0021010057ff3001ffffffffffffffffffffffff0f010301011001000100
+4d454c0021010058ff3001ffffffffffffffffffffffff0f010301011001000101
+4d454c0021010059ff3001ffffffffffffffffffffffff0f01030101100100013e
+4d454c002101005aff3001ffffffffffffffffffffffff0f01030101100100013f
+4d454c002101005bff3001ffffffffffffffffffffffff0f01030101100100013c
+4d454c002101005cff3001ffffffffffffffffffffffff0f01030101100100013d
+4d454c002101005dff3001ffffffffffffffffffffffff0f01030101100100013a
+4d454c002101005eff3001ffffffffffffffffffffffff0f01030101100100013b
+4d454c002101005fff3001ffffffffffffffffffffffff0f010301011001000138
+4d454c0021010060ff3001ffffffffffffffffffffffff0f010301011001000139
+4d454c0021010061ff3001ffffffffffffffffffffffff0f010301011001000136
+4d454c0021010062ff3001ffffffffffffffffffffffff0f010301011001000137
+4d454c0021010063ff3001ffffffffffffffffffffffff0f010301011001000134
+4d454c0021010064ff3001ffffffffffffffffffffffff0f010301011001000135
+4d454c0021010065ff3001ffffffffffffffffffffffff0f010301011001000132
+4d454c0021010066ff3001ffffffffffffffffffffffff0f010301011001000133
+4d454c0021010067ff3001ffffffffffffffffffffffff0f010301011001000130
+4d454c0021010068ff3001ffffffffffffffffffffffff0f010301011001000131
+4d454c0021010069ff3001ffffffffffffffffffffffff0f01030101100100012e
+4d454c002101006aff3001ffffffffffffffffffffffff0f01030101100100012f
+4d454c002101006bff3001ffffffffffffffffffffffff0f01030101100100012c
+4d454c002101006cff3001ffffffffffffffffffffffff0f01030101100100012d
+4d454c002101006dff3001ffffffffffffffffffffffff0f01030101100100012a
+4d454c002101006eff3001ffffffffffffffffffffffff0f01030101100100012b
+4d454c002101006fff3001ffffffffffffffffffffffff0f010301011001000128
+4d454c0021010070ff3001ffffffffffffffffffffffff0f010301011001000129
+4d454c0021010071ff3001ffffffffffffffffffffffff0f010301011001000126
+4d454c0021010072ff3001ffffffffffffffffffffffff0f010301011001000127
+4d454c0021010073ff3001ffffffffffffffffffffffff0f010301011001000124
+4d454c0021010074ff3001ffffffffffffffffffffffff0f010301011001000125
+4d454c0021010075ff3001ffffffffffffffffffffffff0f010301011001000122
+4d454c0021010076ff3001ffffffffffffffffffffffff0f010301011001000123
+4d454c0021010077ff3001ffffffffffffffffffffffff0f010301011001000120
+4d454c0021010078ff3001ffffffffffffffffffffffff0f010301011001000121
+4d454c0021010079ff3001ffffffffffffffffffffffff0f0103010110010001de
+4d454c002101007aff3001ffffffffffffffffffffffff0f0103010110010001df
+4d454c002101007bff3001ffffffffffffffffffffffff0f0103010110010001dc
+4d454c002101007cff3001ffffffffffffffffffffffff0f0103010110010001dd
+4d454c002101007dff3001ffffffffffffffffffffffff0f0103010110010001da
+4d454c002101007eff3001ffffffffffffffffffffffff0f0103010110010001db
+4d454c002101007fff3001ffffffffffffffffffffffff0f0103010110010001d8
+4d454c0021010080ff3001ffffffffffffffffffffffff0f0103010110010001d9
+4d454c0021010081ff3001ffffffffffffffffffffffff0f0103010110010001d6
+4d454c0021010082ff3001ffffffffffffffffffffffff0f0103010110010001d7
+4d454c0021010083ff3001ffffffffffffffffffffffff0f0103010110010001d4
+4d454c0021010084ff3001ffffffffffffffffffffffff0f0103010110010001d5
+4d454c0021010085ff3001ffffffffffffffffffffffff0f0103010110010001d2
+4d454c0021010086ff3001ffffffffffffffffffffffff0f0103010110010001d3
+4d454c0021010087ff3001ffffffffffffffffffffffff0f0103010110010001d0
+4d454c0021010088ff3001ffffffffffffffffffffffff0f0103010110010001d1
+4d454c0021010089ff3001ffffffffffffffffffffffff0f0103010110010001ce
+4d454c002101008aff3001ffffffffffffffffffffffff0f0103010110010001cf
+4d454c002101008bff3001ffffffffffffffffffffffff0f0103010110010001cc
+4d454c002101008cff3001ffffffffffffffffffffffff0f0103010110010001cd
+4d454c002101008dff3001ffffffffffffffffffffffff0f0103010110010001ca
+4d454c002101008eff3001ffffffffffffffffffffffff0f0103010110010001cb
+4d454c002101008fff3001ffffffffffffffffffffffff0f0103010110010001c8
+4d454c0021010090ff3001ffffffffffffffffffffffff0f0103010110010001c9
+4d454c0021010091ff3001ffffffffffffffffffffffff0f0103010110010001c6
+4d454c0021010092ff3001ffffffffffffffffffffffff0f0103010110010001c7
+4d454c0021010093ff3001ffffffffffffffffffffffff0f0103010110010001c4
+4d454c0021010094ff3001ffffffffffffffffffffffff0f0103010110010001c5
+4d454c0021010095ff3001ffffffffffffffffffffffff0f0103010110010001c2
+4d454c0021010096ff3001ffffffffffffffffffffffff0f0103010110010001c3
+4d454c0021010097ff3001ffffffffffffffffffffffff0f0103010110010001c0
+4d454c0021010098ff3001ffffffffffffffffffffffff0f0103010110010001c1
+4d454c0021010099ff3001ffffffffffffffffffffffff0f0103010110010001fe
+4d454c002101009aff3001ffffffffffffffffffffffff0f0103010110010001ff
+4d454c002101009bff3001ffffffffffffffffffffffff0f0103010110010001fc
+4d454c002101009cff3001ffffffffffffffffffffffff0f0103010110010001fd
+4d454c002101009dff3001ffffffffffffffffffffffff0f0103010110010001fa
+4d454c002101009eff3001ffffffffffffffffffffffff0f0103010110010001fb
+4d454c002101009fff3001ffffffffffffffffffffffff0f0103010110010001f8
+4d454c00210100a0ff3001ffffffffffffffffffffffff0f0103010110010001f9
+4d454c00210100a1ff3001ffffffffffffffffffffffff0f0103010110010001f6
+4d454c00210100a2ff3001ffffffffffffffffffffffff0f0103010110010001f7
+4d454c00210100a3ff3001ffffffffffffffffffffffff0f0103010110010001f4
+4d454c00210100a4ff3001ffffffffffffffffffffffff0f0103010110010001f5
+4d454c00210100a5ff3001ffffffffffffffffffffffff0f0103010110010001f2
+4d454c00210100a6ff3001ffffffffffffffffffffffff0f0103010110010001f3
+4d454c00210100a7ff3001ffffffffffffffffffffffff0f0103010110010001f0
+4d454c00210100a8ff3001ffffffffffffffffffffffff0f0103010110010001f1
+4d454c00210100a9ff3001ffffffffffffffffffffffff0f0103010110010001ee
+4d454c00210100aaff3001ffffffffffffffffffffffff0f0103010110010001ef
+4d454c00210100abff3001ffffffffffffffffffffffff0f0103010110010001ec
+4d454c00210100acff3001ffffffffffffffffffffffff0f0103010110010001ed
+4d454c00210100adff3001ffffffffffffffffffffffff0f0103010110010001ea
+4d454c00210100aeff3001ffffffffffffffffffffffff0f0103010110010001eb
+4d454c00210100afff3001ffffffffffffffffffffffff0f0103010110010001e8
+4d454c00210100b0ff3001ffffffffffffffffffffffff0f0103010110010001e9
+4d454c00210100b1ff3001ffffffffffffffffffffffff0f0103010110010001e6
+4d454c00210100b2ff3001ffffffffffffffffffffffff0f0103010110010001e7
+4d454c00210100b3ff3001ffffffffffffffffffffffff0f0103010110010001e4
+4d454c00210100b4ff3001ffffffffffffffffffffffff0f0103010110010001e5
+4d454c00210100b5ff3001ffffffffffffffffffffffff0f0103010110010001e2
+4d454c00210100b6ff3001ffffffffffffffffffffffff0f0103010110010001e3
+4d454c00210100b7ff3001ffffffffffffffffffffffff0f0103010110010001e0
+4d454c00210100b8ff3001ffffffffffffffffffffffff0f0103010110010001e1
+4d454c00210100b9ff3001ffffffffffffffffffffffff0f01030101100100019e
+4d454c00210100baff3001ffffffffffffffffffffffff0f01030101100100019f
+4d454c00210100bbff3001ffffffffffffffffffffffff0f01030101100100019c
+4d454c00210100bcff3001ffffffffffffffffffffffff0f01030101100100019d
+4d454c00210100bdff3001ffffffffffffffffffffffff0f01030101100100019a
+4d454c00210100beff3001ffffffffffffffffffffffff0f01030101100100019b
+4d454c00210100bfff3001ffffffffffffffffffffffff0f010301011001000198
+4d454c00210100c0ff3001ffffffffffffffffffffffff0f010301011001000199
+4d454c00210100c1ff3001ffffffffffffffffffffffff0f010301011001000196
+4d454c00210100c2ff3001ffffffffffffffffffffffff0f010301011001000197
+4d454c00210100c3ff3001ffffffffffffffffffffffff0f010301011001000194
+4d454c00210100c4ff3001ffffffffffffffffffffffff0f010301011001000195
+4d454c00210100c5ff3001ffffffffffffffffffffffff0f010301011001000192
+4d454c00210100c6ff3001ffffffffffffffffffffffff0f010301011001000193
+4d454c00210100c7ff3001ffffffffffffffffffffffff0f010301011001000190
+4d454c00210100c8ff3001ffffffffffffffffffffffff0f010301011001000191
+4d454c00210100c9ff3001ffffffffffffffffffffffff0f01030101100100018e
+4d454c00210100caff3001ffffffffffffffffffffffff0f01030101100100018f
+4d454c00210100cbff3001ffffffffffffffffffffffff0f01030101100100018c
+4d454c00210100ccff3001ffffffffffffffffffffffff0f01030101100100018d
+4d454c00210100cdff3001ffffffffffffffffffffffff0f01030101100100018a
+4d454c00210100ceff3001ffffffffffffffffffffffff0f01030101100100018b
+4d454c00210100cfff3001ffffffffffffffffffffffff0f010301011001000188
+4d454c00210100d0ff3001ffffffffffffffffffffffff0f010301011001000189
+4d454c00210100d1ff3001ffffffffffffffffffffffff0f010301011001000186
+4d454c00210100d2ff3001ffffffffffffffffffffffff0f010301011001000187
+4d454c00210100d3ff3001ffffffffffffffffffffffff0f010301011001000184
+4d454c00210100d4ff3001ffffffffffffffffffffffff0f010301011001000185
+4d454c00210100d5ff3001ffffffffffffffffffffffff0f010301011001000182
+4d454c00210100d6ff3001ffffffffffffffffffffffff0f010301011001000183
+4d454c00210100d7ff3001ffffffffffffffffffffffff0f010301011001000180
+4d454c00210100d8ff3001ffffffffffffffffffffffff0f010301011001000181
+4d454c00210100d9ff3001ffffffffffffffffffffffff0f0103010110010001be
+4d454c00210100daff3001ffffffffffffffffffffffff0f0103010110010001bf
+4d454c00210100dbff3001ffffffffffffffffffffffff0f0103010110010001bc
+4d454c00210100dcff3001ffffffffffffffffffffffff0f0103010110010001bd
+4d454c00210100ddff3001ffffffffffffffffffffffff0f0103010110010001ba
+4d454c00210100deff3001ffffffffffffffffffffffff0f0103010110010001bb
+4d454c00210100dfff3001ffffffffffffffffffffffff0f0103010110010001b8
+4d454c00210100e0ff3001ffffffffffffffffffffffff0f0103010110010001b9
+4d454c00210100e1ff3001ffffffffffffffffffffffff0f0103010110010001b6
+4d454c00210100e2ff3001ffffffffffffffffffffffff0f0103010110010001b7
+4d454c00210100e3ff3001ffffffffffffffffffffffff0f0103010110010001b4
+4d454c00210100e4ff3001ffffffffffffffffffffffff0f0103010110010001b5
+4d454c00210100e5ff3001ffffffffffffffffffffffff0f0103010110010001b2
+4d454c00210100e6ff3001ffffffffffffffffffffffff0f0103010110010001b3
+4d454c00210100e7ff3001ffffffffffffffffffffffff0f0103010110010001b0
+4d454c00210100e8ff3001ffffffffffffffffffffffff0f0103010110010001b1
+4d454c00210100e9ff3001ffffffffffffffffffffffff0f0103010110010001ae
+4d454c00210100eaff3001ffffffffffffffffffffffff0f0103010110010001af
+4d454c00210100ebff3001ffffffffffffffffffffffff0f0103010110010001ac
+4d454c00210100ecff3001ffffffffffffffffffffffff0f0103010110010001ad
+4d454c00210100edff3001ffffffffffffffffffffffff0f0103010110010001aa
+4d454c00210100eeff3001ffffffffffffffffffffffff0f0103010110010001ab
+4d454c00210100efff3001ffffffffffffffffffffffff0f0103010110010001a8
+4d454c00210100f0ff3001ffffffffffffffffffffffff0f0103010110010001a9
+4d454c00210100f1ff3001ffffffffffffffffffffffff0f0103010110010001a6
+4d454c00210100f2ff3001ffffffffffffffffffffffff0f0103010110010001a7
+4d454c00210100f3ff3001ffffffffffffffffffffffff0f0103010110010001a4
+4d454c00210100f4ff3001ffffffffffffffffffffffff0f0103010110010001a5
+4d454c00210100f5ff3001ffffffffffffffffffffffff0f0103010110010001a2
+4d454c00210100f6ff3001ffffffffffffffffffffffff0f0103010110010001a3
+4d454c00210100f7ff3001ffffffffffffffffffffffff0f0103010110010001a0
+4d454c00210100f8ff3001ffffffffffffffffffffffff0f0103010110010001a1
+4d454c00210100f9ff3001ffffffffffffffffffffffff0f01030101100100005e
+4d454c00210100faff3001ffffffffffffffffffffffff0f01030101100100005f
+4d454c00210100fbff3001ffffffffffffffffffffffff0f01030101100100005c
+4d454c00210100fcff3001ffffffffffffffffffffffff0f01030101100100005d
+4d454c00210100fdff3001ffffffffffffffffffffffff0f01030101100100005a
+4d454c00210100feff3001ffffffffffffffffffffffff0f01030101100100005b
+4d454c00210100ffff3001ffffffffffffffffffffffff0f010301011001000058
diff --git a/research/bad-bruteforcing/grouped/melody15-repeat3-zone8-volume-increments.txt b/research/bad-bruteforcing/grouped/melody15-repeat3-zone8-volume-increments.txt
new file mode 100644
index 0000000..31f250f
--- /dev/null
+++ b/research/bad-bruteforcing/grouped/melody15-repeat3-zone8-volume-increments.txt
@@ -0,0 +1,7 @@
+4d454c0021010000ff300180000000000000000000000000010103010f010001f3
+4d454c0021010000ff300180000000000000000000000000010203010f010001f1
+4d454c0021010000ff300180000000000000000000000000010303010f010001f5
+4d454c0021010000ff300180000000000000000000000000010403010f010001f4
+4d454c0021010000ff300180000000000000000000000000010503010f010001f7
+4d454c0021010000ff300180000000000000000000000000010603010f010001f6
+4d454c0021010000ff300180000000000000000000000000010703010f010001c9 \ No newline at end of file
diff --git a/research/bad-bruteforcing/grouped/melody15-vol3-repeat2-zone16-sequecnce.txt b/research/bad-bruteforcing/grouped/melody15-vol3-repeat2-zone16-sequecnce.txt
new file mode 100644
index 0000000..b827051
--- /dev/null
+++ b/research/bad-bruteforcing/grouped/melody15-vol3-repeat2-zone16-sequecnce.txt
@@ -0,0 +1,256 @@
+4d454c0021010000ff300100800000000000000000000000010302010f010001f4
+4d454c0021010001ff300100800000000000000000000000010302010f010001fb
+4d454c0021010002ff300100800000000000000000000000010302010f010001fa
+4d454c0021010003ff300100800000000000000000000000010302010f010001f9
+4d454c0021010004ff300100800000000000000000000000010302010f010001f8
+4d454c0021010005ff300100800000000000000000000000010302010f010001ff
+4d454c0021010006ff300100800000000000000000000000010302010f010001fe
+4d454c0021010007ff300100800000000000000000000000010302010f010001fd
+4d454c0021010008ff300100800000000000000000000000010302010f010001fc
+4d454c0021010009ff300100800000000000000000000000010302010f010001e3
+4d454c002101000aff300100800000000000000000000000010302010f010001e2
+4d454c002101000bff300100800000000000000000000000010302010f010001e1
+4d454c002101000cff300100800000000000000000000000010302010f010001e0
+4d454c002101000dff300100800000000000000000000000010302010f010001e7
+4d454c002101000eff300100800000000000000000000000010302010f010001e6
+4d454c002101000fff300100800000000000000000000000010302010f010001e5
+4d454c0021010010ff300100800000000000000000000000010302010f010001e4
+4d454c0021010011ff300100800000000000000000000000010302010f010001eb
+4d454c0021010012ff300100800000000000000000000000010302010f010001ea
+4d454c0021010013ff300100800000000000000000000000010302010f010001e9
+4d454c0021010014ff300100800000000000000000000000010302010f010001e8
+4d454c0021010015ff300100800000000000000000000000010302010f010001ef
+4d454c0021010016ff300100800000000000000000000000010302010f010001ee
+4d454c0021010017ff300100800000000000000000000000010302010f010001ed
+4d454c0021010018ff300100800000000000000000000000010302010f010001ec
+4d454c0021010019ff300100800000000000000000000000010302010f010001d3
+4d454c002101001aff300100800000000000000000000000010302010f010001d2
+4d454c002101001bff300100800000000000000000000000010302010f010001d1
+4d454c002101001cff300100800000000000000000000000010302010f010001d0
+4d454c002101001dff300100800000000000000000000000010302010f010001d7
+4d454c002101001eff300100800000000000000000000000010302010f010001d6
+4d454c002101001fff300100800000000000000000000000010302010f010001d5
+4d454c0021010020ff300100800000000000000000000000010302010f010001d4
+4d454c0021010021ff300100800000000000000000000000010302010f010001db
+4d454c0021010022ff300100800000000000000000000000010302010f010001da
+4d454c0021010023ff300100800000000000000000000000010302010f010001d9
+4d454c0021010024ff300100800000000000000000000000010302010f010001d8
+4d454c0021010025ff300100800000000000000000000000010302010f010001df
+4d454c0021010026ff300100800000000000000000000000010302010f010001de
+4d454c0021010027ff300100800000000000000000000000010302010f010001dd
+4d454c0021010028ff300100800000000000000000000000010302010f010001dc
+4d454c0021010029ff300100800000000000000000000000010302010f010001c3
+4d454c002101002aff300100800000000000000000000000010302010f010001c2
+4d454c002101002bff300100800000000000000000000000010302010f010001c1
+4d454c002101002cff300100800000000000000000000000010302010f010001c0
+4d454c002101002dff300100800000000000000000000000010302010f010001c7
+4d454c002101002eff300100800000000000000000000000010302010f010001c6
+4d454c002101002fff300100800000000000000000000000010302010f010001c5
+4d454c0021010030ff300100800000000000000000000000010302010f010001c4
+4d454c0021010031ff300100800000000000000000000000010302010f010001cb
+4d454c0021010032ff300100800000000000000000000000010302010f010001ca
+4d454c0021010033ff300100800000000000000000000000010302010f010001c9
+4d454c0021010034ff300100800000000000000000000000010302010f010001c8
+4d454c0021010035ff300100800000000000000000000000010302010f010001cf
+4d454c0021010036ff300100800000000000000000000000010302010f010001ce
+4d454c0021010037ff300100800000000000000000000000010302010f010001cd
+4d454c0021010038ff300100800000000000000000000000010302010f010001cc
+4d454c0021010039ff300100800000000000000000000000010302010f010001b3
+4d454c002101003aff300100800000000000000000000000010302010f010001b2
+4d454c002101003bff300100800000000000000000000000010302010f010001b1
+4d454c002101003cff300100800000000000000000000000010302010f010001b0
+4d454c002101003dff300100800000000000000000000000010302010f010001b7
+4d454c002101003eff300100800000000000000000000000010302010f010001b6
+4d454c002101003fff300100800000000000000000000000010302010f010001b5
+4d454c0021010040ff300100800000000000000000000000010302010f010001b4
+4d454c0021010041ff300100800000000000000000000000010302010f010001bb
+4d454c0021010042ff300100800000000000000000000000010302010f010001ba
+4d454c0021010043ff300100800000000000000000000000010302010f010001b9
+4d454c0021010044ff300100800000000000000000000000010302010f010001b8
+4d454c0021010045ff300100800000000000000000000000010302010f010001bf
+4d454c0021010046ff300100800000000000000000000000010302010f010001be
+4d454c0021010047ff300100800000000000000000000000010302010f010001bd
+4d454c0021010048ff300100800000000000000000000000010302010f010001bc
+4d454c0021010049ff300100800000000000000000000000010302010f010001a3
+4d454c002101004aff300100800000000000000000000000010302010f010001a2
+4d454c002101004bff300100800000000000000000000000010302010f010001a1
+4d454c002101004cff300100800000000000000000000000010302010f010001a0
+4d454c002101004dff300100800000000000000000000000010302010f010001a7
+4d454c002101004eff300100800000000000000000000000010302010f010001a6
+4d454c002101004fff300100800000000000000000000000010302010f010001a5
+4d454c0021010050ff300100800000000000000000000000010302010f010001a4
+4d454c0021010051ff300100800000000000000000000000010302010f010001ab
+4d454c0021010052ff300100800000000000000000000000010302010f010001aa
+4d454c0021010053ff300100800000000000000000000000010302010f010001a9
+4d454c0021010054ff300100800000000000000000000000010302010f010001a8
+4d454c0021010055ff300100800000000000000000000000010302010f010001af
+4d454c0021010056ff300100800000000000000000000000010302010f010001ae
+4d454c0021010057ff300100800000000000000000000000010302010f010001ad
+4d454c0021010058ff300100800000000000000000000000010302010f010001ac
+4d454c0021010059ff300100800000000000000000000000010302010f01000193
+4d454c002101005aff300100800000000000000000000000010302010f01000192
+4d454c002101005bff300100800000000000000000000000010302010f01000191
+4d454c002101005cff300100800000000000000000000000010302010f01000190
+4d454c002101005dff300100800000000000000000000000010302010f01000197
+4d454c002101005eff300100800000000000000000000000010302010f01000196
+4d454c002101005fff300100800000000000000000000000010302010f01000195
+4d454c0021010060ff300100800000000000000000000000010302010f01000194
+4d454c0021010061ff300100800000000000000000000000010302010f0100019b
+4d454c0021010062ff300100800000000000000000000000010302010f0100019a
+4d454c0021010063ff300100800000000000000000000000010302010f01000199
+4d454c0021010064ff300100800000000000000000000000010302010f01000198
+4d454c0021010065ff300100800000000000000000000000010302010f0100019f
+4d454c0021010066ff300100800000000000000000000000010302010f0100019e
+4d454c0021010067ff300100800000000000000000000000010302010f0100019d
+4d454c0021010068ff300100800000000000000000000000010302010f0100019c
+4d454c0021010069ff300100800000000000000000000000010302010f01000183
+4d454c002101006aff300100800000000000000000000000010302010f01000182
+4d454c002101006bff300100800000000000000000000000010302010f01000181
+4d454c002101006cff300100800000000000000000000000010302010f01000180
+4d454c002101006dff300100800000000000000000000000010302010f01000187
+4d454c002101006eff300100800000000000000000000000010302010f01000186
+4d454c002101006fff300100800000000000000000000000010302010f01000185
+4d454c0021010070ff300100800000000000000000000000010302010f01000184
+4d454c0021010071ff300100800000000000000000000000010302010f0100018b
+4d454c0021010072ff300100800000000000000000000000010302010f0100018a
+4d454c0021010073ff300100800000000000000000000000010302010f01000189
+4d454c0021010074ff300100800000000000000000000000010302010f01000188
+4d454c0021010075ff300100800000000000000000000000010302010f0100018f
+4d454c0021010076ff300100800000000000000000000000010302010f0100018e
+4d454c0021010077ff300100800000000000000000000000010302010f0100018d
+4d454c0021010078ff300100800000000000000000000000010302010f0100018c
+4d454c0021010079ff300100800000000000000000000000010302010f01000173
+4d454c002101007aff300100800000000000000000000000010302010f01000172
+4d454c002101007bff300100800000000000000000000000010302010f01000171
+4d454c002101007cff300100800000000000000000000000010302010f01000170
+4d454c002101007dff300100800000000000000000000000010302010f01000177
+4d454c002101007eff300100800000000000000000000000010302010f01000176
+4d454c002101007fff300100800000000000000000000000010302010f01000175
+4d454c0021010080ff300100800000000000000000000000010302010f01000174
+4d454c0021010081ff300100800000000000000000000000010302010f0100017b
+4d454c0021010082ff300100800000000000000000000000010302010f0100017a
+4d454c0021010083ff300100800000000000000000000000010302010f01000179
+4d454c0021010084ff300100800000000000000000000000010302010f01000178
+4d454c0021010085ff300100800000000000000000000000010302010f0100017f
+4d454c0021010086ff300100800000000000000000000000010302010f0100017e
+4d454c0021010087ff300100800000000000000000000000010302010f0100017d
+4d454c0021010088ff300100800000000000000000000000010302010f0100017c
+4d454c0021010089ff300100800000000000000000000000010302010f01000163
+4d454c002101008aff300100800000000000000000000000010302010f01000162
+4d454c002101008bff300100800000000000000000000000010302010f01000161
+4d454c002101008cff300100800000000000000000000000010302010f01000160
+4d454c002101008dff300100800000000000000000000000010302010f01000167
+4d454c002101008eff300100800000000000000000000000010302010f01000166
+4d454c002101008fff300100800000000000000000000000010302010f01000165
+4d454c0021010090ff300100800000000000000000000000010302010f01000164
+4d454c0021010091ff300100800000000000000000000000010302010f0100016b
+4d454c0021010092ff300100800000000000000000000000010302010f0100016a
+4d454c0021010093ff300100800000000000000000000000010302010f01000169
+4d454c0021010094ff300100800000000000000000000000010302010f01000168
+4d454c0021010095ff300100800000000000000000000000010302010f0100016f
+4d454c0021010096ff300100800000000000000000000000010302010f0100016e
+4d454c0021010097ff300100800000000000000000000000010302010f0100016d
+4d454c0021010098ff300100800000000000000000000000010302010f0100016c
+4d454c0021010099ff300100800000000000000000000000010302010f01000153
+4d454c002101009aff300100800000000000000000000000010302010f01000152
+4d454c002101009bff300100800000000000000000000000010302010f01000151
+4d454c002101009cff300100800000000000000000000000010302010f01000150
+4d454c002101009dff300100800000000000000000000000010302010f01000157
+4d454c002101009eff300100800000000000000000000000010302010f01000156
+4d454c002101009fff300100800000000000000000000000010302010f01000155
+4d454c00210100a0ff300100800000000000000000000000010302010f01000154
+4d454c00210100a1ff300100800000000000000000000000010302010f0100015b
+4d454c00210100a2ff300100800000000000000000000000010302010f0100015a
+4d454c00210100a3ff300100800000000000000000000000010302010f01000159
+4d454c00210100a4ff300100800000000000000000000000010302010f01000158
+4d454c00210100a5ff300100800000000000000000000000010302010f0100015f
+4d454c00210100a6ff300100800000000000000000000000010302010f0100015e
+4d454c00210100a7ff300100800000000000000000000000010302010f0100015d
+4d454c00210100a8ff300100800000000000000000000000010302010f0100015c
+4d454c00210100a9ff300100800000000000000000000000010302010f01000143
+4d454c00210100aaff300100800000000000000000000000010302010f01000142
+4d454c00210100abff300100800000000000000000000000010302010f01000141
+4d454c00210100acff300100800000000000000000000000010302010f01000140
+4d454c00210100adff300100800000000000000000000000010302010f01000147
+4d454c00210100aeff300100800000000000000000000000010302010f01000146
+4d454c00210100afff300100800000000000000000000000010302010f01000145
+4d454c00210100b0ff300100800000000000000000000000010302010f01000144
+4d454c00210100b1ff300100800000000000000000000000010302010f0100014b
+4d454c00210100b2ff300100800000000000000000000000010302010f0100014a
+4d454c00210100b3ff300100800000000000000000000000010302010f01000149
+4d454c00210100b4ff300100800000000000000000000000010302010f01000148
+4d454c00210100b5ff300100800000000000000000000000010302010f0100014f
+4d454c00210100b6ff300100800000000000000000000000010302010f0100014e
+4d454c00210100b7ff300100800000000000000000000000010302010f0100014d
+4d454c00210100b8ff300100800000000000000000000000010302010f0100014c
+4d454c00210100b9ff300100800000000000000000000000010302010f01000133
+4d454c00210100baff300100800000000000000000000000010302010f01000132
+4d454c00210100bbff300100800000000000000000000000010302010f01000131
+4d454c00210100bcff300100800000000000000000000000010302010f01000130
+4d454c00210100bdff300100800000000000000000000000010302010f01000137
+4d454c00210100beff300100800000000000000000000000010302010f01000136
+4d454c00210100bfff300100800000000000000000000000010302010f01000135
+4d454c00210100c0ff300100800000000000000000000000010302010f01000134
+4d454c00210100c1ff300100800000000000000000000000010302010f0100013b
+4d454c00210100c2ff300100800000000000000000000000010302010f0100013a
+4d454c00210100c3ff300100800000000000000000000000010302010f01000139
+4d454c00210100c4ff300100800000000000000000000000010302010f01000138
+4d454c00210100c5ff300100800000000000000000000000010302010f0100013f
+4d454c00210100c6ff300100800000000000000000000000010302010f0100013e
+4d454c00210100c7ff300100800000000000000000000000010302010f0100013d
+4d454c00210100c8ff300100800000000000000000000000010302010f0100013c
+4d454c00210100c9ff300100800000000000000000000000010302010f01000123
+4d454c00210100caff300100800000000000000000000000010302010f01000122
+4d454c00210100cbff300100800000000000000000000000010302010f01000121
+4d454c00210100ccff300100800000000000000000000000010302010f01000120
+4d454c00210100cdff300100800000000000000000000000010302010f01000127
+4d454c00210100ceff300100800000000000000000000000010302010f01000126
+4d454c00210100cfff300100800000000000000000000000010302010f01000125
+4d454c00210100d0ff300100800000000000000000000000010302010f01000124
+4d454c00210100d1ff300100800000000000000000000000010302010f0100012b
+4d454c00210100d2ff300100800000000000000000000000010302010f0100012a
+4d454c00210100d3ff300100800000000000000000000000010302010f01000129
+4d454c00210100d4ff300100800000000000000000000000010302010f01000128
+4d454c00210100d5ff300100800000000000000000000000010302010f0100012f
+4d454c00210100d6ff300100800000000000000000000000010302010f0100012e
+4d454c00210100d7ff300100800000000000000000000000010302010f0100012d
+4d454c00210100d8ff300100800000000000000000000000010302010f0100012c
+4d454c00210100d9ff300100800000000000000000000000010302010f01000113
+4d454c00210100daff300100800000000000000000000000010302010f01000112
+4d454c00210100dbff300100800000000000000000000000010302010f01000111
+4d454c00210100dcff300100800000000000000000000000010302010f01000110
+4d454c00210100ddff300100800000000000000000000000010302010f01000117
+4d454c00210100deff300100800000000000000000000000010302010f01000116
+4d454c00210100dfff300100800000000000000000000000010302010f01000115
+4d454c00210100e0ff300100800000000000000000000000010302010f01000114
+4d454c00210100e1ff300100800000000000000000000000010302010f0100011b
+4d454c00210100e2ff300100800000000000000000000000010302010f0100011a
+4d454c00210100e3ff300100800000000000000000000000010302010f01000119
+4d454c00210100e4ff300100800000000000000000000000010302010f01000118
+4d454c00210100e5ff300100800000000000000000000000010302010f0100011f
+4d454c00210100e6ff300100800000000000000000000000010302010f0100011e
+4d454c00210100e7ff300100800000000000000000000000010302010f0100011d
+4d454c00210100e8ff300100800000000000000000000000010302010f0100011c
+4d454c00210100e9ff300100800000000000000000000000010302010f01000103
+4d454c00210100eaff300100800000000000000000000000010302010f01000102
+4d454c00210100ebff300100800000000000000000000000010302010f01000101
+4d454c00210100ecff300100800000000000000000000000010302010f01000100
+4d454c00210100edff300100800000000000000000000000010302010f01000107
+4d454c00210100eeff300100800000000000000000000000010302010f01000106
+4d454c00210100efff300100800000000000000000000000010302010f01000105
+4d454c00210100f0ff300100800000000000000000000000010302010f01000104
+4d454c00210100f1ff300100800000000000000000000000010302010f0100010b
+4d454c00210100f2ff300100800000000000000000000000010302010f0100010a
+4d454c00210100f3ff300100800000000000000000000000010302010f01000109
+4d454c00210100f4ff300100800000000000000000000000010302010f01000108
+4d454c00210100f5ff300100800000000000000000000000010302010f0100010f
+4d454c00210100f6ff300100800000000000000000000000010302010f0100010e
+4d454c00210100f7ff300100800000000000000000000000010302010f0100010d
+4d454c00210100f8ff300100800000000000000000000000010302010f0100010c
+4d454c00210100f9ff300100800000000000000000000000010302010f010000f3
+4d454c00210100faff300100800000000000000000000000010302010f010000f2
+4d454c00210100fbff300100800000000000000000000000010302010f010000f1
+4d454c00210100fcff300100800000000000000000000000010302010f010000f0
+4d454c00210100fdff300100800000000000000000000000010302010f010000f7
+4d454c00210100feff300100800000000000000000000000010302010f010000f6
+4d454c00210100ffff300100800000000000000000000000010302010f010000f5
diff --git a/research/bad-bruteforcing/grouped/melody15-vol3-repeat2-zone8-sequence.txt b/research/bad-bruteforcing/grouped/melody15-vol3-repeat2-zone8-sequence.txt
new file mode 100644
index 0000000..23e0ae4
--- /dev/null
+++ b/research/bad-bruteforcing/grouped/melody15-vol3-repeat2-zone8-sequence.txt
@@ -0,0 +1,256 @@
+4d454c0021010000ff300180000000000000000000000000010302010f010001f4
+4d454c0021010001ff300180000000000000000000000000010302010f010001fb
+4d454c0021010002ff300180000000000000000000000000010302010f010001fa
+4d454c0021010003ff300180000000000000000000000000010302010f010001f9
+4d454c0021010004ff300180000000000000000000000000010302010f010001f8
+4d454c0021010005ff300180000000000000000000000000010302010f010001ff
+4d454c0021010006ff300180000000000000000000000000010302010f010001fe
+4d454c0021010007ff300180000000000000000000000000010302010f010001fd
+4d454c0021010008ff300180000000000000000000000000010302010f010001fc
+4d454c0021010009ff300180000000000000000000000000010302010f010001e3
+4d454c002101000aff300180000000000000000000000000010302010f010001e2
+4d454c002101000bff300180000000000000000000000000010302010f010001e1
+4d454c002101000cff300180000000000000000000000000010302010f010001e0
+4d454c002101000dff300180000000000000000000000000010302010f010001e7
+4d454c002101000eff300180000000000000000000000000010302010f010001e6
+4d454c002101000fff300180000000000000000000000000010302010f010001e5
+4d454c0021010010ff300180000000000000000000000000010302010f010001e4
+4d454c0021010011ff300180000000000000000000000000010302010f010001eb
+4d454c0021010012ff300180000000000000000000000000010302010f010001ea
+4d454c0021010013ff300180000000000000000000000000010302010f010001e9
+4d454c0021010014ff300180000000000000000000000000010302010f010001e8
+4d454c0021010015ff300180000000000000000000000000010302010f010001ef
+4d454c0021010016ff300180000000000000000000000000010302010f010001ee
+4d454c0021010017ff300180000000000000000000000000010302010f010001ed
+4d454c0021010018ff300180000000000000000000000000010302010f010001ec
+4d454c0021010019ff300180000000000000000000000000010302010f010001d3
+4d454c002101001aff300180000000000000000000000000010302010f010001d2
+4d454c002101001bff300180000000000000000000000000010302010f010001d1
+4d454c002101001cff300180000000000000000000000000010302010f010001d0
+4d454c002101001dff300180000000000000000000000000010302010f010001d7
+4d454c002101001eff300180000000000000000000000000010302010f010001d6
+4d454c002101001fff300180000000000000000000000000010302010f010001d5
+4d454c0021010020ff300180000000000000000000000000010302010f010001d4
+4d454c0021010021ff300180000000000000000000000000010302010f010001db
+4d454c0021010022ff300180000000000000000000000000010302010f010001da
+4d454c0021010023ff300180000000000000000000000000010302010f010001d9
+4d454c0021010024ff300180000000000000000000000000010302010f010001d8
+4d454c0021010025ff300180000000000000000000000000010302010f010001df
+4d454c0021010026ff300180000000000000000000000000010302010f010001de
+4d454c0021010027ff300180000000000000000000000000010302010f010001dd
+4d454c0021010028ff300180000000000000000000000000010302010f010001dc
+4d454c0021010029ff300180000000000000000000000000010302010f010001c3
+4d454c002101002aff300180000000000000000000000000010302010f010001c2
+4d454c002101002bff300180000000000000000000000000010302010f010001c1
+4d454c002101002cff300180000000000000000000000000010302010f010001c0
+4d454c002101002dff300180000000000000000000000000010302010f010001c7
+4d454c002101002eff300180000000000000000000000000010302010f010001c6
+4d454c002101002fff300180000000000000000000000000010302010f010001c5
+4d454c0021010030ff300180000000000000000000000000010302010f010001c4
+4d454c0021010031ff300180000000000000000000000000010302010f010001cb
+4d454c0021010032ff300180000000000000000000000000010302010f010001ca
+4d454c0021010033ff300180000000000000000000000000010302010f010001c9
+4d454c0021010034ff300180000000000000000000000000010302010f010001c8
+4d454c0021010035ff300180000000000000000000000000010302010f010001cf
+4d454c0021010036ff300180000000000000000000000000010302010f010001ce
+4d454c0021010037ff300180000000000000000000000000010302010f010001cd
+4d454c0021010038ff300180000000000000000000000000010302010f010001cc
+4d454c0021010039ff300180000000000000000000000000010302010f010001b3
+4d454c002101003aff300180000000000000000000000000010302010f010001b2
+4d454c002101003bff300180000000000000000000000000010302010f010001b1
+4d454c002101003cff300180000000000000000000000000010302010f010001b0
+4d454c002101003dff300180000000000000000000000000010302010f010001b7
+4d454c002101003eff300180000000000000000000000000010302010f010001b6
+4d454c002101003fff300180000000000000000000000000010302010f010001b5
+4d454c0021010040ff300180000000000000000000000000010302010f010001b4
+4d454c0021010041ff300180000000000000000000000000010302010f010001bb
+4d454c0021010042ff300180000000000000000000000000010302010f010001ba
+4d454c0021010043ff300180000000000000000000000000010302010f010001b9
+4d454c0021010044ff300180000000000000000000000000010302010f010001b8
+4d454c0021010045ff300180000000000000000000000000010302010f010001bf
+4d454c0021010046ff300180000000000000000000000000010302010f010001be
+4d454c0021010047ff300180000000000000000000000000010302010f010001bd
+4d454c0021010048ff300180000000000000000000000000010302010f010001bc
+4d454c0021010049ff300180000000000000000000000000010302010f010001a3
+4d454c002101004aff300180000000000000000000000000010302010f010001a2
+4d454c002101004bff300180000000000000000000000000010302010f010001a1
+4d454c002101004cff300180000000000000000000000000010302010f010001a0
+4d454c002101004dff300180000000000000000000000000010302010f010001a7
+4d454c002101004eff300180000000000000000000000000010302010f010001a6
+4d454c002101004fff300180000000000000000000000000010302010f010001a5
+4d454c0021010050ff300180000000000000000000000000010302010f010001a4
+4d454c0021010051ff300180000000000000000000000000010302010f010001ab
+4d454c0021010052ff300180000000000000000000000000010302010f010001aa
+4d454c0021010053ff300180000000000000000000000000010302010f010001a9
+4d454c0021010054ff300180000000000000000000000000010302010f010001a8
+4d454c0021010055ff300180000000000000000000000000010302010f010001af
+4d454c0021010056ff300180000000000000000000000000010302010f010001ae
+4d454c0021010057ff300180000000000000000000000000010302010f010001ad
+4d454c0021010058ff300180000000000000000000000000010302010f010001ac
+4d454c0021010059ff300180000000000000000000000000010302010f01000193
+4d454c002101005aff300180000000000000000000000000010302010f01000192
+4d454c002101005bff300180000000000000000000000000010302010f01000191
+4d454c002101005cff300180000000000000000000000000010302010f01000190
+4d454c002101005dff300180000000000000000000000000010302010f01000197
+4d454c002101005eff300180000000000000000000000000010302010f01000196
+4d454c002101005fff300180000000000000000000000000010302010f01000195
+4d454c0021010060ff300180000000000000000000000000010302010f01000194
+4d454c0021010061ff300180000000000000000000000000010302010f0100019b
+4d454c0021010062ff300180000000000000000000000000010302010f0100019a
+4d454c0021010063ff300180000000000000000000000000010302010f01000199
+4d454c0021010064ff300180000000000000000000000000010302010f01000198
+4d454c0021010065ff300180000000000000000000000000010302010f0100019f
+4d454c0021010066ff300180000000000000000000000000010302010f0100019e
+4d454c0021010067ff300180000000000000000000000000010302010f0100019d
+4d454c0021010068ff300180000000000000000000000000010302010f0100019c
+4d454c0021010069ff300180000000000000000000000000010302010f01000183
+4d454c002101006aff300180000000000000000000000000010302010f01000182
+4d454c002101006bff300180000000000000000000000000010302010f01000181
+4d454c002101006cff300180000000000000000000000000010302010f01000180
+4d454c002101006dff300180000000000000000000000000010302010f01000187
+4d454c002101006eff300180000000000000000000000000010302010f01000186
+4d454c002101006fff300180000000000000000000000000010302010f01000185
+4d454c0021010070ff300180000000000000000000000000010302010f01000184
+4d454c0021010071ff300180000000000000000000000000010302010f0100018b
+4d454c0021010072ff300180000000000000000000000000010302010f0100018a
+4d454c0021010073ff300180000000000000000000000000010302010f01000189
+4d454c0021010074ff300180000000000000000000000000010302010f01000188
+4d454c0021010075ff300180000000000000000000000000010302010f0100018f
+4d454c0021010076ff300180000000000000000000000000010302010f0100018e
+4d454c0021010077ff300180000000000000000000000000010302010f0100018d
+4d454c0021010078ff300180000000000000000000000000010302010f0100018c
+4d454c0021010079ff300180000000000000000000000000010302010f01000173
+4d454c002101007aff300180000000000000000000000000010302010f01000172
+4d454c002101007bff300180000000000000000000000000010302010f01000171
+4d454c002101007cff300180000000000000000000000000010302010f01000170
+4d454c002101007dff300180000000000000000000000000010302010f01000177
+4d454c002101007eff300180000000000000000000000000010302010f01000176
+4d454c002101007fff300180000000000000000000000000010302010f01000175
+4d454c0021010080ff300180000000000000000000000000010302010f01000174
+4d454c0021010081ff300180000000000000000000000000010302010f0100017b
+4d454c0021010082ff300180000000000000000000000000010302010f0100017a
+4d454c0021010083ff300180000000000000000000000000010302010f01000179
+4d454c0021010084ff300180000000000000000000000000010302010f01000178
+4d454c0021010085ff300180000000000000000000000000010302010f0100017f
+4d454c0021010086ff300180000000000000000000000000010302010f0100017e
+4d454c0021010087ff300180000000000000000000000000010302010f0100017d
+4d454c0021010088ff300180000000000000000000000000010302010f0100017c
+4d454c0021010089ff300180000000000000000000000000010302010f01000163
+4d454c002101008aff300180000000000000000000000000010302010f01000162
+4d454c002101008bff300180000000000000000000000000010302010f01000161
+4d454c002101008cff300180000000000000000000000000010302010f01000160
+4d454c002101008dff300180000000000000000000000000010302010f01000167
+4d454c002101008eff300180000000000000000000000000010302010f01000166
+4d454c002101008fff300180000000000000000000000000010302010f01000165
+4d454c0021010090ff300180000000000000000000000000010302010f01000164
+4d454c0021010091ff300180000000000000000000000000010302010f0100016b
+4d454c0021010092ff300180000000000000000000000000010302010f0100016a
+4d454c0021010093ff300180000000000000000000000000010302010f01000169
+4d454c0021010094ff300180000000000000000000000000010302010f01000168
+4d454c0021010095ff300180000000000000000000000000010302010f0100016f
+4d454c0021010096ff300180000000000000000000000000010302010f0100016e
+4d454c0021010097ff300180000000000000000000000000010302010f0100016d
+4d454c0021010098ff300180000000000000000000000000010302010f0100016c
+4d454c0021010099ff300180000000000000000000000000010302010f01000153
+4d454c002101009aff300180000000000000000000000000010302010f01000152
+4d454c002101009bff300180000000000000000000000000010302010f01000151
+4d454c002101009cff300180000000000000000000000000010302010f01000150
+4d454c002101009dff300180000000000000000000000000010302010f01000157
+4d454c002101009eff300180000000000000000000000000010302010f01000156
+4d454c002101009fff300180000000000000000000000000010302010f01000155
+4d454c00210100a0ff300180000000000000000000000000010302010f01000154
+4d454c00210100a1ff300180000000000000000000000000010302010f0100015b
+4d454c00210100a2ff300180000000000000000000000000010302010f0100015a
+4d454c00210100a3ff300180000000000000000000000000010302010f01000159
+4d454c00210100a4ff300180000000000000000000000000010302010f01000158
+4d454c00210100a5ff300180000000000000000000000000010302010f0100015f
+4d454c00210100a6ff300180000000000000000000000000010302010f0100015e
+4d454c00210100a7ff300180000000000000000000000000010302010f0100015d
+4d454c00210100a8ff300180000000000000000000000000010302010f0100015c
+4d454c00210100a9ff300180000000000000000000000000010302010f01000143
+4d454c00210100aaff300180000000000000000000000000010302010f01000142
+4d454c00210100abff300180000000000000000000000000010302010f01000141
+4d454c00210100acff300180000000000000000000000000010302010f01000140
+4d454c00210100adff300180000000000000000000000000010302010f01000147
+4d454c00210100aeff300180000000000000000000000000010302010f01000146
+4d454c00210100afff300180000000000000000000000000010302010f01000145
+4d454c00210100b0ff300180000000000000000000000000010302010f01000144
+4d454c00210100b1ff300180000000000000000000000000010302010f0100014b
+4d454c00210100b2ff300180000000000000000000000000010302010f0100014a
+4d454c00210100b3ff300180000000000000000000000000010302010f01000149
+4d454c00210100b4ff300180000000000000000000000000010302010f01000148
+4d454c00210100b5ff300180000000000000000000000000010302010f0100014f
+4d454c00210100b6ff300180000000000000000000000000010302010f0100014e
+4d454c00210100b7ff300180000000000000000000000000010302010f0100014d
+4d454c00210100b8ff300180000000000000000000000000010302010f0100014c
+4d454c00210100b9ff300180000000000000000000000000010302010f01000133
+4d454c00210100baff300180000000000000000000000000010302010f01000132
+4d454c00210100bbff300180000000000000000000000000010302010f01000131
+4d454c00210100bcff300180000000000000000000000000010302010f01000130
+4d454c00210100bdff300180000000000000000000000000010302010f01000137
+4d454c00210100beff300180000000000000000000000000010302010f01000136
+4d454c00210100bfff300180000000000000000000000000010302010f01000135
+4d454c00210100c0ff300180000000000000000000000000010302010f01000134
+4d454c00210100c1ff300180000000000000000000000000010302010f0100013b
+4d454c00210100c2ff300180000000000000000000000000010302010f0100013a
+4d454c00210100c3ff300180000000000000000000000000010302010f01000139
+4d454c00210100c4ff300180000000000000000000000000010302010f01000138
+4d454c00210100c5ff300180000000000000000000000000010302010f0100013f
+4d454c00210100c6ff300180000000000000000000000000010302010f0100013e
+4d454c00210100c7ff300180000000000000000000000000010302010f0100013d
+4d454c00210100c8ff300180000000000000000000000000010302010f0100013c
+4d454c00210100c9ff300180000000000000000000000000010302010f01000123
+4d454c00210100caff300180000000000000000000000000010302010f01000122
+4d454c00210100cbff300180000000000000000000000000010302010f01000121
+4d454c00210100ccff300180000000000000000000000000010302010f01000120
+4d454c00210100cdff300180000000000000000000000000010302010f01000127
+4d454c00210100ceff300180000000000000000000000000010302010f01000126
+4d454c00210100cfff300180000000000000000000000000010302010f01000125
+4d454c00210100d0ff300180000000000000000000000000010302010f01000124
+4d454c00210100d1ff300180000000000000000000000000010302010f0100012b
+4d454c00210100d2ff300180000000000000000000000000010302010f0100012a
+4d454c00210100d3ff300180000000000000000000000000010302010f01000129
+4d454c00210100d4ff300180000000000000000000000000010302010f01000128
+4d454c00210100d5ff300180000000000000000000000000010302010f0100012f
+4d454c00210100d6ff300180000000000000000000000000010302010f0100012e
+4d454c00210100d7ff300180000000000000000000000000010302010f0100012d
+4d454c00210100d8ff300180000000000000000000000000010302010f0100012c
+4d454c00210100d9ff300180000000000000000000000000010302010f01000113
+4d454c00210100daff300180000000000000000000000000010302010f01000112
+4d454c00210100dbff300180000000000000000000000000010302010f01000111
+4d454c00210100dcff300180000000000000000000000000010302010f01000110
+4d454c00210100ddff300180000000000000000000000000010302010f01000117
+4d454c00210100deff300180000000000000000000000000010302010f01000116
+4d454c00210100dfff300180000000000000000000000000010302010f01000115
+4d454c00210100e0ff300180000000000000000000000000010302010f01000114
+4d454c00210100e1ff300180000000000000000000000000010302010f0100011b
+4d454c00210100e2ff300180000000000000000000000000010302010f0100011a
+4d454c00210100e3ff300180000000000000000000000000010302010f01000119
+4d454c00210100e4ff300180000000000000000000000000010302010f01000118
+4d454c00210100e5ff300180000000000000000000000000010302010f0100011f
+4d454c00210100e6ff300180000000000000000000000000010302010f0100011e
+4d454c00210100e7ff300180000000000000000000000000010302010f0100011d
+4d454c00210100e8ff300180000000000000000000000000010302010f0100011c
+4d454c00210100e9ff300180000000000000000000000000010302010f01000103
+4d454c00210100eaff300180000000000000000000000000010302010f01000102
+4d454c00210100ebff300180000000000000000000000000010302010f01000101
+4d454c00210100ecff300180000000000000000000000000010302010f01000100
+4d454c00210100edff300180000000000000000000000000010302010f01000107
+4d454c00210100eeff300180000000000000000000000000010302010f01000106
+4d454c00210100efff300180000000000000000000000000010302010f01000105
+4d454c00210100f0ff300180000000000000000000000000010302010f01000104
+4d454c00210100f1ff300180000000000000000000000000010302010f0100010b
+4d454c00210100f2ff300180000000000000000000000000010302010f0100010a
+4d454c00210100f3ff300180000000000000000000000000010302010f01000109
+4d454c00210100f4ff300180000000000000000000000000010302010f01000108
+4d454c00210100f5ff300180000000000000000000000000010302010f0100010f
+4d454c00210100f6ff300180000000000000000000000000010302010f0100010e
+4d454c00210100f7ff300180000000000000000000000000010302010f0100010d
+4d454c00210100f8ff300180000000000000000000000000010302010f0100010c
+4d454c00210100f9ff300180000000000000000000000000010302010f010000f3
+4d454c00210100faff300180000000000000000000000000010302010f010000f2
+4d454c00210100fbff300180000000000000000000000000010302010f010000f1
+4d454c00210100fcff300180000000000000000000000000010302010f010000f0
+4d454c00210100fdff300180000000000000000000000000010302010f010000f7
+4d454c00210100feff300180000000000000000000000000010302010f010000f6
+4d454c00210100ffff300180000000000000000000000000010302010f010000f5
diff --git a/research/bad-bruteforcing/grouped/melody15-vol3-zone8-repeat-increments.txt b/research/bad-bruteforcing/grouped/melody15-vol3-zone8-repeat-increments.txt
new file mode 100644
index 0000000..7003038
--- /dev/null
+++ b/research/bad-bruteforcing/grouped/melody15-vol3-zone8-repeat-increments.txt
@@ -0,0 +1,5 @@
+4d454c0021010000ff300180000000000000000000000000010301010f010001f3
+4d454c0021010000ff300180000000000000000000000000010302010f010001f4
+4d454c0021010000ff300180000000000000000000000000010303010f010001f5
+4d454c0021010000ff300180000000000000000000000000010304010f010001f6
+4d454c0021010000ff300180000000000000000000000000010305010f010001f7 \ No newline at end of file
diff --git a/research/bad-bruteforcing/grouped/melody16-vol3-repeat2-zone-all-sequence.txt b/research/bad-bruteforcing/grouped/melody16-vol3-repeat2-zone-all-sequence.txt
new file mode 100644
index 0000000..b303072
--- /dev/null
+++ b/research/bad-bruteforcing/grouped/melody16-vol3-repeat2-zone-all-sequence.txt
@@ -0,0 +1,256 @@
+4d454c0021010000ff3001ffffffffffffffffffffffff0f01030201100100015e
+4d454c0021010001ff3001ffffffffffffffffffffffff0f010302011001000151
+4d454c0021010002ff3001ffffffffffffffffffffffff0f010302011001000150
+4d454c0021010003ff3001ffffffffffffffffffffffff0f010302011001000153
+4d454c0021010004ff3001ffffffffffffffffffffffff0f010302011001000152
+4d454c0021010005ff3001ffffffffffffffffffffffff0f010302011001000155
+4d454c0021010006ff3001ffffffffffffffffffffffff0f010302011001000154
+4d454c0021010007ff3001ffffffffffffffffffffffff0f010302011001000157
+4d454c0021010008ff3001ffffffffffffffffffffffff0f010302011001000156
+4d454c0021010009ff3001ffffffffffffffffffffffff0f010302011001000149
+4d454c002101000aff3001ffffffffffffffffffffffff0f010302011001000148
+4d454c002101000bff3001ffffffffffffffffffffffff0f01030201100100014b
+4d454c002101000cff3001ffffffffffffffffffffffff0f01030201100100014a
+4d454c002101000dff3001ffffffffffffffffffffffff0f01030201100100014d
+4d454c002101000eff3001ffffffffffffffffffffffff0f01030201100100014c
+4d454c002101000fff3001ffffffffffffffffffffffff0f01030201100100014f
+4d454c0021010010ff3001ffffffffffffffffffffffff0f01030201100100014e
+4d454c0021010011ff3001ffffffffffffffffffffffff0f010302011001000141
+4d454c0021010012ff3001ffffffffffffffffffffffff0f010302011001000140
+4d454c0021010013ff3001ffffffffffffffffffffffff0f010302011001000143
+4d454c0021010014ff3001ffffffffffffffffffffffff0f010302011001000142
+4d454c0021010015ff3001ffffffffffffffffffffffff0f010302011001000145
+4d454c0021010016ff3001ffffffffffffffffffffffff0f010302011001000144
+4d454c0021010017ff3001ffffffffffffffffffffffff0f010302011001000147
+4d454c0021010018ff3001ffffffffffffffffffffffff0f010302011001000146
+4d454c0021010019ff3001ffffffffffffffffffffffff0f010302011001000179
+4d454c002101001aff3001ffffffffffffffffffffffff0f010302011001000178
+4d454c002101001bff3001ffffffffffffffffffffffff0f01030201100100017b
+4d454c002101001cff3001ffffffffffffffffffffffff0f01030201100100017a
+4d454c002101001dff3001ffffffffffffffffffffffff0f01030201100100017d
+4d454c002101001eff3001ffffffffffffffffffffffff0f01030201100100017c
+4d454c002101001fff3001ffffffffffffffffffffffff0f01030201100100017f
+4d454c0021010020ff3001ffffffffffffffffffffffff0f01030201100100017e
+4d454c0021010021ff3001ffffffffffffffffffffffff0f010302011001000171
+4d454c0021010022ff3001ffffffffffffffffffffffff0f010302011001000170
+4d454c0021010023ff3001ffffffffffffffffffffffff0f010302011001000173
+4d454c0021010024ff3001ffffffffffffffffffffffff0f010302011001000172
+4d454c0021010025ff3001ffffffffffffffffffffffff0f010302011001000175
+4d454c0021010026ff3001ffffffffffffffffffffffff0f010302011001000174
+4d454c0021010027ff3001ffffffffffffffffffffffff0f010302011001000177
+4d454c0021010028ff3001ffffffffffffffffffffffff0f010302011001000176
+4d454c0021010029ff3001ffffffffffffffffffffffff0f010302011001000169
+4d454c002101002aff3001ffffffffffffffffffffffff0f010302011001000168
+4d454c002101002bff3001ffffffffffffffffffffffff0f01030201100100016b
+4d454c002101002cff3001ffffffffffffffffffffffff0f01030201100100016a
+4d454c002101002dff3001ffffffffffffffffffffffff0f01030201100100016d
+4d454c002101002eff3001ffffffffffffffffffffffff0f01030201100100016c
+4d454c002101002fff3001ffffffffffffffffffffffff0f01030201100100016f
+4d454c0021010030ff3001ffffffffffffffffffffffff0f01030201100100016e
+4d454c0021010031ff3001ffffffffffffffffffffffff0f010302011001000161
+4d454c0021010032ff3001ffffffffffffffffffffffff0f010302011001000160
+4d454c0021010033ff3001ffffffffffffffffffffffff0f010302011001000163
+4d454c0021010034ff3001ffffffffffffffffffffffff0f010302011001000162
+4d454c0021010035ff3001ffffffffffffffffffffffff0f010302011001000165
+4d454c0021010036ff3001ffffffffffffffffffffffff0f010302011001000164
+4d454c0021010037ff3001ffffffffffffffffffffffff0f010302011001000167
+4d454c0021010038ff3001ffffffffffffffffffffffff0f010302011001000166
+4d454c0021010039ff3001ffffffffffffffffffffffff0f010302011001000119
+4d454c002101003aff3001ffffffffffffffffffffffff0f010302011001000118
+4d454c002101003bff3001ffffffffffffffffffffffff0f01030201100100011b
+4d454c002101003cff3001ffffffffffffffffffffffff0f01030201100100011a
+4d454c002101003dff3001ffffffffffffffffffffffff0f01030201100100011d
+4d454c002101003eff3001ffffffffffffffffffffffff0f01030201100100011c
+4d454c002101003fff3001ffffffffffffffffffffffff0f01030201100100011f
+4d454c0021010040ff3001ffffffffffffffffffffffff0f01030201100100011e
+4d454c0021010041ff3001ffffffffffffffffffffffff0f010302011001000111
+4d454c0021010042ff3001ffffffffffffffffffffffff0f010302011001000110
+4d454c0021010043ff3001ffffffffffffffffffffffff0f010302011001000113
+4d454c0021010044ff3001ffffffffffffffffffffffff0f010302011001000112
+4d454c0021010045ff3001ffffffffffffffffffffffff0f010302011001000115
+4d454c0021010046ff3001ffffffffffffffffffffffff0f010302011001000114
+4d454c0021010047ff3001ffffffffffffffffffffffff0f010302011001000117
+4d454c0021010048ff3001ffffffffffffffffffffffff0f010302011001000116
+4d454c0021010049ff3001ffffffffffffffffffffffff0f010302011001000109
+4d454c002101004aff3001ffffffffffffffffffffffff0f010302011001000108
+4d454c002101004bff3001ffffffffffffffffffffffff0f01030201100100010b
+4d454c002101004cff3001ffffffffffffffffffffffff0f01030201100100010a
+4d454c002101004dff3001ffffffffffffffffffffffff0f01030201100100010d
+4d454c002101004eff3001ffffffffffffffffffffffff0f01030201100100010c
+4d454c002101004fff3001ffffffffffffffffffffffff0f01030201100100010f
+4d454c0021010050ff3001ffffffffffffffffffffffff0f01030201100100010e
+4d454c0021010051ff3001ffffffffffffffffffffffff0f010302011001000101
+4d454c0021010052ff3001ffffffffffffffffffffffff0f010302011001000100
+4d454c0021010053ff3001ffffffffffffffffffffffff0f010302011001000103
+4d454c0021010054ff3001ffffffffffffffffffffffff0f010302011001000102
+4d454c0021010055ff3001ffffffffffffffffffffffff0f010302011001000105
+4d454c0021010056ff3001ffffffffffffffffffffffff0f010302011001000104
+4d454c0021010057ff3001ffffffffffffffffffffffff0f010302011001000107
+4d454c0021010058ff3001ffffffffffffffffffffffff0f010302011001000106
+4d454c0021010059ff3001ffffffffffffffffffffffff0f010302011001000139
+4d454c002101005aff3001ffffffffffffffffffffffff0f010302011001000138
+4d454c002101005bff3001ffffffffffffffffffffffff0f01030201100100013b
+4d454c002101005cff3001ffffffffffffffffffffffff0f01030201100100013a
+4d454c002101005dff3001ffffffffffffffffffffffff0f01030201100100013d
+4d454c002101005eff3001ffffffffffffffffffffffff0f01030201100100013c
+4d454c002101005fff3001ffffffffffffffffffffffff0f01030201100100013f
+4d454c0021010060ff3001ffffffffffffffffffffffff0f01030201100100013e
+4d454c0021010061ff3001ffffffffffffffffffffffff0f010302011001000131
+4d454c0021010062ff3001ffffffffffffffffffffffff0f010302011001000130
+4d454c0021010063ff3001ffffffffffffffffffffffff0f010302011001000133
+4d454c0021010064ff3001ffffffffffffffffffffffff0f010302011001000132
+4d454c0021010065ff3001ffffffffffffffffffffffff0f010302011001000135
+4d454c0021010066ff3001ffffffffffffffffffffffff0f010302011001000134
+4d454c0021010067ff3001ffffffffffffffffffffffff0f010302011001000137
+4d454c0021010068ff3001ffffffffffffffffffffffff0f010302011001000136
+4d454c0021010069ff3001ffffffffffffffffffffffff0f010302011001000129
+4d454c002101006aff3001ffffffffffffffffffffffff0f010302011001000128
+4d454c002101006bff3001ffffffffffffffffffffffff0f01030201100100012b
+4d454c002101006cff3001ffffffffffffffffffffffff0f01030201100100012a
+4d454c002101006dff3001ffffffffffffffffffffffff0f01030201100100012d
+4d454c002101006eff3001ffffffffffffffffffffffff0f01030201100100012c
+4d454c002101006fff3001ffffffffffffffffffffffff0f01030201100100012f
+4d454c0021010070ff3001ffffffffffffffffffffffff0f01030201100100012e
+4d454c0021010071ff3001ffffffffffffffffffffffff0f010302011001000121
+4d454c0021010072ff3001ffffffffffffffffffffffff0f010302011001000120
+4d454c0021010073ff3001ffffffffffffffffffffffff0f010302011001000123
+4d454c0021010074ff3001ffffffffffffffffffffffff0f010302011001000122
+4d454c0021010075ff3001ffffffffffffffffffffffff0f010302011001000125
+4d454c0021010076ff3001ffffffffffffffffffffffff0f010302011001000124
+4d454c0021010077ff3001ffffffffffffffffffffffff0f010302011001000127
+4d454c0021010078ff3001ffffffffffffffffffffffff0f010302011001000126
+4d454c0021010079ff3001ffffffffffffffffffffffff0f0103020110010001d9
+4d454c002101007aff3001ffffffffffffffffffffffff0f0103020110010001d8
+4d454c002101007bff3001ffffffffffffffffffffffff0f0103020110010001db
+4d454c002101007cff3001ffffffffffffffffffffffff0f0103020110010001da
+4d454c002101007dff3001ffffffffffffffffffffffff0f0103020110010001dd
+4d454c002101007eff3001ffffffffffffffffffffffff0f0103020110010001dc
+4d454c002101007fff3001ffffffffffffffffffffffff0f0103020110010001df
+4d454c0021010080ff3001ffffffffffffffffffffffff0f0103020110010001de
+4d454c0021010081ff3001ffffffffffffffffffffffff0f0103020110010001d1
+4d454c0021010082ff3001ffffffffffffffffffffffff0f0103020110010001d0
+4d454c0021010083ff3001ffffffffffffffffffffffff0f0103020110010001d3
+4d454c0021010084ff3001ffffffffffffffffffffffff0f0103020110010001d2
+4d454c0021010085ff3001ffffffffffffffffffffffff0f0103020110010001d5
+4d454c0021010086ff3001ffffffffffffffffffffffff0f0103020110010001d4
+4d454c0021010087ff3001ffffffffffffffffffffffff0f0103020110010001d7
+4d454c0021010088ff3001ffffffffffffffffffffffff0f0103020110010001d6
+4d454c0021010089ff3001ffffffffffffffffffffffff0f0103020110010001c9
+4d454c002101008aff3001ffffffffffffffffffffffff0f0103020110010001c8
+4d454c002101008bff3001ffffffffffffffffffffffff0f0103020110010001cb
+4d454c002101008cff3001ffffffffffffffffffffffff0f0103020110010001ca
+4d454c002101008dff3001ffffffffffffffffffffffff0f0103020110010001cd
+4d454c002101008eff3001ffffffffffffffffffffffff0f0103020110010001cc
+4d454c002101008fff3001ffffffffffffffffffffffff0f0103020110010001cf
+4d454c0021010090ff3001ffffffffffffffffffffffff0f0103020110010001ce
+4d454c0021010091ff3001ffffffffffffffffffffffff0f0103020110010001c1
+4d454c0021010092ff3001ffffffffffffffffffffffff0f0103020110010001c0
+4d454c0021010093ff3001ffffffffffffffffffffffff0f0103020110010001c3
+4d454c0021010094ff3001ffffffffffffffffffffffff0f0103020110010001c2
+4d454c0021010095ff3001ffffffffffffffffffffffff0f0103020110010001c5
+4d454c0021010096ff3001ffffffffffffffffffffffff0f0103020110010001c4
+4d454c0021010097ff3001ffffffffffffffffffffffff0f0103020110010001c7
+4d454c0021010098ff3001ffffffffffffffffffffffff0f0103020110010001c6
+4d454c0021010099ff3001ffffffffffffffffffffffff0f0103020110010001f9
+4d454c002101009aff3001ffffffffffffffffffffffff0f0103020110010001f8
+4d454c002101009bff3001ffffffffffffffffffffffff0f0103020110010001fb
+4d454c002101009cff3001ffffffffffffffffffffffff0f0103020110010001fa
+4d454c002101009dff3001ffffffffffffffffffffffff0f0103020110010001fd
+4d454c002101009eff3001ffffffffffffffffffffffff0f0103020110010001fc
+4d454c002101009fff3001ffffffffffffffffffffffff0f0103020110010001ff
+4d454c00210100a0ff3001ffffffffffffffffffffffff0f0103020110010001fe
+4d454c00210100a1ff3001ffffffffffffffffffffffff0f0103020110010001f1
+4d454c00210100a2ff3001ffffffffffffffffffffffff0f0103020110010001f0
+4d454c00210100a3ff3001ffffffffffffffffffffffff0f0103020110010001f3
+4d454c00210100a4ff3001ffffffffffffffffffffffff0f0103020110010001f2
+4d454c00210100a5ff3001ffffffffffffffffffffffff0f0103020110010001f5
+4d454c00210100a6ff3001ffffffffffffffffffffffff0f0103020110010001f4
+4d454c00210100a7ff3001ffffffffffffffffffffffff0f0103020110010001f7
+4d454c00210100a8ff3001ffffffffffffffffffffffff0f0103020110010001f6
+4d454c00210100a9ff3001ffffffffffffffffffffffff0f0103020110010001e9
+4d454c00210100aaff3001ffffffffffffffffffffffff0f0103020110010001e8
+4d454c00210100abff3001ffffffffffffffffffffffff0f0103020110010001eb
+4d454c00210100acff3001ffffffffffffffffffffffff0f0103020110010001ea
+4d454c00210100adff3001ffffffffffffffffffffffff0f0103020110010001ed
+4d454c00210100aeff3001ffffffffffffffffffffffff0f0103020110010001ec
+4d454c00210100afff3001ffffffffffffffffffffffff0f0103020110010001ef
+4d454c00210100b0ff3001ffffffffffffffffffffffff0f0103020110010001ee
+4d454c00210100b1ff3001ffffffffffffffffffffffff0f0103020110010001e1
+4d454c00210100b2ff3001ffffffffffffffffffffffff0f0103020110010001e0
+4d454c00210100b3ff3001ffffffffffffffffffffffff0f0103020110010001e3
+4d454c00210100b4ff3001ffffffffffffffffffffffff0f0103020110010001e2
+4d454c00210100b5ff3001ffffffffffffffffffffffff0f0103020110010001e5
+4d454c00210100b6ff3001ffffffffffffffffffffffff0f0103020110010001e4
+4d454c00210100b7ff3001ffffffffffffffffffffffff0f0103020110010001e7
+4d454c00210100b8ff3001ffffffffffffffffffffffff0f0103020110010001e6
+4d454c00210100b9ff3001ffffffffffffffffffffffff0f010302011001000199
+4d454c00210100baff3001ffffffffffffffffffffffff0f010302011001000198
+4d454c00210100bbff3001ffffffffffffffffffffffff0f01030201100100019b
+4d454c00210100bcff3001ffffffffffffffffffffffff0f01030201100100019a
+4d454c00210100bdff3001ffffffffffffffffffffffff0f01030201100100019d
+4d454c00210100beff3001ffffffffffffffffffffffff0f01030201100100019c
+4d454c00210100bfff3001ffffffffffffffffffffffff0f01030201100100019f
+4d454c00210100c0ff3001ffffffffffffffffffffffff0f01030201100100019e
+4d454c00210100c1ff3001ffffffffffffffffffffffff0f010302011001000191
+4d454c00210100c2ff3001ffffffffffffffffffffffff0f010302011001000190
+4d454c00210100c3ff3001ffffffffffffffffffffffff0f010302011001000193
+4d454c00210100c4ff3001ffffffffffffffffffffffff0f010302011001000192
+4d454c00210100c5ff3001ffffffffffffffffffffffff0f010302011001000195
+4d454c00210100c6ff3001ffffffffffffffffffffffff0f010302011001000194
+4d454c00210100c7ff3001ffffffffffffffffffffffff0f010302011001000197
+4d454c00210100c8ff3001ffffffffffffffffffffffff0f010302011001000196
+4d454c00210100c9ff3001ffffffffffffffffffffffff0f010302011001000189
+4d454c00210100caff3001ffffffffffffffffffffffff0f010302011001000188
+4d454c00210100cbff3001ffffffffffffffffffffffff0f01030201100100018b
+4d454c00210100ccff3001ffffffffffffffffffffffff0f01030201100100018a
+4d454c00210100cdff3001ffffffffffffffffffffffff0f01030201100100018d
+4d454c00210100ceff3001ffffffffffffffffffffffff0f01030201100100018c
+4d454c00210100cfff3001ffffffffffffffffffffffff0f01030201100100018f
+4d454c00210100d0ff3001ffffffffffffffffffffffff0f01030201100100018e
+4d454c00210100d1ff3001ffffffffffffffffffffffff0f010302011001000181
+4d454c00210100d2ff3001ffffffffffffffffffffffff0f010302011001000180
+4d454c00210100d3ff3001ffffffffffffffffffffffff0f010302011001000183
+4d454c00210100d4ff3001ffffffffffffffffffffffff0f010302011001000182
+4d454c00210100d5ff3001ffffffffffffffffffffffff0f010302011001000185
+4d454c00210100d6ff3001ffffffffffffffffffffffff0f010302011001000184
+4d454c00210100d7ff3001ffffffffffffffffffffffff0f010302011001000187
+4d454c00210100d8ff3001ffffffffffffffffffffffff0f010302011001000186
+4d454c00210100d9ff3001ffffffffffffffffffffffff0f0103020110010001b9
+4d454c00210100daff3001ffffffffffffffffffffffff0f0103020110010001b8
+4d454c00210100dbff3001ffffffffffffffffffffffff0f0103020110010001bb
+4d454c00210100dcff3001ffffffffffffffffffffffff0f0103020110010001ba
+4d454c00210100ddff3001ffffffffffffffffffffffff0f0103020110010001bd
+4d454c00210100deff3001ffffffffffffffffffffffff0f0103020110010001bc
+4d454c00210100dfff3001ffffffffffffffffffffffff0f0103020110010001bf
+4d454c00210100e0ff3001ffffffffffffffffffffffff0f0103020110010001be
+4d454c00210100e1ff3001ffffffffffffffffffffffff0f0103020110010001b1
+4d454c00210100e2ff3001ffffffffffffffffffffffff0f0103020110010001b0
+4d454c00210100e3ff3001ffffffffffffffffffffffff0f0103020110010001b3
+4d454c00210100e4ff3001ffffffffffffffffffffffff0f0103020110010001b2
+4d454c00210100e5ff3001ffffffffffffffffffffffff0f0103020110010001b5
+4d454c00210100e6ff3001ffffffffffffffffffffffff0f0103020110010001b4
+4d454c00210100e7ff3001ffffffffffffffffffffffff0f0103020110010001b7
+4d454c00210100e8ff3001ffffffffffffffffffffffff0f0103020110010001b6
+4d454c00210100e9ff3001ffffffffffffffffffffffff0f0103020110010001a9
+4d454c00210100eaff3001ffffffffffffffffffffffff0f0103020110010001a8
+4d454c00210100ebff3001ffffffffffffffffffffffff0f0103020110010001ab
+4d454c00210100ecff3001ffffffffffffffffffffffff0f0103020110010001aa
+4d454c00210100edff3001ffffffffffffffffffffffff0f0103020110010001ad
+4d454c00210100eeff3001ffffffffffffffffffffffff0f0103020110010001ac
+4d454c00210100efff3001ffffffffffffffffffffffff0f0103020110010001af
+4d454c00210100f0ff3001ffffffffffffffffffffffff0f0103020110010001ae
+4d454c00210100f1ff3001ffffffffffffffffffffffff0f0103020110010001a1
+4d454c00210100f2ff3001ffffffffffffffffffffffff0f0103020110010001a0
+4d454c00210100f3ff3001ffffffffffffffffffffffff0f0103020110010001a3
+4d454c00210100f4ff3001ffffffffffffffffffffffff0f0103020110010001a2
+4d454c00210100f5ff3001ffffffffffffffffffffffff0f0103020110010001a5
+4d454c00210100f6ff3001ffffffffffffffffffffffff0f0103020110010001a4
+4d454c00210100f7ff3001ffffffffffffffffffffffff0f0103020110010001a7
+4d454c00210100f8ff3001ffffffffffffffffffffffff0f0103020110010001a6
+4d454c00210100f9ff3001ffffffffffffffffffffffff0f010302011001000059
+4d454c00210100faff3001ffffffffffffffffffffffff0f010302011001000058
+4d454c00210100fbff3001ffffffffffffffffffffffff0f01030201100100005b
+4d454c00210100fcff3001ffffffffffffffffffffffff0f01030201100100005a
+4d454c00210100fdff3001ffffffffffffffffffffffff0f01030201100100005d
+4d454c00210100feff3001ffffffffffffffffffffffff0f01030201100100005c
+4d454c00210100ffff3001ffffffffffffffffffffffff0f01030201100100005f
diff --git a/research/bad-bruteforcing/grouped/stop-zone-all-partial-sequence.txt b/research/bad-bruteforcing/grouped/stop-zone-all-partial-sequence.txt
new file mode 100644
index 0000000..2e4001e
--- /dev/null
+++ b/research/bad-bruteforcing/grouped/stop-zone-all-partial-sequence.txt
@@ -0,0 +1,33 @@
+4d454c001a010020ff5002ffffffffffffffffffffffff0f010b
+4d454c001a010021ff5002ffffffffffffffffffffffff0f0104
+4d454c001a010022ff5002ffffffffffffffffffffffff0f0105
+4d454c001a010028ff5002ffffffffffffffffffffffff0f0103
+4d454c001a010029ff5002ffffffffffffffffffffffff0f011c
+4d454c001a01002aff5002ffffffffffffffffffffffff0f011d
+4d454c001a01002bff5002ffffffffffffffffffffffff0f011e
+4d454c001a01002cff5002ffffffffffffffffffffffff0f011f
+4d454c001a01002dff5002ffffffffffffffffffffffff0f0118
+4d454c001a01002eff5002ffffffffffffffffffffffff0f0119
+4d454c001a01002fff5002ffffffffffffffffffffffff0f011a
+4d454c001a010030ff5002ffffffffffffffffffffffff0f011b
+4d454c001a010031ff5002ffffffffffffffffffffffff0f0114
+4d454c001a010032ff5002ffffffffffffffffffffffff0f0115
+4d454c001a010033ff5002ffffffffffffffffffffffff0f0116
+4d454c001a010034ff5002ffffffffffffffffffffffff0f0117
+4d454c001a010035ff5002ffffffffffffffffffffffff0f0110
+4d454c001a010036ff5002ffffffffffffffffffffffff0f0111
+4d454c001a010037ff5002ffffffffffffffffffffffff0f0112
+4d454c001a010038ff5002ffffffffffffffffffffffff0f0113
+4d454c001a010039ff5002ffffffffffffffffffffffff0f016c
+4d454c001a01003aff5002ffffffffffffffffffffffff0f016d
+4d454c001a01003bff5002ffffffffffffffffffffffff0f016e
+4d454c001a01003cff5002ffffffffffffffffffffffff0f016f
+4d454c001a01003dff5002ffffffffffffffffffffffff0f0168
+4d454c001a01003eff5002ffffffffffffffffffffffff0f0169
+4d454c001a01003fff5002ffffffffffffffffffffffff0f016a
+4d454c001a010040ff5002ffffffffffffffffffffffff0f016b
+4d454c001a010041ff5002ffffffffffffffffffffffff0f0164
+4d454c001a010042ff5002ffffffffffffffffffffffff0f0165
+4d454c001a010043ff5002ffffffffffffffffffffffff0f0166
+4d454c001a010044ff5002ffffffffffffffffffffffff0f0167
+4d454c001a010045ff5002ffffffffffffffffffffffff0f0160 \ No newline at end of file
diff --git a/research/bad-bruteforcing/random-captures.txt b/research/bad-bruteforcing/random-captures.txt
new file mode 100644
index 0000000..338997a
--- /dev/null
+++ b/research/bad-bruteforcing/random-captures.txt
@@ -0,0 +1,160 @@
+stop commands for all zones (system apparently only supports stopping all zones so its irrelevant):
+4d454c001a010020ff5002ffffffffffffffffffffffff0f010b
+4d454c001a010021ff5002ffffffffffffffffffffffff0f0104
+4d454c001a010022ff5002ffffffffffffffffffffffff0f0105
+4d454c001a010028ff5002ffffffffffffffffffffffff0f0103
+4d454c001a010029ff5002ffffffffffffffffffffffff0f011c
+4d454c001a01002aff5002ffffffffffffffffffffffff0f011d
+4d454c001a01002bff5002ffffffffffffffffffffffff0f011e
+4d454c001a01002cff5002ffffffffffffffffffffffff0f011f
+4d454c001a01002dff5002ffffffffffffffffffffffff0f0118
+4d454c001a01002eff5002ffffffffffffffffffffffff0f0119
+4d454c001a01002fff5002ffffffffffffffffffffffff0f011a
+4d454c001a010030ff5002ffffffffffffffffffffffff0f011b
+4d454c001a010031ff5002ffffffffffffffffffffffff0f0114
+4d454c001a010032ff5002ffffffffffffffffffffffff0f0115
+4d454c001a010033ff5002ffffffffffffffffffffffff0f0116
+4d454c001a010034ff5002ffffffffffffffffffffffff0f0117
+4d454c001a010035ff5002ffffffffffffffffffffffff0f0110
+4d454c001a010036ff5002ffffffffffffffffffffffff0f0111
+4d454c001a010037ff5002ffffffffffffffffffffffff0f0112
+4d454c001a010038ff5002ffffffffffffffffffffffff0f0113
+4d454c001a010039ff5002ffffffffffffffffffffffff0f016c
+4d454c001a01003aff5002ffffffffffffffffffffffff0f016d
+4d454c001a01003bff5002ffffffffffffffffffffffff0f016e
+4d454c001a01003cff5002ffffffffffffffffffffffff0f016f
+4d454c001a01003dff5002ffffffffffffffffffffffff0f0168
+4d454c001a01003eff5002ffffffffffffffffffffffff0f0169
+4d454c001a01003fff5002ffffffffffffffffffffffff0f016a
+4d454c001a010040ff5002ffffffffffffffffffffffff0f016b
+4d454c001a010041ff5002ffffffffffffffffffffffff0f0164
+4d454c001a010042ff5002ffffffffffffffffffffffff0f0165
+4d454c001a010043ff5002ffffffffffffffffffffffff0f0166
+4d454c001a010044ff5002ffffffffffffffffffffffff0f0167
+4d454c001a010045ff5002ffffffffffffffffffffffff0f0160
+
+alarm for some zone (forgot which) 5001 is alarm which also makes flashing lights turn on in addition to the melody playing :
+4d454c0021010000ff500100000000000000200000200000020301010f01000110
+4d454c0021010001ff500100000000000000200000200000020301010f0100011f
+4d454c0021010002ff500100000000000000200000200000020301010f0100011e
+4d454c0021010003ff500100000000000000200000200000020301010f0100011d
+4d454c0021010004ff500100000000000000200000200000020301010f0100011c
+4d454c0021010005ff500100000000000000200000200000020301010f0100011b
+4d454c0021010006ff500100000000000000200000200000020301010f0100011a
+4d454c0021010007ff500100000000000000200000200000020301010f01000119
+4d454c0021010008ff500100000000000000200000200000020301010f01000118
+4d454c0021010009ff500100000000000000200000200000020301010f01000107
+4d454c002101000aff500100000000000000200000200000020301010f01000106
+4d454c002101000bff500100000000000000200000200000020301010f01000105
+4d454c002101000cff500100000000000000200000200000020301010f01000104
+4d454c002101000dff500100000000000000200000200000020301010f01000103
+4d454c002101000eff500100000000000000200000200000020301010f01000102
+4d454c002101000fff500100000000000000200000200000020301010f01000101
+4d454c0021010010ff500100000000000000200000200000020301010f01000100
+4d454c0021010011ff500100000000000000200000200000020301010f0100010f
+4d454c0021010012ff500100000000000000200000200000020301010f0100010e
+4d454c0021010013ff500100000000000000200000200000020301010f0100010d
+4d454c0021010014ff500100000000000000200000200000020301010f0100010c
+4d454c0021010015ff500100000000000000200000200000020301010f0100010b
+4d454c0021010016ff500100000000000000200000200000020301010f0100010a
+4d454c0021010017ff500100000000000000200000200000020301010f01000109
+4d454c0021010018ff500100000000000000200000200000020301010f01000108
+4d454c0021010019ff500100000000000000200000200000020301010f01000137
+4d454c002101001aff500100000000000000200000200000020301010f01000136
+4d454c002101001bff500100000000000000200000200000020301010f01000135
+4d454c002101001cff500100000000000000200000200000020301010f01000134
+4d454c002101001dff500100000000000000200000200000020301010f01000133
+
+Example data 2 of playing melody in zone 8 :
+4d454c00210100a6ff300180000000000000000000000000010301010f01000159
+4d454c00210100a7ff300180000000000000000000000000010301010f0100015a
+4d454c00210100a8ff300180000000000000000000000000010301010f0100015b
+4d454c00210100a9ff300180000000000000000000000000010301010f01000144
+4d454c00210100aaff300180000000000000000000000000010301010f01000145
+4d454c00210100abff300180000000000000000000000000010301010f01000146
+4d454c00210100acff300180000000000000000000000000010301010f01000147
+4d454c00210100adff300180000000000000000000000000010301010f01000140
+4d454c00210100aeff300180000000000000000000000000010301010f01000141
+4d454c00210100afff300180000000000000000000000000010301010f01000142
+4d454c00210100b0ff300180000000000000000000000000010301010f01000143
+4d454c00210100b1ff300180000000000000000000000000010301010f0100014c
+4d454c00210100b2ff300180000000000000000000000000010301010f0100014d
+4d454c00210100b3ff300180000000000000000000000000010301010f0100014e
+4d454c00210100b4ff300180000000000000000000000000010301010f0100014f
+4d454c00210100b5ff300180000000000000000000000000010301010f01000148
+4d454c00210100b6ff300180000000000000000000000000010301010f01000149
+4d454c00210100b7ff300180000000000000000000000000010301010f0100014a
+4d454c00210100b8ff300180000000000000000000000000010301010f0100014b
+4d454c00210100b9ff300180000000000000000000000000010301010f01000134
+4d454c00210100baff300180000000000000000000000000010301010f01000135
+4d454c00210100bbff300180000000000000000000000000010301010f01000136
+4d454c00210100bcff300180000000000000000000000000010301010f01000137
+4d454c00210100bdff300180000000000000000000000000010301010f01000130
+4d454c00210100beff300180000000000000000000000000010301010f01000131
+4d454c00210100bfff300180000000000000000000000000010301010f01000132
+4d454c00210100c0ff300180000000000000000000000000010301010f01000133
+4d454c00210100c1ff300180000000000000000000000000010301010f0100013c
+4d454c00210100c2ff300180000000000000000000000000010301010f0100013d
+4d454c00210100c3ff300180000000000000000000000000010301010f0100013e
+4d454c00210100c4ff300180000000000000000000000000010301010f0100013f
+4d454c00210100c5ff300180000000000000000000000000010301010f01000138
+4d454c00210100c6ff300180000000000000000000000000010301010f01000139
+4d454c00210100c7ff300180000000000000000000000000010301010f0100013a
+4d454c00210100c8ff300180000000000000000000000000010301010f0100013b
+4d454c00210100c9ff300180000000000000000000000000010301010f01000124
+4d454c00210100caff300180000000000000000000000000010301010f01000125
+4d454c00210100cbff300180000000000000000000000000010301010f01000126
+4d454c00210100ccff300180000000000000000000000000010301010f01000127
+4d454c00210100cdff300180000000000000000000000000010301010f01000120
+
+Example data 1 of playing melody in zone 16 :
+4d454c00210100ceff30010000800000000000000000000001030101090100012f
+4d454c00210100cfff30010000800000000000000000000001030101090100012c
+4d454c00210100d0ff30010000800000000000000000000001030101090100012d
+4d454c00210100d1ff300100008000000000000000000000010301010901000122
+4d454c00210100d2ff300100008000000000000000000000010301010901000123
+4d454c00210100d3ff300100008000000000000000000000010301010901000120
+4d454c00210100d4ff300100008000000000000000000000010301010901000121
+4d454c00210100d5ff300100008000000000000000000000010301010901000126
+4d454c00210100d6ff300100008000000000000000000000010301010901000127
+4d454c00210100d7ff300100008000000000000000000000010301010901000124
+4d454c00210100d8ff300100008000000000000000000000010301010901000125
+4d454c00210100d9ff30010000800000000000000000000001030101090100011a
+4d454c00210100daff30010000800000000000000000000001030101090100011b
+4d454c00210100dbff300100008000000000000000000000010301010901000118
+4d454c00210100dcff300100008000000000000000000000010301010901000119
+4d454c00210100ddff30010000800000000000000000000001030101090100011e
+4d454c00210100deff30010000800000000000000000000001030101090100011f
+4d454c00210100dfff30010000800000000000000000000001030101090100011c
+4d454c00210100e0ff30010000800000000000000000000001030101090100011d
+4d454c00210100e1ff300100008000000000000000000000010301010901000112
+4d454c00210100e2ff300100008000000000000000000000010301010901000113
+4d454c00210100e3ff300100008000000000000000000000010301010901000110
+4d454c00210100e4ff300100008000000000000000000000010301010901000111
+4d454c00210100e5ff300100008000000000000000000000010301010901000116
+4d454c00210100e6ff300100008000000000000000000000010301010901000117
+4d454c00210100e7ff300100008000000000000000000000010301010901000114
+4d454c00210100e8ff300100008000000000000000000000010301010901000115
+4d454c00210100e9ff30010000800000000000000000000001030101090100010a
+4d454c00210100eaff30010000800000000000000000000001030101090100010b
+4d454c00210100ebff300100008000000000000000000000010301010901000108
+4d454c00210100ecff300100008000000000000000000000010301010901000109
+4d454c00210100edff30010000800000000000000000000001030101090100010e
+4d454c00210100eeff30010000800000000000000000000001030101090100010f
+4d454c00210100efff30010000800000000000000000000001030101090100010c
+4d454c00210100f0ff30010000800000000000000000000001030101090100010d
+4d454c00210100f1ff300100008000000000000000000000010301010901000102
+4d454c00210100f2ff300100008000000000000000000000010301010901000103
+4d454c00210100f3ff300100008000000000000000000000010301010901000100
+4d454c00210100f4ff300100008000000000000000000000010301010901000101
+4d454c00210100f5ff300100008000000000000000000000010301010901000106
+4d454c00210100f6ff300100008000000000000000000000010301010901000107
+4d454c00210100f7ff500100000000000000200000200000020301010f010001e9
+4d454c00210100f8ff500100000000000000200000200000020301010f010001e8
+4d454c00210100f9ff500100000000000000200000200000020301010f01000017
+4d454c00210100faff500100000000000000200000200000020301010f01000016
+4d454c00210100fbff500100000000000000200000200000020301010f01000015
+4d454c00210100fcff500100000000000000200000200000020301010f01000014
+4d454c00210100fdff500100000000000000200000200000020301010f01000013
+4d454c00210100feff500100000000000000200000200000020301010f01000012
+4d454c00210100ffff500100000000000000200000200000020301010f01000011
diff --git a/research/bad-bruteforcing/reveng-formatted/allzone-sequence.txt b/research/bad-bruteforcing/reveng-formatted/allzone-sequence.txt
new file mode 100644
index 0000000..5e6202f
--- /dev/null
+++ b/research/bad-bruteforcing/reveng-formatted/allzone-sequence.txt
@@ -0,0 +1,256 @@
+4d454c0021010000ff3001ffffffffffffffffffffffff0f0103020110010001=5e
+4d454c0021010001ff3001ffffffffffffffffffffffff0f0103020110010001=51
+4d454c0021010002ff3001ffffffffffffffffffffffff0f0103020110010001=50
+4d454c0021010003ff3001ffffffffffffffffffffffff0f0103020110010001=53
+4d454c0021010004ff3001ffffffffffffffffffffffff0f0103020110010001=52
+4d454c0021010005ff3001ffffffffffffffffffffffff0f0103020110010001=55
+4d454c0021010006ff3001ffffffffffffffffffffffff0f0103020110010001=54
+4d454c0021010007ff3001ffffffffffffffffffffffff0f0103020110010001=57
+4d454c0021010008ff3001ffffffffffffffffffffffff0f0103020110010001=56
+4d454c0021010009ff3001ffffffffffffffffffffffff0f0103020110010001=49
+4d454c002101000aff3001ffffffffffffffffffffffff0f0103020110010001=48
+4d454c002101000bff3001ffffffffffffffffffffffff0f0103020110010001=4b
+4d454c002101000cff3001ffffffffffffffffffffffff0f0103020110010001=4a
+4d454c002101000dff3001ffffffffffffffffffffffff0f0103020110010001=4d
+4d454c002101000eff3001ffffffffffffffffffffffff0f0103020110010001=4c
+4d454c002101000fff3001ffffffffffffffffffffffff0f0103020110010001=4f
+4d454c0021010010ff3001ffffffffffffffffffffffff0f0103020110010001=4e
+4d454c0021010011ff3001ffffffffffffffffffffffff0f0103020110010001=41
+4d454c0021010012ff3001ffffffffffffffffffffffff0f0103020110010001=40
+4d454c0021010013ff3001ffffffffffffffffffffffff0f0103020110010001=43
+4d454c0021010014ff3001ffffffffffffffffffffffff0f0103020110010001=42
+4d454c0021010015ff3001ffffffffffffffffffffffff0f0103020110010001=45
+4d454c0021010016ff3001ffffffffffffffffffffffff0f0103020110010001=44
+4d454c0021010017ff3001ffffffffffffffffffffffff0f0103020110010001=47
+4d454c0021010018ff3001ffffffffffffffffffffffff0f0103020110010001=46
+4d454c0021010019ff3001ffffffffffffffffffffffff0f0103020110010001=79
+4d454c002101001aff3001ffffffffffffffffffffffff0f0103020110010001=78
+4d454c002101001bff3001ffffffffffffffffffffffff0f0103020110010001=7b
+4d454c002101001cff3001ffffffffffffffffffffffff0f0103020110010001=7a
+4d454c002101001dff3001ffffffffffffffffffffffff0f0103020110010001=7d
+4d454c002101001eff3001ffffffffffffffffffffffff0f0103020110010001=7c
+4d454c002101001fff3001ffffffffffffffffffffffff0f0103020110010001=7f
+4d454c0021010020ff3001ffffffffffffffffffffffff0f0103020110010001=7e
+4d454c0021010021ff3001ffffffffffffffffffffffff0f0103020110010001=71
+4d454c0021010022ff3001ffffffffffffffffffffffff0f0103020110010001=70
+4d454c0021010023ff3001ffffffffffffffffffffffff0f0103020110010001=73
+4d454c0021010024ff3001ffffffffffffffffffffffff0f0103020110010001=72
+4d454c0021010025ff3001ffffffffffffffffffffffff0f0103020110010001=75
+4d454c0021010026ff3001ffffffffffffffffffffffff0f0103020110010001=74
+4d454c0021010027ff3001ffffffffffffffffffffffff0f0103020110010001=77
+4d454c0021010028ff3001ffffffffffffffffffffffff0f0103020110010001=76
+4d454c0021010029ff3001ffffffffffffffffffffffff0f0103020110010001=69
+4d454c002101002aff3001ffffffffffffffffffffffff0f0103020110010001=68
+4d454c002101002bff3001ffffffffffffffffffffffff0f0103020110010001=6b
+4d454c002101002cff3001ffffffffffffffffffffffff0f0103020110010001=6a
+4d454c002101002dff3001ffffffffffffffffffffffff0f0103020110010001=6d
+4d454c002101002eff3001ffffffffffffffffffffffff0f0103020110010001=6c
+4d454c002101002fff3001ffffffffffffffffffffffff0f0103020110010001=6f
+4d454c0021010030ff3001ffffffffffffffffffffffff0f0103020110010001=6e
+4d454c0021010031ff3001ffffffffffffffffffffffff0f0103020110010001=61
+4d454c0021010032ff3001ffffffffffffffffffffffff0f0103020110010001=60
+4d454c0021010033ff3001ffffffffffffffffffffffff0f0103020110010001=63
+4d454c0021010034ff3001ffffffffffffffffffffffff0f0103020110010001=62
+4d454c0021010035ff3001ffffffffffffffffffffffff0f0103020110010001=65
+4d454c0021010036ff3001ffffffffffffffffffffffff0f0103020110010001=64
+4d454c0021010037ff3001ffffffffffffffffffffffff0f0103020110010001=67
+4d454c0021010038ff3001ffffffffffffffffffffffff0f0103020110010001=66
+4d454c0021010039ff3001ffffffffffffffffffffffff0f0103020110010001=19
+4d454c002101003aff3001ffffffffffffffffffffffff0f0103020110010001=18
+4d454c002101003bff3001ffffffffffffffffffffffff0f0103020110010001=1b
+4d454c002101003cff3001ffffffffffffffffffffffff0f0103020110010001=1a
+4d454c002101003dff3001ffffffffffffffffffffffff0f0103020110010001=1d
+4d454c002101003eff3001ffffffffffffffffffffffff0f0103020110010001=1c
+4d454c002101003fff3001ffffffffffffffffffffffff0f0103020110010001=1f
+4d454c0021010040ff3001ffffffffffffffffffffffff0f0103020110010001=1e
+4d454c0021010041ff3001ffffffffffffffffffffffff0f0103020110010001=11
+4d454c0021010042ff3001ffffffffffffffffffffffff0f0103020110010001=10
+4d454c0021010043ff3001ffffffffffffffffffffffff0f0103020110010001=13
+4d454c0021010044ff3001ffffffffffffffffffffffff0f0103020110010001=12
+4d454c0021010045ff3001ffffffffffffffffffffffff0f0103020110010001=15
+4d454c0021010046ff3001ffffffffffffffffffffffff0f0103020110010001=14
+4d454c0021010047ff3001ffffffffffffffffffffffff0f0103020110010001=17
+4d454c0021010048ff3001ffffffffffffffffffffffff0f0103020110010001=16
+4d454c0021010049ff3001ffffffffffffffffffffffff0f0103020110010001=09
+4d454c002101004aff3001ffffffffffffffffffffffff0f0103020110010001=08
+4d454c002101004bff3001ffffffffffffffffffffffff0f0103020110010001=0b
+4d454c002101004cff3001ffffffffffffffffffffffff0f0103020110010001=0a
+4d454c002101004dff3001ffffffffffffffffffffffff0f0103020110010001=0d
+4d454c002101004eff3001ffffffffffffffffffffffff0f0103020110010001=0c
+4d454c002101004fff3001ffffffffffffffffffffffff0f0103020110010001=0f
+4d454c0021010050ff3001ffffffffffffffffffffffff0f0103020110010001=0e
+4d454c0021010051ff3001ffffffffffffffffffffffff0f0103020110010001=01
+4d454c0021010052ff3001ffffffffffffffffffffffff0f0103020110010001=00
+4d454c0021010053ff3001ffffffffffffffffffffffff0f0103020110010001=03
+4d454c0021010054ff3001ffffffffffffffffffffffff0f0103020110010001=02
+4d454c0021010055ff3001ffffffffffffffffffffffff0f0103020110010001=05
+4d454c0021010056ff3001ffffffffffffffffffffffff0f0103020110010001=04
+4d454c0021010057ff3001ffffffffffffffffffffffff0f0103020110010001=07
+4d454c0021010058ff3001ffffffffffffffffffffffff0f0103020110010001=06
+4d454c0021010059ff3001ffffffffffffffffffffffff0f0103020110010001=39
+4d454c002101005aff3001ffffffffffffffffffffffff0f0103020110010001=38
+4d454c002101005bff3001ffffffffffffffffffffffff0f0103020110010001=3b
+4d454c002101005cff3001ffffffffffffffffffffffff0f0103020110010001=3a
+4d454c002101005dff3001ffffffffffffffffffffffff0f0103020110010001=3d
+4d454c002101005eff3001ffffffffffffffffffffffff0f0103020110010001=3c
+4d454c002101005fff3001ffffffffffffffffffffffff0f0103020110010001=3f
+4d454c0021010060ff3001ffffffffffffffffffffffff0f0103020110010001=3e
+4d454c0021010061ff3001ffffffffffffffffffffffff0f0103020110010001=31
+4d454c0021010062ff3001ffffffffffffffffffffffff0f0103020110010001=30
+4d454c0021010063ff3001ffffffffffffffffffffffff0f0103020110010001=33
+4d454c0021010064ff3001ffffffffffffffffffffffff0f0103020110010001=32
+4d454c0021010065ff3001ffffffffffffffffffffffff0f0103020110010001=35
+4d454c0021010066ff3001ffffffffffffffffffffffff0f0103020110010001=34
+4d454c0021010067ff3001ffffffffffffffffffffffff0f0103020110010001=37
+4d454c0021010068ff3001ffffffffffffffffffffffff0f0103020110010001=36
+4d454c0021010069ff3001ffffffffffffffffffffffff0f0103020110010001=29
+4d454c002101006aff3001ffffffffffffffffffffffff0f0103020110010001=28
+4d454c002101006bff3001ffffffffffffffffffffffff0f0103020110010001=2b
+4d454c002101006cff3001ffffffffffffffffffffffff0f0103020110010001=2a
+4d454c002101006dff3001ffffffffffffffffffffffff0f0103020110010001=2d
+4d454c002101006eff3001ffffffffffffffffffffffff0f0103020110010001=2c
+4d454c002101006fff3001ffffffffffffffffffffffff0f0103020110010001=2f
+4d454c0021010070ff3001ffffffffffffffffffffffff0f0103020110010001=2e
+4d454c0021010071ff3001ffffffffffffffffffffffff0f0103020110010001=21
+4d454c0021010072ff3001ffffffffffffffffffffffff0f0103020110010001=20
+4d454c0021010073ff3001ffffffffffffffffffffffff0f0103020110010001=23
+4d454c0021010074ff3001ffffffffffffffffffffffff0f0103020110010001=22
+4d454c0021010075ff3001ffffffffffffffffffffffff0f0103020110010001=25
+4d454c0021010076ff3001ffffffffffffffffffffffff0f0103020110010001=24
+4d454c0021010077ff3001ffffffffffffffffffffffff0f0103020110010001=27
+4d454c0021010078ff3001ffffffffffffffffffffffff0f0103020110010001=26
+4d454c0021010079ff3001ffffffffffffffffffffffff0f0103020110010001=d9
+4d454c002101007aff3001ffffffffffffffffffffffff0f0103020110010001=d8
+4d454c002101007bff3001ffffffffffffffffffffffff0f0103020110010001=db
+4d454c002101007cff3001ffffffffffffffffffffffff0f0103020110010001=da
+4d454c002101007dff3001ffffffffffffffffffffffff0f0103020110010001=dd
+4d454c002101007eff3001ffffffffffffffffffffffff0f0103020110010001=dc
+4d454c002101007fff3001ffffffffffffffffffffffff0f0103020110010001=df
+4d454c0021010080ff3001ffffffffffffffffffffffff0f0103020110010001=de
+4d454c0021010081ff3001ffffffffffffffffffffffff0f0103020110010001=d1
+4d454c0021010082ff3001ffffffffffffffffffffffff0f0103020110010001=d0
+4d454c0021010083ff3001ffffffffffffffffffffffff0f0103020110010001=d3
+4d454c0021010084ff3001ffffffffffffffffffffffff0f0103020110010001=d2
+4d454c0021010085ff3001ffffffffffffffffffffffff0f0103020110010001=d5
+4d454c0021010086ff3001ffffffffffffffffffffffff0f0103020110010001=d4
+4d454c0021010087ff3001ffffffffffffffffffffffff0f0103020110010001=d7
+4d454c0021010088ff3001ffffffffffffffffffffffff0f0103020110010001=d6
+4d454c0021010089ff3001ffffffffffffffffffffffff0f0103020110010001=c9
+4d454c002101008aff3001ffffffffffffffffffffffff0f0103020110010001=c8
+4d454c002101008bff3001ffffffffffffffffffffffff0f0103020110010001=cb
+4d454c002101008cff3001ffffffffffffffffffffffff0f0103020110010001=ca
+4d454c002101008dff3001ffffffffffffffffffffffff0f0103020110010001=cd
+4d454c002101008eff3001ffffffffffffffffffffffff0f0103020110010001=cc
+4d454c002101008fff3001ffffffffffffffffffffffff0f0103020110010001=cf
+4d454c0021010090ff3001ffffffffffffffffffffffff0f0103020110010001=ce
+4d454c0021010091ff3001ffffffffffffffffffffffff0f0103020110010001=c1
+4d454c0021010092ff3001ffffffffffffffffffffffff0f0103020110010001=c0
+4d454c0021010093ff3001ffffffffffffffffffffffff0f0103020110010001=c3
+4d454c0021010094ff3001ffffffffffffffffffffffff0f0103020110010001=c2
+4d454c0021010095ff3001ffffffffffffffffffffffff0f0103020110010001=c5
+4d454c0021010096ff3001ffffffffffffffffffffffff0f0103020110010001=c4
+4d454c0021010097ff3001ffffffffffffffffffffffff0f0103020110010001=c7
+4d454c0021010098ff3001ffffffffffffffffffffffff0f0103020110010001=c6
+4d454c0021010099ff3001ffffffffffffffffffffffff0f0103020110010001=f9
+4d454c002101009aff3001ffffffffffffffffffffffff0f0103020110010001=f8
+4d454c002101009bff3001ffffffffffffffffffffffff0f0103020110010001=fb
+4d454c002101009cff3001ffffffffffffffffffffffff0f0103020110010001=fa
+4d454c002101009dff3001ffffffffffffffffffffffff0f0103020110010001=fd
+4d454c002101009eff3001ffffffffffffffffffffffff0f0103020110010001=fc
+4d454c002101009fff3001ffffffffffffffffffffffff0f0103020110010001=ff
+4d454c00210100a0ff3001ffffffffffffffffffffffff0f0103020110010001=fe
+4d454c00210100a1ff3001ffffffffffffffffffffffff0f0103020110010001=f1
+4d454c00210100a2ff3001ffffffffffffffffffffffff0f0103020110010001=f0
+4d454c00210100a3ff3001ffffffffffffffffffffffff0f0103020110010001=f3
+4d454c00210100a4ff3001ffffffffffffffffffffffff0f0103020110010001=f2
+4d454c00210100a5ff3001ffffffffffffffffffffffff0f0103020110010001=f5
+4d454c00210100a6ff3001ffffffffffffffffffffffff0f0103020110010001=f4
+4d454c00210100a7ff3001ffffffffffffffffffffffff0f0103020110010001=f7
+4d454c00210100a8ff3001ffffffffffffffffffffffff0f0103020110010001=f6
+4d454c00210100a9ff3001ffffffffffffffffffffffff0f0103020110010001=e9
+4d454c00210100aaff3001ffffffffffffffffffffffff0f0103020110010001=e8
+4d454c00210100abff3001ffffffffffffffffffffffff0f0103020110010001=eb
+4d454c00210100acff3001ffffffffffffffffffffffff0f0103020110010001=ea
+4d454c00210100adff3001ffffffffffffffffffffffff0f0103020110010001=ed
+4d454c00210100aeff3001ffffffffffffffffffffffff0f0103020110010001=ec
+4d454c00210100afff3001ffffffffffffffffffffffff0f0103020110010001=ef
+4d454c00210100b0ff3001ffffffffffffffffffffffff0f0103020110010001=ee
+4d454c00210100b1ff3001ffffffffffffffffffffffff0f0103020110010001=e1
+4d454c00210100b2ff3001ffffffffffffffffffffffff0f0103020110010001=e0
+4d454c00210100b3ff3001ffffffffffffffffffffffff0f0103020110010001=e3
+4d454c00210100b4ff3001ffffffffffffffffffffffff0f0103020110010001=e2
+4d454c00210100b5ff3001ffffffffffffffffffffffff0f0103020110010001=e5
+4d454c00210100b6ff3001ffffffffffffffffffffffff0f0103020110010001=e4
+4d454c00210100b7ff3001ffffffffffffffffffffffff0f0103020110010001=e7
+4d454c00210100b8ff3001ffffffffffffffffffffffff0f0103020110010001=e6
+4d454c00210100b9ff3001ffffffffffffffffffffffff0f0103020110010001=99
+4d454c00210100baff3001ffffffffffffffffffffffff0f0103020110010001=98
+4d454c00210100bbff3001ffffffffffffffffffffffff0f0103020110010001=9b
+4d454c00210100bcff3001ffffffffffffffffffffffff0f0103020110010001=9a
+4d454c00210100bdff3001ffffffffffffffffffffffff0f0103020110010001=9d
+4d454c00210100beff3001ffffffffffffffffffffffff0f0103020110010001=9c
+4d454c00210100bfff3001ffffffffffffffffffffffff0f0103020110010001=9f
+4d454c00210100c0ff3001ffffffffffffffffffffffff0f0103020110010001=9e
+4d454c00210100c1ff3001ffffffffffffffffffffffff0f0103020110010001=91
+4d454c00210100c2ff3001ffffffffffffffffffffffff0f0103020110010001=90
+4d454c00210100c3ff3001ffffffffffffffffffffffff0f0103020110010001=93
+4d454c00210100c4ff3001ffffffffffffffffffffffff0f0103020110010001=92
+4d454c00210100c5ff3001ffffffffffffffffffffffff0f0103020110010001=95
+4d454c00210100c6ff3001ffffffffffffffffffffffff0f0103020110010001=94
+4d454c00210100c7ff3001ffffffffffffffffffffffff0f0103020110010001=97
+4d454c00210100c8ff3001ffffffffffffffffffffffff0f0103020110010001=96
+4d454c00210100c9ff3001ffffffffffffffffffffffff0f0103020110010001=89
+4d454c00210100caff3001ffffffffffffffffffffffff0f0103020110010001=88
+4d454c00210100cbff3001ffffffffffffffffffffffff0f0103020110010001=8b
+4d454c00210100ccff3001ffffffffffffffffffffffff0f0103020110010001=8a
+4d454c00210100cdff3001ffffffffffffffffffffffff0f0103020110010001=8d
+4d454c00210100ceff3001ffffffffffffffffffffffff0f0103020110010001=8c
+4d454c00210100cfff3001ffffffffffffffffffffffff0f0103020110010001=8f
+4d454c00210100d0ff3001ffffffffffffffffffffffff0f0103020110010001=8e
+4d454c00210100d1ff3001ffffffffffffffffffffffff0f0103020110010001=81
+4d454c00210100d2ff3001ffffffffffffffffffffffff0f0103020110010001=80
+4d454c00210100d3ff3001ffffffffffffffffffffffff0f0103020110010001=83
+4d454c00210100d4ff3001ffffffffffffffffffffffff0f0103020110010001=82
+4d454c00210100d5ff3001ffffffffffffffffffffffff0f0103020110010001=85
+4d454c00210100d6ff3001ffffffffffffffffffffffff0f0103020110010001=84
+4d454c00210100d7ff3001ffffffffffffffffffffffff0f0103020110010001=87
+4d454c00210100d8ff3001ffffffffffffffffffffffff0f0103020110010001=86
+4d454c00210100d9ff3001ffffffffffffffffffffffff0f0103020110010001=b9
+4d454c00210100daff3001ffffffffffffffffffffffff0f0103020110010001=b8
+4d454c00210100dbff3001ffffffffffffffffffffffff0f0103020110010001=bb
+4d454c00210100dcff3001ffffffffffffffffffffffff0f0103020110010001=ba
+4d454c00210100ddff3001ffffffffffffffffffffffff0f0103020110010001=bd
+4d454c00210100deff3001ffffffffffffffffffffffff0f0103020110010001=bc
+4d454c00210100dfff3001ffffffffffffffffffffffff0f0103020110010001=bf
+4d454c00210100e0ff3001ffffffffffffffffffffffff0f0103020110010001=be
+4d454c00210100e1ff3001ffffffffffffffffffffffff0f0103020110010001=b1
+4d454c00210100e2ff3001ffffffffffffffffffffffff0f0103020110010001=b0
+4d454c00210100e3ff3001ffffffffffffffffffffffff0f0103020110010001=b3
+4d454c00210100e4ff3001ffffffffffffffffffffffff0f0103020110010001=b2
+4d454c00210100e5ff3001ffffffffffffffffffffffff0f0103020110010001=b5
+4d454c00210100e6ff3001ffffffffffffffffffffffff0f0103020110010001=b4
+4d454c00210100e7ff3001ffffffffffffffffffffffff0f0103020110010001=b7
+4d454c00210100e8ff3001ffffffffffffffffffffffff0f0103020110010001=b6
+4d454c00210100e9ff3001ffffffffffffffffffffffff0f0103020110010001=a9
+4d454c00210100eaff3001ffffffffffffffffffffffff0f0103020110010001=a8
+4d454c00210100ebff3001ffffffffffffffffffffffff0f0103020110010001=ab
+4d454c00210100ecff3001ffffffffffffffffffffffff0f0103020110010001=aa
+4d454c00210100edff3001ffffffffffffffffffffffff0f0103020110010001=ad
+4d454c00210100eeff3001ffffffffffffffffffffffff0f0103020110010001=ac
+4d454c00210100efff3001ffffffffffffffffffffffff0f0103020110010001=af
+4d454c00210100f0ff3001ffffffffffffffffffffffff0f0103020110010001=ae
+4d454c00210100f1ff3001ffffffffffffffffffffffff0f0103020110010001=a1
+4d454c00210100f2ff3001ffffffffffffffffffffffff0f0103020110010001=a0
+4d454c00210100f3ff3001ffffffffffffffffffffffff0f0103020110010001=a3
+4d454c00210100f4ff3001ffffffffffffffffffffffff0f0103020110010001=a2
+4d454c00210100f5ff3001ffffffffffffffffffffffff0f0103020110010001=a5
+4d454c00210100f6ff3001ffffffffffffffffffffffff0f0103020110010001=a4
+4d454c00210100f7ff3001ffffffffffffffffffffffff0f0103020110010001=a7
+4d454c00210100f8ff3001ffffffffffffffffffffffff0f0103020110010001=a6
+4d454c00210100f9ff3001ffffffffffffffffffffffff0f0103020110010000=59
+4d454c00210100faff3001ffffffffffffffffffffffff0f0103020110010000=58
+4d454c00210100fbff3001ffffffffffffffffffffffff0f0103020110010000=5b
+4d454c00210100fcff3001ffffffffffffffffffffffff0f0103020110010000=5a
+4d454c00210100fdff3001ffffffffffffffffffffffff0f0103020110010000=5d
+4d454c00210100feff3001ffffffffffffffffffffffff0f0103020110010000=5c
+4d454c00210100ffff3001ffffffffffffffffffffffff0f0103020110010000=5f \ No newline at end of file
diff --git a/research/bad-bruteforcing/reveng-formatted/melody-16-vol3-once-zone-all.txt b/research/bad-bruteforcing/reveng-formatted/melody-16-vol3-once-zone-all.txt
new file mode 100644
index 0000000..83b01c7
--- /dev/null
+++ b/research/bad-bruteforcing/reveng-formatted/melody-16-vol3-once-zone-all.txt
@@ -0,0 +1,256 @@
+4d454c0021010000ff3001ffffffffffffffffffffffff0f0103010110010001=59
+4d454c0021010001ff3001ffffffffffffffffffffffff0f0103010110010001=56
+4d454c0021010002ff3001ffffffffffffffffffffffff0f0103010110010001=57
+4d454c0021010003ff3001ffffffffffffffffffffffff0f0103010110010001=54
+4d454c0021010004ff3001ffffffffffffffffffffffff0f0103010110010001=55
+4d454c0021010005ff3001ffffffffffffffffffffffff0f0103010110010001=52
+4d454c0021010006ff3001ffffffffffffffffffffffff0f0103010110010001=53
+4d454c0021010007ff3001ffffffffffffffffffffffff0f0103010110010001=50
+4d454c0021010008ff3001ffffffffffffffffffffffff0f0103010110010001=51
+4d454c0021010009ff3001ffffffffffffffffffffffff0f0103010110010001=4e
+4d454c002101000aff3001ffffffffffffffffffffffff0f0103010110010001=4f
+4d454c002101000bff3001ffffffffffffffffffffffff0f0103010110010001=4c
+4d454c002101000cff3001ffffffffffffffffffffffff0f0103010110010001=4d
+4d454c002101000dff3001ffffffffffffffffffffffff0f0103010110010001=4a
+4d454c002101000eff3001ffffffffffffffffffffffff0f0103010110010001=4b
+4d454c002101000fff3001ffffffffffffffffffffffff0f0103010110010001=48
+4d454c0021010010ff3001ffffffffffffffffffffffff0f0103010110010001=49
+4d454c0021010011ff3001ffffffffffffffffffffffff0f0103010110010001=46
+4d454c0021010012ff3001ffffffffffffffffffffffff0f0103010110010001=47
+4d454c0021010013ff3001ffffffffffffffffffffffff0f0103010110010001=44
+4d454c0021010014ff3001ffffffffffffffffffffffff0f0103010110010001=45
+4d454c0021010015ff3001ffffffffffffffffffffffff0f0103010110010001=42
+4d454c0021010016ff3001ffffffffffffffffffffffff0f0103010110010001=43
+4d454c0021010017ff3001ffffffffffffffffffffffff0f0103010110010001=40
+4d454c0021010018ff3001ffffffffffffffffffffffff0f0103010110010001=41
+4d454c0021010019ff3001ffffffffffffffffffffffff0f0103010110010001=7e
+4d454c002101001aff3001ffffffffffffffffffffffff0f0103010110010001=7f
+4d454c002101001bff3001ffffffffffffffffffffffff0f0103010110010001=7c
+4d454c002101001cff3001ffffffffffffffffffffffff0f0103010110010001=7d
+4d454c002101001dff3001ffffffffffffffffffffffff0f0103010110010001=7a
+4d454c002101001eff3001ffffffffffffffffffffffff0f0103010110010001=7b
+4d454c002101001fff3001ffffffffffffffffffffffff0f0103010110010001=78
+4d454c0021010020ff3001ffffffffffffffffffffffff0f0103010110010001=79
+4d454c0021010021ff3001ffffffffffffffffffffffff0f0103010110010001=76
+4d454c0021010022ff3001ffffffffffffffffffffffff0f0103010110010001=77
+4d454c0021010023ff3001ffffffffffffffffffffffff0f0103010110010001=74
+4d454c0021010024ff3001ffffffffffffffffffffffff0f0103010110010001=75
+4d454c0021010025ff3001ffffffffffffffffffffffff0f0103010110010001=72
+4d454c0021010026ff3001ffffffffffffffffffffffff0f0103010110010001=73
+4d454c0021010027ff3001ffffffffffffffffffffffff0f0103010110010001=70
+4d454c0021010028ff3001ffffffffffffffffffffffff0f0103010110010001=71
+4d454c0021010029ff3001ffffffffffffffffffffffff0f0103010110010001=6e
+4d454c002101002aff3001ffffffffffffffffffffffff0f0103010110010001=6f
+4d454c002101002bff3001ffffffffffffffffffffffff0f0103010110010001=6c
+4d454c002101002cff3001ffffffffffffffffffffffff0f0103010110010001=6d
+4d454c002101002dff3001ffffffffffffffffffffffff0f0103010110010001=6a
+4d454c002101002eff3001ffffffffffffffffffffffff0f0103010110010001=6b
+4d454c002101002fff3001ffffffffffffffffffffffff0f0103010110010001=68
+4d454c0021010030ff3001ffffffffffffffffffffffff0f0103010110010001=69
+4d454c0021010031ff3001ffffffffffffffffffffffff0f0103010110010001=66
+4d454c0021010032ff3001ffffffffffffffffffffffff0f0103010110010001=67
+4d454c0021010033ff3001ffffffffffffffffffffffff0f0103010110010001=64
+4d454c0021010034ff3001ffffffffffffffffffffffff0f0103010110010001=65
+4d454c0021010035ff3001ffffffffffffffffffffffff0f0103010110010001=62
+4d454c0021010036ff3001ffffffffffffffffffffffff0f0103010110010001=63
+4d454c0021010037ff3001ffffffffffffffffffffffff0f0103010110010001=60
+4d454c0021010038ff3001ffffffffffffffffffffffff0f0103010110010001=61
+4d454c0021010039ff3001ffffffffffffffffffffffff0f0103010110010001=1e
+4d454c002101003aff3001ffffffffffffffffffffffff0f0103010110010001=1f
+4d454c002101003bff3001ffffffffffffffffffffffff0f0103010110010001=1c
+4d454c002101003cff3001ffffffffffffffffffffffff0f0103010110010001=1d
+4d454c002101003dff3001ffffffffffffffffffffffff0f0103010110010001=1a
+4d454c002101003eff3001ffffffffffffffffffffffff0f0103010110010001=1b
+4d454c002101003fff3001ffffffffffffffffffffffff0f0103010110010001=18
+4d454c0021010040ff3001ffffffffffffffffffffffff0f0103010110010001=19
+4d454c0021010041ff3001ffffffffffffffffffffffff0f0103010110010001=16
+4d454c0021010042ff3001ffffffffffffffffffffffff0f0103010110010001=17
+4d454c0021010043ff3001ffffffffffffffffffffffff0f0103010110010001=14
+4d454c0021010044ff3001ffffffffffffffffffffffff0f0103010110010001=15
+4d454c0021010045ff3001ffffffffffffffffffffffff0f0103010110010001=12
+4d454c0021010046ff3001ffffffffffffffffffffffff0f0103010110010001=13
+4d454c0021010047ff3001ffffffffffffffffffffffff0f0103010110010001=10
+4d454c0021010048ff3001ffffffffffffffffffffffff0f0103010110010001=11
+4d454c0021010049ff3001ffffffffffffffffffffffff0f0103010110010001=0e
+4d454c002101004aff3001ffffffffffffffffffffffff0f0103010110010001=0f
+4d454c002101004bff3001ffffffffffffffffffffffff0f0103010110010001=0c
+4d454c002101004cff3001ffffffffffffffffffffffff0f0103010110010001=0d
+4d454c002101004dff3001ffffffffffffffffffffffff0f0103010110010001=0a
+4d454c002101004eff3001ffffffffffffffffffffffff0f0103010110010001=0b
+4d454c002101004fff3001ffffffffffffffffffffffff0f0103010110010001=08
+4d454c0021010050ff3001ffffffffffffffffffffffff0f0103010110010001=09
+4d454c0021010051ff3001ffffffffffffffffffffffff0f0103010110010001=06
+4d454c0021010052ff3001ffffffffffffffffffffffff0f0103010110010001=07
+4d454c0021010053ff3001ffffffffffffffffffffffff0f0103010110010001=04
+4d454c0021010054ff3001ffffffffffffffffffffffff0f0103010110010001=05
+4d454c0021010055ff3001ffffffffffffffffffffffff0f0103010110010001=02
+4d454c0021010056ff3001ffffffffffffffffffffffff0f0103010110010001=03
+4d454c0021010057ff3001ffffffffffffffffffffffff0f0103010110010001=00
+4d454c0021010058ff3001ffffffffffffffffffffffff0f0103010110010001=01
+4d454c0021010059ff3001ffffffffffffffffffffffff0f0103010110010001=3e
+4d454c002101005aff3001ffffffffffffffffffffffff0f0103010110010001=3f
+4d454c002101005bff3001ffffffffffffffffffffffff0f0103010110010001=3c
+4d454c002101005cff3001ffffffffffffffffffffffff0f0103010110010001=3d
+4d454c002101005dff3001ffffffffffffffffffffffff0f0103010110010001=3a
+4d454c002101005eff3001ffffffffffffffffffffffff0f0103010110010001=3b
+4d454c002101005fff3001ffffffffffffffffffffffff0f0103010110010001=38
+4d454c0021010060ff3001ffffffffffffffffffffffff0f0103010110010001=39
+4d454c0021010061ff3001ffffffffffffffffffffffff0f0103010110010001=36
+4d454c0021010062ff3001ffffffffffffffffffffffff0f0103010110010001=37
+4d454c0021010063ff3001ffffffffffffffffffffffff0f0103010110010001=34
+4d454c0021010064ff3001ffffffffffffffffffffffff0f0103010110010001=35
+4d454c0021010065ff3001ffffffffffffffffffffffff0f0103010110010001=32
+4d454c0021010066ff3001ffffffffffffffffffffffff0f0103010110010001=33
+4d454c0021010067ff3001ffffffffffffffffffffffff0f0103010110010001=30
+4d454c0021010068ff3001ffffffffffffffffffffffff0f0103010110010001=31
+4d454c0021010069ff3001ffffffffffffffffffffffff0f0103010110010001=2e
+4d454c002101006aff3001ffffffffffffffffffffffff0f0103010110010001=2f
+4d454c002101006bff3001ffffffffffffffffffffffff0f0103010110010001=2c
+4d454c002101006cff3001ffffffffffffffffffffffff0f0103010110010001=2d
+4d454c002101006dff3001ffffffffffffffffffffffff0f0103010110010001=2a
+4d454c002101006eff3001ffffffffffffffffffffffff0f0103010110010001=2b
+4d454c002101006fff3001ffffffffffffffffffffffff0f0103010110010001=28
+4d454c0021010070ff3001ffffffffffffffffffffffff0f0103010110010001=29
+4d454c0021010071ff3001ffffffffffffffffffffffff0f0103010110010001=26
+4d454c0021010072ff3001ffffffffffffffffffffffff0f0103010110010001=27
+4d454c0021010073ff3001ffffffffffffffffffffffff0f0103010110010001=24
+4d454c0021010074ff3001ffffffffffffffffffffffff0f0103010110010001=25
+4d454c0021010075ff3001ffffffffffffffffffffffff0f0103010110010001=22
+4d454c0021010076ff3001ffffffffffffffffffffffff0f0103010110010001=23
+4d454c0021010077ff3001ffffffffffffffffffffffff0f0103010110010001=20
+4d454c0021010078ff3001ffffffffffffffffffffffff0f0103010110010001=21
+4d454c0021010079ff3001ffffffffffffffffffffffff0f0103010110010001=de
+4d454c002101007aff3001ffffffffffffffffffffffff0f0103010110010001=df
+4d454c002101007bff3001ffffffffffffffffffffffff0f0103010110010001=dc
+4d454c002101007cff3001ffffffffffffffffffffffff0f0103010110010001=dd
+4d454c002101007dff3001ffffffffffffffffffffffff0f0103010110010001=da
+4d454c002101007eff3001ffffffffffffffffffffffff0f0103010110010001=db
+4d454c002101007fff3001ffffffffffffffffffffffff0f0103010110010001=d8
+4d454c0021010080ff3001ffffffffffffffffffffffff0f0103010110010001=d9
+4d454c0021010081ff3001ffffffffffffffffffffffff0f0103010110010001=d6
+4d454c0021010082ff3001ffffffffffffffffffffffff0f0103010110010001=d7
+4d454c0021010083ff3001ffffffffffffffffffffffff0f0103010110010001=d4
+4d454c0021010084ff3001ffffffffffffffffffffffff0f0103010110010001=d5
+4d454c0021010085ff3001ffffffffffffffffffffffff0f0103010110010001=d2
+4d454c0021010086ff3001ffffffffffffffffffffffff0f0103010110010001=d3
+4d454c0021010087ff3001ffffffffffffffffffffffff0f0103010110010001=d0
+4d454c0021010088ff3001ffffffffffffffffffffffff0f0103010110010001=d1
+4d454c0021010089ff3001ffffffffffffffffffffffff0f0103010110010001=ce
+4d454c002101008aff3001ffffffffffffffffffffffff0f0103010110010001=cf
+4d454c002101008bff3001ffffffffffffffffffffffff0f0103010110010001=cc
+4d454c002101008cff3001ffffffffffffffffffffffff0f0103010110010001=cd
+4d454c002101008dff3001ffffffffffffffffffffffff0f0103010110010001=ca
+4d454c002101008eff3001ffffffffffffffffffffffff0f0103010110010001=cb
+4d454c002101008fff3001ffffffffffffffffffffffff0f0103010110010001=c8
+4d454c0021010090ff3001ffffffffffffffffffffffff0f0103010110010001=c9
+4d454c0021010091ff3001ffffffffffffffffffffffff0f0103010110010001=c6
+4d454c0021010092ff3001ffffffffffffffffffffffff0f0103010110010001=c7
+4d454c0021010093ff3001ffffffffffffffffffffffff0f0103010110010001=c4
+4d454c0021010094ff3001ffffffffffffffffffffffff0f0103010110010001=c5
+4d454c0021010095ff3001ffffffffffffffffffffffff0f0103010110010001=c2
+4d454c0021010096ff3001ffffffffffffffffffffffff0f0103010110010001=c3
+4d454c0021010097ff3001ffffffffffffffffffffffff0f0103010110010001=c0
+4d454c0021010098ff3001ffffffffffffffffffffffff0f0103010110010001=c1
+4d454c0021010099ff3001ffffffffffffffffffffffff0f0103010110010001=fe
+4d454c002101009aff3001ffffffffffffffffffffffff0f0103010110010001=ff
+4d454c002101009bff3001ffffffffffffffffffffffff0f0103010110010001=fc
+4d454c002101009cff3001ffffffffffffffffffffffff0f0103010110010001=fd
+4d454c002101009dff3001ffffffffffffffffffffffff0f0103010110010001=fa
+4d454c002101009eff3001ffffffffffffffffffffffff0f0103010110010001=fb
+4d454c002101009fff3001ffffffffffffffffffffffff0f0103010110010001=f8
+4d454c00210100a0ff3001ffffffffffffffffffffffff0f0103010110010001=f9
+4d454c00210100a1ff3001ffffffffffffffffffffffff0f0103010110010001=f6
+4d454c00210100a2ff3001ffffffffffffffffffffffff0f0103010110010001=f7
+4d454c00210100a3ff3001ffffffffffffffffffffffff0f0103010110010001=f4
+4d454c00210100a4ff3001ffffffffffffffffffffffff0f0103010110010001=f5
+4d454c00210100a5ff3001ffffffffffffffffffffffff0f0103010110010001=f2
+4d454c00210100a6ff3001ffffffffffffffffffffffff0f0103010110010001=f3
+4d454c00210100a7ff3001ffffffffffffffffffffffff0f0103010110010001=f0
+4d454c00210100a8ff3001ffffffffffffffffffffffff0f0103010110010001=f1
+4d454c00210100a9ff3001ffffffffffffffffffffffff0f0103010110010001=ee
+4d454c00210100aaff3001ffffffffffffffffffffffff0f0103010110010001=ef
+4d454c00210100abff3001ffffffffffffffffffffffff0f0103010110010001=ec
+4d454c00210100acff3001ffffffffffffffffffffffff0f0103010110010001=ed
+4d454c00210100adff3001ffffffffffffffffffffffff0f0103010110010001=ea
+4d454c00210100aeff3001ffffffffffffffffffffffff0f0103010110010001=eb
+4d454c00210100afff3001ffffffffffffffffffffffff0f0103010110010001=e8
+4d454c00210100b0ff3001ffffffffffffffffffffffff0f0103010110010001=e9
+4d454c00210100b1ff3001ffffffffffffffffffffffff0f0103010110010001=e6
+4d454c00210100b2ff3001ffffffffffffffffffffffff0f0103010110010001=e7
+4d454c00210100b3ff3001ffffffffffffffffffffffff0f0103010110010001=e4
+4d454c00210100b4ff3001ffffffffffffffffffffffff0f0103010110010001=e5
+4d454c00210100b5ff3001ffffffffffffffffffffffff0f0103010110010001=e2
+4d454c00210100b6ff3001ffffffffffffffffffffffff0f0103010110010001=e3
+4d454c00210100b7ff3001ffffffffffffffffffffffff0f0103010110010001=e0
+4d454c00210100b8ff3001ffffffffffffffffffffffff0f0103010110010001=e1
+4d454c00210100b9ff3001ffffffffffffffffffffffff0f0103010110010001=9e
+4d454c00210100baff3001ffffffffffffffffffffffff0f0103010110010001=9f
+4d454c00210100bbff3001ffffffffffffffffffffffff0f0103010110010001=9c
+4d454c00210100bcff3001ffffffffffffffffffffffff0f0103010110010001=9d
+4d454c00210100bdff3001ffffffffffffffffffffffff0f0103010110010001=9a
+4d454c00210100beff3001ffffffffffffffffffffffff0f0103010110010001=9b
+4d454c00210100bfff3001ffffffffffffffffffffffff0f0103010110010001=98
+4d454c00210100c0ff3001ffffffffffffffffffffffff0f0103010110010001=99
+4d454c00210100c1ff3001ffffffffffffffffffffffff0f0103010110010001=96
+4d454c00210100c2ff3001ffffffffffffffffffffffff0f0103010110010001=97
+4d454c00210100c3ff3001ffffffffffffffffffffffff0f0103010110010001=94
+4d454c00210100c4ff3001ffffffffffffffffffffffff0f0103010110010001=95
+4d454c00210100c5ff3001ffffffffffffffffffffffff0f0103010110010001=92
+4d454c00210100c6ff3001ffffffffffffffffffffffff0f0103010110010001=93
+4d454c00210100c7ff3001ffffffffffffffffffffffff0f0103010110010001=90
+4d454c00210100c8ff3001ffffffffffffffffffffffff0f0103010110010001=91
+4d454c00210100c9ff3001ffffffffffffffffffffffff0f0103010110010001=8e
+4d454c00210100caff3001ffffffffffffffffffffffff0f0103010110010001=8f
+4d454c00210100cbff3001ffffffffffffffffffffffff0f0103010110010001=8c
+4d454c00210100ccff3001ffffffffffffffffffffffff0f0103010110010001=8d
+4d454c00210100cdff3001ffffffffffffffffffffffff0f0103010110010001=8a
+4d454c00210100ceff3001ffffffffffffffffffffffff0f0103010110010001=8b
+4d454c00210100cfff3001ffffffffffffffffffffffff0f0103010110010001=88
+4d454c00210100d0ff3001ffffffffffffffffffffffff0f0103010110010001=89
+4d454c00210100d1ff3001ffffffffffffffffffffffff0f0103010110010001=86
+4d454c00210100d2ff3001ffffffffffffffffffffffff0f0103010110010001=87
+4d454c00210100d3ff3001ffffffffffffffffffffffff0f0103010110010001=84
+4d454c00210100d4ff3001ffffffffffffffffffffffff0f0103010110010001=85
+4d454c00210100d5ff3001ffffffffffffffffffffffff0f0103010110010001=82
+4d454c00210100d6ff3001ffffffffffffffffffffffff0f0103010110010001=83
+4d454c00210100d7ff3001ffffffffffffffffffffffff0f0103010110010001=80
+4d454c00210100d8ff3001ffffffffffffffffffffffff0f0103010110010001=81
+4d454c00210100d9ff3001ffffffffffffffffffffffff0f0103010110010001=be
+4d454c00210100daff3001ffffffffffffffffffffffff0f0103010110010001=bf
+4d454c00210100dbff3001ffffffffffffffffffffffff0f0103010110010001=bc
+4d454c00210100dcff3001ffffffffffffffffffffffff0f0103010110010001=bd
+4d454c00210100ddff3001ffffffffffffffffffffffff0f0103010110010001=ba
+4d454c00210100deff3001ffffffffffffffffffffffff0f0103010110010001=bb
+4d454c00210100dfff3001ffffffffffffffffffffffff0f0103010110010001=b8
+4d454c00210100e0ff3001ffffffffffffffffffffffff0f0103010110010001=b9
+4d454c00210100e1ff3001ffffffffffffffffffffffff0f0103010110010001=b6
+4d454c00210100e2ff3001ffffffffffffffffffffffff0f0103010110010001=b7
+4d454c00210100e3ff3001ffffffffffffffffffffffff0f0103010110010001=b4
+4d454c00210100e4ff3001ffffffffffffffffffffffff0f0103010110010001=b5
+4d454c00210100e5ff3001ffffffffffffffffffffffff0f0103010110010001=b2
+4d454c00210100e6ff3001ffffffffffffffffffffffff0f0103010110010001=b3
+4d454c00210100e7ff3001ffffffffffffffffffffffff0f0103010110010001=b0
+4d454c00210100e8ff3001ffffffffffffffffffffffff0f0103010110010001=b1
+4d454c00210100e9ff3001ffffffffffffffffffffffff0f0103010110010001=ae
+4d454c00210100eaff3001ffffffffffffffffffffffff0f0103010110010001=af
+4d454c00210100ebff3001ffffffffffffffffffffffff0f0103010110010001=ac
+4d454c00210100ecff3001ffffffffffffffffffffffff0f0103010110010001=ad
+4d454c00210100edff3001ffffffffffffffffffffffff0f0103010110010001=aa
+4d454c00210100eeff3001ffffffffffffffffffffffff0f0103010110010001=ab
+4d454c00210100efff3001ffffffffffffffffffffffff0f0103010110010001=a8
+4d454c00210100f0ff3001ffffffffffffffffffffffff0f0103010110010001=a9
+4d454c00210100f1ff3001ffffffffffffffffffffffff0f0103010110010001=a6
+4d454c00210100f2ff3001ffffffffffffffffffffffff0f0103010110010001=a7
+4d454c00210100f3ff3001ffffffffffffffffffffffff0f0103010110010001=a4
+4d454c00210100f4ff3001ffffffffffffffffffffffff0f0103010110010001=a5
+4d454c00210100f5ff3001ffffffffffffffffffffffff0f0103010110010001=a2
+4d454c00210100f6ff3001ffffffffffffffffffffffff0f0103010110010001=a3
+4d454c00210100f7ff3001ffffffffffffffffffffffff0f0103010110010001=a0
+4d454c00210100f8ff3001ffffffffffffffffffffffff0f0103010110010001=a1
+4d454c00210100f9ff3001ffffffffffffffffffffffff0f0103010110010000=5e
+4d454c00210100faff3001ffffffffffffffffffffffff0f0103010110010000=5f
+4d454c00210100fbff3001ffffffffffffffffffffffff0f0103010110010000=5c
+4d454c00210100fcff3001ffffffffffffffffffffffff0f0103010110010000=5d
+4d454c00210100fdff3001ffffffffffffffffffffffff0f0103010110010000=5a
+4d454c00210100feff3001ffffffffffffffffffffffff0f0103010110010000=5b
+4d454c00210100ffff3001ffffffffffffffffffffffff0f0103010110010000=58 \ No newline at end of file
diff --git a/research/bad-bruteforcing/reveng-formatted/melody15-repeat3-zone8-volume-increments.txt b/research/bad-bruteforcing/reveng-formatted/melody15-repeat3-zone8-volume-increments.txt
new file mode 100644
index 0000000..b1977fc
--- /dev/null
+++ b/research/bad-bruteforcing/reveng-formatted/melody15-repeat3-zone8-volume-increments.txt
@@ -0,0 +1,7 @@
+4d454c0021010000ff300180000000000000000000000000010103010f010001=f3
+4d454c0021010000ff300180000000000000000000000000010203010f010001=f1
+4d454c0021010000ff300180000000000000000000000000010303010f010001=f5
+4d454c0021010000ff300180000000000000000000000000010403010f010001=f4
+4d454c0021010000ff300180000000000000000000000000010503010f010001=f7
+4d454c0021010000ff300180000000000000000000000000010603010f010001=f6
+4d454c0021010000ff300180000000000000000000000000010703010f010001=c9 \ No newline at end of file
diff --git a/research/bad-bruteforcing/reveng-formatted/melody15-vol3-repeat2-zone16-sequecnce.txt b/research/bad-bruteforcing/reveng-formatted/melody15-vol3-repeat2-zone16-sequecnce.txt
new file mode 100644
index 0000000..31a91b9
--- /dev/null
+++ b/research/bad-bruteforcing/reveng-formatted/melody15-vol3-repeat2-zone16-sequecnce.txt
@@ -0,0 +1,256 @@
+4d454c0021010000ff300100800000000000000000000000010302010f010001=f4
+4d454c0021010001ff300100800000000000000000000000010302010f010001=fb
+4d454c0021010002ff300100800000000000000000000000010302010f010001=fa
+4d454c0021010003ff300100800000000000000000000000010302010f010001=f9
+4d454c0021010004ff300100800000000000000000000000010302010f010001=f8
+4d454c0021010005ff300100800000000000000000000000010302010f010001=ff
+4d454c0021010006ff300100800000000000000000000000010302010f010001=fe
+4d454c0021010007ff300100800000000000000000000000010302010f010001=fd
+4d454c0021010008ff300100800000000000000000000000010302010f010001=fc
+4d454c0021010009ff300100800000000000000000000000010302010f010001=e3
+4d454c002101000aff300100800000000000000000000000010302010f010001=e2
+4d454c002101000bff300100800000000000000000000000010302010f010001=e1
+4d454c002101000cff300100800000000000000000000000010302010f010001=e0
+4d454c002101000dff300100800000000000000000000000010302010f010001=e7
+4d454c002101000eff300100800000000000000000000000010302010f010001=e6
+4d454c002101000fff300100800000000000000000000000010302010f010001=e5
+4d454c0021010010ff300100800000000000000000000000010302010f010001=e4
+4d454c0021010011ff300100800000000000000000000000010302010f010001=eb
+4d454c0021010012ff300100800000000000000000000000010302010f010001=ea
+4d454c0021010013ff300100800000000000000000000000010302010f010001=e9
+4d454c0021010014ff300100800000000000000000000000010302010f010001=e8
+4d454c0021010015ff300100800000000000000000000000010302010f010001=ef
+4d454c0021010016ff300100800000000000000000000000010302010f010001=ee
+4d454c0021010017ff300100800000000000000000000000010302010f010001=ed
+4d454c0021010018ff300100800000000000000000000000010302010f010001=ec
+4d454c0021010019ff300100800000000000000000000000010302010f010001=d3
+4d454c002101001aff300100800000000000000000000000010302010f010001=d2
+4d454c002101001bff300100800000000000000000000000010302010f010001=d1
+4d454c002101001cff300100800000000000000000000000010302010f010001=d0
+4d454c002101001dff300100800000000000000000000000010302010f010001=d7
+4d454c002101001eff300100800000000000000000000000010302010f010001=d6
+4d454c002101001fff300100800000000000000000000000010302010f010001=d5
+4d454c0021010020ff300100800000000000000000000000010302010f010001=d4
+4d454c0021010021ff300100800000000000000000000000010302010f010001=db
+4d454c0021010022ff300100800000000000000000000000010302010f010001=da
+4d454c0021010023ff300100800000000000000000000000010302010f010001=d9
+4d454c0021010024ff300100800000000000000000000000010302010f010001=d8
+4d454c0021010025ff300100800000000000000000000000010302010f010001=df
+4d454c0021010026ff300100800000000000000000000000010302010f010001=de
+4d454c0021010027ff300100800000000000000000000000010302010f010001=dd
+4d454c0021010028ff300100800000000000000000000000010302010f010001=dc
+4d454c0021010029ff300100800000000000000000000000010302010f010001=c3
+4d454c002101002aff300100800000000000000000000000010302010f010001=c2
+4d454c002101002bff300100800000000000000000000000010302010f010001=c1
+4d454c002101002cff300100800000000000000000000000010302010f010001=c0
+4d454c002101002dff300100800000000000000000000000010302010f010001=c7
+4d454c002101002eff300100800000000000000000000000010302010f010001=c6
+4d454c002101002fff300100800000000000000000000000010302010f010001=c5
+4d454c0021010030ff300100800000000000000000000000010302010f010001=c4
+4d454c0021010031ff300100800000000000000000000000010302010f010001=cb
+4d454c0021010032ff300100800000000000000000000000010302010f010001=ca
+4d454c0021010033ff300100800000000000000000000000010302010f010001=c9
+4d454c0021010034ff300100800000000000000000000000010302010f010001=c8
+4d454c0021010035ff300100800000000000000000000000010302010f010001=cf
+4d454c0021010036ff300100800000000000000000000000010302010f010001=ce
+4d454c0021010037ff300100800000000000000000000000010302010f010001=cd
+4d454c0021010038ff300100800000000000000000000000010302010f010001=cc
+4d454c0021010039ff300100800000000000000000000000010302010f010001=b3
+4d454c002101003aff300100800000000000000000000000010302010f010001=b2
+4d454c002101003bff300100800000000000000000000000010302010f010001=b1
+4d454c002101003cff300100800000000000000000000000010302010f010001=b0
+4d454c002101003dff300100800000000000000000000000010302010f010001=b7
+4d454c002101003eff300100800000000000000000000000010302010f010001=b6
+4d454c002101003fff300100800000000000000000000000010302010f010001=b5
+4d454c0021010040ff300100800000000000000000000000010302010f010001=b4
+4d454c0021010041ff300100800000000000000000000000010302010f010001=bb
+4d454c0021010042ff300100800000000000000000000000010302010f010001=ba
+4d454c0021010043ff300100800000000000000000000000010302010f010001=b9
+4d454c0021010044ff300100800000000000000000000000010302010f010001=b8
+4d454c0021010045ff300100800000000000000000000000010302010f010001=bf
+4d454c0021010046ff300100800000000000000000000000010302010f010001=be
+4d454c0021010047ff300100800000000000000000000000010302010f010001=bd
+4d454c0021010048ff300100800000000000000000000000010302010f010001=bc
+4d454c0021010049ff300100800000000000000000000000010302010f010001=a3
+4d454c002101004aff300100800000000000000000000000010302010f010001=a2
+4d454c002101004bff300100800000000000000000000000010302010f010001=a1
+4d454c002101004cff300100800000000000000000000000010302010f010001=a0
+4d454c002101004dff300100800000000000000000000000010302010f010001=a7
+4d454c002101004eff300100800000000000000000000000010302010f010001=a6
+4d454c002101004fff300100800000000000000000000000010302010f010001=a5
+4d454c0021010050ff300100800000000000000000000000010302010f010001=a4
+4d454c0021010051ff300100800000000000000000000000010302010f010001=ab
+4d454c0021010052ff300100800000000000000000000000010302010f010001=aa
+4d454c0021010053ff300100800000000000000000000000010302010f010001=a9
+4d454c0021010054ff300100800000000000000000000000010302010f010001=a8
+4d454c0021010055ff300100800000000000000000000000010302010f010001=af
+4d454c0021010056ff300100800000000000000000000000010302010f010001=ae
+4d454c0021010057ff300100800000000000000000000000010302010f010001=ad
+4d454c0021010058ff300100800000000000000000000000010302010f010001=ac
+4d454c0021010059ff300100800000000000000000000000010302010f010001=93
+4d454c002101005aff300100800000000000000000000000010302010f010001=92
+4d454c002101005bff300100800000000000000000000000010302010f010001=91
+4d454c002101005cff300100800000000000000000000000010302010f010001=90
+4d454c002101005dff300100800000000000000000000000010302010f010001=97
+4d454c002101005eff300100800000000000000000000000010302010f010001=96
+4d454c002101005fff300100800000000000000000000000010302010f010001=95
+4d454c0021010060ff300100800000000000000000000000010302010f010001=94
+4d454c0021010061ff300100800000000000000000000000010302010f010001=9b
+4d454c0021010062ff300100800000000000000000000000010302010f010001=9a
+4d454c0021010063ff300100800000000000000000000000010302010f010001=99
+4d454c0021010064ff300100800000000000000000000000010302010f010001=98
+4d454c0021010065ff300100800000000000000000000000010302010f010001=9f
+4d454c0021010066ff300100800000000000000000000000010302010f010001=9e
+4d454c0021010067ff300100800000000000000000000000010302010f010001=9d
+4d454c0021010068ff300100800000000000000000000000010302010f010001=9c
+4d454c0021010069ff300100800000000000000000000000010302010f010001=83
+4d454c002101006aff300100800000000000000000000000010302010f010001=82
+4d454c002101006bff300100800000000000000000000000010302010f010001=81
+4d454c002101006cff300100800000000000000000000000010302010f010001=80
+4d454c002101006dff300100800000000000000000000000010302010f010001=87
+4d454c002101006eff300100800000000000000000000000010302010f010001=86
+4d454c002101006fff300100800000000000000000000000010302010f010001=85
+4d454c0021010070ff300100800000000000000000000000010302010f010001=84
+4d454c0021010071ff300100800000000000000000000000010302010f010001=8b
+4d454c0021010072ff300100800000000000000000000000010302010f010001=8a
+4d454c0021010073ff300100800000000000000000000000010302010f010001=89
+4d454c0021010074ff300100800000000000000000000000010302010f010001=88
+4d454c0021010075ff300100800000000000000000000000010302010f010001=8f
+4d454c0021010076ff300100800000000000000000000000010302010f010001=8e
+4d454c0021010077ff300100800000000000000000000000010302010f010001=8d
+4d454c0021010078ff300100800000000000000000000000010302010f010001=8c
+4d454c0021010079ff300100800000000000000000000000010302010f010001=73
+4d454c002101007aff300100800000000000000000000000010302010f010001=72
+4d454c002101007bff300100800000000000000000000000010302010f010001=71
+4d454c002101007cff300100800000000000000000000000010302010f010001=70
+4d454c002101007dff300100800000000000000000000000010302010f010001=77
+4d454c002101007eff300100800000000000000000000000010302010f010001=76
+4d454c002101007fff300100800000000000000000000000010302010f010001=75
+4d454c0021010080ff300100800000000000000000000000010302010f010001=74
+4d454c0021010081ff300100800000000000000000000000010302010f010001=7b
+4d454c0021010082ff300100800000000000000000000000010302010f010001=7a
+4d454c0021010083ff300100800000000000000000000000010302010f010001=79
+4d454c0021010084ff300100800000000000000000000000010302010f010001=78
+4d454c0021010085ff300100800000000000000000000000010302010f010001=7f
+4d454c0021010086ff300100800000000000000000000000010302010f010001=7e
+4d454c0021010087ff300100800000000000000000000000010302010f010001=7d
+4d454c0021010088ff300100800000000000000000000000010302010f010001=7c
+4d454c0021010089ff300100800000000000000000000000010302010f010001=63
+4d454c002101008aff300100800000000000000000000000010302010f010001=62
+4d454c002101008bff300100800000000000000000000000010302010f010001=61
+4d454c002101008cff300100800000000000000000000000010302010f010001=60
+4d454c002101008dff300100800000000000000000000000010302010f010001=67
+4d454c002101008eff300100800000000000000000000000010302010f010001=66
+4d454c002101008fff300100800000000000000000000000010302010f010001=65
+4d454c0021010090ff300100800000000000000000000000010302010f010001=64
+4d454c0021010091ff300100800000000000000000000000010302010f010001=6b
+4d454c0021010092ff300100800000000000000000000000010302010f010001=6a
+4d454c0021010093ff300100800000000000000000000000010302010f010001=69
+4d454c0021010094ff300100800000000000000000000000010302010f010001=68
+4d454c0021010095ff300100800000000000000000000000010302010f010001=6f
+4d454c0021010096ff300100800000000000000000000000010302010f010001=6e
+4d454c0021010097ff300100800000000000000000000000010302010f010001=6d
+4d454c0021010098ff300100800000000000000000000000010302010f010001=6c
+4d454c0021010099ff300100800000000000000000000000010302010f010001=53
+4d454c002101009aff300100800000000000000000000000010302010f010001=52
+4d454c002101009bff300100800000000000000000000000010302010f010001=51
+4d454c002101009cff300100800000000000000000000000010302010f010001=50
+4d454c002101009dff300100800000000000000000000000010302010f010001=57
+4d454c002101009eff300100800000000000000000000000010302010f010001=56
+4d454c002101009fff300100800000000000000000000000010302010f010001=55
+4d454c00210100a0ff300100800000000000000000000000010302010f010001=54
+4d454c00210100a1ff300100800000000000000000000000010302010f010001=5b
+4d454c00210100a2ff300100800000000000000000000000010302010f010001=5a
+4d454c00210100a3ff300100800000000000000000000000010302010f010001=59
+4d454c00210100a4ff300100800000000000000000000000010302010f010001=58
+4d454c00210100a5ff300100800000000000000000000000010302010f010001=5f
+4d454c00210100a6ff300100800000000000000000000000010302010f010001=5e
+4d454c00210100a7ff300100800000000000000000000000010302010f010001=5d
+4d454c00210100a8ff300100800000000000000000000000010302010f010001=5c
+4d454c00210100a9ff300100800000000000000000000000010302010f010001=43
+4d454c00210100aaff300100800000000000000000000000010302010f010001=42
+4d454c00210100abff300100800000000000000000000000010302010f010001=41
+4d454c00210100acff300100800000000000000000000000010302010f010001=40
+4d454c00210100adff300100800000000000000000000000010302010f010001=47
+4d454c00210100aeff300100800000000000000000000000010302010f010001=46
+4d454c00210100afff300100800000000000000000000000010302010f010001=45
+4d454c00210100b0ff300100800000000000000000000000010302010f010001=44
+4d454c00210100b1ff300100800000000000000000000000010302010f010001=4b
+4d454c00210100b2ff300100800000000000000000000000010302010f010001=4a
+4d454c00210100b3ff300100800000000000000000000000010302010f010001=49
+4d454c00210100b4ff300100800000000000000000000000010302010f010001=48
+4d454c00210100b5ff300100800000000000000000000000010302010f010001=4f
+4d454c00210100b6ff300100800000000000000000000000010302010f010001=4e
+4d454c00210100b7ff300100800000000000000000000000010302010f010001=4d
+4d454c00210100b8ff300100800000000000000000000000010302010f010001=4c
+4d454c00210100b9ff300100800000000000000000000000010302010f010001=33
+4d454c00210100baff300100800000000000000000000000010302010f010001=32
+4d454c00210100bbff300100800000000000000000000000010302010f010001=31
+4d454c00210100bcff300100800000000000000000000000010302010f010001=30
+4d454c00210100bdff300100800000000000000000000000010302010f010001=37
+4d454c00210100beff300100800000000000000000000000010302010f010001=36
+4d454c00210100bfff300100800000000000000000000000010302010f010001=35
+4d454c00210100c0ff300100800000000000000000000000010302010f010001=34
+4d454c00210100c1ff300100800000000000000000000000010302010f010001=3b
+4d454c00210100c2ff300100800000000000000000000000010302010f010001=3a
+4d454c00210100c3ff300100800000000000000000000000010302010f010001=39
+4d454c00210100c4ff300100800000000000000000000000010302010f010001=38
+4d454c00210100c5ff300100800000000000000000000000010302010f010001=3f
+4d454c00210100c6ff300100800000000000000000000000010302010f010001=3e
+4d454c00210100c7ff300100800000000000000000000000010302010f010001=3d
+4d454c00210100c8ff300100800000000000000000000000010302010f010001=3c
+4d454c00210100c9ff300100800000000000000000000000010302010f010001=23
+4d454c00210100caff300100800000000000000000000000010302010f010001=22
+4d454c00210100cbff300100800000000000000000000000010302010f010001=21
+4d454c00210100ccff300100800000000000000000000000010302010f010001=20
+4d454c00210100cdff300100800000000000000000000000010302010f010001=27
+4d454c00210100ceff300100800000000000000000000000010302010f010001=26
+4d454c00210100cfff300100800000000000000000000000010302010f010001=25
+4d454c00210100d0ff300100800000000000000000000000010302010f010001=24
+4d454c00210100d1ff300100800000000000000000000000010302010f010001=2b
+4d454c00210100d2ff300100800000000000000000000000010302010f010001=2a
+4d454c00210100d3ff300100800000000000000000000000010302010f010001=29
+4d454c00210100d4ff300100800000000000000000000000010302010f010001=28
+4d454c00210100d5ff300100800000000000000000000000010302010f010001=2f
+4d454c00210100d6ff300100800000000000000000000000010302010f010001=2e
+4d454c00210100d7ff300100800000000000000000000000010302010f010001=2d
+4d454c00210100d8ff300100800000000000000000000000010302010f010001=2c
+4d454c00210100d9ff300100800000000000000000000000010302010f010001=13
+4d454c00210100daff300100800000000000000000000000010302010f010001=12
+4d454c00210100dbff300100800000000000000000000000010302010f010001=11
+4d454c00210100dcff300100800000000000000000000000010302010f010001=10
+4d454c00210100ddff300100800000000000000000000000010302010f010001=17
+4d454c00210100deff300100800000000000000000000000010302010f010001=16
+4d454c00210100dfff300100800000000000000000000000010302010f010001=15
+4d454c00210100e0ff300100800000000000000000000000010302010f010001=14
+4d454c00210100e1ff300100800000000000000000000000010302010f010001=1b
+4d454c00210100e2ff300100800000000000000000000000010302010f010001=1a
+4d454c00210100e3ff300100800000000000000000000000010302010f010001=19
+4d454c00210100e4ff300100800000000000000000000000010302010f010001=18
+4d454c00210100e5ff300100800000000000000000000000010302010f010001=1f
+4d454c00210100e6ff300100800000000000000000000000010302010f010001=1e
+4d454c00210100e7ff300100800000000000000000000000010302010f010001=1d
+4d454c00210100e8ff300100800000000000000000000000010302010f010001=1c
+4d454c00210100e9ff300100800000000000000000000000010302010f010001=03
+4d454c00210100eaff300100800000000000000000000000010302010f010001=02
+4d454c00210100ebff300100800000000000000000000000010302010f010001=01
+4d454c00210100ecff300100800000000000000000000000010302010f010001=00
+4d454c00210100edff300100800000000000000000000000010302010f010001=07
+4d454c00210100eeff300100800000000000000000000000010302010f010001=06
+4d454c00210100efff300100800000000000000000000000010302010f010001=05
+4d454c00210100f0ff300100800000000000000000000000010302010f010001=04
+4d454c00210100f1ff300100800000000000000000000000010302010f010001=0b
+4d454c00210100f2ff300100800000000000000000000000010302010f010001=0a
+4d454c00210100f3ff300100800000000000000000000000010302010f010001=09
+4d454c00210100f4ff300100800000000000000000000000010302010f010001=08
+4d454c00210100f5ff300100800000000000000000000000010302010f010001=0f
+4d454c00210100f6ff300100800000000000000000000000010302010f010001=0e
+4d454c00210100f7ff300100800000000000000000000000010302010f010001=0d
+4d454c00210100f8ff300100800000000000000000000000010302010f010001=0c
+4d454c00210100f9ff300100800000000000000000000000010302010f010000=f3
+4d454c00210100faff300100800000000000000000000000010302010f010000=f2
+4d454c00210100fbff300100800000000000000000000000010302010f010000=f1
+4d454c00210100fcff300100800000000000000000000000010302010f010000=f0
+4d454c00210100fdff300100800000000000000000000000010302010f010000=f7
+4d454c00210100feff300100800000000000000000000000010302010f010000=f6
+4d454c00210100ffff300100800000000000000000000000010302010f010000=f5 \ No newline at end of file
diff --git a/research/bad-bruteforcing/reveng-formatted/melody15-vol3-repeat2-zone8-sequence.txt b/research/bad-bruteforcing/reveng-formatted/melody15-vol3-repeat2-zone8-sequence.txt
new file mode 100644
index 0000000..6b47229
--- /dev/null
+++ b/research/bad-bruteforcing/reveng-formatted/melody15-vol3-repeat2-zone8-sequence.txt
@@ -0,0 +1,256 @@
+4d454c0021010000ff300180000000000000000000000000010302010f010001=f4
+4d454c0021010001ff300180000000000000000000000000010302010f010001=fb
+4d454c0021010002ff300180000000000000000000000000010302010f010001=fa
+4d454c0021010003ff300180000000000000000000000000010302010f010001=f9
+4d454c0021010004ff300180000000000000000000000000010302010f010001=f8
+4d454c0021010005ff300180000000000000000000000000010302010f010001=ff
+4d454c0021010006ff300180000000000000000000000000010302010f010001=fe
+4d454c0021010007ff300180000000000000000000000000010302010f010001=fd
+4d454c0021010008ff300180000000000000000000000000010302010f010001=fc
+4d454c0021010009ff300180000000000000000000000000010302010f010001=e3
+4d454c002101000aff300180000000000000000000000000010302010f010001=e2
+4d454c002101000bff300180000000000000000000000000010302010f010001=e1
+4d454c002101000cff300180000000000000000000000000010302010f010001=e0
+4d454c002101000dff300180000000000000000000000000010302010f010001=e7
+4d454c002101000eff300180000000000000000000000000010302010f010001=e6
+4d454c002101000fff300180000000000000000000000000010302010f010001=e5
+4d454c0021010010ff300180000000000000000000000000010302010f010001=e4
+4d454c0021010011ff300180000000000000000000000000010302010f010001=eb
+4d454c0021010012ff300180000000000000000000000000010302010f010001=ea
+4d454c0021010013ff300180000000000000000000000000010302010f010001=e9
+4d454c0021010014ff300180000000000000000000000000010302010f010001=e8
+4d454c0021010015ff300180000000000000000000000000010302010f010001=ef
+4d454c0021010016ff300180000000000000000000000000010302010f010001=ee
+4d454c0021010017ff300180000000000000000000000000010302010f010001=ed
+4d454c0021010018ff300180000000000000000000000000010302010f010001=ec
+4d454c0021010019ff300180000000000000000000000000010302010f010001=d3
+4d454c002101001aff300180000000000000000000000000010302010f010001=d2
+4d454c002101001bff300180000000000000000000000000010302010f010001=d1
+4d454c002101001cff300180000000000000000000000000010302010f010001=d0
+4d454c002101001dff300180000000000000000000000000010302010f010001=d7
+4d454c002101001eff300180000000000000000000000000010302010f010001=d6
+4d454c002101001fff300180000000000000000000000000010302010f010001=d5
+4d454c0021010020ff300180000000000000000000000000010302010f010001=d4
+4d454c0021010021ff300180000000000000000000000000010302010f010001=db
+4d454c0021010022ff300180000000000000000000000000010302010f010001=da
+4d454c0021010023ff300180000000000000000000000000010302010f010001=d9
+4d454c0021010024ff300180000000000000000000000000010302010f010001=d8
+4d454c0021010025ff300180000000000000000000000000010302010f010001=df
+4d454c0021010026ff300180000000000000000000000000010302010f010001=de
+4d454c0021010027ff300180000000000000000000000000010302010f010001=dd
+4d454c0021010028ff300180000000000000000000000000010302010f010001=dc
+4d454c0021010029ff300180000000000000000000000000010302010f010001=c3
+4d454c002101002aff300180000000000000000000000000010302010f010001=c2
+4d454c002101002bff300180000000000000000000000000010302010f010001=c1
+4d454c002101002cff300180000000000000000000000000010302010f010001=c0
+4d454c002101002dff300180000000000000000000000000010302010f010001=c7
+4d454c002101002eff300180000000000000000000000000010302010f010001=c6
+4d454c002101002fff300180000000000000000000000000010302010f010001=c5
+4d454c0021010030ff300180000000000000000000000000010302010f010001=c4
+4d454c0021010031ff300180000000000000000000000000010302010f010001=cb
+4d454c0021010032ff300180000000000000000000000000010302010f010001=ca
+4d454c0021010033ff300180000000000000000000000000010302010f010001=c9
+4d454c0021010034ff300180000000000000000000000000010302010f010001=c8
+4d454c0021010035ff300180000000000000000000000000010302010f010001=cf
+4d454c0021010036ff300180000000000000000000000000010302010f010001=ce
+4d454c0021010037ff300180000000000000000000000000010302010f010001=cd
+4d454c0021010038ff300180000000000000000000000000010302010f010001=cc
+4d454c0021010039ff300180000000000000000000000000010302010f010001=b3
+4d454c002101003aff300180000000000000000000000000010302010f010001=b2
+4d454c002101003bff300180000000000000000000000000010302010f010001=b1
+4d454c002101003cff300180000000000000000000000000010302010f010001=b0
+4d454c002101003dff300180000000000000000000000000010302010f010001=b7
+4d454c002101003eff300180000000000000000000000000010302010f010001=b6
+4d454c002101003fff300180000000000000000000000000010302010f010001=b5
+4d454c0021010040ff300180000000000000000000000000010302010f010001=b4
+4d454c0021010041ff300180000000000000000000000000010302010f010001=bb
+4d454c0021010042ff300180000000000000000000000000010302010f010001=ba
+4d454c0021010043ff300180000000000000000000000000010302010f010001=b9
+4d454c0021010044ff300180000000000000000000000000010302010f010001=b8
+4d454c0021010045ff300180000000000000000000000000010302010f010001=bf
+4d454c0021010046ff300180000000000000000000000000010302010f010001=be
+4d454c0021010047ff300180000000000000000000000000010302010f010001=bd
+4d454c0021010048ff300180000000000000000000000000010302010f010001=bc
+4d454c0021010049ff300180000000000000000000000000010302010f010001=a3
+4d454c002101004aff300180000000000000000000000000010302010f010001=a2
+4d454c002101004bff300180000000000000000000000000010302010f010001=a1
+4d454c002101004cff300180000000000000000000000000010302010f010001=a0
+4d454c002101004dff300180000000000000000000000000010302010f010001=a7
+4d454c002101004eff300180000000000000000000000000010302010f010001=a6
+4d454c002101004fff300180000000000000000000000000010302010f010001=a5
+4d454c0021010050ff300180000000000000000000000000010302010f010001=a4
+4d454c0021010051ff300180000000000000000000000000010302010f010001=ab
+4d454c0021010052ff300180000000000000000000000000010302010f010001=aa
+4d454c0021010053ff300180000000000000000000000000010302010f010001=a9
+4d454c0021010054ff300180000000000000000000000000010302010f010001=a8
+4d454c0021010055ff300180000000000000000000000000010302010f010001=af
+4d454c0021010056ff300180000000000000000000000000010302010f010001=ae
+4d454c0021010057ff300180000000000000000000000000010302010f010001=ad
+4d454c0021010058ff300180000000000000000000000000010302010f010001=ac
+4d454c0021010059ff300180000000000000000000000000010302010f010001=93
+4d454c002101005aff300180000000000000000000000000010302010f010001=92
+4d454c002101005bff300180000000000000000000000000010302010f010001=91
+4d454c002101005cff300180000000000000000000000000010302010f010001=90
+4d454c002101005dff300180000000000000000000000000010302010f010001=97
+4d454c002101005eff300180000000000000000000000000010302010f010001=96
+4d454c002101005fff300180000000000000000000000000010302010f010001=95
+4d454c0021010060ff300180000000000000000000000000010302010f010001=94
+4d454c0021010061ff300180000000000000000000000000010302010f010001=9b
+4d454c0021010062ff300180000000000000000000000000010302010f010001=9a
+4d454c0021010063ff300180000000000000000000000000010302010f010001=99
+4d454c0021010064ff300180000000000000000000000000010302010f010001=98
+4d454c0021010065ff300180000000000000000000000000010302010f010001=9f
+4d454c0021010066ff300180000000000000000000000000010302010f010001=9e
+4d454c0021010067ff300180000000000000000000000000010302010f010001=9d
+4d454c0021010068ff300180000000000000000000000000010302010f010001=9c
+4d454c0021010069ff300180000000000000000000000000010302010f010001=83
+4d454c002101006aff300180000000000000000000000000010302010f010001=82
+4d454c002101006bff300180000000000000000000000000010302010f010001=81
+4d454c002101006cff300180000000000000000000000000010302010f010001=80
+4d454c002101006dff300180000000000000000000000000010302010f010001=87
+4d454c002101006eff300180000000000000000000000000010302010f010001=86
+4d454c002101006fff300180000000000000000000000000010302010f010001=85
+4d454c0021010070ff300180000000000000000000000000010302010f010001=84
+4d454c0021010071ff300180000000000000000000000000010302010f010001=8b
+4d454c0021010072ff300180000000000000000000000000010302010f010001=8a
+4d454c0021010073ff300180000000000000000000000000010302010f010001=89
+4d454c0021010074ff300180000000000000000000000000010302010f010001=88
+4d454c0021010075ff300180000000000000000000000000010302010f010001=8f
+4d454c0021010076ff300180000000000000000000000000010302010f010001=8e
+4d454c0021010077ff300180000000000000000000000000010302010f010001=8d
+4d454c0021010078ff300180000000000000000000000000010302010f010001=8c
+4d454c0021010079ff300180000000000000000000000000010302010f010001=73
+4d454c002101007aff300180000000000000000000000000010302010f010001=72
+4d454c002101007bff300180000000000000000000000000010302010f010001=71
+4d454c002101007cff300180000000000000000000000000010302010f010001=70
+4d454c002101007dff300180000000000000000000000000010302010f010001=77
+4d454c002101007eff300180000000000000000000000000010302010f010001=76
+4d454c002101007fff300180000000000000000000000000010302010f010001=75
+4d454c0021010080ff300180000000000000000000000000010302010f010001=74
+4d454c0021010081ff300180000000000000000000000000010302010f010001=7b
+4d454c0021010082ff300180000000000000000000000000010302010f010001=7a
+4d454c0021010083ff300180000000000000000000000000010302010f010001=79
+4d454c0021010084ff300180000000000000000000000000010302010f010001=78
+4d454c0021010085ff300180000000000000000000000000010302010f010001=7f
+4d454c0021010086ff300180000000000000000000000000010302010f010001=7e
+4d454c0021010087ff300180000000000000000000000000010302010f010001=7d
+4d454c0021010088ff300180000000000000000000000000010302010f010001=7c
+4d454c0021010089ff300180000000000000000000000000010302010f010001=63
+4d454c002101008aff300180000000000000000000000000010302010f010001=62
+4d454c002101008bff300180000000000000000000000000010302010f010001=61
+4d454c002101008cff300180000000000000000000000000010302010f010001=60
+4d454c002101008dff300180000000000000000000000000010302010f010001=67
+4d454c002101008eff300180000000000000000000000000010302010f010001=66
+4d454c002101008fff300180000000000000000000000000010302010f010001=65
+4d454c0021010090ff300180000000000000000000000000010302010f010001=64
+4d454c0021010091ff300180000000000000000000000000010302010f010001=6b
+4d454c0021010092ff300180000000000000000000000000010302010f010001=6a
+4d454c0021010093ff300180000000000000000000000000010302010f010001=69
+4d454c0021010094ff300180000000000000000000000000010302010f010001=68
+4d454c0021010095ff300180000000000000000000000000010302010f010001=6f
+4d454c0021010096ff300180000000000000000000000000010302010f010001=6e
+4d454c0021010097ff300180000000000000000000000000010302010f010001=6d
+4d454c0021010098ff300180000000000000000000000000010302010f010001=6c
+4d454c0021010099ff300180000000000000000000000000010302010f010001=53
+4d454c002101009aff300180000000000000000000000000010302010f010001=52
+4d454c002101009bff300180000000000000000000000000010302010f010001=51
+4d454c002101009cff300180000000000000000000000000010302010f010001=50
+4d454c002101009dff300180000000000000000000000000010302010f010001=57
+4d454c002101009eff300180000000000000000000000000010302010f010001=56
+4d454c002101009fff300180000000000000000000000000010302010f010001=55
+4d454c00210100a0ff300180000000000000000000000000010302010f010001=54
+4d454c00210100a1ff300180000000000000000000000000010302010f010001=5b
+4d454c00210100a2ff300180000000000000000000000000010302010f010001=5a
+4d454c00210100a3ff300180000000000000000000000000010302010f010001=59
+4d454c00210100a4ff300180000000000000000000000000010302010f010001=58
+4d454c00210100a5ff300180000000000000000000000000010302010f010001=5f
+4d454c00210100a6ff300180000000000000000000000000010302010f010001=5e
+4d454c00210100a7ff300180000000000000000000000000010302010f010001=5d
+4d454c00210100a8ff300180000000000000000000000000010302010f010001=5c
+4d454c00210100a9ff300180000000000000000000000000010302010f010001=43
+4d454c00210100aaff300180000000000000000000000000010302010f010001=42
+4d454c00210100abff300180000000000000000000000000010302010f010001=41
+4d454c00210100acff300180000000000000000000000000010302010f010001=40
+4d454c00210100adff300180000000000000000000000000010302010f010001=47
+4d454c00210100aeff300180000000000000000000000000010302010f010001=46
+4d454c00210100afff300180000000000000000000000000010302010f010001=45
+4d454c00210100b0ff300180000000000000000000000000010302010f010001=44
+4d454c00210100b1ff300180000000000000000000000000010302010f010001=4b
+4d454c00210100b2ff300180000000000000000000000000010302010f010001=4a
+4d454c00210100b3ff300180000000000000000000000000010302010f010001=49
+4d454c00210100b4ff300180000000000000000000000000010302010f010001=48
+4d454c00210100b5ff300180000000000000000000000000010302010f010001=4f
+4d454c00210100b6ff300180000000000000000000000000010302010f010001=4e
+4d454c00210100b7ff300180000000000000000000000000010302010f010001=4d
+4d454c00210100b8ff300180000000000000000000000000010302010f010001=4c
+4d454c00210100b9ff300180000000000000000000000000010302010f010001=33
+4d454c00210100baff300180000000000000000000000000010302010f010001=32
+4d454c00210100bbff300180000000000000000000000000010302010f010001=31
+4d454c00210100bcff300180000000000000000000000000010302010f010001=30
+4d454c00210100bdff300180000000000000000000000000010302010f010001=37
+4d454c00210100beff300180000000000000000000000000010302010f010001=36
+4d454c00210100bfff300180000000000000000000000000010302010f010001=35
+4d454c00210100c0ff300180000000000000000000000000010302010f010001=34
+4d454c00210100c1ff300180000000000000000000000000010302010f010001=3b
+4d454c00210100c2ff300180000000000000000000000000010302010f010001=3a
+4d454c00210100c3ff300180000000000000000000000000010302010f010001=39
+4d454c00210100c4ff300180000000000000000000000000010302010f010001=38
+4d454c00210100c5ff300180000000000000000000000000010302010f010001=3f
+4d454c00210100c6ff300180000000000000000000000000010302010f010001=3e
+4d454c00210100c7ff300180000000000000000000000000010302010f010001=3d
+4d454c00210100c8ff300180000000000000000000000000010302010f010001=3c
+4d454c00210100c9ff300180000000000000000000000000010302010f010001=23
+4d454c00210100caff300180000000000000000000000000010302010f010001=22
+4d454c00210100cbff300180000000000000000000000000010302010f010001=21
+4d454c00210100ccff300180000000000000000000000000010302010f010001=20
+4d454c00210100cdff300180000000000000000000000000010302010f010001=27
+4d454c00210100ceff300180000000000000000000000000010302010f010001=26
+4d454c00210100cfff300180000000000000000000000000010302010f010001=25
+4d454c00210100d0ff300180000000000000000000000000010302010f010001=24
+4d454c00210100d1ff300180000000000000000000000000010302010f010001=2b
+4d454c00210100d2ff300180000000000000000000000000010302010f010001=2a
+4d454c00210100d3ff300180000000000000000000000000010302010f010001=29
+4d454c00210100d4ff300180000000000000000000000000010302010f010001=28
+4d454c00210100d5ff300180000000000000000000000000010302010f010001=2f
+4d454c00210100d6ff300180000000000000000000000000010302010f010001=2e
+4d454c00210100d7ff300180000000000000000000000000010302010f010001=2d
+4d454c00210100d8ff300180000000000000000000000000010302010f010001=2c
+4d454c00210100d9ff300180000000000000000000000000010302010f010001=13
+4d454c00210100daff300180000000000000000000000000010302010f010001=12
+4d454c00210100dbff300180000000000000000000000000010302010f010001=11
+4d454c00210100dcff300180000000000000000000000000010302010f010001=10
+4d454c00210100ddff300180000000000000000000000000010302010f010001=17
+4d454c00210100deff300180000000000000000000000000010302010f010001=16
+4d454c00210100dfff300180000000000000000000000000010302010f010001=15
+4d454c00210100e0ff300180000000000000000000000000010302010f010001=14
+4d454c00210100e1ff300180000000000000000000000000010302010f010001=1b
+4d454c00210100e2ff300180000000000000000000000000010302010f010001=1a
+4d454c00210100e3ff300180000000000000000000000000010302010f010001=19
+4d454c00210100e4ff300180000000000000000000000000010302010f010001=18
+4d454c00210100e5ff300180000000000000000000000000010302010f010001=1f
+4d454c00210100e6ff300180000000000000000000000000010302010f010001=1e
+4d454c00210100e7ff300180000000000000000000000000010302010f010001=1d
+4d454c00210100e8ff300180000000000000000000000000010302010f010001=1c
+4d454c00210100e9ff300180000000000000000000000000010302010f010001=03
+4d454c00210100eaff300180000000000000000000000000010302010f010001=02
+4d454c00210100ebff300180000000000000000000000000010302010f010001=01
+4d454c00210100ecff300180000000000000000000000000010302010f010001=00
+4d454c00210100edff300180000000000000000000000000010302010f010001=07
+4d454c00210100eeff300180000000000000000000000000010302010f010001=06
+4d454c00210100efff300180000000000000000000000000010302010f010001=05
+4d454c00210100f0ff300180000000000000000000000000010302010f010001=04
+4d454c00210100f1ff300180000000000000000000000000010302010f010001=0b
+4d454c00210100f2ff300180000000000000000000000000010302010f010001=0a
+4d454c00210100f3ff300180000000000000000000000000010302010f010001=09
+4d454c00210100f4ff300180000000000000000000000000010302010f010001=08
+4d454c00210100f5ff300180000000000000000000000000010302010f010001=0f
+4d454c00210100f6ff300180000000000000000000000000010302010f010001=0e
+4d454c00210100f7ff300180000000000000000000000000010302010f010001=0d
+4d454c00210100f8ff300180000000000000000000000000010302010f010001=0c
+4d454c00210100f9ff300180000000000000000000000000010302010f010000=f3
+4d454c00210100faff300180000000000000000000000000010302010f010000=f2
+4d454c00210100fbff300180000000000000000000000000010302010f010000=f1
+4d454c00210100fcff300180000000000000000000000000010302010f010000=f0
+4d454c00210100fdff300180000000000000000000000000010302010f010000=f7
+4d454c00210100feff300180000000000000000000000000010302010f010000=f6
+4d454c00210100ffff300180000000000000000000000000010302010f010000=f5 \ No newline at end of file
diff --git a/research/bad-bruteforcing/reveng-formatted/melody15-vol3-zone8-repeat-increments.txt b/research/bad-bruteforcing/reveng-formatted/melody15-vol3-zone8-repeat-increments.txt
new file mode 100644
index 0000000..ca33ffd
--- /dev/null
+++ b/research/bad-bruteforcing/reveng-formatted/melody15-vol3-zone8-repeat-increments.txt
@@ -0,0 +1,5 @@
+4d454c0021010000ff300180000000000000000000000000010301010f010001=f3
+4d454c0021010000ff300180000000000000000000000000010302010f010001=f4
+4d454c0021010000ff300180000000000000000000000000010303010f010001=f5
+4d454c0021010000ff300180000000000000000000000000010304010f010001=f6
+4d454c0021010000ff300180000000000000000000000000010305010f010001=f7 \ No newline at end of file
diff --git a/research/bad-bruteforcing/reveng-formatted/melody16-vol3-repeat2-zone-all-sequence.txt b/research/bad-bruteforcing/reveng-formatted/melody16-vol3-repeat2-zone-all-sequence.txt
new file mode 100644
index 0000000..5e6202f
--- /dev/null
+++ b/research/bad-bruteforcing/reveng-formatted/melody16-vol3-repeat2-zone-all-sequence.txt
@@ -0,0 +1,256 @@
+4d454c0021010000ff3001ffffffffffffffffffffffff0f0103020110010001=5e
+4d454c0021010001ff3001ffffffffffffffffffffffff0f0103020110010001=51
+4d454c0021010002ff3001ffffffffffffffffffffffff0f0103020110010001=50
+4d454c0021010003ff3001ffffffffffffffffffffffff0f0103020110010001=53
+4d454c0021010004ff3001ffffffffffffffffffffffff0f0103020110010001=52
+4d454c0021010005ff3001ffffffffffffffffffffffff0f0103020110010001=55
+4d454c0021010006ff3001ffffffffffffffffffffffff0f0103020110010001=54
+4d454c0021010007ff3001ffffffffffffffffffffffff0f0103020110010001=57
+4d454c0021010008ff3001ffffffffffffffffffffffff0f0103020110010001=56
+4d454c0021010009ff3001ffffffffffffffffffffffff0f0103020110010001=49
+4d454c002101000aff3001ffffffffffffffffffffffff0f0103020110010001=48
+4d454c002101000bff3001ffffffffffffffffffffffff0f0103020110010001=4b
+4d454c002101000cff3001ffffffffffffffffffffffff0f0103020110010001=4a
+4d454c002101000dff3001ffffffffffffffffffffffff0f0103020110010001=4d
+4d454c002101000eff3001ffffffffffffffffffffffff0f0103020110010001=4c
+4d454c002101000fff3001ffffffffffffffffffffffff0f0103020110010001=4f
+4d454c0021010010ff3001ffffffffffffffffffffffff0f0103020110010001=4e
+4d454c0021010011ff3001ffffffffffffffffffffffff0f0103020110010001=41
+4d454c0021010012ff3001ffffffffffffffffffffffff0f0103020110010001=40
+4d454c0021010013ff3001ffffffffffffffffffffffff0f0103020110010001=43
+4d454c0021010014ff3001ffffffffffffffffffffffff0f0103020110010001=42
+4d454c0021010015ff3001ffffffffffffffffffffffff0f0103020110010001=45
+4d454c0021010016ff3001ffffffffffffffffffffffff0f0103020110010001=44
+4d454c0021010017ff3001ffffffffffffffffffffffff0f0103020110010001=47
+4d454c0021010018ff3001ffffffffffffffffffffffff0f0103020110010001=46
+4d454c0021010019ff3001ffffffffffffffffffffffff0f0103020110010001=79
+4d454c002101001aff3001ffffffffffffffffffffffff0f0103020110010001=78
+4d454c002101001bff3001ffffffffffffffffffffffff0f0103020110010001=7b
+4d454c002101001cff3001ffffffffffffffffffffffff0f0103020110010001=7a
+4d454c002101001dff3001ffffffffffffffffffffffff0f0103020110010001=7d
+4d454c002101001eff3001ffffffffffffffffffffffff0f0103020110010001=7c
+4d454c002101001fff3001ffffffffffffffffffffffff0f0103020110010001=7f
+4d454c0021010020ff3001ffffffffffffffffffffffff0f0103020110010001=7e
+4d454c0021010021ff3001ffffffffffffffffffffffff0f0103020110010001=71
+4d454c0021010022ff3001ffffffffffffffffffffffff0f0103020110010001=70
+4d454c0021010023ff3001ffffffffffffffffffffffff0f0103020110010001=73
+4d454c0021010024ff3001ffffffffffffffffffffffff0f0103020110010001=72
+4d454c0021010025ff3001ffffffffffffffffffffffff0f0103020110010001=75
+4d454c0021010026ff3001ffffffffffffffffffffffff0f0103020110010001=74
+4d454c0021010027ff3001ffffffffffffffffffffffff0f0103020110010001=77
+4d454c0021010028ff3001ffffffffffffffffffffffff0f0103020110010001=76
+4d454c0021010029ff3001ffffffffffffffffffffffff0f0103020110010001=69
+4d454c002101002aff3001ffffffffffffffffffffffff0f0103020110010001=68
+4d454c002101002bff3001ffffffffffffffffffffffff0f0103020110010001=6b
+4d454c002101002cff3001ffffffffffffffffffffffff0f0103020110010001=6a
+4d454c002101002dff3001ffffffffffffffffffffffff0f0103020110010001=6d
+4d454c002101002eff3001ffffffffffffffffffffffff0f0103020110010001=6c
+4d454c002101002fff3001ffffffffffffffffffffffff0f0103020110010001=6f
+4d454c0021010030ff3001ffffffffffffffffffffffff0f0103020110010001=6e
+4d454c0021010031ff3001ffffffffffffffffffffffff0f0103020110010001=61
+4d454c0021010032ff3001ffffffffffffffffffffffff0f0103020110010001=60
+4d454c0021010033ff3001ffffffffffffffffffffffff0f0103020110010001=63
+4d454c0021010034ff3001ffffffffffffffffffffffff0f0103020110010001=62
+4d454c0021010035ff3001ffffffffffffffffffffffff0f0103020110010001=65
+4d454c0021010036ff3001ffffffffffffffffffffffff0f0103020110010001=64
+4d454c0021010037ff3001ffffffffffffffffffffffff0f0103020110010001=67
+4d454c0021010038ff3001ffffffffffffffffffffffff0f0103020110010001=66
+4d454c0021010039ff3001ffffffffffffffffffffffff0f0103020110010001=19
+4d454c002101003aff3001ffffffffffffffffffffffff0f0103020110010001=18
+4d454c002101003bff3001ffffffffffffffffffffffff0f0103020110010001=1b
+4d454c002101003cff3001ffffffffffffffffffffffff0f0103020110010001=1a
+4d454c002101003dff3001ffffffffffffffffffffffff0f0103020110010001=1d
+4d454c002101003eff3001ffffffffffffffffffffffff0f0103020110010001=1c
+4d454c002101003fff3001ffffffffffffffffffffffff0f0103020110010001=1f
+4d454c0021010040ff3001ffffffffffffffffffffffff0f0103020110010001=1e
+4d454c0021010041ff3001ffffffffffffffffffffffff0f0103020110010001=11
+4d454c0021010042ff3001ffffffffffffffffffffffff0f0103020110010001=10
+4d454c0021010043ff3001ffffffffffffffffffffffff0f0103020110010001=13
+4d454c0021010044ff3001ffffffffffffffffffffffff0f0103020110010001=12
+4d454c0021010045ff3001ffffffffffffffffffffffff0f0103020110010001=15
+4d454c0021010046ff3001ffffffffffffffffffffffff0f0103020110010001=14
+4d454c0021010047ff3001ffffffffffffffffffffffff0f0103020110010001=17
+4d454c0021010048ff3001ffffffffffffffffffffffff0f0103020110010001=16
+4d454c0021010049ff3001ffffffffffffffffffffffff0f0103020110010001=09
+4d454c002101004aff3001ffffffffffffffffffffffff0f0103020110010001=08
+4d454c002101004bff3001ffffffffffffffffffffffff0f0103020110010001=0b
+4d454c002101004cff3001ffffffffffffffffffffffff0f0103020110010001=0a
+4d454c002101004dff3001ffffffffffffffffffffffff0f0103020110010001=0d
+4d454c002101004eff3001ffffffffffffffffffffffff0f0103020110010001=0c
+4d454c002101004fff3001ffffffffffffffffffffffff0f0103020110010001=0f
+4d454c0021010050ff3001ffffffffffffffffffffffff0f0103020110010001=0e
+4d454c0021010051ff3001ffffffffffffffffffffffff0f0103020110010001=01
+4d454c0021010052ff3001ffffffffffffffffffffffff0f0103020110010001=00
+4d454c0021010053ff3001ffffffffffffffffffffffff0f0103020110010001=03
+4d454c0021010054ff3001ffffffffffffffffffffffff0f0103020110010001=02
+4d454c0021010055ff3001ffffffffffffffffffffffff0f0103020110010001=05
+4d454c0021010056ff3001ffffffffffffffffffffffff0f0103020110010001=04
+4d454c0021010057ff3001ffffffffffffffffffffffff0f0103020110010001=07
+4d454c0021010058ff3001ffffffffffffffffffffffff0f0103020110010001=06
+4d454c0021010059ff3001ffffffffffffffffffffffff0f0103020110010001=39
+4d454c002101005aff3001ffffffffffffffffffffffff0f0103020110010001=38
+4d454c002101005bff3001ffffffffffffffffffffffff0f0103020110010001=3b
+4d454c002101005cff3001ffffffffffffffffffffffff0f0103020110010001=3a
+4d454c002101005dff3001ffffffffffffffffffffffff0f0103020110010001=3d
+4d454c002101005eff3001ffffffffffffffffffffffff0f0103020110010001=3c
+4d454c002101005fff3001ffffffffffffffffffffffff0f0103020110010001=3f
+4d454c0021010060ff3001ffffffffffffffffffffffff0f0103020110010001=3e
+4d454c0021010061ff3001ffffffffffffffffffffffff0f0103020110010001=31
+4d454c0021010062ff3001ffffffffffffffffffffffff0f0103020110010001=30
+4d454c0021010063ff3001ffffffffffffffffffffffff0f0103020110010001=33
+4d454c0021010064ff3001ffffffffffffffffffffffff0f0103020110010001=32
+4d454c0021010065ff3001ffffffffffffffffffffffff0f0103020110010001=35
+4d454c0021010066ff3001ffffffffffffffffffffffff0f0103020110010001=34
+4d454c0021010067ff3001ffffffffffffffffffffffff0f0103020110010001=37
+4d454c0021010068ff3001ffffffffffffffffffffffff0f0103020110010001=36
+4d454c0021010069ff3001ffffffffffffffffffffffff0f0103020110010001=29
+4d454c002101006aff3001ffffffffffffffffffffffff0f0103020110010001=28
+4d454c002101006bff3001ffffffffffffffffffffffff0f0103020110010001=2b
+4d454c002101006cff3001ffffffffffffffffffffffff0f0103020110010001=2a
+4d454c002101006dff3001ffffffffffffffffffffffff0f0103020110010001=2d
+4d454c002101006eff3001ffffffffffffffffffffffff0f0103020110010001=2c
+4d454c002101006fff3001ffffffffffffffffffffffff0f0103020110010001=2f
+4d454c0021010070ff3001ffffffffffffffffffffffff0f0103020110010001=2e
+4d454c0021010071ff3001ffffffffffffffffffffffff0f0103020110010001=21
+4d454c0021010072ff3001ffffffffffffffffffffffff0f0103020110010001=20
+4d454c0021010073ff3001ffffffffffffffffffffffff0f0103020110010001=23
+4d454c0021010074ff3001ffffffffffffffffffffffff0f0103020110010001=22
+4d454c0021010075ff3001ffffffffffffffffffffffff0f0103020110010001=25
+4d454c0021010076ff3001ffffffffffffffffffffffff0f0103020110010001=24
+4d454c0021010077ff3001ffffffffffffffffffffffff0f0103020110010001=27
+4d454c0021010078ff3001ffffffffffffffffffffffff0f0103020110010001=26
+4d454c0021010079ff3001ffffffffffffffffffffffff0f0103020110010001=d9
+4d454c002101007aff3001ffffffffffffffffffffffff0f0103020110010001=d8
+4d454c002101007bff3001ffffffffffffffffffffffff0f0103020110010001=db
+4d454c002101007cff3001ffffffffffffffffffffffff0f0103020110010001=da
+4d454c002101007dff3001ffffffffffffffffffffffff0f0103020110010001=dd
+4d454c002101007eff3001ffffffffffffffffffffffff0f0103020110010001=dc
+4d454c002101007fff3001ffffffffffffffffffffffff0f0103020110010001=df
+4d454c0021010080ff3001ffffffffffffffffffffffff0f0103020110010001=de
+4d454c0021010081ff3001ffffffffffffffffffffffff0f0103020110010001=d1
+4d454c0021010082ff3001ffffffffffffffffffffffff0f0103020110010001=d0
+4d454c0021010083ff3001ffffffffffffffffffffffff0f0103020110010001=d3
+4d454c0021010084ff3001ffffffffffffffffffffffff0f0103020110010001=d2
+4d454c0021010085ff3001ffffffffffffffffffffffff0f0103020110010001=d5
+4d454c0021010086ff3001ffffffffffffffffffffffff0f0103020110010001=d4
+4d454c0021010087ff3001ffffffffffffffffffffffff0f0103020110010001=d7
+4d454c0021010088ff3001ffffffffffffffffffffffff0f0103020110010001=d6
+4d454c0021010089ff3001ffffffffffffffffffffffff0f0103020110010001=c9
+4d454c002101008aff3001ffffffffffffffffffffffff0f0103020110010001=c8
+4d454c002101008bff3001ffffffffffffffffffffffff0f0103020110010001=cb
+4d454c002101008cff3001ffffffffffffffffffffffff0f0103020110010001=ca
+4d454c002101008dff3001ffffffffffffffffffffffff0f0103020110010001=cd
+4d454c002101008eff3001ffffffffffffffffffffffff0f0103020110010001=cc
+4d454c002101008fff3001ffffffffffffffffffffffff0f0103020110010001=cf
+4d454c0021010090ff3001ffffffffffffffffffffffff0f0103020110010001=ce
+4d454c0021010091ff3001ffffffffffffffffffffffff0f0103020110010001=c1
+4d454c0021010092ff3001ffffffffffffffffffffffff0f0103020110010001=c0
+4d454c0021010093ff3001ffffffffffffffffffffffff0f0103020110010001=c3
+4d454c0021010094ff3001ffffffffffffffffffffffff0f0103020110010001=c2
+4d454c0021010095ff3001ffffffffffffffffffffffff0f0103020110010001=c5
+4d454c0021010096ff3001ffffffffffffffffffffffff0f0103020110010001=c4
+4d454c0021010097ff3001ffffffffffffffffffffffff0f0103020110010001=c7
+4d454c0021010098ff3001ffffffffffffffffffffffff0f0103020110010001=c6
+4d454c0021010099ff3001ffffffffffffffffffffffff0f0103020110010001=f9
+4d454c002101009aff3001ffffffffffffffffffffffff0f0103020110010001=f8
+4d454c002101009bff3001ffffffffffffffffffffffff0f0103020110010001=fb
+4d454c002101009cff3001ffffffffffffffffffffffff0f0103020110010001=fa
+4d454c002101009dff3001ffffffffffffffffffffffff0f0103020110010001=fd
+4d454c002101009eff3001ffffffffffffffffffffffff0f0103020110010001=fc
+4d454c002101009fff3001ffffffffffffffffffffffff0f0103020110010001=ff
+4d454c00210100a0ff3001ffffffffffffffffffffffff0f0103020110010001=fe
+4d454c00210100a1ff3001ffffffffffffffffffffffff0f0103020110010001=f1
+4d454c00210100a2ff3001ffffffffffffffffffffffff0f0103020110010001=f0
+4d454c00210100a3ff3001ffffffffffffffffffffffff0f0103020110010001=f3
+4d454c00210100a4ff3001ffffffffffffffffffffffff0f0103020110010001=f2
+4d454c00210100a5ff3001ffffffffffffffffffffffff0f0103020110010001=f5
+4d454c00210100a6ff3001ffffffffffffffffffffffff0f0103020110010001=f4
+4d454c00210100a7ff3001ffffffffffffffffffffffff0f0103020110010001=f7
+4d454c00210100a8ff3001ffffffffffffffffffffffff0f0103020110010001=f6
+4d454c00210100a9ff3001ffffffffffffffffffffffff0f0103020110010001=e9
+4d454c00210100aaff3001ffffffffffffffffffffffff0f0103020110010001=e8
+4d454c00210100abff3001ffffffffffffffffffffffff0f0103020110010001=eb
+4d454c00210100acff3001ffffffffffffffffffffffff0f0103020110010001=ea
+4d454c00210100adff3001ffffffffffffffffffffffff0f0103020110010001=ed
+4d454c00210100aeff3001ffffffffffffffffffffffff0f0103020110010001=ec
+4d454c00210100afff3001ffffffffffffffffffffffff0f0103020110010001=ef
+4d454c00210100b0ff3001ffffffffffffffffffffffff0f0103020110010001=ee
+4d454c00210100b1ff3001ffffffffffffffffffffffff0f0103020110010001=e1
+4d454c00210100b2ff3001ffffffffffffffffffffffff0f0103020110010001=e0
+4d454c00210100b3ff3001ffffffffffffffffffffffff0f0103020110010001=e3
+4d454c00210100b4ff3001ffffffffffffffffffffffff0f0103020110010001=e2
+4d454c00210100b5ff3001ffffffffffffffffffffffff0f0103020110010001=e5
+4d454c00210100b6ff3001ffffffffffffffffffffffff0f0103020110010001=e4
+4d454c00210100b7ff3001ffffffffffffffffffffffff0f0103020110010001=e7
+4d454c00210100b8ff3001ffffffffffffffffffffffff0f0103020110010001=e6
+4d454c00210100b9ff3001ffffffffffffffffffffffff0f0103020110010001=99
+4d454c00210100baff3001ffffffffffffffffffffffff0f0103020110010001=98
+4d454c00210100bbff3001ffffffffffffffffffffffff0f0103020110010001=9b
+4d454c00210100bcff3001ffffffffffffffffffffffff0f0103020110010001=9a
+4d454c00210100bdff3001ffffffffffffffffffffffff0f0103020110010001=9d
+4d454c00210100beff3001ffffffffffffffffffffffff0f0103020110010001=9c
+4d454c00210100bfff3001ffffffffffffffffffffffff0f0103020110010001=9f
+4d454c00210100c0ff3001ffffffffffffffffffffffff0f0103020110010001=9e
+4d454c00210100c1ff3001ffffffffffffffffffffffff0f0103020110010001=91
+4d454c00210100c2ff3001ffffffffffffffffffffffff0f0103020110010001=90
+4d454c00210100c3ff3001ffffffffffffffffffffffff0f0103020110010001=93
+4d454c00210100c4ff3001ffffffffffffffffffffffff0f0103020110010001=92
+4d454c00210100c5ff3001ffffffffffffffffffffffff0f0103020110010001=95
+4d454c00210100c6ff3001ffffffffffffffffffffffff0f0103020110010001=94
+4d454c00210100c7ff3001ffffffffffffffffffffffff0f0103020110010001=97
+4d454c00210100c8ff3001ffffffffffffffffffffffff0f0103020110010001=96
+4d454c00210100c9ff3001ffffffffffffffffffffffff0f0103020110010001=89
+4d454c00210100caff3001ffffffffffffffffffffffff0f0103020110010001=88
+4d454c00210100cbff3001ffffffffffffffffffffffff0f0103020110010001=8b
+4d454c00210100ccff3001ffffffffffffffffffffffff0f0103020110010001=8a
+4d454c00210100cdff3001ffffffffffffffffffffffff0f0103020110010001=8d
+4d454c00210100ceff3001ffffffffffffffffffffffff0f0103020110010001=8c
+4d454c00210100cfff3001ffffffffffffffffffffffff0f0103020110010001=8f
+4d454c00210100d0ff3001ffffffffffffffffffffffff0f0103020110010001=8e
+4d454c00210100d1ff3001ffffffffffffffffffffffff0f0103020110010001=81
+4d454c00210100d2ff3001ffffffffffffffffffffffff0f0103020110010001=80
+4d454c00210100d3ff3001ffffffffffffffffffffffff0f0103020110010001=83
+4d454c00210100d4ff3001ffffffffffffffffffffffff0f0103020110010001=82
+4d454c00210100d5ff3001ffffffffffffffffffffffff0f0103020110010001=85
+4d454c00210100d6ff3001ffffffffffffffffffffffff0f0103020110010001=84
+4d454c00210100d7ff3001ffffffffffffffffffffffff0f0103020110010001=87
+4d454c00210100d8ff3001ffffffffffffffffffffffff0f0103020110010001=86
+4d454c00210100d9ff3001ffffffffffffffffffffffff0f0103020110010001=b9
+4d454c00210100daff3001ffffffffffffffffffffffff0f0103020110010001=b8
+4d454c00210100dbff3001ffffffffffffffffffffffff0f0103020110010001=bb
+4d454c00210100dcff3001ffffffffffffffffffffffff0f0103020110010001=ba
+4d454c00210100ddff3001ffffffffffffffffffffffff0f0103020110010001=bd
+4d454c00210100deff3001ffffffffffffffffffffffff0f0103020110010001=bc
+4d454c00210100dfff3001ffffffffffffffffffffffff0f0103020110010001=bf
+4d454c00210100e0ff3001ffffffffffffffffffffffff0f0103020110010001=be
+4d454c00210100e1ff3001ffffffffffffffffffffffff0f0103020110010001=b1
+4d454c00210100e2ff3001ffffffffffffffffffffffff0f0103020110010001=b0
+4d454c00210100e3ff3001ffffffffffffffffffffffff0f0103020110010001=b3
+4d454c00210100e4ff3001ffffffffffffffffffffffff0f0103020110010001=b2
+4d454c00210100e5ff3001ffffffffffffffffffffffff0f0103020110010001=b5
+4d454c00210100e6ff3001ffffffffffffffffffffffff0f0103020110010001=b4
+4d454c00210100e7ff3001ffffffffffffffffffffffff0f0103020110010001=b7
+4d454c00210100e8ff3001ffffffffffffffffffffffff0f0103020110010001=b6
+4d454c00210100e9ff3001ffffffffffffffffffffffff0f0103020110010001=a9
+4d454c00210100eaff3001ffffffffffffffffffffffff0f0103020110010001=a8
+4d454c00210100ebff3001ffffffffffffffffffffffff0f0103020110010001=ab
+4d454c00210100ecff3001ffffffffffffffffffffffff0f0103020110010001=aa
+4d454c00210100edff3001ffffffffffffffffffffffff0f0103020110010001=ad
+4d454c00210100eeff3001ffffffffffffffffffffffff0f0103020110010001=ac
+4d454c00210100efff3001ffffffffffffffffffffffff0f0103020110010001=af
+4d454c00210100f0ff3001ffffffffffffffffffffffff0f0103020110010001=ae
+4d454c00210100f1ff3001ffffffffffffffffffffffff0f0103020110010001=a1
+4d454c00210100f2ff3001ffffffffffffffffffffffff0f0103020110010001=a0
+4d454c00210100f3ff3001ffffffffffffffffffffffff0f0103020110010001=a3
+4d454c00210100f4ff3001ffffffffffffffffffffffff0f0103020110010001=a2
+4d454c00210100f5ff3001ffffffffffffffffffffffff0f0103020110010001=a5
+4d454c00210100f6ff3001ffffffffffffffffffffffff0f0103020110010001=a4
+4d454c00210100f7ff3001ffffffffffffffffffffffff0f0103020110010001=a7
+4d454c00210100f8ff3001ffffffffffffffffffffffff0f0103020110010001=a6
+4d454c00210100f9ff3001ffffffffffffffffffffffff0f0103020110010000=59
+4d454c00210100faff3001ffffffffffffffffffffffff0f0103020110010000=58
+4d454c00210100fbff3001ffffffffffffffffffffffff0f0103020110010000=5b
+4d454c00210100fcff3001ffffffffffffffffffffffff0f0103020110010000=5a
+4d454c00210100fdff3001ffffffffffffffffffffffff0f0103020110010000=5d
+4d454c00210100feff3001ffffffffffffffffffffffff0f0103020110010000=5c
+4d454c00210100ffff3001ffffffffffffffffffffffff0f0103020110010000=5f \ No newline at end of file
diff --git a/research/bad-bruteforcing/reveng-formatted/stop-zone-all-partial-sequence.txt b/research/bad-bruteforcing/reveng-formatted/stop-zone-all-partial-sequence.txt
new file mode 100644
index 0000000..1dabcd2
--- /dev/null
+++ b/research/bad-bruteforcing/reveng-formatted/stop-zone-all-partial-sequence.txt
@@ -0,0 +1,33 @@
+4d454c001a010020ff5002ffffffffffffffffffffffff0f01=0b
+4d454c001a010021ff5002ffffffffffffffffffffffff0f01=04
+4d454c001a010022ff5002ffffffffffffffffffffffff0f01=05
+4d454c001a010028ff5002ffffffffffffffffffffffff0f01=03
+4d454c001a010029ff5002ffffffffffffffffffffffff0f01=1c
+4d454c001a01002aff5002ffffffffffffffffffffffff0f01=1d
+4d454c001a01002bff5002ffffffffffffffffffffffff0f01=1e
+4d454c001a01002cff5002ffffffffffffffffffffffff0f01=1f
+4d454c001a01002dff5002ffffffffffffffffffffffff0f01=18
+4d454c001a01002eff5002ffffffffffffffffffffffff0f01=19
+4d454c001a01002fff5002ffffffffffffffffffffffff0f01=1a
+4d454c001a010030ff5002ffffffffffffffffffffffff0f01=1b
+4d454c001a010031ff5002ffffffffffffffffffffffff0f01=14
+4d454c001a010032ff5002ffffffffffffffffffffffff0f01=15
+4d454c001a010033ff5002ffffffffffffffffffffffff0f01=16
+4d454c001a010034ff5002ffffffffffffffffffffffff0f01=17
+4d454c001a010035ff5002ffffffffffffffffffffffff0f01=10
+4d454c001a010036ff5002ffffffffffffffffffffffff0f01=11
+4d454c001a010037ff5002ffffffffffffffffffffffff0f01=12
+4d454c001a010038ff5002ffffffffffffffffffffffff0f01=13
+4d454c001a010039ff5002ffffffffffffffffffffffff0f01=6c
+4d454c001a01003aff5002ffffffffffffffffffffffff0f01=6d
+4d454c001a01003bff5002ffffffffffffffffffffffff0f01=6e
+4d454c001a01003cff5002ffffffffffffffffffffffff0f01=6f
+4d454c001a01003dff5002ffffffffffffffffffffffff0f01=68
+4d454c001a01003eff5002ffffffffffffffffffffffff0f01=69
+4d454c001a01003fff5002ffffffffffffffffffffffff0f01=6a
+4d454c001a010040ff5002ffffffffffffffffffffffff0f01=6b
+4d454c001a010041ff5002ffffffffffffffffffffffff0f01=64
+4d454c001a010042ff5002ffffffffffffffffffffffff0f01=65
+4d454c001a010043ff5002ffffffffffffffffffffffff0f01=66
+4d454c001a010044ff5002ffffffffffffffffffffffff0f01=67
+4d454c001a010045ff5002ffffffffffffffffffffffff0f01=60 \ No newline at end of file
diff --git a/research/bad-bruteforcing/sequence.txt b/research/bad-bruteforcing/sequence.txt
new file mode 100644
index 0000000..87da812
--- /dev/null
+++ b/research/bad-bruteforcing/sequence.txt
@@ -0,0 +1,256 @@
+4d454c0021010001ff300180000000000000000000000000010302010f010001fb
+4d454c0021010002ff300180000000000000000000000000010302010f010001fa
+4d454c0021010003ff300180000000000000000000000000010302010f010001f9
+4d454c0021010004ff300180000000000000000000000000010302010f010001f8
+4d454c0021010005ff300180000000000000000000000000010302010f010001ff
+4d454c0021010006ff300180000000000000000000000000010302010f010001fe
+4d454c0021010007ff300180000000000000000000000000010302010f010001fd
+4d454c0021010008ff300180000000000000000000000000010302010f010001fc
+4d454c0021010009ff300180000000000000000000000000010302010f010001e3
+4d454c002101000aff300180000000000000000000000000010302010f010001e2
+4d454c002101000bff300180000000000000000000000000010302010f010001e1
+4d454c002101000cff300180000000000000000000000000010302010f010001e0
+4d454c002101000dff300180000000000000000000000000010302010f010001e7
+4d454c002101000eff300180000000000000000000000000010302010f010001e6
+4d454c002101000fff300180000000000000000000000000010302010f010001e5
+4d454c0021010010ff300180000000000000000000000000010302010f010001e4
+4d454c0021010011ff300180000000000000000000000000010302010f010001eb
+4d454c0021010012ff300180000000000000000000000000010302010f010001ea
+4d454c0021010013ff300180000000000000000000000000010302010f010001e9
+4d454c0021010014ff300180000000000000000000000000010302010f010001e8
+4d454c0021010015ff300180000000000000000000000000010302010f010001ef
+4d454c0021010016ff300180000000000000000000000000010302010f010001ee
+4d454c0021010017ff300180000000000000000000000000010302010f010001ed
+4d454c0021010018ff300180000000000000000000000000010302010f010001ec
+4d454c0021010019ff300180000000000000000000000000010302010f010001d3
+4d454c002101001aff300180000000000000000000000000010302010f010001d2
+4d454c002101001bff300180000000000000000000000000010302010f010001d1
+4d454c002101001cff300180000000000000000000000000010302010f010001d0
+4d454c002101001dff300180000000000000000000000000010302010f010001d7
+4d454c002101001eff300180000000000000000000000000010302010f010001d6
+4d454c002101001fff300180000000000000000000000000010302010f010001d5
+4d454c0021010020ff300180000000000000000000000000010302010f010001d4
+4d454c0021010021ff300180000000000000000000000000010302010f010001db
+4d454c0021010022ff300180000000000000000000000000010302010f010001da
+4d454c0021010023ff300180000000000000000000000000010302010f010001d9
+4d454c0021010024ff300180000000000000000000000000010302010f010001d8
+4d454c0021010025ff300180000000000000000000000000010302010f010001df
+4d454c0021010026ff300180000000000000000000000000010302010f010001de
+4d454c0021010027ff300180000000000000000000000000010302010f010001dd
+4d454c0021010028ff300180000000000000000000000000010302010f010001dc
+4d454c0021010029ff300180000000000000000000000000010302010f010001c3
+4d454c002101002aff300180000000000000000000000000010302010f010001c2
+4d454c002101002bff300180000000000000000000000000010302010f010001c1
+4d454c002101002cff300180000000000000000000000000010302010f010001c0
+4d454c002101002dff300180000000000000000000000000010302010f010001c7
+4d454c002101002eff300180000000000000000000000000010302010f010001c6
+4d454c002101002fff300180000000000000000000000000010302010f010001c5
+4d454c0021010030ff300180000000000000000000000000010302010f010001c4
+4d454c0021010031ff300180000000000000000000000000010302010f010001cb
+4d454c0021010032ff300180000000000000000000000000010302010f010001ca
+4d454c0021010033ff300180000000000000000000000000010302010f010001c9
+4d454c0021010034ff300180000000000000000000000000010302010f010001c8
+4d454c0021010035ff300180000000000000000000000000010302010f010001cf
+4d454c0021010036ff300180000000000000000000000000010302010f010001ce
+4d454c0021010037ff300180000000000000000000000000010302010f010001cd
+4d454c0021010038ff300180000000000000000000000000010302010f010001cc
+4d454c0021010039ff300180000000000000000000000000010302010f010001b3
+4d454c002101003aff300180000000000000000000000000010302010f010001b2
+4d454c002101003bff300180000000000000000000000000010302010f010001b1
+4d454c002101003cff300180000000000000000000000000010302010f010001b0
+4d454c002101003dff300180000000000000000000000000010302010f010001b7
+4d454c002101003eff300180000000000000000000000000010302010f010001b6
+4d454c002101003fff300180000000000000000000000000010302010f010001b5
+4d454c0021010040ff300180000000000000000000000000010302010f010001b4
+4d454c0021010041ff300180000000000000000000000000010302010f010001bb
+4d454c0021010042ff300180000000000000000000000000010302010f010001ba
+4d454c0021010043ff300180000000000000000000000000010302010f010001b9
+4d454c0021010044ff300180000000000000000000000000010302010f010001b8
+4d454c0021010045ff300180000000000000000000000000010302010f010001bf
+4d454c0021010046ff300180000000000000000000000000010302010f010001be
+4d454c0021010047ff300180000000000000000000000000010302010f010001bd
+4d454c0021010048ff300180000000000000000000000000010302010f010001bc
+4d454c0021010049ff300180000000000000000000000000010302010f010001a3
+4d454c002101004aff300180000000000000000000000000010302010f010001a2
+4d454c002101004bff300180000000000000000000000000010302010f010001a1
+4d454c002101004cff300180000000000000000000000000010302010f010001a0
+4d454c002101004dff300180000000000000000000000000010302010f010001a7
+4d454c002101004eff300180000000000000000000000000010302010f010001a6
+4d454c002101004fff300180000000000000000000000000010302010f010001a5
+4d454c0021010050ff300180000000000000000000000000010302010f010001a4
+4d454c0021010051ff300180000000000000000000000000010302010f010001ab
+4d454c0021010052ff300180000000000000000000000000010302010f010001aa
+4d454c0021010053ff300180000000000000000000000000010302010f010001a9
+4d454c0021010054ff300180000000000000000000000000010302010f010001a8
+4d454c0021010055ff300180000000000000000000000000010302010f010001af
+4d454c0021010056ff300180000000000000000000000000010302010f010001ae
+4d454c0021010057ff300180000000000000000000000000010302010f010001ad
+4d454c0021010058ff300180000000000000000000000000010302010f010001ac
+4d454c0021010059ff300180000000000000000000000000010302010f01000193
+4d454c002101005aff300180000000000000000000000000010302010f01000192
+4d454c002101005bff300180000000000000000000000000010302010f01000191
+4d454c002101005cff300180000000000000000000000000010302010f01000190
+4d454c002101005dff300180000000000000000000000000010302010f01000197
+4d454c002101005eff300180000000000000000000000000010302010f01000196
+4d454c002101005fff300180000000000000000000000000010302010f01000195
+4d454c0021010060ff300180000000000000000000000000010302010f01000194
+4d454c0021010061ff300180000000000000000000000000010302010f0100019b
+4d454c0021010062ff300180000000000000000000000000010302010f0100019a
+4d454c0021010063ff300180000000000000000000000000010302010f01000199
+4d454c0021010064ff300180000000000000000000000000010302010f01000198
+4d454c0021010065ff300180000000000000000000000000010302010f0100019f
+4d454c0021010066ff300180000000000000000000000000010302010f0100019e
+4d454c0021010067ff300180000000000000000000000000010302010f0100019d
+4d454c0021010068ff300180000000000000000000000000010302010f0100019c
+4d454c0021010069ff300180000000000000000000000000010302010f01000183
+4d454c002101006aff300180000000000000000000000000010302010f01000182
+4d454c002101006bff300180000000000000000000000000010302010f01000181
+4d454c002101006cff300180000000000000000000000000010302010f01000180
+4d454c002101006dff300180000000000000000000000000010302010f01000187
+4d454c002101006eff300180000000000000000000000000010302010f01000186
+4d454c002101006fff300180000000000000000000000000010302010f01000185
+4d454c0021010070ff300180000000000000000000000000010302010f01000184
+4d454c0021010071ff300180000000000000000000000000010302010f0100018b
+4d454c0021010072ff300180000000000000000000000000010302010f0100018a
+4d454c0021010073ff300180000000000000000000000000010302010f01000189
+4d454c0021010074ff300180000000000000000000000000010302010f01000188
+4d454c0021010075ff300180000000000000000000000000010302010f0100018f
+4d454c0021010076ff300180000000000000000000000000010302010f0100018e
+4d454c0021010077ff300180000000000000000000000000010302010f0100018d
+4d454c0021010078ff300180000000000000000000000000010302010f0100018c
+4d454c0021010079ff300180000000000000000000000000010302010f01000173
+4d454c002101007aff300180000000000000000000000000010302010f01000172
+4d454c002101007bff300180000000000000000000000000010302010f01000171
+4d454c002101007cff300180000000000000000000000000010302010f01000170
+4d454c002101007dff300180000000000000000000000000010302010f01000177
+4d454c002101007eff300180000000000000000000000000010302010f01000176
+4d454c002101007fff300180000000000000000000000000010302010f01000175
+4d454c0021010080ff300180000000000000000000000000010302010f01000174
+4d454c0021010081ff300180000000000000000000000000010302010f0100017b
+4d454c0021010082ff300180000000000000000000000000010302010f0100017a
+4d454c0021010083ff300180000000000000000000000000010302010f01000179
+4d454c0021010084ff300180000000000000000000000000010302010f01000178
+4d454c0021010085ff300180000000000000000000000000010302010f0100017f
+4d454c0021010086ff300180000000000000000000000000010302010f0100017e
+4d454c0021010087ff300180000000000000000000000000010302010f0100017d
+4d454c0021010088ff300180000000000000000000000000010302010f0100017c
+4d454c0021010089ff300180000000000000000000000000010302010f01000163
+4d454c002101008aff300180000000000000000000000000010302010f01000162
+4d454c002101008bff300180000000000000000000000000010302010f01000161
+4d454c002101008cff300180000000000000000000000000010302010f01000160
+4d454c002101008dff300180000000000000000000000000010302010f01000167
+4d454c002101008eff300180000000000000000000000000010302010f01000166
+4d454c002101008fff300180000000000000000000000000010302010f01000165
+4d454c0021010090ff300180000000000000000000000000010302010f01000164
+4d454c0021010091ff300180000000000000000000000000010302010f0100016b
+4d454c0021010092ff300180000000000000000000000000010302010f0100016a
+4d454c0021010093ff300180000000000000000000000000010302010f01000169
+4d454c0021010094ff300180000000000000000000000000010302010f01000168
+4d454c0021010095ff300180000000000000000000000000010302010f0100016f
+4d454c0021010096ff300180000000000000000000000000010302010f0100016e
+4d454c0021010097ff300180000000000000000000000000010302010f0100016d
+4d454c0021010098ff300180000000000000000000000000010302010f0100016c
+4d454c0021010099ff300180000000000000000000000000010302010f01000153
+4d454c002101009aff300180000000000000000000000000010302010f01000152
+4d454c002101009bff300180000000000000000000000000010302010f01000151
+4d454c002101009cff300180000000000000000000000000010302010f01000150
+4d454c002101009dff300180000000000000000000000000010302010f01000157
+4d454c002101009eff300180000000000000000000000000010302010f01000156
+4d454c002101009fff300180000000000000000000000000010302010f01000155
+4d454c00210100a0ff300180000000000000000000000000010302010f01000154
+4d454c00210100a1ff300180000000000000000000000000010302010f0100015b
+4d454c00210100a2ff300180000000000000000000000000010302010f0100015a
+4d454c00210100a3ff300180000000000000000000000000010302010f01000159
+4d454c00210100a4ff300180000000000000000000000000010302010f01000158
+4d454c00210100a5ff300180000000000000000000000000010302010f0100015f
+4d454c00210100a6ff300180000000000000000000000000010302010f0100015e
+4d454c00210100a7ff300180000000000000000000000000010302010f0100015d
+4d454c00210100a8ff300180000000000000000000000000010302010f0100015c
+4d454c00210100a9ff300180000000000000000000000000010302010f01000143
+4d454c00210100aaff300180000000000000000000000000010302010f01000142
+4d454c00210100abff300180000000000000000000000000010302010f01000141
+4d454c00210100acff300180000000000000000000000000010302010f01000140
+4d454c00210100adff300180000000000000000000000000010302010f01000147
+4d454c00210100aeff300180000000000000000000000000010302010f01000146
+4d454c00210100afff300180000000000000000000000000010302010f01000145
+4d454c00210100b0ff300180000000000000000000000000010302010f01000144
+4d454c00210100b1ff300180000000000000000000000000010302010f0100014b
+4d454c00210100b2ff300180000000000000000000000000010302010f0100014a
+4d454c00210100b3ff300180000000000000000000000000010302010f01000149
+4d454c00210100b4ff300180000000000000000000000000010302010f01000148
+4d454c00210100b5ff300180000000000000000000000000010302010f0100014f
+4d454c00210100b6ff300180000000000000000000000000010302010f0100014e
+4d454c00210100b7ff300180000000000000000000000000010302010f0100014d
+4d454c00210100b8ff300180000000000000000000000000010302010f0100014c
+4d454c00210100b9ff300180000000000000000000000000010302010f01000133
+4d454c00210100baff300180000000000000000000000000010302010f01000132
+4d454c00210100bbff300180000000000000000000000000010302010f01000131
+4d454c00210100bcff300180000000000000000000000000010302010f01000130
+4d454c00210100bdff300180000000000000000000000000010302010f01000137
+4d454c00210100beff300180000000000000000000000000010302010f01000136
+4d454c00210100bfff300180000000000000000000000000010302010f01000135
+4d454c00210100c0ff300180000000000000000000000000010302010f01000134
+4d454c00210100c1ff300180000000000000000000000000010302010f0100013b
+4d454c00210100c2ff300180000000000000000000000000010302010f0100013a
+4d454c00210100c3ff300180000000000000000000000000010302010f01000139
+4d454c00210100c4ff300180000000000000000000000000010302010f01000138
+4d454c00210100c5ff300180000000000000000000000000010302010f0100013f
+4d454c00210100c6ff300180000000000000000000000000010302010f0100013e
+4d454c00210100c7ff300180000000000000000000000000010302010f0100013d
+4d454c00210100c8ff300180000000000000000000000000010302010f0100013c
+4d454c00210100c9ff300180000000000000000000000000010302010f01000123
+4d454c00210100caff300180000000000000000000000000010302010f01000122
+4d454c00210100cbff300180000000000000000000000000010302010f01000121
+4d454c00210100ccff300180000000000000000000000000010302010f01000120
+4d454c00210100cdff300180000000000000000000000000010302010f01000127
+4d454c00210100ceff300180000000000000000000000000010302010f01000126
+4d454c00210100cfff300180000000000000000000000000010302010f01000125
+4d454c00210100d0ff300180000000000000000000000000010302010f01000124
+4d454c00210100d1ff300180000000000000000000000000010302010f0100012b
+4d454c00210100d2ff300180000000000000000000000000010302010f0100012a
+4d454c00210100d3ff300180000000000000000000000000010302010f01000129
+4d454c00210100d4ff300180000000000000000000000000010302010f01000128
+4d454c00210100d5ff300180000000000000000000000000010302010f0100012f
+4d454c00210100d6ff300180000000000000000000000000010302010f0100012e
+4d454c00210100d7ff300180000000000000000000000000010302010f0100012d
+4d454c00210100d8ff300180000000000000000000000000010302010f0100012c
+4d454c00210100d9ff300180000000000000000000000000010302010f01000113
+4d454c00210100daff300180000000000000000000000000010302010f01000112
+4d454c00210100dbff300180000000000000000000000000010302010f01000111
+4d454c00210100dcff300180000000000000000000000000010302010f01000110
+4d454c00210100ddff300180000000000000000000000000010302010f01000117
+4d454c00210100deff300180000000000000000000000000010302010f01000116
+4d454c00210100dfff300180000000000000000000000000010302010f01000115
+4d454c00210100e0ff300180000000000000000000000000010302010f01000114
+4d454c00210100e1ff300180000000000000000000000000010302010f0100011b
+4d454c00210100e2ff300180000000000000000000000000010302010f0100011a
+4d454c00210100e3ff300180000000000000000000000000010302010f01000119
+4d454c00210100e4ff300180000000000000000000000000010302010f01000118
+4d454c00210100e5ff300180000000000000000000000000010302010f0100011f
+4d454c00210100e6ff300180000000000000000000000000010302010f0100011e
+4d454c00210100e7ff300180000000000000000000000000010302010f0100011d
+4d454c00210100e8ff300180000000000000000000000000010302010f0100011c
+4d454c00210100e9ff300180000000000000000000000000010302010f01000103
+4d454c00210100eaff300180000000000000000000000000010302010f01000102
+4d454c00210100ebff300180000000000000000000000000010302010f01000101
+4d454c00210100ecff300180000000000000000000000000010302010f01000100
+4d454c00210100edff300180000000000000000000000000010302010f01000107
+4d454c00210100eeff300180000000000000000000000000010302010f01000106
+4d454c00210100efff300180000000000000000000000000010302010f01000105
+4d454c00210100f0ff300180000000000000000000000000010302010f01000104
+4d454c00210100f1ff300180000000000000000000000000010302010f0100010b
+4d454c00210100f2ff300180000000000000000000000000010302010f0100010a
+4d454c00210100f3ff300180000000000000000000000000010302010f01000109
+4d454c00210100f4ff300180000000000000000000000000010302010f01000108
+4d454c00210100f5ff300180000000000000000000000000010302010f0100010f
+4d454c00210100f6ff300180000000000000000000000000010302010f0100010e
+4d454c00210100f7ff300180000000000000000000000000010302010f0100010d
+4d454c00210100f8ff300180000000000000000000000000010302010f0100010c
+4d454c00210100f9ff300180000000000000000000000000010302010f010000f3
+4d454c00210100faff300180000000000000000000000000010302010f010000f2
+4d454c00210100fbff300180000000000000000000000000010302010f010000f1
+4d454c00210100fcff300180000000000000000000000000010302010f010000f0
+4d454c00210100fdff300180000000000000000000000000010302010f010000f7
+4d454c00210100feff300180000000000000000000000000010302010f010000f6
+4d454c00210100ffff300180000000000000000000000000010302010f010000f5
+4d454c0021010000ff300180000000000000000000000000010302010f010001f4
diff --git a/research/executables/bulk_checksum_verifier.py b/research/executables/bulk_checksum_verifier.py
deleted file mode 100644
index e69de29..0000000
--- a/research/executables/bulk_checksum_verifier.py
+++ /dev/null
diff --git a/research/executables/calculate_packet_checksum.py b/research/executables/calculate_packet_checksum.py
deleted file mode 100644
index e69de29..0000000
--- a/research/executables/calculate_packet_checksum.py
+++ /dev/null
diff --git a/research/executables/claude-ai-slop/checksum_bruteforce.py b/research/executables/claude-ai-slop/checksum_bruteforce.py
new file mode 100644
index 0000000..3cfa7cf
--- /dev/null
+++ b/research/executables/claude-ai-slop/checksum_bruteforce.py
@@ -0,0 +1,367 @@
+#!/usr/bin/env python3
+"""
+Comprehensive checksum bruteforce tool for the MEL protocol
+Usage: python checksum_bruteforce.py <hex_file>
+"""
+
+import sys
+import struct
+from typing import List, Tuple, Dict
+
+def parse_hex_line(hex_string: str) -> List[int]:
+ """Parse a hex string into list of bytes"""
+ hex_clean = hex_string.strip().replace(' ', '')
+ return [int(hex_clean[i:i+2], 16) for i in range(0, len(hex_clean), 2)]
+
+def bytes_to_hex(bytes_list: List[int]) -> str:
+ """Convert bytes to hex string"""
+ return ''.join(f'{b:02x}' for b in bytes_list)
+
+class ChecksumTester:
+ def __init__(self):
+ self.algorithms = [
+ self.simple_sum,
+ self.sum_with_carry,
+ self.twos_complement,
+ self.ones_complement,
+ self.xor_checksum,
+ self.crc16_ccitt,
+ self.crc16_ibm,
+ self.fletcher16,
+ self.modsum_256,
+ self.internet_checksum,
+ ]
+
+ def simple_sum(self, data: List[int]) -> int:
+ """Simple sum of all bytes"""
+ return sum(data) & 0xFFFF
+
+ def sum_with_carry(self, data: List[int]) -> int:
+ """Sum with end-around carry"""
+ s = sum(data)
+ while s > 0xFFFF:
+ s = (s & 0xFFFF) + (s >> 16)
+ return s
+
+ def twos_complement(self, data: List[int]) -> int:
+ """Two's complement of sum"""
+ s = sum(data)
+ return (~s + 1) & 0xFFFF
+
+ def ones_complement(self, data: List[int]) -> int:
+ """One's complement of sum"""
+ s = sum(data)
+ return (~s) & 0xFFFF
+
+ def xor_checksum(self, data: List[int]) -> int:
+ """XOR of all bytes, extended to 16-bit"""
+ result = 0
+ for b in data:
+ result ^= b
+ return result
+
+ def crc16_ccitt(self, data: List[int], poly: int = 0x1021) -> int:
+ """CRC-16 CCITT"""
+ crc = 0xFFFF
+ for byte in data:
+ crc ^= (byte << 8)
+ for _ in range(8):
+ if crc & 0x8000:
+ crc = (crc << 1) ^ poly
+ else:
+ crc <<= 1
+ crc &= 0xFFFF
+ return crc
+
+ def crc16_ibm(self, data: List[int]) -> int:
+ """CRC-16 IBM/ANSI"""
+ return self.crc16_ccitt(data, 0x8005)
+
+ def fletcher16(self, data: List[int]) -> int:
+ """Fletcher-16 checksum"""
+ sum1 = sum2 = 0
+ for byte in data:
+ sum1 = (sum1 + byte) % 255
+ sum2 = (sum2 + sum1) % 255
+ return (sum2 << 8) | sum1
+
+ def modsum_256(self, data: List[int]) -> int:
+ """Sum modulo 256, extended to 16-bit"""
+ return sum(data) % 256
+
+ def internet_checksum(self, data: List[int]) -> int:
+ """Internet/TCP checksum"""
+ # Pad to even length
+ if len(data) % 2:
+ data = data + [0]
+
+ s = 0
+ for i in range(0, len(data), 2):
+ s += (data[i] << 8) + data[i+1]
+
+ while s >> 16:
+ s = (s & 0xFFFF) + (s >> 16)
+
+ return (~s) & 0xFFFF
+
+def test_parametric_algorithms(data: List[int], expected: int) -> List[str]:
+ """Test algorithms with various parameters"""
+ matches = []
+
+ # Test sum with different initial values
+ for init_val in range(0, 0x10000, 0x1000):
+ result = (init_val + sum(data)) & 0xFFFF
+ if result == expected:
+ matches.append(f"Sum + 0x{init_val:04x}")
+
+ # Test sum with different modulo values
+ for mod_val in [0xFF, 0x100, 0x101, 0x1FF, 0x200, 0xFFFF, 0x10000]:
+ if mod_val > 0:
+ result = sum(data) % mod_val
+ if result == expected:
+ matches.append(f"Sum mod 0x{mod_val:x}")
+
+ # Test XOR with different patterns
+ for pattern in [0x00, 0xFF, 0xAA, 0x55, 0x5A, 0xA5]:
+ result = 0
+ for byte in data:
+ result ^= (byte ^ pattern)
+ if (result & 0xFFFF) == expected:
+ matches.append(f"XOR with pattern 0x{pattern:02x}")
+
+ # Test rotation-based checksums
+ for shift in range(1, 16):
+ result = 0
+ for byte in data:
+ result = ((result << shift) | (result >> (16 - shift))) & 0xFFFF
+ result ^= byte
+ if result == expected:
+ matches.append(f"Rotate-XOR shift {shift}")
+
+ return matches
+
+def analyze_file(filename: str):
+ """Analyze a file of hex data to find checksum patterns"""
+ with open(filename, 'r') as f:
+ lines = [line.strip() for line in f if line.strip()]
+
+ print(f"Analyzing {filename} with {len(lines)} entries")
+
+ tester = ChecksumTester()
+ algorithm_matches = {}
+
+ # Test first 10 entries to find patterns
+ for i, line in enumerate(lines[:10]):
+ bytes_data = parse_hex_line(line)
+ if len(bytes_data) < 3:
+ continue
+
+ # Assume last 2 bytes are checksum
+ payload = bytes_data[:-2]
+ checksum_be = (bytes_data[-2] << 8) | bytes_data[-1]
+ checksum_le = bytes_data[-2] | (bytes_data[-1] << 8)
+
+ print(f"\nEntry {i}:")
+ print(f" Payload: {bytes_to_hex(payload)}")
+ print(f" Checksum BE: 0x{checksum_be:04x}")
+ print(f" Checksum LE: 0x{checksum_le:04x}")
+
+ # Test standard algorithms for both byte orders
+ for checksum, order in [(checksum_be, "BE"), (checksum_le, "LE")]:
+ print(f" Testing {order} interpretation:")
+ for algo in tester.algorithms:
+ result = algo(payload)
+ if result == checksum:
+ algo_name = f"{algo.__name__}_{order}"
+ algorithm_matches[algo_name] = algorithm_matches.get(algo_name, 0) + 1
+ print(f" ✓ {algo.__name__}: 0x{result:04x}")
+ else:
+ print(f" ✗ {algo.__name__}: 0x{result:04x}")
+
+ # Test parametric algorithms
+ param_matches = test_parametric_algorithms(payload, checksum)
+ for match in param_matches:
+ print(f" ✓ {match}")
+ key = f"{match}_{order}"
+ algorithm_matches[key] = algorithm_matches.get(key, 0) + 1
+
+ # Summary of algorithms that work consistently
+ print(f"\n{'='*50}")
+ print("SUMMARY - Algorithms with multiple matches:")
+ for algo, count in sorted(algorithm_matches.items(), key=lambda x: x[1], reverse=True):
+ if count > 1:
+ print(f" {algo}: {count} matches")
+
+ return algorithm_matches
+
+def brute_force_unknown_algorithm(filename: str, max_entries: int = 5):
+ """Brute force approach for completely unknown algorithms"""
+ with open(filename, 'r') as f:
+ lines = [line.strip() for line in f if line.strip()][:max_entries]
+
+ print(f"Brute forcing {len(lines)} entries...")
+
+ # Collect all data points
+ data_points = []
+ for line in lines:
+ bytes_data = parse_hex_line(line)
+ payload = bytes_data[:-2]
+ checksum_le = bytes_data[-2] | (bytes_data[-1] << 8)
+ data_points.append((payload, checksum_le))
+
+ # Try to find a mathematical relationship
+ # This is a simplified approach - in practice you'd want more sophisticated analysis
+
+ # Check if it's a linear relationship: checksum = a * sum(payload) + b
+ if len(data_points) >= 2:
+ payload_sums = [sum(payload) for payload, _ in data_points]
+ checksums = [checksum for _, checksum in data_points]
+
+ print(f"Payload sums: {[f'0x{s:x}' for s in payload_sums[:5]]}")
+ print(f"Checksums: {[f'0x{c:04x}' for c in checksums[:5]]}")
+
+ # Try to solve for linear relationship
+ if len(set(payload_sums)) > 1: # Need different sums to solve
+ sum1, sum2 = payload_sums[0], payload_sums[1]
+ check1, check2 = checksums[0], checksums[1]
+
+ if sum1 != sum2:
+ # Solve: check1 = a * sum1 + b, check2 = a * sum2 + b
+ a = (check2 - check1) / (sum2 - sum1)
+ b = check1 - a * sum1
+
+ print(f"Testing linear relationship: checksum = {a:.3f} * sum + {b:.3f}")
+
+ # Verify with all data points
+ matches = 0
+ for payload, expected in data_points:
+ predicted = int(a * sum(payload) + b) & 0xFFFF
+ if predicted == expected:
+ matches += 1
+ print(f" ✓ Linear match: sum={sum(payload)}, expected=0x{expected:04x}, predicted=0x{predicted:04x}")
+ else:
+ print(f" ✗ Linear miss: sum={sum(payload)}, expected=0x{expected:04x}, predicted=0x{predicted:04x}")
+
+ if matches == len(data_points):
+ print(f"🎉 FOUND LINEAR RELATIONSHIP! checksum = {a:.3f} * sum(payload) + {b:.3f}")
+
+def generate_test_vectors(base_hex: str, variations: int = 10):
+ """Generate test vectors by modifying a base message"""
+ base_bytes = parse_hex_line(base_hex)
+ payload = base_bytes[:-2]
+
+ print(f"Generating {variations} test vectors from base:")
+ print(f"Base: {base_hex}")
+
+ # Generate variations by changing single bytes
+ for i in range(min(variations, len(payload))):
+ modified = payload.copy()
+ modified[i] = (modified[i] + 1) % 256 # Increment one byte
+
+ # You would calculate the correct checksum here and append it
+ # For now, we'll just show the modified payload
+ print(f"Variation {i}: {bytes_to_hex(modified)} + [CHECKSUM_TO_CALCULATE]")
+
+def test_specific_algorithms(data: List[int], expected: int) -> Dict[str, int]:
+ """Test specific algorithms that might be used in embedded systems"""
+ results = {}
+
+ # Test sum with various bit operations
+ s = sum(data)
+
+ # Basic variations
+ results["sum_low16"] = s & 0xFFFF
+ results["sum_high16"] = (s >> 16) & 0xFFFF
+ results["sum_rotated"] = ((s << 8) | (s >> 8)) & 0xFFFF
+ results["sum_inverted"] = (~s) & 0xFFFF
+ results["sum_twos_comp"] = (-s) & 0xFFFF
+
+ # With different initial values (common in embedded systems)
+ for init in [0x0000, 0x5555, 0xAAAA, 0xFFFF, 0x1234, 0x4321]:
+ results[f"sum_init_{init:04x}"] = (s + init) & 0xFFFF
+ results[f"xor_init_{init:04x}"] = (s ^ init) & 0xFFFF
+
+ # Byte-wise operations
+ byte_xor = 0
+ byte_sum = 0
+ for b in data:
+ byte_xor ^= b
+ byte_sum += b
+
+ results["byte_xor"] = byte_xor
+ results["byte_xor_16bit"] = (byte_xor << 8) | byte_xor
+ results["byte_sum_mod256"] = byte_sum % 256
+ results["byte_sum_mod255"] = byte_sum % 255
+
+ # Position-weighted sums
+ pos_sum = sum(i * b for i, b in enumerate(data))
+ results["position_weighted"] = pos_sum & 0xFFFF
+
+ # Polynomial checksums (simplified)
+ poly_result = 0
+ for b in data:
+ poly_result = ((poly_result << 1) ^ b) & 0xFFFF
+ results["poly_shift_xor"] = poly_result
+
+ # Return only matches
+ return {name: value for name, value in results.items() if value == expected}
+
+def main():
+ if len(sys.argv) != 2:
+ print("Usage: python checksum_bruteforce.py <hex_file>")
+ print("\nThis tool will:")
+ print("1. Test standard checksum algorithms")
+ print("2. Try parametric variations")
+ print("3. Attempt to find mathematical relationships")
+ print("4. Generate test vectors for validation")
+ sys.exit(1)
+
+ filename = sys.argv[1]
+
+ try:
+ # Main analysis
+ print("=" * 60)
+ print("COMPREHENSIVE CHECKSUM ANALYSIS")
+ print("=" * 60)
+
+ matches = analyze_file(filename)
+
+ print("\n" + "=" * 60)
+ print("BRUTE FORCE UNKNOWN ALGORITHMS")
+ print("=" * 60)
+
+ brute_force_unknown_algorithm(filename, max_entries=10)
+
+ print("\n" + "=" * 60)
+ print("SPECIFIC EMBEDDED ALGORITHMS")
+ print("=" * 60)
+
+ # Test first entry with specific algorithms
+ with open(filename, 'r') as f:
+ first_line = f.readline().strip()
+
+ bytes_data = parse_hex_line(first_line)
+ payload = bytes_data[:-2]
+ checksum_le = bytes_data[-2] | (bytes_data[-1] << 8)
+
+ specific_matches = test_specific_algorithms(payload, checksum_le)
+ if specific_matches:
+ print("Specific algorithm matches found:")
+ for name, value in specific_matches.items():
+ print(f" ✓ {name}: 0x{value:04x}")
+ else:
+ print("No specific algorithm matches found")
+
+ print("\n" + "=" * 60)
+ print("TEST VECTOR GENERATION")
+ print("=" * 60)
+
+ generate_test_vectors(first_line, 5)
+
+ except FileNotFoundError:
+ print(f"Error: File '{filename}' not found")
+ except Exception as e:
+ print(f"Error: {e}")
+
+if __name__ == "__main__":
+ main() \ No newline at end of file
diff --git a/research/executables/claude-ai-slop/mel_checksum_cracker.py b/research/executables/claude-ai-slop/mel_checksum_cracker.py
new file mode 100644
index 0000000..c851742
--- /dev/null
+++ b/research/executables/claude-ai-slop/mel_checksum_cracker.py
@@ -0,0 +1,319 @@
+#!/usr/bin/env python3
+"""
+MEL Checksum Cracker - Final comprehensive tool
+Based on analysis showing sum-sequence is constant but checksum follows different pattern
+"""
+
+import sys
+import struct
+
+def parse_hex(hex_str):
+ """Parse hex string to bytes"""
+ return [int(hex_str[i:i+2], 16) for i in range(0, len(hex_str), 2)]
+
+def calculate_mel_checksum(payload_bytes, sequence=None):
+ """
+ Calculate MEL checksum based on discovered patterns
+ This function will be updated as we discover the actual algorithm
+ """
+ if sequence is None:
+ # Try to extract sequence from payload if it's a full packet
+ if len(payload_bytes) >= 8:
+ sequence = payload_bytes[7]
+ else:
+ sequence = 0
+
+ # Calculate payload sum (excluding checksum bytes)
+ if len(payload_bytes) > 31: # Full packet
+ payload_sum = sum(payload_bytes[:-2])
+ else: # Just payload
+ payload_sum = sum(payload_bytes)
+
+ # Test various algorithms based on our analysis
+ algorithms = {
+ 'simple_sum': payload_sum & 0xFFFF,
+ 'sum_minus_seq': (payload_sum - sequence) & 0xFFFF,
+ 'sum_plus_seq': (payload_sum + sequence) & 0xFFFF,
+ 'twos_complement': (~payload_sum + 1) & 0xFFFF,
+ 'ones_complement': (~payload_sum) & 0xFFFF,
+ 'constant_minus_sum': (0x10000 - payload_sum) & 0xFFFF,
+ 'sum_with_carry': payload_sum + (payload_sum >> 16),
+ }
+
+ return algorithms
+
+def analyze_pattern_discovery(filename):
+ """Discover the actual checksum pattern"""
+ print(f"Pattern Discovery Analysis for {filename}")
+ print("=" * 60)
+
+ with open(filename, 'r') as f:
+ lines = [line.strip() for line in f if line.strip()]
+
+ # Analyze first 20 entries to find the pattern
+ entries = []
+ for i, line in enumerate(lines[:20]):
+ bytes_data = parse_hex(line)
+ payload = bytes_data[:-2]
+ checksum = bytes_data[-2] | (bytes_data[-1] << 8) # Little endian
+ sequence = bytes_data[7] if len(bytes_data) > 7 else 0
+ payload_sum = sum(payload)
+
+ entries.append({
+ 'index': i,
+ 'sequence': sequence,
+ 'checksum': checksum,
+ 'payload_sum': payload_sum,
+ 'payload': payload,
+ 'hex': line
+ })
+
+ # Print analysis table
+ print("Entry | Seq | Checksum | PayloadSum | Sum-Seq | Patterns")
+ print("------|-----|----------|------------|---------|----------")
+
+ base_constant = None
+ for entry in entries:
+ seq = entry['sequence']
+ check = entry['checksum']
+ psum = entry['payload_sum']
+ sum_minus_seq = psum - seq
+
+ if base_constant is None:
+ base_constant = sum_minus_seq
+
+ # Test various patterns
+ pattern_tests = []
+ if sum_minus_seq == base_constant:
+ pattern_tests.append("SUM-SEQ=CONST")
+
+ # Test if checksum relates to a base value
+ if entry['index'] == 0:
+ base_checksum = check
+ checksum_base = check
+ else:
+ checksum_diff = check - base_checksum
+ pattern_tests.append(f"ΔCHK={checksum_diff:+d}")
+
+ patterns = " ".join(pattern_tests) if pattern_tests else "-"
+
+ print(f"{entry['index']:5d} | {seq:3d} | 0x{check:04x} | {psum:10d} | {sum_minus_seq:7d} | {patterns}")
+
+ # Test for mathematical relationships
+ print(f"\nMathematical Relationship Analysis:")
+ print(f"Base constant (sum - sequence): {base_constant}")
+
+ # Look for checksum calculation pattern
+ print(f"\nChecksum Pattern Analysis:")
+
+ # Test if there's a consistent transformation from payload_sum to checksum
+ transformations = {}
+ for entry in entries:
+ psum = entry['payload_sum']
+ check = entry['checksum']
+ seq = entry['sequence']
+
+ # Test various transformations
+ transforms = {
+ 'sum_low8': psum & 0xFF,
+ 'sum_high8': (psum >> 8) & 0xFF,
+ 'sum_mod256': psum % 256,
+ 'sum_mod255': psum % 255,
+ 'sum_rotated': ((psum << 8) | (psum >> 8)) & 0xFFFF,
+ 'sum_xor_seq': (psum ^ seq) & 0xFFFF,
+ 'sum_add_magic': (psum + 0x5555) & 0xFFFF,
+ 'sum_sub_magic': (psum - 0x5555) & 0xFFFF,
+ }
+
+ for name, value in transforms.items():
+ if value == check:
+ if name not in transformations:
+ transformations[name] = []
+ transformations[name].append(entry['index'])
+
+ if transformations:
+ print("Found consistent transformations:")
+ for transform, indices in transformations.items():
+ if len(indices) > 1:
+ print(f" {transform}: matches at entries {indices}")
+ else:
+ print("No simple mathematical transformation found")
+
+ # Advanced pattern detection
+ print(f"\nAdvanced Pattern Detection:")
+
+ # Check if it's a lookup table or formula with sequence
+ checksum_by_seq = {}
+ for entry in entries:
+ seq = entry['sequence']
+ check = entry['checksum']
+ if seq not in checksum_by_seq:
+ checksum_by_seq[seq] = []
+ checksum_by_seq[seq].append(check)
+
+ # Look for sequence-based pattern
+ if len(checksum_by_seq) > 1:
+ print("Checksum vs Sequence relationship:")
+ for seq in sorted(checksum_by_seq.keys())[:10]:
+ checksums = checksum_by_seq[seq]
+ print(f" Sequence {seq:3d}: checksums {[f'0x{c:04x}' for c in checksums]}")
+
+ return entries
+
+def brute_force_checksum_algorithm(entries):
+ """Brute force the checksum algorithm using known good data"""
+ print("\nBrute Force Algorithm Discovery:")
+ print("=" * 40)
+
+ # Get the first entry as reference
+ ref_entry = entries[0]
+ ref_sum = ref_entry['payload_sum']
+ ref_checksum = ref_entry['checksum']
+
+ print(f"Reference: sum={ref_sum}, checksum=0x{ref_checksum:04x}")
+
+ # Try to find the magic constant or operation
+ # Test if checksum = (payload_sum + magic) & 0xFFFF
+ for magic in range(-1000, 1000):
+ predicted = (ref_sum + magic) & 0xFFFF
+ if predicted == ref_checksum:
+ print(f"Possible algorithm: checksum = (payload_sum + {magic}) & 0xFFFF")
+
+ # Verify with other entries
+ matches = 0
+ for entry in entries[1:6]: # Test next 5 entries
+ test_predicted = (entry['payload_sum'] + magic) & 0xFFFF
+ if test_predicted == entry['checksum']:
+ matches += 1
+
+ print(f" Verification: {matches}/5 additional entries match")
+ if matches >= 4:
+ print(f" 🎉 LIKELY ALGORITHM FOUND!")
+ return f"(payload_sum + {magic}) & 0xFFFF"
+
+ # Test multiplicative factors
+ for factor in [1, 2, 3, 4, 5, 7, 8, 15, 16, 31, 32, 63, 64, 127, 128, 255, 256]:
+ for offset in range(-100, 101, 10):
+ predicted = (ref_sum * factor + offset) & 0xFFFF
+ if predicted == ref_checksum:
+ # Verify with next entry
+ next_entry = entries[1]
+ next_predicted = (next_entry['payload_sum'] * factor + offset) & 0xFFFF
+ if next_predicted == next_entry['checksum']:
+ print(f"Possible algorithm: checksum = (payload_sum * {factor} + {offset}) & 0xFFFF")
+
+ print("No simple algorithm found in brute force range")
+ return None
+
+def generate_implementation(algorithm_desc):
+ """Generate C/Python implementation of discovered algorithm"""
+ if not algorithm_desc:
+ return
+
+ print(f"\nGenerated Implementation:")
+ print("=" * 30)
+
+ print("Python:")
+ print(f"def calculate_mel_checksum(payload_bytes):")
+ print(f" payload_sum = sum(payload_bytes)")
+ print(f" return {algorithm_desc}")
+
+ print("\nC:")
+ print(f"uint16_t calculate_mel_checksum(uint8_t* payload, size_t length) {{")
+ print(f" uint32_t payload_sum = 0;")
+ print(f" for (size_t i = 0; i < length; i++) {{")
+ print(f" payload_sum += payload[i];")
+ print(f" }}")
+ print(f" return {algorithm_desc.replace('payload_sum', 'payload_sum')};")
+ print(f"}}")
+
+def validate_algorithm(filename, algorithm_func):
+ """Validate the discovered algorithm against all entries in file"""
+ print(f"\nValidating algorithm against all entries in {filename}")
+ print("=" * 50)
+
+ with open(filename, 'r') as f:
+ lines = [line.strip() for line in f if line.strip()]
+
+ matches = 0
+ total = 0
+ mismatches = []
+
+ for i, line in enumerate(lines):
+ bytes_data = parse_hex(line)
+ payload = bytes_data[:-2]
+ expected_checksum = bytes_data[-2] | (bytes_data[-1] << 8)
+
+ calculated_checksum = algorithm_func(payload)
+
+ if calculated_checksum == expected_checksum:
+ matches += 1
+ else:
+ mismatches.append((i, expected_checksum, calculated_checksum))
+
+ total += 1
+
+ # Show first few results
+ if i < 10:
+ status = "✓" if calculated_checksum == expected_checksum else "✗"
+ print(f" Entry {i:3d}: expected=0x{expected_checksum:04x}, calculated=0x{calculated_checksum:04x} {status}")
+
+ success_rate = (matches / total) * 100
+ print(f"\nValidation Results:")
+ print(f" Matches: {matches}/{total} ({success_rate:.1f}%)")
+
+ if success_rate == 100:
+ print(" 🎉 PERFECT MATCH! Algorithm verified!")
+ elif success_rate > 95:
+ print(" ⚠️ Very high success rate - likely correct with minor issues")
+ else:
+ print(" ❌ Low success rate - algorithm needs refinement")
+ if mismatches[:3]:
+ print(" First few mismatches:")
+ for entry_idx, expected, calculated in mismatches[:3]:
+ print(f" Entry {entry_idx}: expected=0x{expected:04x}, got=0x{calculated:04x}")
+
+def main():
+ if len(sys.argv) < 2:
+ print("MEL Checksum Cracker - Comprehensive Analysis Tool")
+ print("=" * 50)
+ print("Usage: python mel_checksum_cracker.py <hex_file>")
+ print("\nThis tool will:")
+ print(" 1. Discover checksum patterns")
+ print(" 2. Brute force the algorithm")
+ print(" 3. Generate implementations")
+ print(" 4. Validate against all data")
+ sys.exit(1)
+
+ filename = sys.argv[1]
+
+ try:
+ # Step 1: Pattern discovery
+ entries = analyze_pattern_discovery(filename)
+
+ # Step 2: Brute force algorithm
+ algorithm = brute_force_checksum_algorithm(entries)
+
+ # Step 3: Generate implementation
+ generate_implementation(algorithm)
+
+ # Step 4: Validation (if algorithm found)
+ if algorithm:
+ # Create a lambda function for validation
+ def test_algorithm(payload):
+ payload_sum = sum(payload)
+ # This would be replaced with the actual discovered algorithm
+ # For now, using a placeholder
+ return payload_sum & 0xFFFF
+
+ validate_algorithm(filename, test_algorithm)
+
+ except FileNotFoundError:
+ print(f"Error: File '{filename}' not found")
+ except Exception as e:
+ print(f"Error: {e}")
+ import traceback
+ traceback.print_exc()
+
+if __name__ == "__main__":
+ main() \ No newline at end of file
diff --git a/research/executables/claude-ai-slop/mel_protocol_checksum_analyzer.py b/research/executables/claude-ai-slop/mel_protocol_checksum_analyzer.py
new file mode 100644
index 0000000..701e8f2
--- /dev/null
+++ b/research/executables/claude-ai-slop/mel_protocol_checksum_analyzer.py
@@ -0,0 +1,231 @@
+#!/usr/bin/env python3
+"""
+MEL Protocol Checksum Analyzer
+Specifically designed for the MEL protocol hex data
+
+Based on analysis of the provided data patterns.
+"""
+
+import sys
+from typing import List, Tuple
+
+def parse_hex(hex_str: str) -> List[int]:
+ """Parse hex string to bytes"""
+ return [int(hex_str[i:i+2], 16) for i in range(0, len(hex_str), 2)]
+
+def analyze_mel_structure(hex_line: str) -> dict:
+ """Analyze MEL protocol structure"""
+ bytes_data = parse_hex(hex_line.strip())
+
+ return {
+ 'header': bytes_data[0:4], # 4D454C00
+ 'length': bytes_data[4], # Packet length
+ 'flags': bytes_data[5:8], # Type/flags
+ 'sequence': bytes_data[6], # Sequence number (based on your data)
+ 'command': bytes_data[8:12], # Command and zone info
+ 'zone_mask': bytes_data[12:16], # Zone targeting
+ 'reserved': bytes_data[16:28], # Reserved/padding
+ 'payload': bytes_data[28:-2], # Actual payload
+ 'checksum_bytes': bytes_data[-2:], # Last 2 bytes
+ 'checksum_le': bytes_data[-2] | (bytes_data[-1] << 8), # Little endian
+ 'checksum_be': (bytes_data[-2] << 8) | bytes_data[-1], # Big endian
+ 'full_payload': bytes_data[:-2], # Everything except checksum
+ }
+
+def test_mel_checksums(data: List[int], expected: int) -> List[Tuple[str, int, bool]]:
+ """Test checksum algorithms specific to MEL protocol"""
+ results = []
+
+ # Test 1: Simple sum of all payload bytes
+ simple_sum = sum(data) & 0xFFFF
+ results.append(("Simple Sum", simple_sum, simple_sum == expected))
+
+ # Test 2: Sum with initial value (common in embedded protocols)
+ for init_val in [0x0000, 0x5555, 0xAAAA, 0xFFFF, 0x1234, 0x4321, 0x0001]:
+ checksum = (sum(data) + init_val) & 0xFFFF
+ results.append((f"Sum + 0x{init_val:04x}", checksum, checksum == expected))
+
+ # Test 3: Two's complement variations
+ sum_val = sum(data)
+ twos_comp = (~sum_val + 1) & 0xFFFF
+ results.append(("Two's Complement", twos_comp, twos_comp == expected))
+
+ # Test 4: One's complement
+ ones_comp = (~sum_val) & 0xFFFF
+ results.append(("One's Complement", ones_comp, ones_comp == expected))
+
+ # Test 5: Subtract from constant
+ for const in [0xFFFF, 0x10000, 0x8000, 0x7FFF]:
+ checksum = (const - sum_val) & 0xFFFF
+ results.append((f"0x{const:04x} - Sum", checksum, checksum == expected))
+
+ # Test 6: XOR-based checksums
+ xor_result = 0
+ for byte in data:
+ xor_result ^= byte
+ results.append(("XOR all bytes", xor_result, xor_result == expected))
+
+ # Test 7: Position-weighted sum
+ pos_sum = sum(i * byte for i, byte in enumerate(data)) & 0xFFFF
+ results.append(("Position-weighted sum", pos_sum, pos_sum == expected))
+
+ # Test 8: Rolling checksum
+ rolling = 0
+ for byte in data:
+ rolling = ((rolling << 1) | (rolling >> 15)) & 0xFFFF
+ rolling ^= byte
+ results.append(("Rolling XOR", rolling, rolling == expected))
+
+ # Test 9: Modular arithmetic variations
+ for mod_val in [0x100, 0x101, 0x1FF, 0x200, 0x255, 0x256]:
+ if mod_val > 0:
+ checksum = sum(data) % mod_val
+ results.append((f"Sum mod 0x{mod_val:x}", checksum, checksum == expected))
+
+ return results
+
+def analyze_sequence_relationship(filename: str):
+ """Analyze relationship between sequence numbers and checksums"""
+ with open(filename, 'r') as f:
+ lines = [line.strip() for line in f if line.strip()]
+
+ print(f"Analyzing sequence-checksum relationship in {filename}")
+ print("=" * 60)
+
+ sequence_data = []
+
+ for i, line in enumerate(lines[:20]): # First 20 entries
+ mel_data = analyze_mel_structure(line)
+
+ # Look for the actual sequence field
+ # Based on your data, it seems to increment in byte 6
+ actual_sequence = mel_data['sequence']
+ checksum = mel_data['checksum_le']
+
+ sequence_data.append((i, actual_sequence, checksum))
+
+ print(f"Entry {i:2d}: seq=0x{actual_sequence:02x} ({actual_sequence:3d}), "
+ f"checksum=0x{checksum:04x} ({checksum:5d})")
+
+ # Look for patterns
+ print("\nSequence vs Checksum Analysis:")
+ print("=" * 40)
+
+ # Check if checksum changes predictably with sequence
+ if len(sequence_data) > 1:
+ for i in range(1, min(10, len(sequence_data))):
+ seq_diff = sequence_data[i][1] - sequence_data[i-1][1]
+ check_diff = sequence_data[i][2] - sequence_data[i-1][2]
+ print(f"Entry {i-1}→{i}: seq_diff={seq_diff:2d}, check_diff={check_diff:4d} (0x{check_diff & 0xFFFF:04x})")
+
+def find_checksum_algorithm(filename: str):
+ """Main function to find the checksum algorithm"""
+ with open(filename, 'r') as f:
+ lines = [line.strip() for line in f if line.strip()]
+
+ print(f"MEL Protocol Checksum Analysis")
+ print(f"File: {filename}")
+ print(f"Entries: {len(lines)}")
+ print("=" * 60)
+
+ # Analyze first few entries
+ algorithm_scores = {}
+
+ for i, line in enumerate(lines[:10]):
+ mel_data = analyze_mel_structure(line)
+
+ print(f"\nEntry {i}:")
+ print(f" Hex: {line}")
+ print(f" Sequence: 0x{mel_data['sequence']:02x}")
+ print(f" Expected checksum: 0x{mel_data['checksum_le']:04x} (LE)")
+ print(f" Payload length: {len(mel_data['full_payload'])} bytes")
+
+ # Test algorithms
+ results = test_mel_checksums(mel_data['full_payload'], mel_data['checksum_le'])
+
+ for algo_name, result, is_match in results:
+ if is_match:
+ print(f" ✓ {algo_name}: 0x{result:04x}")
+ algorithm_scores[algo_name] = algorithm_scores.get(algo_name, 0) + 1
+ # Uncomment below to see all results
+ # else:
+ # print(f" ✗ {algo_name}: 0x{result:04x}")
+
+ # Summary
+ print(f"\n{'='*60}")
+ print("ALGORITHM MATCH SUMMARY")
+ print(f"{'='*60}")
+
+ if algorithm_scores:
+ for algo, score in sorted(algorithm_scores.items(), key=lambda x: x[1], reverse=True):
+ print(f"{algo}: {score}/10 matches")
+
+ best_algo = max(algorithm_scores.items(), key=lambda x: x[1])
+ if best_algo[1] >= 8: # At least 8/10 matches
+ print(f"\n🎉 LIKELY ALGORITHM FOUND: {best_algo[0]}")
+ print(f" Confidence: {best_algo[1]}/10 matches")
+ else:
+ print("No consistent algorithm found with standard methods.")
+ print("This may require custom algorithm development.")
+
+ # Analyze sequence relationship
+ print(f"\n{'='*60}")
+ analyze_sequence_relationship(filename)
+
+def verify_algorithm(filename: str, algorithm_name: str):
+ """Verify a specific algorithm against all entries"""
+ with open(filename, 'r') as f:
+ lines = [line.strip() for line in f if line.strip()]
+
+ print(f"Verifying algorithm '{algorithm_name}' against {len(lines)} entries...")
+
+ matches = 0
+ mismatches = []
+
+ for i, line in enumerate(lines):
+ mel_data = analyze_mel_structure(line)
+ expected = mel_data['checksum_le']
+
+ # Apply the algorithm (you'd implement the specific one here)
+ if algorithm_name == "Simple Sum":
+ calculated = sum(mel_data['full_payload']) & 0xFFFF
+ elif algorithm_name.startswith("Sum + "):
+ init_val = int(algorithm_name.split("0x")[1], 16)
+ calculated = (sum(mel_data['full_payload']) + init_val) & 0xFFFF
+ else:
+ print(f"Algorithm '{algorithm_name}' not implemented in verify function")
+ return
+
+ if calculated == expected:
+ matches += 1
+ else:
+ mismatches.append((i, expected, calculated))
+ if len(mismatches) <= 5: # Show first 5 mismatches
+ print(f" Mismatch at entry {i}: expected 0x{expected:04x}, got 0x{calculated:04x}")
+
+ print(f"Results: {matches}/{len(lines)} matches ({100*matches/len(lines):.1f}%)")
+
+ if matches == len(lines):
+ print("🎉 PERFECT MATCH! Algorithm verified.")
+ elif matches > len(lines) * 0.9:
+ print("⚠️ Very close match. May need minor adjustment.")
+ else:
+ print("❌ Algorithm doesn't work consistently.")
+
+def main():
+ if len(sys.argv) < 2:
+ print("Usage:")
+ print(" python mel_checksum_analyzer.py <hex_file> # Find algorithm")
+ print(" python mel_checksum_analyzer.py <hex_file> verify <algorithm> # Verify algorithm")
+ sys.exit(1)
+
+ filename = sys.argv[1]
+
+ if len(sys.argv) >= 4 and sys.argv[2] == "verify":
+ algorithm = sys.argv[3]
+ verify_algorithm(filename, algorithm)
+ else:
+ find_checksum_algorithm(filename)
+
+if __name__ == "__main__":
+ main() \ No newline at end of file
diff --git a/research/executables/claude-ai-slop/pattern_finder.py b/research/executables/claude-ai-slop/pattern_finder.py
new file mode 100644
index 0000000..c53fb9d
--- /dev/null
+++ b/research/executables/claude-ai-slop/pattern_finder.py
@@ -0,0 +1,229 @@
+#!/usr/bin/env python3
+"""
+Pattern Analysis Tool for MEL Protocol Checksums
+Looks for mathematical relationships and patterns in the checksum data
+"""
+
+import sys
+import struct
+from collections import defaultdict
+
+def parse_hex(hex_str: str):
+ """Parse hex string to bytes"""
+ return [int(hex_str[i:i+2], 16) for i in range(0, len(hex_str), 2)]
+
+def find_changing_bytes(filename: str):
+ """Find which bytes change between consecutive entries"""
+ with open(filename, 'r') as f:
+ lines = [line.strip() for line in f if line.strip()]
+
+ if len(lines) < 2:
+ return
+
+ print(f"Analyzing byte changes in {filename}")
+ print("=" * 50)
+
+ # Parse first two entries
+ bytes1 = parse_hex(lines[0])
+ bytes2 = parse_hex(lines[1])
+
+ print("Changes between first two entries:")
+ for i, (b1, b2) in enumerate(zip(bytes1, bytes2)):
+ if b1 != b2:
+ print(f" Byte {i:2d}: 0x{b1:02x} → 0x{b2:02x} (diff: {b2-b1:+d})")
+
+ # Look at sequence field specifically (byte 6 based on your data)
+ print(f"\nSequence progression (byte 6):")
+ for i in range(min(20, len(lines))):
+ bytes_data = parse_hex(lines[i])
+ seq = bytes_data[6] if len(bytes_data) > 6 else 0
+ checksum = bytes_data[-2] | (bytes_data[-1] << 8) if len(bytes_data) >= 2 else 0
+ print(f" Entry {i:2d}: seq=0x{seq:02x}, checksum=0x{checksum:04x}")
+
+def analyze_checksum_patterns(filename: str):
+ """Analyze patterns in checksum values"""
+ with open(filename, 'r') as f:
+ lines = [line.strip() for line in f if line.strip()]
+
+ print(f"Checksum Pattern Analysis for {filename}")
+ print("=" * 50)
+
+ checksums = []
+ sequences = []
+ payload_sums = []
+
+ for line in lines:
+ bytes_data = parse_hex(line)
+ payload = bytes_data[:-2]
+ checksum = bytes_data[-2] | (bytes_data[-1] << 8)
+ sequence = bytes_data[6] if len(bytes_data) > 6 else 0
+
+ checksums.append(checksum)
+ sequences.append(sequence)
+ payload_sums.append(sum(payload))
+
+ # Look for arithmetic progression in checksums
+ print("Checksum differences (first 20):")
+ for i in range(1, min(20, len(checksums))):
+ diff = checksums[i] - checksums[i-1]
+ print(f" {i-1:2d}→{i:2d}: {diff:+5d} (0x{diff & 0xFFFF:04x})")
+
+ # Check for correlation with payload sum
+ print(f"\nPayload sum vs Checksum correlation:")
+ for i in range(min(10, len(checksums))):
+ print(f" Entry {i}: sum={payload_sums[i]:5d}, checksum={checksums[i]:5d}, "
+ f"ratio={checksums[i]/payload_sums[i] if payload_sums[i] != 0 else 'N/A':.3f}")
+
+def test_bitwise_operations(filename: str):
+ """Test various bitwise operations that might be used"""
+ with open(filename, 'r') as f:
+ first_line = f.readline().strip()
+
+ bytes_data = parse_hex(first_line)
+ payload = bytes_data[:-2]
+ expected = bytes_data[-2] | (bytes_data[-1] << 8)
+
+ print(f"Testing bitwise operations on first entry:")
+ print(f"Expected checksum: 0x{expected:04x}")
+ print("=" * 40)
+
+ # Sum with bit operations
+ s = sum(payload)
+
+ tests = [
+ ("Sum", s & 0xFFFF),
+ ("Sum >> 1", (s >> 1) & 0xFFFF),
+ ("Sum << 1", (s << 1) & 0xFFFF),
+ ("Sum rotated right", ((s >> 8) | (s << 8)) & 0xFFFF),
+ ("Sum rotated left", ((s << 8) | (s >> 8)) & 0xFFFF),
+ ("Sum XOR 0xFFFF", (s ^ 0xFFFF) & 0xFFFF),
+ ("Sum XOR 0x5555", (s ^ 0x5555) & 0xFFFF),
+ ("Sum XOR 0xAAAA", (s ^ 0xAAAA) & 0xFFFF),
+ ("~Sum", (~s) & 0xFFFF),
+ ("~Sum + 1", (~s + 1) & 0xFFFF),
+ ("0x10000 - Sum", (0x10000 - s) & 0xFFFF),
+ ("0xFFFF - Sum", (0xFFFF - s) & 0xFFFF),
+ ]
+
+ for name, result in tests:
+ match = "✓" if result == expected else "✗"
+ print(f" {match} {name:20s}: 0x{result:04x}")
+
+def analyze_multiple_files(filenames):
+ """Compare patterns across multiple files"""
+ print("Multi-file Pattern Analysis")
+ print("=" * 50)
+
+ all_data = {}
+
+ for filename in filenames:
+ try:
+ with open(filename, 'r') as f:
+ lines = [line.strip() for line in f if line.strip()]
+
+ # Get first entry from each file
+ if lines:
+ bytes_data = parse_hex(lines[0])
+ payload = bytes_data[:-2]
+ checksum = bytes_data[-2] | (bytes_data[-1] << 8)
+
+ all_data[filename] = {
+ 'payload': payload,
+ 'checksum': checksum,
+ 'payload_sum': sum(payload),
+ 'first_hex': lines[0]
+ }
+
+ except FileNotFoundError:
+ print(f"Warning: File {filename} not found")
+ continue
+
+ print("Comparison of first entries:")
+ for filename, data in all_data.items():
+ print(f"\n{filename}:")
+ print(f" Checksum: 0x{data['checksum']:04x}")
+ print(f" Payload sum: {data['payload_sum']}")
+ print(f" First hex: {data['first_hex'][:40]}...")
+
+ # Look for common differences
+ checksums = [data['checksum'] for data in all_data.values()]
+ sums = [data['payload_sum'] for data in all_data.values()]
+
+ if len(checksums) > 1:
+ print(f"\nDifferences between files:")
+ filenames_list = list(all_data.keys())
+ for i in range(len(filenames_list)):
+ for j in range(i+1, len(filenames_list)):
+ f1, f2 = filenames_list[i], filenames_list[j]
+ check_diff = all_data[f2]['checksum'] - all_data[f1]['checksum']
+ sum_diff = all_data[f2]['payload_sum'] - all_data[f1]['payload_sum']
+ print(f" {f1} vs {f2}:")
+ print(f" Checksum diff: {check_diff:+d}")
+ print(f" Sum diff: {sum_diff:+d}")
+
+def find_magic_constants(filename: str):
+ """Try to find magic constants used in the checksum calculation"""
+ with open(filename, 'r') as f:
+ lines = [line.strip() for line in f if line.strip()]
+
+ print("Searching for magic constants...")
+ print("=" * 40)
+
+ # Test first few entries
+ for i, line in enumerate(lines[:5]):
+ bytes_data = parse_hex(line)
+ payload = bytes_data[:-2]
+ expected = bytes_data[-2] | (bytes_data[-1] << 8)
+ payload_sum = sum(payload)
+
+ print(f"\nEntry {i}:")
+ print(f" Expected: 0x{expected:04x} ({expected})")
+ print(f" Sum: 0x{payload_sum:04x} ({payload_sum})")
+
+ # Try to find what constant when added/subtracted/XORed gives the expected result
+ magic_add = (expected - payload_sum) & 0xFFFF
+ magic_sub = (payload_sum - expected) & 0xFFFF
+ magic_xor = expected ^ payload_sum
+
+ print(f" Magic add: 0x{magic_add:04x} (sum + this = expected)")
+ print(f" Magic sub: 0x{magic_sub:04x} (sum - this = expected)")
+ print(f" Magic XOR: 0x{magic_xor:04x} (sum ^ this = expected)")
+
+def main():
+ if len(sys.argv) < 2:
+ print("Usage:")
+ print(" python pattern_finder.py <file1> [file2] [file3] ...")
+ print("\nThis tool will:")
+ print(" - Find changing bytes between entries")
+ print(" - Analyze checksum patterns")
+ print(" - Test bitwise operations")
+ print(" - Compare multiple files")
+ print(" - Search for magic constants")
+ sys.exit(1)
+
+ filenames = sys.argv[1:]
+
+ # Single file analysis
+ main_file = filenames[0]
+
+ print("PATTERN ANALYSIS REPORT")
+ print("=" * 60)
+
+ find_changing_bytes(main_file)
+ print()
+
+ analyze_checksum_patterns(main_file)
+ print()
+
+ test_bitwise_operations(main_file)
+ print()
+
+ find_magic_constants(main_file)
+ print()
+
+ # Multi-file analysis if multiple files provided
+ if len(filenames) > 1:
+ analyze_multiple_files(filenames)
+
+if __name__ == "__main__":
+ main() \ No newline at end of file
diff --git a/research/firmware-strings/HARMONY-TRIO.txt b/research/firmware-strings/HARMONY-TRIO.txt
index 974348a..ac2e454 100644
--- a/research/firmware-strings/HARMONY-TRIO.txt
+++ b/research/firmware-strings/HARMONY-TRIO.txt
@@ -5673,8 +5673,7 @@ F_gestion_repeteur_UDP : !!!!! ERREUR !!!!! --> SETSOCKOPT UDP du socket serveur
F_repondre_IP --> send failed with with count %ld :
Failed to set SO_BROADCAST On. Error %d
Failed to config SO_RCVTIMEO. Error %d
-F_gestion_repeteur_UDP : !!!!! ERREUR !!!!! --> Cr
-ation du socket serveur impossible
+F_gestion_repeteur_UDP : !!!!! ERREUR !!!!! --> Cration du socket serveur impossible
F_gestion_repeteur_UDP : !!!!! ERREUR !!!!! --> BIND du socket serveur impossible
0F9FO
"AFHF
diff --git a/research/firmware-strings/TRIO.md b/research/firmware-strings/TRIO.md
new file mode 100644
index 0000000..590f4dd
--- /dev/null
+++ b/research/firmware-strings/TRIO.md
@@ -0,0 +1,122 @@
+d:\JenkinsJobs\workspace\Indus\Harmonys\Harmonys_trio\Metis_appli\LWIP\App\A_trame_UDP_TCP.c
+EINPROGRESS in connect() - selecting
+
+no previous fragment, this must be the first fragment!
+validate_datagram:next_pbuf!=NULL
+
+F_gestion_trame_PROTOCOLE : !!!!! ERREUR !!!!! --> Cr
+ation du socket serveur impossible
+F_gestion_trame_PROTOCOLE : !!!!! ERREUR !!!!! --> BIND du socket serveur impossible
+F_gestion_trame_PROTOCOLE : !!!!! ERREUR !!!!! --> Abonnement IGMP BAD sur %d.%d.%d.%d
+
+d:\JenkinsJobs\workspace\Indus\Harmonys\Harmonys_trio\Metis_appli\Middlewares\Third_Party\LwIP\src\api\sockets.c
+newconn->callback == event_callback
+invalid copylen, len would underflow
+lwip_sendmsg: invalid msghdr iov
+lwip_sendmsg: invalid msghdr name
+lwip_sendto: size must fit in u16_t
+
+d:\JenkinsJobs\workspace\Indus\Harmonys\Harmonys_trio\Metis_appli\Middlewares\Third_Party\LwIP\src\core\tcp_in.c
+tcp_input: active pcb->state != CLOSED
+tcp_input: active pcb->state != TIME-WAIT
+tcp_input: active pcb->state != LISTEN
+tcp_input: pcb->next != pcb (before cache)
+tcp_input: pcb->next != pcb (after cache)
+tcp_input: TIME-WAIT pcb->state == TIME-WAIT
+pcb->snd_queuelen >= pbuf_clen(next->p)
+tcp_receive: segment not trimmed correctly to rcv_wnd
+tcp_receive: segment not trimmed correctly to ooseq queue
+tcp_receive: ooseq tcplen > rcv_wnd
+
+recv_udp must have a pcb argument
+
+SNTP_setup error_code : %d
+SNTP_oneshot error_code : %d
+erreur SNTP : %d
+erreur IGMP : %d
+sendto error
+Select failed: errno %d
+rcv NTP: %s
+error 0x%X
+addr.sin_port 0x%X
+probleme validation header
+
+recv_udp must have an argument
+recv_udp: recv for wrong pcb!
+recv_tcp must have an argument
+recv_tcp: recv for wrong pcb!
+
+new_rcv_ann_wnd <= 0xffff
+
+check decode_idx
+decode_len %% 4 == 0
+invalid decode_len
+
+
+pbuf_alloc: bad pbuf layer
+rem_len < max_u16_t
+pbuf_alloc: erroneous type
+pbuf_realloc: p != NULL
+pbuf_realloc: sane p->type
+grow < max_u16_t
+pbuf_realloc: q != NULL
+mem_trim returned q == NULL
+p != NULL
+increment_magnitude <= p->len
+bad pbuf type
+pbuf_free: sane type
+pbuf_free: p->ref > 0
+pbuf ref overflow
+p->next == NULL
+offset_to <= p_to->len
+offset_from <= p_from->len
+p_to != NULL
+pbuf_copy_partial: invalid buf
+pbuf_take: invalid buf
+pbuf_take: invalid dataptr
+pbuf_take: buf not large enough
+pbuf_take: invalid pbuf
+
+
+padding buffer full %d
+Padding ...
+%02d*.mp3
+/MELODIES
+F_repeat_trio --> STOP
+spi2:
+VS1011E init ERROR
+F_audio_init : PLay Streaming
+
+@ip : %d char =
+
+
+stop manuel message
+buffer full %d
+F_traitement_OPCODE --> ERROR
+BAD %d/%d
+RX %d/%d (%d/%d)
+CHK BAD !!! %d
+error %lx
+
+ ERROR delete file %s
+/CONFIG\C_A_vars.tri
+F_sauv_A_vars DEBUT
+/CONFIG\C_A_vars.triold
+C_A_vars.triold
+ERROR rename file
+Create file ERROR
+%d.%d.%d.%d
+CHK = %04x (%d)
+F_sauv_A_vars FIN
+F_config_par_defaut_A_vars
+BODET-%02X%02X%02X%02X%02X%02X
+jkl1vi5erjnfh
+public
+aSe2=9Z8gOi37*
+----
+239.192.54.1
+MELODYS_2013
+
+MSDOS5.0
+NO NAME FAT32
+NO NAME FAT \ No newline at end of file
diff --git a/snmp-mibs/BODET-Control-box.mib b/snmp-mibs/BODET-Control-box.mib
new file mode 100644
index 0000000..2275ebf
--- /dev/null
+++ b/snmp-mibs/BODET-Control-box.mib
@@ -0,0 +1,131 @@
+BODET-Harmonys-Control-Box-MIB DEFINITIONS ::= BEGIN
+
+--******************************************************************************
+-- MIB objects for agent module
+--******************************************************************************
+
+ IMPORTS
+ MODULE-IDENTITY, NOTIFICATION-TYPE, OBJECT-TYPE, enterprises
+ FROM SNMPv2-SMI
+ MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
+ FROM SNMPv2-CONF
+ DisplayString
+ FROM SNMPv2-TC
+ ;
+
+ controlbox MODULE-IDENTITY
+ LAST-UPDATED "201706190000Z" -- 19 June 2017
+ ORGANIZATION "BODET S.A"
+ CONTACT-INFO "
+ BODET S.A
+ postal: BP1
+ 49340 TREMENTINES
+ FRANCE
+ email: assistance.ts@bodet.com
+ "
+ DESCRIPTION "MIB for Harmonys Control Box"
+
+ REVISION "201706190000Z" -- 19 June 2017
+ DESCRIPTION "Initial Release"
+ ::= { harmonys 3 }
+
+
+--******************************************************************************
+-- Definition
+--******************************************************************************
+ bodetSnmp OBJECT IDENTIFIER ::= { enterprises 30731 }
+ harmonys OBJECT IDENTIFIER ::= { bodetSnmp 6 }
+
+ data OBJECT IDENTIFIER ::= { controlbox 1 }
+
+ traps OBJECT IDENTIFIER ::= { controlbox 2 }
+
+ controlboxConformance OBJECT IDENTIFIER ::= { controlbox 3 }
+ controlboxCompliances OBJECT IDENTIFIER ::= { controlboxConformance 1 }
+ controlboxGroups OBJECT IDENTIFIER ::= { controlboxConformance 2 }
+
+--******************************************************************************
+-- Objects
+--******************************************************************************
+ dnsName OBJECT-TYPE
+ SYNTAX DisplayString(SIZE(0..51))
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION "Hostname"
+ ::= { data 1 }
+
+ statusAlarm OBJECT-TYPE
+ SYNTAX DisplayString(SIZE(0..32))
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION "Current Status"
+ ::= { data 2 }
+
+
+--******************************************************************************
+-- Traps
+--******************************************************************************
+
+ trapInfoReboot NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Power Recovery"
+ ::= { traps 1 }
+
+ trapButtonPressed NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION " Button pressed"
+ ::= { traps 2 }
+
+ trapStatus NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Status"
+ ::= { traps 3 }
+
+ trapWebAccess NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Web Access"
+ ::= { traps 4 }
+
+ trapAuthentificationFailure NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Authentification Failure in Web Server"
+ ::= { traps 5 }
+
+--******************************************************************************
+-- Conformance Section
+--******************************************************************************
+
+ controlboxCompliance MODULE-COMPLIANCE
+ STATUS current
+ DESCRIPTION "Compliance statement for Bodet Control Box SNMP MIB"
+ MODULE
+ MANDATORY-GROUPS { controlboxObjectsGroup,
+ controlboxTrapsGroup }
+ ::= { controlboxCompliances 1 }
+
+--******************************************************************************
+-- Groups
+--******************************************************************************
+
+ controlboxObjectsGroup OBJECT-GROUP
+ OBJECTS {
+ dnsName,
+ statusAlarm,
+ }
+ STATUS current
+ DESCRIPTION "Collection of objects for Bodet Control Box MIB"
+ ::= { controlboxGroups 1 }
+
+ controlboxTrapsGroup NOTIFICATION-GROUP
+ NOTIFICATIONS {
+ trapInfoReboot,
+ trapButtonPressed,
+ trapStatus,
+ trapWebAccess,
+ trapAuthentificationFailure,
+ }
+ STATUS current
+ DESCRIPTION "Collection of traps for Bodet Control Box MIB"
+ ::= { controlboxGroups 2 }
+
+END
diff --git a/snmp-mibs/BODET-Flash.mib b/snmp-mibs/BODET-Flash.mib
new file mode 100644
index 0000000..b65a04c
--- /dev/null
+++ b/snmp-mibs/BODET-Flash.mib
@@ -0,0 +1,150 @@
+BODET-Harmonys-Flash-MIB DEFINITIONS ::= BEGIN
+
+--******************************************************************************
+-- MIB objects for agent module
+--******************************************************************************
+
+ IMPORTS
+ MODULE-IDENTITY, NOTIFICATION-TYPE, OBJECT-TYPE, enterprises
+ FROM SNMPv2-SMI
+ MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
+ FROM SNMPv2-CONF
+ DisplayString
+ FROM SNMPv2-TC
+ ;
+
+ flash MODULE-IDENTITY
+ LAST-UPDATED "201703300000Z" -- 30 March 2017
+ ORGANIZATION "BODET S.A"
+ CONTACT-INFO "
+ BODET S.A
+ postal: BP1
+ 49340 TREMENTINES
+ FRANCE
+ email: assistance.ts@bodet.com
+ "
+ DESCRIPTION "MIB for Harmonys Flash"
+
+ REVISION "201703300000Z" -- 30 March 2017
+ DESCRIPTION "Initial Release"
+ ::= { harmonys 2 }
+
+
+--******************************************************************************
+-- Definition
+--******************************************************************************
+ bodetSnmp OBJECT IDENTIFIER ::= { enterprises 30731 }
+ harmonys OBJECT IDENTIFIER ::= { bodetSnmp 6 }
+
+ data OBJECT IDENTIFIER ::= { flash 1 }
+
+ traps OBJECT IDENTIFIER ::= { flash 2 }
+
+ flashConformance OBJECT IDENTIFIER ::= { flash 3 }
+ flashCompliances OBJECT IDENTIFIER ::= { flashConformance 1 }
+ flashGroups OBJECT IDENTIFIER ::= { flashConformance 2 }
+
+--******************************************************************************
+-- Objects
+--******************************************************************************
+ dnsName OBJECT-TYPE
+ SYNTAX DisplayString(SIZE(0..51))
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION "Hostname"
+ ::= { data 1 }
+
+ statusAlarm OBJECT-TYPE
+ SYNTAX DisplayString(SIZE(0..32))
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION "Current Status"
+ ::= { data 2 }
+
+
+--******************************************************************************
+-- Traps
+--******************************************************************************
+
+ trapInfoReboot NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Power Recovery"
+ ::= { traps 1 }
+
+ trapScheduledMelody NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Scheduled Melody"
+ ::= { traps 2 }
+
+ trapManualMelody NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Manual Melody"
+ ::= { traps 3 }
+
+ trapAlertMelody NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Alert Melody"
+ ::= { traps 4 }
+
+ trapStatus NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Status"
+ ::= { traps 5 }
+
+ trapWebAccess NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Web Access"
+ ::= { traps 6 }
+
+ trapAuthentificationFailure NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Authentification Failure in Web Server"
+ ::= { traps 7 }
+
+ trapRepeaterFailure NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Repeater Failure"
+ ::= { traps 8 }
+
+
+--******************************************************************************
+-- Conformance Section
+--******************************************************************************
+
+ flashCompliance MODULE-COMPLIANCE
+ STATUS current
+ DESCRIPTION "Compliance statement for Bodet Flash SNMP MIB"
+ MODULE
+ MANDATORY-GROUPS { flashObjectsGroup,
+ flashTrapsGroup }
+ ::= { flashCompliances 1 }
+
+--******************************************************************************
+-- Groups
+--******************************************************************************
+
+ flashObjectsGroup OBJECT-GROUP
+ OBJECTS {
+ dnsName,
+ statusAlarm
+ }
+ STATUS current
+ DESCRIPTION "Collection of objects for Bodet Flash MIB"
+ ::= { flashGroups 1 }
+
+ flashTrapsGroup NOTIFICATION-GROUP
+ NOTIFICATIONS {
+ trapInfoReboot,
+ trapScheduledMelody,
+ trapManualMelody,
+ trapAlertMelody,
+ trapStatus,
+ trapWebAccess,
+ trapAuthentificationFailure,
+ trapRepeaterFailure
+ }
+ STATUS current
+ DESCRIPTION "Collection of traps for Bodet Flash MIB"
+ ::= { flashGroups 2 }
+
+END
diff --git a/snmp-mibs/BODET-Harmonys_Trio.mib b/snmp-mibs/BODET-Harmonys_Trio.mib
new file mode 100644
index 0000000..a6b9068
--- /dev/null
+++ b/snmp-mibs/BODET-Harmonys_Trio.mib
@@ -0,0 +1,168 @@
+BODET-Harmonys-Trio-MIB DEFINITIONS ::= BEGIN
+
+--******************************************************************************
+-- MIB objects for agent module
+--******************************************************************************
+
+ IMPORTS
+ MODULE-IDENTITY, NOTIFICATION-TYPE, OBJECT-TYPE, enterprises
+ FROM SNMPv2-SMI
+ MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
+ FROM SNMPv2-CONF
+ DisplayString
+ FROM SNMPv2-TC
+ ;
+
+ trio MODULE-IDENTITY
+ LAST-UPDATED "202001080000Z" -- 08 January 2020
+ ORGANIZATION "BODET S.A"
+ CONTACT-INFO "
+ BODET S.A
+ postal: BP1
+ 49340 TREMENTINES
+ FRANCE
+ email: assistance@bodet-timesport.com
+ "
+ DESCRIPTION "MIB for Harmonys Trio"
+
+ REVISION "202001080000Z" -- 08 January 2020
+ DESCRIPTION "Initial Release"
+ ::= { harmonys 4 }
+
+
+--******************************************************************************
+-- Definition
+--******************************************************************************
+ bodetSnmp OBJECT IDENTIFIER ::= { enterprises 30731 }
+ harmonys OBJECT IDENTIFIER ::= { bodetSnmp 6 }
+
+ data OBJECT IDENTIFIER ::= { trio 1 }
+
+ traps OBJECT IDENTIFIER ::= { trio 2 }
+
+ trioConformance OBJECT IDENTIFIER ::= { trio 3 }
+ trioCompliances OBJECT IDENTIFIER ::= { trioConformance 1 }
+ trioGroups OBJECT IDENTIFIER ::= { trioConformance 2 }
+
+--******************************************************************************
+-- Objects
+--******************************************************************************
+ dnsName OBJECT-TYPE
+ SYNTAX DisplayString(SIZE(0..51))
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION "Hostname"
+ ::= { data 1 }
+
+ statusAlarm OBJECT-TYPE
+ SYNTAX DisplayString(SIZE(0..32))
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION "Current Status"
+ ::= { data 2 }
+
+--******************************************************************************
+-- Traps
+--******************************************************************************
+
+ trapInfoReboot NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Power Recovery"
+ ::= { traps 1 }
+
+ trapScheduledMelody NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Scheduled Melody"
+ ::= { traps 2 }
+
+ trapManualMelody NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Manual Melody"
+ ::= { traps 3 }
+
+ trapAlertMelody NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Alert Melody"
+ ::= { traps 4 }
+
+ trapStatus NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Status"
+ ::= { traps 5 }
+
+ trapWebAccess NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Web Access"
+ ::= { traps 6 }
+
+ trapAuthentificationFailure NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Authentification Failure in Web Server"
+ ::= { traps 7 }
+
+ trapRepeaterFailure NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Repeater Failure"
+ ::= { traps 8 }
+
+ trapStreaming NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Streaming"
+ ::= { traps 9 }
+
+ trapMissingFile NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Missing File"
+ ::= { traps 10 }
+
+ trapSynchronisationFailure NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Synchronisation Failure"
+ ::= { traps 11 }
+
+
+
+--******************************************************************************
+-- Conformance Section
+--******************************************************************************
+
+ trioCompliance MODULE-COMPLIANCE
+ STATUS current
+ DESCRIPTION "Compliance statement for Bodet Speaker SNMP MIB"
+ MODULE
+ MANDATORY-GROUPS { trioObjectsGroup,
+ trioTrapsGroup }
+ ::= { trioCompliances 1 }
+
+--******************************************************************************
+-- Groups
+--******************************************************************************
+
+ trioObjectsGroup OBJECT-GROUP
+ OBJECTS {
+ dnsName,
+ statusAlarm
+ }
+ STATUS current
+ DESCRIPTION "Collection of objects for Bodet Speaker MIB"
+ ::= { trioGroups 1 }
+
+ trioTrapsGroup NOTIFICATION-GROUP
+ NOTIFICATIONS {
+ trapInfoReboot,
+ trapScheduledMelody,
+ trapManualMelody,
+ trapAlertMelody,
+ trapStatus,
+ trapWebAccess,
+ trapAuthentificationFailure,
+ trapRepeaterFailure,
+ trapStreaming,
+ trapMissingFile,
+ trapSynchronisationFailure
+ }
+ STATUS current
+ DESCRIPTION "Collection of traps for Bodet Speaker MIB"
+ ::= { trioGroups 2 }
+
+END
diff --git a/snmp-mibs/BODET-Sigma.mib b/snmp-mibs/BODET-Sigma.mib
new file mode 100644
index 0000000..7980e0b
--- /dev/null
+++ b/snmp-mibs/BODET-Sigma.mib
@@ -0,0 +1,214 @@
+BODET-Sigma-MIB DEFINITIONS ::= BEGIN
+
+--******************************************************************************
+-- MIB objects for agent module
+--******************************************************************************
+
+IMPORTS
+ MODULE-IDENTITY, NOTIFICATION-TYPE, enterprises
+ FROM SNMPv2-SMI
+ MODULE-COMPLIANCE, NOTIFICATION-GROUP
+ FROM SNMPv2-CONF
+ ;
+
+ sigma MODULE-IDENTITY
+ LAST-UPDATED "201707030000Z" -- 03 July 2017
+ ORGANIZATION "BODET S.A"
+ CONTACT-INFO "
+ BODET S.A
+ postal: BP1
+ 49340 TREMENTINES
+ FRANCE
+ email: assistance.ts@bodet.com
+ "
+ DESCRIPTION "MIB for Sigma"
+ REVISION "201707030000Z" -- 03 July 2017
+ DESCRIPTION "Update"
+ ::= { bodetSnmp 1 }
+
+--******************************************************************************
+-- Definition
+--******************************************************************************
+ bodetSnmp OBJECT IDENTIFIER ::= { enterprises 30731 }
+ traps OBJECT IDENTIFIER ::= { sigma 1 }
+
+ sigmaConformance OBJECT IDENTIFIER ::= { sigma 3 }
+ sigmaCompliances OBJECT IDENTIFIER ::= { sigmaConformance 1 }
+ sigmaGroups OBJECT IDENTIFIER ::= { sigmaConformance 2 }
+
+--******************************************************************************
+-- Traps
+--******************************************************************************
+
+trapSystemFailure NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION
+ "Sigma : System Failure"
+ ::= { traps 1 }
+
+trapFailureClientCode NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION
+ "Sigma : Failure Client Code"
+ ::= { traps 2 }
+
+trapFailureCodeTechnician NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION
+ "Sigma : Failure code technician"
+ ::= { traps 3 }
+
+trapFailureBattery NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION
+ "Sigma : Failure battery"
+ ::= { traps 4 }
+
+trapBatteryFault24V NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION
+ "Sigma : Battery fault 24V"
+ ::= { traps 5 }
+
+trapFailingMaster NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION
+ "Sigma : Failing Master"
+ ::= { traps 6 }
+
+trapFailureSynchro NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION
+ "Sigma : Failure synchro"
+ ::= { traps 7 }
+
+trapOverloading24V NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION
+ "Sigma : Overloading 24V"
+ ::= { traps 8 }
+
+trapFailurePulse24V NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION
+ "Sigma : Failure pulse 24V"
+ ::= { traps 9 }
+
+trapFailureAfnor NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION
+ "Sigma : Failure Afnor"
+ ::= { traps 10 }
+
+trapFailureAscii NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION
+ "Sigma : Failure Ascii"
+ ::= { traps 11 }
+
+trapFailureDRHF NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION
+ "Sigma : Failure DRHF"
+ ::= { traps 12 }
+
+trapFailureSerialPulse NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION
+ "Sigma : Failure serial pulse"
+ ::= { traps 13 }
+
+trapShortCircuitSerialPulse NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION
+ "Sigma : Short-circuit serial pulse"
+ ::= { traps 14 }
+
+trapOpenCircuitSerialPulse NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION
+ "Sigma : Open circuit serial pulse"
+ ::= { traps 15 }
+
+trapFailureCircuit NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION
+ "Sigma : Failure circuit"
+ ::= { traps 16 }
+
+trapFailureAfnorSynchro NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION
+ "Sigma : Failure Afnor Synchro"
+ ::= { traps 17 }
+
+trapFailureSynchronousWire NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION
+ "Sigma : Failure Synchronous Wire"
+ ::= { traps 18 }
+
+trapFailureSound NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION
+ "Sigma : Failure Sound"
+ ::= { traps 19 }
+
+trapFailureExternalInput NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION
+ "Sigma : Failure External Input"
+ ::= { traps 20 }
+
+trapAlertTriggered NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION
+ "Sigma : Alert triggered"
+ ::= { traps 21 }
+
+--******************************************************************************
+-- Conformance Section
+--******************************************************************************
+
+ flashCompliance MODULE-COMPLIANCE
+ STATUS current
+ DESCRIPTION "Compliance statement for Bodet SIGMA SNMP MIB"
+ MODULE
+ MANDATORY-GROUPS { sigmaTrapsGroup }
+ ::= { sigmaCompliances 1 }
+
+--******************************************************************************
+-- Groups
+--******************************************************************************
+
+ sigmaTrapsGroup NOTIFICATION-GROUP
+ NOTIFICATIONS {
+ trapSystemFailure,
+ trapFailureClientCode,
+ trapFailureCodeTechnician,
+ trapFailureBattery,
+ trapBatteryFault24V,
+ trapFailingMaster,
+ trapFailureSynchro,
+ trapOverloading24V,
+ trapFailurePulse24V,
+ trapFailureAfnor,
+ trapFailureAscii,
+ trapFailureDRHF,
+ trapFailureSerialPulse,
+ trapShortCircuitSerialPulse,
+ trapOpenCircuitSerialPulse,
+ trapFailureCircuit,
+ trapFailureAfnorSynchro,
+ trapFailureSynchronousWire,
+ trapFailureSound,
+ trapFailureExternalInput,
+ trapAlertTriggered
+ }
+ STATUS current
+ DESCRIPTION "Collection of traps for Bodet SIGMA MIB"
+ ::= { sigmaGroups 2 }
+
+END
+
+
diff --git a/snmp-mibs/BODET-Speaker.mib b/snmp-mibs/BODET-Speaker.mib
new file mode 100644
index 0000000..0ce29f6
--- /dev/null
+++ b/snmp-mibs/BODET-Speaker.mib
@@ -0,0 +1,162 @@
+BODET-Harmonys-Speaker-MIB DEFINITIONS ::= BEGIN
+
+--******************************************************************************
+-- MIB objects for agent module
+--******************************************************************************
+
+ IMPORTS
+ MODULE-IDENTITY, NOTIFICATION-TYPE, OBJECT-TYPE, enterprises
+ FROM SNMPv2-SMI
+ MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
+ FROM SNMPv2-CONF
+ DisplayString
+ FROM SNMPv2-TC
+ ;
+
+ speaker MODULE-IDENTITY
+ LAST-UPDATED "201706070000Z" -- 07 June 2017
+ ORGANIZATION "BODET S.A"
+ CONTACT-INFO "
+ BODET S.A
+ postal: BP1
+ 49340 TREMENTINES
+ FRANCE
+ email: assistance.ts@bodet.com
+ "
+ DESCRIPTION "MIB for Harmonys Speaker"
+
+ REVISION "201706070000Z" -- 07 June 2017
+ DESCRIPTION "Initial Release"
+ ::= { harmonys 1 }
+
+
+--******************************************************************************
+-- Definition
+--******************************************************************************
+ bodetSnmp OBJECT IDENTIFIER ::= { enterprises 30731 }
+ harmonys OBJECT IDENTIFIER ::= { bodetSnmp 6 }
+
+ data OBJECT IDENTIFIER ::= { speaker 1 }
+
+ traps OBJECT IDENTIFIER ::= { speaker 2 }
+
+ speakerConformance OBJECT IDENTIFIER ::= { speaker 3 }
+ speakerCompliances OBJECT IDENTIFIER ::= { speakerConformance 1 }
+ speakerGroups OBJECT IDENTIFIER ::= { speakerConformance 2 }
+
+--******************************************************************************
+-- Objects
+--******************************************************************************
+ dnsName OBJECT-TYPE
+ SYNTAX DisplayString(SIZE(0..51))
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION "Hostname"
+ ::= { data 1 }
+
+ statusAlarm OBJECT-TYPE
+ SYNTAX DisplayString(SIZE(0..32))
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION "Current Status"
+ ::= { data 2 }
+
+
+--******************************************************************************
+-- Traps
+--******************************************************************************
+
+ trapInfoReboot NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Power Recovery"
+ ::= { traps 1 }
+
+ trapScheduledMelody NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Scheduled Melody"
+ ::= { traps 2 }
+
+ trapManualMelody NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Manual Melody"
+ ::= { traps 3 }
+
+ trapAlertMelody NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Alert Melody"
+ ::= { traps 4 }
+
+ trapStatus NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Status"
+ ::= { traps 5 }
+
+ trapWebAccess NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Web Access"
+ ::= { traps 6 }
+
+ trapAuthentificationFailure NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Authentification Failure in Web Server"
+ ::= { traps 7 }
+
+ trapRepeaterFailure NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Repeater Failure"
+ ::= { traps 8 }
+
+ trapStreaming NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Streaming"
+ ::= { traps 9 }
+
+ trapMissingMelody NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION "Missing Melody"
+ ::= { traps 10 }
+
+
+--******************************************************************************
+-- Conformance Section
+--******************************************************************************
+
+ speakerCompliance MODULE-COMPLIANCE
+ STATUS current
+ DESCRIPTION "Compliance statement for Bodet Speaker SNMP MIB"
+ MODULE
+ MANDATORY-GROUPS { speakerObjectsGroup,
+ speakerTrapsGroup }
+ ::= { speakerCompliances 1 }
+
+--******************************************************************************
+-- Groups
+--******************************************************************************
+
+ speakerObjectsGroup OBJECT-GROUP
+ OBJECTS {
+ dnsName,
+ statusAlarm
+ }
+ STATUS current
+ DESCRIPTION "Collection of objects for Bodet Speaker MIB"
+ ::= { speakerGroups 1 }
+
+ speakerTrapsGroup NOTIFICATION-GROUP
+ NOTIFICATIONS {
+ trapInfoReboot,
+ trapScheduledMelody,
+ trapManualMelody,
+ trapAlertMelody,
+ trapStatus,
+ trapWebAccess,
+ trapAuthentificationFailure,
+ trapRepeaterFailure,
+ trapStreaming,
+ trapMissingMelody
+ }
+ STATUS current
+ DESCRIPTION "Collection of traps for Bodet Speaker MIB"
+ ::= { speakerGroups 2 }
+
+END
diff --git a/snmp-mibs/SNMPv2-SMI.mib b/snmp-mibs/SNMPv2-SMI.mib
new file mode 100644
index 0000000..54f6706
--- /dev/null
+++ b/snmp-mibs/SNMPv2-SMI.mib
@@ -0,0 +1,356 @@
+
+
+SNMPv2-SMI DEFINITIONS ::= BEGIN
+
+-- the path to the root
+
+org OBJECT IDENTIFIER ::= { iso 3 } -- "iso" = 1
+dod OBJECT IDENTIFIER ::= { org 6 }
+internet OBJECT IDENTIFIER ::= { dod 1 }
+
+directory OBJECT IDENTIFIER ::= { internet 1 }
+
+mgmt OBJECT IDENTIFIER ::= { internet 2 }
+mib-2 OBJECT IDENTIFIER ::= { mgmt 1 }
+transmission OBJECT IDENTIFIER ::= { mib-2 10 }
+
+experimental OBJECT IDENTIFIER ::= { internet 3 }
+
+private OBJECT IDENTIFIER ::= { internet 4 }
+enterprises OBJECT IDENTIFIER ::= { private 1 }
+
+security OBJECT IDENTIFIER ::= { internet 5 }
+
+snmpV2 OBJECT IDENTIFIER ::= { internet 6 }
+
+-- transport domains
+snmpDomains OBJECT IDENTIFIER ::= { snmpV2 1 }
+
+-- transport proxies
+snmpProxys OBJECT IDENTIFIER ::= { snmpV2 2 }
+
+-- module identities
+snmpModules OBJECT IDENTIFIER ::= { snmpV2 3 }
+
+-- Extended UTCTime, to allow dates with four-digit years
+-- (Note that this definition of ExtUTCTime is not to be IMPORTed
+-- by MIB modules.)
+ExtUTCTime ::= OCTET STRING(SIZE(11 | 13))
+ -- format is YYMMDDHHMMZ or YYYYMMDDHHMMZ
+
+ -- where: YY - last two digits of year (only years
+ -- between 1900-1999)
+ -- YYYY - last four digits of the year (any year)
+ -- MM - month (01 through 12)
+ -- DD - day of month (01 through 31)
+ -- HH - hours (00 through 23)
+ -- MM - minutes (00 through 59)
+ -- Z - denotes GMT (the ASCII character Z)
+ --
+ -- For example, "9502192015Z" and "199502192015Z" represent
+ -- 8:15pm GMT on 19 February 1995. Years after 1999 must use
+ -- the four digit year format. Years 1900-1999 may use the
+ -- two or four digit format.
+
+-- definitions for information modules
+
+MODULE-IDENTITY MACRO ::=
+BEGIN
+ TYPE NOTATION ::=
+ "LAST-UPDATED" value(Update ExtUTCTime)
+ "ORGANIZATION" Text
+ "CONTACT-INFO" Text
+ "DESCRIPTION" Text
+ RevisionPart
+
+ VALUE NOTATION ::=
+ value(VALUE OBJECT IDENTIFIER)
+
+ RevisionPart ::=
+ Revisions
+ | empty
+ Revisions ::=
+ Revision
+ | Revisions Revision
+ Revision ::=
+ "REVISION" value(Update ExtUTCTime)
+ "DESCRIPTION" Text
+
+ -- a character string as defined in section 3.1.1
+ Text ::= value(IA5String)
+END
+
+OBJECT-IDENTITY MACRO ::=
+BEGIN
+ TYPE NOTATION ::=
+ "STATUS" Status
+ "DESCRIPTION" Text
+
+ ReferPart
+
+ VALUE NOTATION ::=
+ value(VALUE OBJECT IDENTIFIER)
+
+ Status ::=
+ "current"
+ | "deprecated"
+ | "obsolete"
+
+ ReferPart ::=
+ "REFERENCE" Text
+ | empty
+
+ -- a character string as defined in section 3.1.1
+ Text ::= value(IA5String)
+END
+
+-- names of objects
+-- (Note that these definitions of ObjectName and NotificationName
+-- are not to be IMPORTed by MIB modules.)
+
+ObjectName ::=
+ OBJECT IDENTIFIER
+
+NotificationName ::=
+ OBJECT IDENTIFIER
+
+-- syntax of objects
+
+-- the "base types" defined here are:
+-- 3 built-in ASN.1 types: INTEGER, OCTET STRING, OBJECT IDENTIFIER
+-- 8 application-defined types: Integer32, IpAddress, Counter32,
+-- Gauge32, Unsigned32, TimeTicks, Opaque, and Counter64
+
+ObjectSyntax ::=
+ CHOICE {
+ simple
+ SimpleSyntax,
+
+ -- note that SEQUENCEs for conceptual tables and
+ -- rows are not mentioned here...
+
+ application-wide
+ ApplicationSyntax
+ }
+
+-- built-in ASN.1 types
+
+SimpleSyntax ::=
+ CHOICE {
+ -- INTEGERs with a more restrictive range
+ -- may also be used
+ integer-value -- includes Integer32
+ INTEGER (-2147483648..2147483647),
+
+ -- OCTET STRINGs with a more restrictive size
+ -- may also be used
+ string-value
+ OCTET STRING (SIZE (0..65535)),
+
+ objectID-value
+ OBJECT IDENTIFIER
+ }
+
+-- indistinguishable from INTEGER, but never needs more than
+-- 32-bits for a two's complement representation
+Integer32 ::=
+ INTEGER (-2147483648..2147483647)
+
+-- application-wide types
+
+ApplicationSyntax ::=
+ CHOICE {
+ ipAddress-value
+ IpAddress,
+
+ counter-value
+ Counter32,
+
+ timeticks-value
+ TimeTicks,
+
+ arbitrary-value
+ Opaque,
+
+ big-counter-value
+ Counter64,
+
+ unsigned-integer-value -- includes Gauge32
+ Unsigned32
+ }
+
+-- in network-byte order
+
+-- (this is a tagged type for historical reasons)
+IpAddress ::=
+ [APPLICATION 0]
+ IMPLICIT OCTET STRING (SIZE (4))
+
+-- this wraps
+Counter32 ::=
+ [APPLICATION 1]
+ IMPLICIT INTEGER (0..4294967295)
+
+-- this doesn't wrap
+Gauge32 ::=
+ [APPLICATION 2]
+ IMPLICIT INTEGER (0..4294967295)
+
+-- an unsigned 32-bit quantity
+-- indistinguishable from Gauge32
+Unsigned32 ::=
+ [APPLICATION 2]
+ IMPLICIT INTEGER (0..4294967295)
+
+-- hundredths of seconds since an epoch
+TimeTicks ::=
+ [APPLICATION 3]
+ IMPLICIT INTEGER (0..4294967295)
+
+-- for backward-compatibility only
+Opaque ::=
+ [APPLICATION 4]
+ IMPLICIT OCTET STRING
+
+-- for counters that wrap in less than one hour with only 32 bits
+Counter64 ::=
+ [APPLICATION 6]
+ IMPLICIT INTEGER (0..18446744073709551615)
+
+-- definition for objects
+
+OBJECT-TYPE MACRO ::=
+BEGIN
+ TYPE NOTATION ::=
+ "SYNTAX" Syntax
+ UnitsPart
+ "MAX-ACCESS" Access
+ "STATUS" Status
+ "DESCRIPTION" Text
+ ReferPart
+
+ IndexPart
+ DefValPart
+
+ VALUE NOTATION ::=
+ value(VALUE ObjectName)
+
+ Syntax ::= -- Must be one of the following:
+ -- a base type (or its refinement),
+ -- a textual convention (or its refinement), or
+ -- a BITS pseudo-type
+ type
+ | "BITS" "{" NamedBits "}"
+
+ NamedBits ::= NamedBit
+ | NamedBits "," NamedBit
+
+ NamedBit ::= identifier "(" number ")" -- number is nonnegative
+
+ UnitsPart ::=
+ "UNITS" Text
+ | empty
+
+ Access ::=
+ "not-accessible"
+ | "accessible-for-notify"
+ | "read-only"
+ | "read-write"
+ | "read-create"
+
+ Status ::=
+ "current"
+ | "deprecated"
+ | "obsolete"
+
+ ReferPart ::=
+ "REFERENCE" Text
+ | empty
+
+ IndexPart ::=
+ "INDEX" "{" IndexTypes "}"
+ | "AUGMENTS" "{" Entry "}"
+ | empty
+ IndexTypes ::=
+ IndexType
+ | IndexTypes "," IndexType
+ IndexType ::=
+ "IMPLIED" Index
+ | Index
+
+ Index ::=
+ -- use the SYNTAX value of the
+ -- correspondent OBJECT-TYPE invocation
+ value(ObjectName)
+ Entry ::=
+ -- use the INDEX value of the
+ -- correspondent OBJECT-TYPE invocation
+ value(ObjectName)
+
+ DefValPart ::= "DEFVAL" "{" Defvalue "}"
+ | empty
+
+ Defvalue ::= -- must be valid for the type specified in
+ -- SYNTAX clause of same OBJECT-TYPE macro
+ value(ObjectSyntax)
+ | "{" BitsValue "}"
+
+ BitsValue ::= BitNames
+ | empty
+
+ BitNames ::= BitName
+ | BitNames "," BitName
+
+ BitName ::= identifier
+
+ -- a character string as defined in section 3.1.1
+ Text ::= value(IA5String)
+END
+
+-- definitions for notifications
+
+NOTIFICATION-TYPE MACRO ::=
+BEGIN
+ TYPE NOTATION ::=
+ ObjectsPart
+ "STATUS" Status
+ "DESCRIPTION" Text
+ ReferPart
+
+ VALUE NOTATION ::=
+ value(VALUE NotificationName)
+
+ ObjectsPart ::=
+ "OBJECTS" "{" Objects "}"
+ | empty
+ Objects ::=
+ Object
+
+ | Objects "," Object
+ Object ::=
+ value(ObjectName)
+
+ Status ::=
+ "current"
+ | "deprecated"
+ | "obsolete"
+
+ ReferPart ::=
+ "REFERENCE" Text
+ | empty
+
+ -- a character string as defined in section 3.1.1
+ Text ::= value(IA5String)
+END
+
+-- definitions of administrative identifiers
+
+zeroDotZero OBJECT-IDENTITY
+ STATUS current
+ DESCRIPTION
+ "A value used for null identifiers."
+ ::= { 0 0 }
+
+END
+
+
diff --git a/snmp-mibs/SNMPv2-TC.mib b/snmp-mibs/SNMPv2-TC.mib
new file mode 100644
index 0000000..538746a
--- /dev/null
+++ b/snmp-mibs/SNMPv2-TC.mib
@@ -0,0 +1,781 @@
+
+
+SNMPv2-TC DEFINITIONS ::= BEGIN
+
+IMPORTS
+ TimeTicks FROM SNMPv2-SMI;
+
+-- definition of textual conventions
+
+TEXTUAL-CONVENTION MACRO ::=
+
+BEGIN
+ TYPE NOTATION ::=
+ DisplayPart
+ "STATUS" Status
+ "DESCRIPTION" Text
+ ReferPart
+ "SYNTAX" Syntax
+
+ VALUE NOTATION ::=
+ value(VALUE Syntax) -- adapted ASN.1
+
+ DisplayPart ::=
+ "DISPLAY-HINT" Text
+ | empty
+
+ Status ::=
+ "current"
+ | "deprecated"
+ | "obsolete"
+
+ ReferPart ::=
+ "REFERENCE" Text
+ | empty
+
+ -- a character string as defined in [2]
+ Text ::= value(IA5String)
+
+ Syntax ::= -- Must be one of the following:
+ -- a base type (or its refinement), or
+ -- a BITS pseudo-type
+ type
+ | "BITS" "{" NamedBits "}"
+
+ NamedBits ::= NamedBit
+ | NamedBits "," NamedBit
+
+ NamedBit ::= identifier "(" number ")" -- number is nonnegative
+
+END
+
+DisplayString ::= TEXTUAL-CONVENTION
+ DISPLAY-HINT "255a"
+ STATUS current
+ DESCRIPTION
+ "Represents textual information taken from the NVT ASCII
+
+ character set, as defined in pages 4, 10-11 of RFC 854.
+
+ To summarize RFC 854, the NVT ASCII repertoire specifies:
+
+ - the use of character codes 0-127 (decimal)
+
+ - the graphics characters (32-126) are interpreted as
+ US ASCII
+
+ - NUL, LF, CR, BEL, BS, HT, VT and FF have the special
+ meanings specified in RFC 854
+
+ - the other 25 codes have no standard interpretation
+
+ - the sequence 'CR LF' means newline
+
+ - the sequence 'CR NUL' means carriage-return
+
+ - an 'LF' not preceded by a 'CR' means moving to the
+ same column on the next line.
+
+ - the sequence 'CR x' for any x other than LF or NUL is
+ illegal. (Note that this also means that a string may
+ end with either 'CR LF' or 'CR NUL', but not with CR.)
+
+ Any object defined using this syntax may not exceed 255
+ characters in length."
+ SYNTAX OCTET STRING (SIZE (0..255))
+
+PhysAddress ::= TEXTUAL-CONVENTION
+ DISPLAY-HINT "1x:"
+ STATUS current
+ DESCRIPTION
+ "Represents media- or physical-level addresses."
+ SYNTAX OCTET STRING
+
+MacAddress ::= TEXTUAL-CONVENTION
+ DISPLAY-HINT "1x:"
+ STATUS current
+ DESCRIPTION
+ "Represents an 802 MAC address represented in the
+ `canonical' order defined by IEEE 802.1a, i.e., as if it
+ were transmitted least significant bit first, even though
+ 802.5 (in contrast to other 802.x protocols) requires MAC
+ addresses to be transmitted most significant bit first."
+ SYNTAX OCTET STRING (SIZE (6))
+
+TruthValue ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ "Represents a boolean value."
+ SYNTAX INTEGER { true(1), false(2) }
+
+TestAndIncr ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ "Represents integer-valued information used for atomic
+ operations. When the management protocol is used to specify
+ that an object instance having this syntax is to be
+ modified, the new value supplied via the management protocol
+ must precisely match the value presently held by the
+ instance. If not, the management protocol set operation
+ fails with an error of `inconsistentValue'. Otherwise, if
+ the current value is the maximum value of 2^31-1 (2147483647
+ decimal), then the value held by the instance is wrapped to
+ zero; otherwise, the value held by the instance is
+ incremented by one. (Note that regardless of whether the
+ management protocol set operation succeeds, the variable-
+ binding in the request and response PDUs are identical.)
+
+ The value of the ACCESS clause for objects having this
+ syntax is either `read-write' or `read-create'. When an
+ instance of a columnar object having this syntax is created,
+ any value may be supplied via the management protocol.
+
+ When the network management portion of the system is re-
+ initialized, the value of every object instance having this
+ syntax must either be incremented from its value prior to
+ the re-initialization, or (if the value prior to the re-
+ initialization is unknown) be set to a pseudo-randomly
+ generated value."
+ SYNTAX INTEGER (0..2147483647)
+
+AutonomousType ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ "Represents an independently extensible type identification
+ value. It may, for example, indicate a particular sub-tree
+ with further MIB definitions, or define a particular type of
+ protocol or hardware."
+ SYNTAX OBJECT IDENTIFIER
+
+InstancePointer ::= TEXTUAL-CONVENTION
+ STATUS obsolete
+
+ DESCRIPTION
+ "A pointer to either a specific instance of a MIB object or
+ a conceptual row of a MIB table in the managed device. In
+ the latter case, by convention, it is the name of the
+ particular instance of the first accessible columnar object
+ in the conceptual row.
+
+ The two uses of this textual convention are replaced by
+ VariablePointer and RowPointer, respectively."
+ SYNTAX OBJECT IDENTIFIER
+
+VariablePointer ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ "A pointer to a specific object instance. For example,
+ sysContact.0 or ifInOctets.3."
+ SYNTAX OBJECT IDENTIFIER
+
+RowPointer ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ "Represents a pointer to a conceptual row. The value is the
+ name of the instance of the first accessible columnar object
+ in the conceptual row.
+
+ For example, ifIndex.3 would point to the 3rd row in the
+ ifTable (note that if ifIndex were not-accessible, then
+ ifDescr.3 would be used instead)."
+ SYNTAX OBJECT IDENTIFIER
+
+RowStatus ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ "The RowStatus textual convention is used to manage the
+ creation and deletion of conceptual rows, and is used as the
+ value of the SYNTAX clause for the status column of a
+ conceptual row (as described in Section 7.7.1 of [2].)
+
+ The status column has six defined values:
+
+ - `active', which indicates that the conceptual row is
+ available for use by the managed device;
+
+ - `notInService', which indicates that the conceptual
+ row exists in the agent, but is unavailable for use by
+ the managed device (see NOTE below); 'notInService' has
+ no implication regarding the internal consistency of
+ the row, availability of resources, or consistency with
+ the current state of the managed device;
+
+ - `notReady', which indicates that the conceptual row
+ exists in the agent, but is missing information
+ necessary in order to be available for use by the
+ managed device (i.e., one or more required columns in
+ the conceptual row have not been instanciated);
+
+ - `createAndGo', which is supplied by a management
+ station wishing to create a new instance of a
+ conceptual row and to have its status automatically set
+ to active, making it available for use by the managed
+ device;
+
+ - `createAndWait', which is supplied by a management
+ station wishing to create a new instance of a
+ conceptual row (but not make it available for use by
+ the managed device); and,
+
+ - `destroy', which is supplied by a management station
+ wishing to delete all of the instances associated with
+ an existing conceptual row.
+
+ Whereas five of the six values (all except `notReady') may
+ be specified in a management protocol set operation, only
+ three values will be returned in response to a management
+ protocol retrieval operation: `notReady', `notInService' or
+ `active'. That is, when queried, an existing conceptual row
+ has only three states: it is either available for use by
+ the managed device (the status column has value `active');
+ it is not available for use by the managed device, though
+ the agent has sufficient information to attempt to make it
+ so (the status column has value `notInService'); or, it is
+ not available for use by the managed device, and an attempt
+ to make it so would fail because the agent has insufficient
+ information (the state column has value `notReady').
+
+ NOTE WELL
+
+ This textual convention may be used for a MIB table,
+ irrespective of whether the values of that table's
+ conceptual rows are able to be modified while it is
+ active, or whether its conceptual rows must be taken
+ out of service in order to be modified. That is, it is
+ the responsibility of the DESCRIPTION clause of the
+ status column to specify whether the status column must
+ not be `active' in order for the value of some other
+ column of the same conceptual row to be modified. If
+ such a specification is made, affected columns may be
+ changed by an SNMP set PDU if the RowStatus would not
+ be equal to `active' either immediately before or after
+ processing the PDU. In other words, if the PDU also
+ contained a varbind that would change the RowStatus
+ value, the column in question may be changed if the
+ RowStatus was not equal to `active' as the PDU was
+ received, or if the varbind sets the status to a value
+ other than 'active'.
+
+ Also note that whenever any elements of a row exist, the
+ RowStatus column must also exist.
+
+ To summarize the effect of having a conceptual row with a
+ status column having a SYNTAX clause value of RowStatus,
+ consider the following state diagram:
+
+ STATE
+ +--------------+-----------+-------------+-------------
+ | A | B | C | D
+ | |status col.|status column|
+ |status column | is | is |status column
+ ACTION |does not exist| notReady | notInService| is active
+--------------+--------------+-----------+-------------+-------------
+set status |noError ->D|inconsist- |inconsistent-|inconsistent-
+column to | or | entValue| Value| Value
+createAndGo |inconsistent- | | |
+ | Value| | |
+--------------+--------------+-----------+-------------+-------------
+set status |noError see 1|inconsist- |inconsistent-|inconsistent-
+column to | or | entValue| Value| Value
+createAndWait |wrongValue | | |
+--------------+--------------+-----------+-------------+-------------
+set status |inconsistent- |inconsist- |noError |noError
+column to | Value| entValue| |
+active | | | |
+ | | or | |
+ | | | |
+ | |see 2 ->D|see 8 ->D| ->D
+--------------+--------------+-----------+-------------+-------------
+set status |inconsistent- |inconsist- |noError |noError ->C
+column to | Value| entValue| |
+notInService | | | |
+ | | or | | or
+ | | | |
+ | |see 3 ->C| ->C|see 6
+--------------+--------------+-----------+-------------+-------------
+set status |noError |noError |noError |noError ->A
+column to | | | | or
+destroy | ->A| ->A| ->A|see 7
+--------------+--------------+-----------+-------------+-------------
+set any other |see 4 |noError |noError |see 5
+column to some| | | |
+value | | see 1| ->C| ->D
+--------------+--------------+-----------+-------------+-------------
+
+ (1) goto B or C, depending on information available to the
+ agent.
+
+ (2) if other variable bindings included in the same PDU,
+
+ provide values for all columns which are missing but
+ required, and all columns have acceptable values, then
+ return noError and goto D.
+
+ (3) if other variable bindings included in the same PDU,
+ provide legal values for all columns which are missing but
+ required, then return noError and goto C.
+
+ (4) at the discretion of the agent, the return value may be
+ either:
+
+ inconsistentName: because the agent does not choose to
+ create such an instance when the corresponding
+ RowStatus instance does not exist, or
+
+ inconsistentValue: if the supplied value is
+ inconsistent with the state of some other MIB object's
+ value, or
+
+ noError: because the agent chooses to create the
+ instance.
+
+ If noError is returned, then the instance of the status
+ column must also be created, and the new state is B or C,
+ depending on the information available to the agent. If
+ inconsistentName or inconsistentValue is returned, the row
+ remains in state A.
+
+ (5) depending on the MIB definition for the column/table,
+ either noError or inconsistentValue may be returned.
+
+ (6) the return value can indicate one of the following
+ errors:
+
+ wrongValue: because the agent does not support
+ notInService (e.g., an agent which does not support
+ createAndWait), or
+
+ inconsistentValue: because the agent is unable to take
+ the row out of service at this time, perhaps because it
+ is in use and cannot be de-activated.
+
+ (7) the return value can indicate the following error:
+
+ inconsistentValue: because the agent is unable to
+ remove the row at this time, perhaps because it is in
+ use and cannot be de-activated.
+
+ (8) the transition to D can fail, e.g., if the values of the
+ conceptual row are inconsistent, then the error code would
+ be inconsistentValue.
+
+ NOTE: Other processing of (this and other varbinds of) the
+ set request may result in a response other than noError
+ being returned, e.g., wrongValue, noCreation, etc.
+
+ Conceptual Row Creation
+
+ There are four potential interactions when creating a
+ conceptual row: selecting an instance-identifier which is
+ not in use; creating the conceptual row; initializing any
+ objects for which the agent does not supply a default; and,
+ making the conceptual row available for use by the managed
+ device.
+
+ Interaction 1: Selecting an Instance-Identifier
+
+ The algorithm used to select an instance-identifier varies
+ for each conceptual row. In some cases, the instance-
+ identifier is semantically significant, e.g., the
+ destination address of a route, and a management station
+ selects the instance-identifier according to the semantics.
+
+ In other cases, the instance-identifier is used solely to
+ distinguish conceptual rows, and a management station
+ without specific knowledge of the conceptual row might
+ examine the instances present in order to determine an
+ unused instance-identifier. (This approach may be used, but
+ it is often highly sub-optimal; however, it is also a
+ questionable practice for a naive management station to
+ attempt conceptual row creation.)
+
+ Alternately, the MIB module which defines the conceptual row
+ might provide one or more objects which provide assistance
+ in determining an unused instance-identifier. For example,
+ if the conceptual row is indexed by an integer-value, then
+ an object having an integer-valued SYNTAX clause might be
+ defined for such a purpose, allowing a management station to
+ issue a management protocol retrieval operation. In order
+ to avoid unnecessary collisions between competing management
+ stations, `adjacent' retrievals of this object should be
+ different.
+
+ Finally, the management station could select a pseudo-random
+ number to use as the index. In the event that this index
+
+ was already in use and an inconsistentValue was returned in
+ response to the management protocol set operation, the
+ management station should simply select a new pseudo-random
+ number and retry the operation.
+
+ A MIB designer should choose between the two latter
+ algorithms based on the size of the table (and therefore the
+ efficiency of each algorithm). For tables in which a large
+ number of entries are expected, it is recommended that a MIB
+ object be defined that returns an acceptable index for
+ creation. For tables with small numbers of entries, it is
+ recommended that the latter pseudo-random index mechanism be
+ used.
+
+ Interaction 2: Creating the Conceptual Row
+
+ Once an unused instance-identifier has been selected, the
+ management station determines if it wishes to create and
+ activate the conceptual row in one transaction or in a
+ negotiated set of interactions.
+
+ Interaction 2a: Creating and Activating the Conceptual Row
+
+ The management station must first determine the column
+ requirements, i.e., it must determine those columns for
+ which it must or must not provide values. Depending on the
+ complexity of the table and the management station's
+ knowledge of the agent's capabilities, this determination
+ can be made locally by the management station. Alternately,
+ the management station issues a management protocol get
+ operation to examine all columns in the conceptual row that
+ it wishes to create. In response, for each column, there
+ are three possible outcomes:
+
+ - a value is returned, indicating that some other
+ management station has already created this conceptual
+ row. We return to interaction 1.
+
+ - the exception `noSuchInstance' is returned,
+ indicating that the agent implements the object-type
+ associated with this column, and that this column in at
+ least one conceptual row would be accessible in the MIB
+ view used by the retrieval were it to exist. For those
+ columns to which the agent provides read-create access,
+ the `noSuchInstance' exception tells the management
+ station that it should supply a value for this column
+ when the conceptual row is to be created.
+
+ - the exception `noSuchObject' is returned, indicating
+ that the agent does not implement the object-type
+ associated with this column or that there is no
+ conceptual row for which this column would be
+ accessible in the MIB view used by the retrieval. As
+ such, the management station can not issue any
+ management protocol set operations to create an
+ instance of this column.
+
+ Once the column requirements have been determined, a
+ management protocol set operation is accordingly issued.
+ This operation also sets the new instance of the status
+ column to `createAndGo'.
+
+ When the agent processes the set operation, it verifies that
+ it has sufficient information to make the conceptual row
+ available for use by the managed device. The information
+ available to the agent is provided by two sources: the
+ management protocol set operation which creates the
+ conceptual row, and, implementation-specific defaults
+ supplied by the agent (note that an agent must provide
+ implementation-specific defaults for at least those objects
+ which it implements as read-only). If there is sufficient
+ information available, then the conceptual row is created, a
+ `noError' response is returned, the status column is set to
+ `active', and no further interactions are necessary (i.e.,
+ interactions 3 and 4 are skipped). If there is insufficient
+ information, then the conceptual row is not created, and the
+ set operation fails with an error of `inconsistentValue'.
+ On this error, the management station can issue a management
+ protocol retrieval operation to determine if this was
+ because it failed to specify a value for a required column,
+ or, because the selected instance of the status column
+ already existed. In the latter case, we return to
+ interaction 1. In the former case, the management station
+ can re-issue the set operation with the additional
+ information, or begin interaction 2 again using
+ `createAndWait' in order to negotiate creation of the
+ conceptual row.
+
+ NOTE WELL
+
+ Regardless of the method used to determine the column
+ requirements, it is possible that the management
+ station might deem a column necessary when, in fact,
+ the agent will not allow that particular columnar
+ instance to be created or written. In this case, the
+ management protocol set operation will fail with an
+ error such as `noCreation' or `notWritable'. In this
+ case, the management station decides whether it needs
+ to be able to set a value for that particular columnar
+ instance. If not, the management station re-issues the
+ management protocol set operation, but without setting
+ a value for that particular columnar instance;
+ otherwise, the management station aborts the row
+ creation algorithm.
+
+ Interaction 2b: Negotiating the Creation of the Conceptual
+ Row
+
+ The management station issues a management protocol set
+ operation which sets the desired instance of the status
+ column to `createAndWait'. If the agent is unwilling to
+ process a request of this sort, the set operation fails with
+ an error of `wrongValue'. (As a consequence, such an agent
+ must be prepared to accept a single management protocol set
+ operation, i.e., interaction 2a above, containing all of the
+ columns indicated by its column requirements.) Otherwise,
+ the conceptual row is created, a `noError' response is
+ returned, and the status column is immediately set to either
+ `notInService' or `notReady', depending on whether it has
+ sufficient information to (attempt to) make the conceptual
+ row available for use by the managed device. If there is
+ sufficient information available, then the status column is
+ set to `notInService'; otherwise, if there is insufficient
+ information, then the status column is set to `notReady'.
+ Regardless, we proceed to interaction 3.
+
+ Interaction 3: Initializing non-defaulted Objects
+
+ The management station must now determine the column
+ requirements. It issues a management protocol get operation
+ to examine all columns in the created conceptual row. In
+ the response, for each column, there are three possible
+ outcomes:
+
+ - a value is returned, indicating that the agent
+ implements the object-type associated with this column
+ and had sufficient information to provide a value. For
+ those columns to which the agent provides read-create
+ access (and for which the agent allows their values to
+ be changed after their creation), a value return tells
+ the management station that it may issue additional
+ management protocol set operations, if it desires, in
+ order to change the value associated with this column.
+
+ - the exception `noSuchInstance' is returned,
+ indicating that the agent implements the object-type
+ associated with this column, and that this column in at
+ least one conceptual row would be accessible in the MIB
+ view used by the retrieval were it to exist. However,
+ the agent does not have sufficient information to
+ provide a value, and until a value is provided, the
+ conceptual row may not be made available for use by the
+ managed device. For those columns to which the agent
+ provides read-create access, the `noSuchInstance'
+ exception tells the management station that it must
+ issue additional management protocol set operations, in
+ order to provide a value associated with this column.
+
+ - the exception `noSuchObject' is returned, indicating
+ that the agent does not implement the object-type
+ associated with this column or that there is no
+ conceptual row for which this column would be
+ accessible in the MIB view used by the retrieval. As
+ such, the management station can not issue any
+ management protocol set operations to create an
+ instance of this column.
+
+ If the value associated with the status column is
+ `notReady', then the management station must first deal with
+ all `noSuchInstance' columns, if any. Having done so, the
+ value of the status column becomes `notInService', and we
+ proceed to interaction 4.
+
+ Interaction 4: Making the Conceptual Row Available
+
+ Once the management station is satisfied with the values
+ associated with the columns of the conceptual row, it issues
+ a management protocol set operation to set the status column
+ to `active'. If the agent has sufficient information to
+ make the conceptual row available for use by the managed
+ device, the management protocol set operation succeeds (a
+ `noError' response is returned). Otherwise, the management
+ protocol set operation fails with an error of
+ `inconsistentValue'.
+
+ NOTE WELL
+
+ A conceptual row having a status column with value
+ `notInService' or `notReady' is unavailable to the
+ managed device. As such, it is possible for the
+ managed device to create its own instances during the
+ time between the management protocol set operation
+ which sets the status column to `createAndWait' and the
+ management protocol set operation which sets the status
+ column to `active'. In this case, when the management
+ protocol set operation is issued to set the status
+ column to `active', the values held in the agent
+ supersede those used by the managed device.
+
+ If the management station is prevented from setting the
+ status column to `active' (e.g., due to management station
+ or network failure) the conceptual row will be left in the
+ `notInService' or `notReady' state, consuming resources
+ indefinitely. The agent must detect conceptual rows that
+ have been in either state for an abnormally long period of
+ time and remove them. It is the responsibility of the
+ DESCRIPTION clause of the status column to indicate what an
+ abnormally long period of time would be. This period of
+ time should be long enough to allow for human response time
+ (including `think time') between the creation of the
+ conceptual row and the setting of the status to `active'.
+ In the absence of such information in the DESCRIPTION
+ clause, it is suggested that this period be approximately 5
+ minutes in length. This removal action applies not only to
+ newly-created rows, but also to previously active rows which
+ are set to, and left in, the notInService state for a
+ prolonged period exceeding that which is considered normal
+ for such a conceptual row.
+
+ Conceptual Row Suspension
+
+ When a conceptual row is `active', the management station
+ may issue a management protocol set operation which sets the
+ instance of the status column to `notInService'. If the
+ agent is unwilling to do so, the set operation fails with an
+ error of `wrongValue' or `inconsistentValue'. Otherwise,
+ the conceptual row is taken out of service, and a `noError'
+ response is returned. It is the responsibility of the
+ DESCRIPTION clause of the status column to indicate under
+ what circumstances the status column should be taken out of
+ service (e.g., in order for the value of some other column
+ of the same conceptual row to be modified).
+
+ Conceptual Row Deletion
+
+ For deletion of conceptual rows, a management protocol set
+ operation is issued which sets the instance of the status
+ column to `destroy'. This request may be made regardless of
+ the current value of the status column (e.g., it is possible
+ to delete conceptual rows which are either `notReady',
+ `notInService' or `active'.) If the operation succeeds,
+ then all instances associated with the conceptual row are
+ immediately removed."
+ SYNTAX INTEGER {
+ -- the following two values are states:
+ -- these values may be read or written
+ active(1),
+ notInService(2),
+
+ -- the following value is a state:
+ -- this value may be read, but not written
+ notReady(3),
+
+ -- the following three values are
+ -- actions: these values may be written,
+ -- but are never read
+ createAndGo(4),
+ createAndWait(5),
+ destroy(6)
+ }
+
+TimeStamp ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ "The value of the sysUpTime object at which a specific
+ occurrence happened. The specific occurrence must be
+
+ defined in the description of any object defined using this
+ type.
+
+ If sysUpTime is reset to zero as a result of a re-
+ initialization of the network management (sub)system, then
+ the values of all TimeStamp objects are also reset.
+ However, after approximately 497 days without a re-
+ initialization, the sysUpTime object will reach 2^^32-1 and
+ then increment around to zero; in this case, existing values
+ of TimeStamp objects do not change. This can lead to
+ ambiguities in the value of TimeStamp objects."
+ SYNTAX TimeTicks
+
+TimeInterval ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ "A period of time, measured in units of 0.01 seconds."
+ SYNTAX INTEGER (0..2147483647)
+
+DateAndTime ::= TEXTUAL-CONVENTION
+ DISPLAY-HINT "2d-1d-1d,1d:1d:1d.1d,1a1d:1d"
+ STATUS current
+ DESCRIPTION
+ "A date-time specification.
+
+ field octets contents range
+ ----- ------ -------- -----
+ 1 1-2 year* 0..65536
+ 2 3 month 1..12
+ 3 4 day 1..31
+ 4 5 hour 0..23
+ 5 6 minutes 0..59
+ 6 7 seconds 0..60
+ (use 60 for leap-second)
+ 7 8 deci-seconds 0..9
+ 8 9 direction from UTC '+' / '-'
+ 9 10 hours from UTC* 0..13
+ 10 11 minutes from UTC 0..59
+
+ * Notes:
+ - the value of year is in network-byte order
+ - daylight saving time in New Zealand is +13
+
+ For example, Tuesday May 26, 1992 at 1:30:15 PM EDT would be
+ displayed as:
+
+ 1992-5-26,13:30:15.0,-4:0
+
+ Note that if only local time is known, then timezone
+ information (fields 8-10) is not present."
+ SYNTAX OCTET STRING (SIZE (8 | 11))
+
+StorageType ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ "Describes the memory realization of a conceptual row. A
+ row which is volatile(2) is lost upon reboot. A row which
+ is either nonVolatile(3), permanent(4) or readOnly(5), is
+ backed up by stable storage. A row which is permanent(4)
+ can be changed but not deleted. A row which is readOnly(5)
+ cannot be changed nor deleted.
+
+ If the value of an object with this syntax is either
+ permanent(4) or readOnly(5), it cannot be written.
+ Conversely, if the value is either other(1), volatile(2) or
+ nonVolatile(3), it cannot be modified to be permanent(4) or
+ readOnly(5). (All illegal modifications result in a
+ 'wrongValue' error.)
+
+ Every usage of this textual convention is required to
+ specify the columnar objects which a permanent(4) row must
+ at a minimum allow to be writable."
+ SYNTAX INTEGER {
+ other(1), -- eh?
+ volatile(2), -- e.g., in RAM
+ nonVolatile(3), -- e.g., in NVRAM
+ permanent(4), -- e.g., partially in ROM
+ readOnly(5) -- e.g., completely in ROM
+ }
+
+TDomain ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ "Denotes a kind of transport service.
+
+ Some possible values, such as snmpUDPDomain, are defined in
+ the SNMPv2-TM MIB module. Other possible values are defined
+ in other MIB modules."
+ REFERENCE "The SNMPv2-TM MIB module is defined in RFC 1906."
+ SYNTAX OBJECT IDENTIFIER
+
+TAddress ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ "Denotes a transport service address.
+
+ A TAddress value is always interpreted within the context of a
+ TDomain value. Thus, each definition of a TDomain value must
+ be accompanied by a definition of a textual convention for use
+ with that TDomain. Some possible textual conventions, such as
+ SnmpUDPAddress for snmpUDPDomain, are defined in the SNMPv2-TM
+ MIB module. Other possible textual conventions are defined in
+ other MIB modules."
+ REFERENCE "The SNMPv2-TM MIB module is defined in RFC 1906."
+ SYNTAX OCTET STRING (SIZE (1..255))
+
+END
+
+