#include <I2C_eeprom.h>
#include <Wire.h>
#include <Crypto.h>
#include <SHA256.h>

#define HASH_SIZE 32

#define BLOCK_NUMBER  8
#define RESET_MEMORY  0
#define READ_ONLY     1
#define DATA_LENGTH   7206

unsigned char firmware_code[]=
#if BLOCK_NUMBER == 0
/* -------------------- 0 -------------------- */
"\x12\xc0\x2c\xc0\x2b\xc0\x2a\xc0\xc5\xc3\x28\xc0\x33\xc3\x54\xc3\x57\xc3\x24\xc0\x23\xc0\x08\xc5\x21\xc0\xde\xc4\x1f\xc0"
"\x1e\xc0\x5e\xc3\x1c\xc0\x1b\xc0\x11\x24\x1f\xbe\xcf\xe5\xd4\xe0\xde\xbf\xcd\xbf\x11\xe0\xa0\xe6\xb0\xe0\xec\xee\xfa\xe1"
"\x02\xc0\x05\x90\x0d\x92\xaa\x39\xb1\x07\xd9\xf7\x12\xe0\xaa\xe9\xb1\xe0\x01\xc0\x1d\x92\xa3\x37\xb1\x07\xe1\xf7\x9f\xda"
"\x46\xcd\xd1\xcf\xcf\x92\xdf\x92\xef\x92\xff\x92\xcf\x93\xdf\x93\xcd\xb7\xde\xb7\x28\x97\x0f\xb6\xf8\x94\xde\xbf\x0f\xbe"
"\xcd\xbf\x80\x91\x3a\x02\x28\x2f\x30\xe0\x40\xe0\x50\xe0\x29\x83\x3a\x83\x4b\x83\x5c\x83\x20\x91\x3b\x02\x30\xe0\x80\x91"
"\x38\x02\x90\x91\x39\x02\x28\x9f\xa0\x01\x29\x9f\x50\x0d\x38\x9f\x50\x0d\x11\x24\xca\x01\xa0\xe0\xb0\xe0\x8d\x83\x9e\x83"
"\xaf\x83\xb8\x87\x69\x81\x7a\x81\x8b\x81\x9c\x81\x20\xec\x38\xeb\x45\xea\x5d\xe1\x8f\xdc\x2d\x81\x3e\x81\x4f\x81\x58\x85"
"\xbd\xdc\x20\x93\x6b\x02\x30\x93\x6c\x02\x40\x93\x6d\x02\x50\x93\x6e\x02\xca\x01\xb9\x01\x20\xe0\x38\xe1\x40\xe0\x50\xe0"
"\xae\xdc\x20\x93\x2b\x02\x30\x93\x2c\x02\x40\x93\x2d\x02\x50\x93\x2e\x02\x20\x91\x5c\x02\x30\x91\x5d\x02\x40\xe0\x50\xe0"
"\x69\x81\x7a\x81\x8b\x81\x9c\x81\x68\xdc\x23\xec\x33\xe4\x40\xe0\x50\xe0\x63\xdc\x2d\x81\x3e\x81\x4f\x81\x58\x85\x91\xdc"
"\x20\x93\x6f\x02\x30\x93\x70\x02\x40\x93\x71\x02\x50\x93\x72\x02\x8f\xef\x80\x93\xa2\x01\x81\xe0\x80\x93\xa3\x01\x28\x96"
"\x0f\xb6\xf8\x94\xde\xbf\x0f\xbe\xcd\xbf\xdf\x91\xcf\x91\xff\x90\xef\x90\xdf\x90\xcf\x90\x08\x95\x80\x91\x9a\x01\x88\x23"
"\xa1\xf4\x81\xe0\x80\x93\x9a\x01\x12\xba\x11\xba\x87\xe4\x87\xbb\x82\xe0\x88\xbb\x8a\xe0\x00\x00\x81\x50\xe9\xf7\x80\xb3"
"\x80\x7b\x09\xf0\x3f\xc0\x00\xe0\x18\xba\x12\xba\x8e\xe8\x91\xe0\x61\xe0\x70\xe0\x49\xe0\x50\xe0\x94\xdc\xe1\xe6\xf0\xe0"
"\x80\xe0\x04\xc0\x8f\x5f\xf2\x96\x86\x30\x81\xf0\x90\x91\x90\x01\xdf\x01\x11\x97\x2c\x91\x29\x17\xa9\xf7\x90\x91\x91\x01"
"\x20\x81\x29\x17\x29\xf0\x8f\x5f\xf2\x96\x86\x30\x81\xf7\x80\xe0\x00\x23\x01\xf1\x88\x23\xa9\xf0\x90\xe0\x22\xe3\x30\xe0"
"\x82\x9f\xf0\x01\x83\x9f\xf0\x0d\x92\x9f\xf0\x0d\x11\x24\xa2\xe3\xb2\xe0\xe0\x5a\xff\x4f\x82\xe3\x01\x90\x0d\x92\x81\x50"
"\xe1\xf7\x2e\xdf\x08\x95\x81\xe0\x90\xe0\xe9\xcf\x80\x3b\x49\xf0\x83\xe0\x80\x93\x68\x02\xff\xcf\x81\x30\x01\xf7\x80\xe0"
"\x90\xe0\xde\xcf\x01\xe0\xb5\xcf\x84\xe0\x83\xbf\x84\xe6\x82\xbf\x89\xb7\x8e\x7f\x89\xbf\x88\xb7\x81\x60\x88\xbf\x08\x95"
"\x8a\xef\x84\xbd\x10\x92\xa0\x01\x87\xe0\x85\xbd\x12\xbc\x88\xb7\x80\x64\x88\xbf\x89\xb7\x80\x64\x89\xbf\x08\x95\x81\xe0"
"\x80\x93\xa0\x01\x89\xb7\x8f\x7b\x89\xbf\x86\xe0\x85\xbd\x8f\xef\x84\xbd\x12\xbc\x88\xb7\x80\x64\x88\xbf\x89\xb7\x80\x64"
"\x89\xbf\x08\x95\x88\xb7\x80\x64\x88\xbf\x89\xb7\x8f\x7b\x89\xbf\x08\x95\x82\xe0\x8b\xb9\x10\xbc\x88\xe0\x89\xb9\x88\xed"
"\x8a\xb9\x08\x95\x80\xb7\x88\x60\x80\xbf\x83\xe0\x88\xb9\x88\xb1\x88\x61\x88\xb9\x82\xe0\x87\xb9\x08\x95\x18\xb8\x08\x95"
"\x90\x91\x4e\x02\x92\x95\x9f\x70\x98\x0f\x90\xfd\x35\xc0\x84\xe0\x80\x93\xc4\x01\x00\x23\x09\xf0\xaa\xc0\x92\xe0\x90\x93"
"\xc5\x01\x90\x93\xc6\x01\x91\xe0\x90\x93\xc7\x01\x90\x93\xc8\x01\x80\x93\xc9\x01\x80\xe8\x80\x93\xca\x01\x80\x93\xcb\x01"
"\x80\xe2\x80\x93\xcc\x01\x80\x93\xcd\x01\x80\xe1\x80\x93\xce\x01\x80\x93\xcf\x01\x20\xea\x20\x93\xbe\x01\x90\xe9\x90\x93"
"\xbf\x01\x80\xe3\x80\x93\xc0\x01\x20\x93\xc1\x01\x90\x93\xc2\x01\x80\x93\xc3\x01\x91\xe0\x90\x93\xb8\x01\x82\xe0\x34\xc0"
"\x00\x23\x09\xf0\x4a\xc0\x82\xe0\x80\x93\xc4\x01\x94\xe0\x90\x93\xc5\x01\x90\x93\xc6\x01\x91\xe0\x90\x93\xc7\x01\x90\x93"
"\xc8\x01\x80\x93\xc9\x01\x80\xe8\x80\x93\xca\x01\x80\x93\xcb\x01\x80\xe1\x80\x93\xcc\x01\x80\x93\xcd\x01\x80\xe2\x80\x93"
"\xce\x01\x80\x93\xcf\x01\x80\xe9\x80\x93\xbe\x01\x90\xea\x90\x93\xbf\x01\x20\xe3\x20\x93\xc0\x01\x80\x93\xc1\x01\x90\x93";
#elif BLOCK_NUMBER == 1
/* -------------------- 1 -------------------- */
"\xc2\x01\x80\x93\xc3\x01\x92\xe0\x90\x93\xb8\x01\x81\xe0\x80\x93\xb9\x01\x10\x92\xba\x01\x90\x93\xbb\x01\x80\x93\xbc\x01"
"\x10\x92\xbd\x01\x9b\xe1\x90\x93\xb2\x01\x8a\xe1\x80\x93\xb3\x01\x90\x93\xb4\x01\x80\x93\xb5\x01\x90\x93\xb6\x01\x80\x93"
"\xb7\x01\x08\x95\x80\xe4\x80\x93\xc4\x01\x94\xe0\x90\x93\xc5\x01\x90\x93\xc6\x01\x91\xe0\x90\x93\xc7\x01\x90\x93\xc8\x01"
"\x80\x93\xc9\x01\x80\xe3\x80\x93\xca\x01\x80\x93\xcb\x01\x80\xea\x80\x93\xcc\x01\x80\x93\xcd\x01\x80\xe9\x80\x93\xce\x01"
"\x80\x93\xcf\x01\x80\xe1\x80\x93\xbe\x01\x90\xe2\x90\x93\xbf\x01\x90\x93\xc0\x01\x90\xe8\x90\x93\xc1\x01\x90\x93\xc2\x01"
"\x80\x93\xc3\x01\xb5\xcf\x90\xe4\x90\x93\xc5\x01\x90\x93\xc6\x01\x91\xe0\x90\x93\xc7\x01\x90\x93\xc8\x01\x80\x93\xc9\x01"
"\x80\xe3\x80\x93\xca\x01\x80\x93\xcb\x01\x80\xe9\x80\x93\xcc\x01\x80\x93\xcd\x01\x80\xea\x80\x93\xce\x01\x80\x93\xcf\x01"
"\x80\xe2\x80\x93\xbe\x01\x90\xe1\x90\x93\xbf\x01\x90\x93\xc0\x01\x90\xe8\x90\x93\xc1\x01\x90\x93\xc2\x01\x80\x93\xc3\x01"
"\x55\xcf\x33\x24\x80\xb7\x84\x60\x80\xbf\x88\xe3\x84\xbb\xab\x98\xac\x9a\xad\x9a\x81\xe0\x13\xdf\x08\x95\x89\xb7\x83\x7e"
"\x89\xbf\x1f\xbc\x1e\xbc\x18\xba\x12\xba\x11\xba\x81\xe0\x80\x93\x2f\x02\x33\x24\x44\x24\x88\x24\x55\x24\x08\x95\x10\x92"
"\x9d\x01\x10\x92\x9e\x01\x10\x92\xb1\x01\x10\x92\xb0\x01\x10\x92\xaf\x01\x10\x92\xae\x01\x10\x92\xad\x01\x10\x92\xac\x01"
"\x18\xba\x12\xba\x11\xba\x81\xe0\x80\x93\x2f\x02\x33\x24\x44\x24\x88\x24\x55\x24\x21\xe0\x30\xe0\x00\x90\x4c\x02\x02\xc0"
"\x22\x0f\x33\x1f\x0a\x94\xe2\xf7\x21\x50\x30\x40\x30\x93\x67\x02\x20\x93\x66\x02\x80\x91\x4e\x02\x81\x72\x81\x32\x09\xf4"
"\x4c\xc0\x10\x92\x65\x02\x10\x92\x64\x02\xc9\x01\x88\x0f\x99\x1f\x88\x0f\x99\x1f\x88\x0f\x99\x1f\x82\x0f\x93\x1f\x6a\xe0"
"\x70\xe0\x7d\xda\x70\x93\x6a\x02\x60\x93\x69\x02\x00\x23\x11\xf1\x80\xeb\x81\xbb\x87\xe4\x87\xbb\x80\x91\x4c\x02\x90\x91"
"\x4d\x02\x88\x30\x91\x05\x09\xf4\x45\xc0\x89\x30\x91\x05\x80\xf5\x87\x30\x91\x05\x41\xf4\x82\xe8\x8f\xbd\x89\xe1\x8e\xbd"
"\x8f\xe7\x90\xe0\x97\xbd\x86\xbd\x19\xbc\x18\xbc\x1b\xbc\x1a\xbc\x89\xb7\x84\x60\x89\xbf\x08\x95\x8c\xeb\x81\xbb\x8f\xec"
"\x87\xbb\x83\xe0\x8f\xbd\x89\xe1\x8e\xbd\x80\x91\x66\x02\x90\x91\x67\x02\x9b\xbd\x8a\xbd\x19\xbc\x18\xbc\x89\xb7\x88\x61"
"\x89\xbf\x08\x95\x88\x27\x99\x27\x82\x1b\x93\x0b\x90\x93\x65\x02\x80\x93\x64\x02\xaf\xcf\x89\x30\x91\x05\xd9\xf0\x8a\x30"
"\x91\x05\xa9\xf6\x83\xe8\x8f\xbd\x89\xe0\x8e\xbd\x19\xbc\x18\xbc\x1b\xbc\x1a\xbc\x89\xb7\x84\x60\x89\xbf\x08\x95\x81\xe8"
"\x8f\xbd\x89\xe0\x8e\xbd\x19\xbc\x18\xbc\x1b\xbc\x1a\xbc\x89\xb7\x84\x60\x89\xbf\x08\x95\x82\xe8\x8f\xbd\x89\xe0\x8e\xbd"
"\x19\xbc\x18\xbc\x1b\xbc\x1a\xbc\x89\xb7\x84\x60\x89\xbf\x08\x95\x00\x23\x51\xf0\xf8\x94\x97\xfd\x1e\xc0\x21\xe0\x20\x93"
"\x2f\x02\x9b\xbd\x8a\xbd\x78\x94\x08\x95\x9c\x01\x20\x59\x3e\x4f\x42\xe0\x21\x3e\x34\x07\x60\xf4\x10\x92\x9f\x01\xf8\x94"
"\x97\xfd\x14\xc0\x21\xe0\x20\x93\x2f\x02\x99\xbd\x88\xbd\x78\x94\x08\x95\x28\xe0\x20\x93\x9f\x01\xf2\xcf\x10\x92\x2f\x02"
"\x90\x95\x81\x95\x9f\x4f\x9b\xbd\x8a\xbd\x78\x94\x08\x95\x10\x92\x2f\x02\x90\x95\x81\x95\x9f\x4f\x99\xbd\x88\xbd\x78\x94"
"\x08\x95\xff\x93\xff\xb7\xff\x93\xf0\x91\xaa\x01\xf3\x95\xf0\x30\x09\xf4\xff\xef\xf0\x93\xaa\x01\xf0\x91\x9f\x01\xf8\xbf"
"\xf0\x91\x2f\x02\xf1\x30\x41\xf0\x33\x24\x32\xba\x38\xba\x52\xba\xff\x91\xff\xbf\xff\x91\x18\x95\x38\xba\x32\xba\x48\xba"
"\x82\xba\xff\x91\xff\xbf\xff\x91\x18\x95\x32\xba\x38\xba\x82\xba\x18\x95\xff\x93\xff\xb7\xff\x93\xf0\x91\xaa\x01\xf3\x95"
"\xf0\x30\x09\xf4\xff\xef\xf0\x93\xaa\x01\xff\x91\xff\xbf\xff\x91\x18\x95\xcf\x93\xcf\xb7\xcf\x93\xdf\x93\x9f\x93\xaf\x93"
"\xbf\x93\x33\x24\x11\x30\xb9\xf0\x13\x30\xa9\xf0\x15\x30\x99\xf0\x00\xc0\xd0\x91\xaa\x01\xc0\x91\x9d\x01\xcd\x0f\xb0\x91";
#elif BLOCK_NUMBER == 2
/* -------------------- 2 -------------------- */
"\x2a\x02\xb1\x30\x31\xf4\xc3\x30\x24\xf4\x38\xba\x43\x2c\x83\x2c\x2f\xc0\xd0\x93\x9e\x01\x24\xc0\xd0\x91\xaa\x01\xc0\x91"
"\x9e\x01\xdc\x1b\xb0\x91\x2a\x02\xb1\x30\x41\xf4\xb0\x91\xaa\x01\xb3\x30\x24\xf4\x38\xba\x43\x2c\x83\x2c\x1b\xc0\xd0\x93"
"\x9d\x01\xb0\x91\xab\x01\xb3\x95\xb6\x30\x09\xf4\xbb\x27\xb0\x93\xab\x01\xcc\xea\xd1\xe0\xcb\x0f\xd3\x1d\xb0\x91\xaa\x01"
"\xb8\x83\x30\x92\xaa\x01\xc0\x91\x31\x02\xc4\xbd\x38\xb8\xc9\xb7\xc0\x64\xc9\xbf\x06\xc0\xc0\x91\x02\x00\xc4\xbd\xc9\xb7"
"\xc0\x64\xc9\xbf\xbf\x91\xaf\x91\x9f\x91\xdf\x91\xcf\x91\xcf\xbf\xcf\x91\x18\x95\xcf\x93\xcf\xb7\xcf\x93\xdf\x93\xff\x93"
"\x33\x24\x13\x95\x16\x30\x09\xf4\x11\x27\xca\xec\xd1\xe0\xc1\x0f\xd3\x1d\x88\x80\xc4\xec\xd1\xe0\xc1\x0f\xd3\x1d\x48\x80"
"\xc0\x91\xa0\x01\xc1\x30\x81\xf0\x53\x2c\xc0\x91\x31\x02\xc4\xbd\x00\x30\x69\xf1\x38\xba\x32\xba\x81\xba\x48\xba\xff\x91"
"\xdf\x91\xcf\x91\xcf\xbf\xcf\x91\x18\x95\xf9\xb7\xff\x7b\xf9\xbf\xce\xeb\xd1\xe0\xc1\x0f\xd3\x1d\x58\x80\x00\x30\x69\xf0"
"\xd0\x91\x2f\x02\xd1\x30\x29\xf0\x38\xba\x32\xba\x81\xba\x52\xba\x04\xc0\x38\xba\x32\xba\x81\xba\x48\xba\xc8\xeb\xd1\xe0"
"\xc1\x0f\xd3\x1d\xf8\x81\xf7\xb9\xc2\xeb\xd1\xe0\xc1\x0f\xd3\x1d\xf8\x81\xf8\xb9\xff\x91\xdf\x91\xcf\x91\xcf\xbf\xcf\x91"
"\x18\x95\x00\x23\x39\xf0\x18\xba\x12\xba\x8f\xe7\x00\x00\x81\x50\xe9\xf7\x08\x95\xf8\x94\x88\x24\x44\x24\x78\x94\x8f\xe7"
"\xf6\xcf\x18\x2f\xf8\x94\x00\x23\xf9\xf0\x18\xba\x12\xba\x90\xe0\xfc\x01\xe6\x53\xfe\x4f\x20\x81\x21\xbb\x8c\x53\x9e\x4f"
"\xfc\x01\x80\x81\x88\xbb\x78\x94\x20\x91\x3e\x02\x30\x91\x3f\x02\x21\x15\x31\x05\x41\xf0\x88\xee\x93\xe0\x00\x00\x01\x97"
"\xe9\xf7\x21\x50\x30\x40\xc1\xf7\xcf\xdf\x08\x95\x90\xe0\xfc\x01\xe6\x53\xfe\x4f\x80\x80\x8c\x53\x9e\x4f\xfc\x01\x40\x80"
"\x78\x94\xe4\xcf\xf8\x94\x80\x90\xca\x01\xe8\x2f\xf0\xe0\xec\x53\xfe\x4f\x40\x80\x78\x94\x8e\xef\x00\x00\x81\x50\xe9\xf7"
"\x08\x95\x81\xe0\x9f\xef\x9c\xde\x8f\xef\x80\x93\xa2\x01\x21\xe0\x20\x93\xa3\x01\x80\x91\xa8\x01\x90\x91\xa9\x01\x00\x97"
"\x29\xf1\xab\x9a\xac\x98\xad\x98\x83\xe0\x80\x93\x68\x02\x10\x92\x30\x02\x80\x91\xa3\x01\x80\x6c\x80\x93\xa3\x01\x20\x93"
"\xa1\x01\x28\xe2\x30\xe0\x88\xee\x93\xe0\x00\x00\x01\x97\xe9\xf7\x21\x50\x30\x40\xc1\xf7\xc8\xdc\xad\xdc\xb6\xdd\x10\x92"
"\xa7\x01\x10\x92\xa6\x01\x10\x92\xa4\x01\x10\x92\xa5\x01\x08\x95\x10\x92\x68\x02\x20\x93\x30\x02\x80\x91\xa3\x01\x80\x93"
"\xa3\x01\xe1\xcf\x80\x91\xfc\x01\x88\x23\x11\xf5\x80\x91\x97\x01\x90\x91\x98\x01\x01\x97\x90\x93\x98\x01\x80\x93\x97\x01"
"\x00\x97\x91\xf5\xac\x9a\xad\x98\x8a\xb1\x8f\x73\x8a\xb9\x80\x91\xf9\x01\x82\x30\x11\xf0\x10\x92\xf9\x01\x10\x92\xd2\x01"
"\x10\x92\xd1\x01\x8a\xb1\x80\x6c\x8a\xb9\x10\x92\xa9\x01\x10\x92\xa8\x01\x08\x95\x80\x91\x30\x02\x83\x30\xc0\xf0\x88\xe5"
"\x92\xe0\x90\x93\x98\x01\x80\x93\x97\x01\x8a\xb1\x8f\x73\x8a\xb9\x80\x91\xfa\x01\x90\x91\xfb\x01\x90\x93\xa9\x01\x80\x93"
"\xa8\x01\x8a\xb1\x80\x6c\x8a\xb9\x35\xd2\x10\x92\xfc\x01\x08\x95\x8e\xe1\x90\xe0\x90\x93\x98\x01\x80\x93\x97\x01\xe7\xcf"
"\x1f\x92\x0f\x92\x0f\xb6\x0f\x92\x11\x24\x8f\x93\x9f\x93\xef\x93\xff\x93\x90\x91\xd1\x01\x80\x91\xd2\x01\x98\x17\x81\xf0"
"\x80\x91\xd1\x01\xe8\x2f\xf0\xe0\xed\x52\xfe\x4f\x90\x81\x9c\xb9\x8f\x5f\x80\x93\xd1\x01\x80\x91\xd1\x01\x8f\x71\x80\x93"
"\xd1\x01\xff\x91\xef\x91\x9f\x91\x8f\x91\x0f\x90\x0f\xbe\x0f\x90\x1f\x90\x18\x95\x1f\x92\x0f\x92\x0f\xb6\x0f\x92\x11\x24"
"\x2f\x93\x3f\x93\x4f\x93\x5f\x93\x8f\x93\x9f\x93\xaf\x93\xbf\x93\xef\x93\xff\x93\x8c\xb1\x80\x93\xf7\x01\x80\x91\xf9\x01"
"\x88\x23\xb9\xf5\x80\x91\xf7\x01\x82\x95\x86\x95\x87\x70\x80\x93\xf8\x01\x10\x92\xfd\x01\x80\x91\xf8\x01\x88\x30\xd8\xf5"
"\x80\x91\xf8\x01\x81\x30\x09\xf4\x7e\xc0\x80\x91\xf8\x01\x83\x30\x09\xf4\x55\xc0\x40\x91\xf8\x01\x42\x30\x09\xf4\x78\xc0";
#elif BLOCK_NUMBER == 3
/* -------------------- 3 -------------------- */
"\x43\x30\x08\xf0\x5a\xc0\x44\x23\x09\xf4\xb4\xc0\x41\x30\x09\xf0\x74\xc0\x50\x91\xd0\x01\x52\x30\x09\xf4\x2b\xc1\x53\x30"
"\x08\xf0\xfe\xc0\x51\x30\x09\xf4\x41\xc1\x10\x92\xfb\x01\x10\x92\xfa\x01\x40\x91\xfd\x01\x64\xc0\x80\x91\xf9\x01\x81\x30"
"\xe1\xf0\x80\x91\xf9\x01\x82\x30\x49\xf4\x80\x91\xfd\x01\x81\x50\x80\x93\xfd\x01\x88\x23\x11\xf4\x10\x92\xf9\x01\xff\x91"
"\xef\x91\xbf\x91\xaf\x91\x9f\x91\x8f\x91\x5f\x91\x4f\x91\x3f\x91\x2f\x91\x0f\x90\x0f\xbe\x0f\x90\x1f\x90\x18\x95\x80\x91"
"\xfe\x01\x90\x91\xf7\x01\xe8\x2f\xf0\xe0\xe1\x50\xfe\x4f\x90\x83\x8f\x5f\x80\x93\xfe\x01\x80\x91\xfd\x01\x81\x50\x80\x93"
"\xfd\x01\x88\x23\x09\xf4\xac\xcf\xdc\xcf\x81\xe0\x80\x93\xfd\x01\x81\xe0\x80\x93\xf9\x01\x80\x93\xfe\x01\x80\x91\xf7\x01"
"\x80\x93\xff\x01\xcf\xcf\x44\x30\x09\xf4\x88\xc0\x44\x30\x08\xf0\x73\xc0\x80\x91\xf5\x01\x90\x91\x00\x02\x89\x23\x09\xf4"
"\xa3\xc0\xac\x98\x80\x91\xf5\x01\x90\x91\xff\x01\x89\x23\x09\xf4\x99\xc0\xad\x98\x09\xc0\x84\xe0\x80\x93\xfd\x01\xdb\xcf"
"\x80\x91\x30\x02\x82\x30\x08\xf4\xb1\xc0\x40\x91\xfd\x01\x44\x23\x09\xf4\xa8\xcf\xe0\x91\x07\x02\xf0\x91\x08\x02\x80\x91"
"\xd1\x01\x90\x91\xd2\x01\x81\x50\x89\x1b\x18\x16\x0c\xf0\x57\xc0\x24\x2f\x30\xe0\x99\x27\x87\xfd\x90\x95\x82\x17\x93\x07"
"\xfc\xf0\x90\x91\xd2\x01\x80\x91\xd1\x01\x98\x17\x09\xf4\x65\xc0\x41\x50\xcf\x01\x84\x0f\x91\x1d\x01\x96\x20\x91\xd2\x01"
"\xa2\x2f\xb0\xe0\x31\x91\xad\x52\xbe\x4f\x3c\x93\x2f\x5f\x20\x93\xd2\x01\x20\x91\xd2\x01\x2f\x71\x20\x93\xd2\x01\xe8\x17"
"\xf9\x07\x69\xf7\x82\xe0\x80\x93\xf9\x01\x72\xcf\x80\x91\xd0\x01\x88\x23\x09\xf0\xbe\xcf\x80\x91\xf7\x01\x87\x70\x80\x93"
"\xd0\x01\x80\x91\xd0\x01\x85\x30\x10\xf0\x10\x92\xd0\x01\x20\x91\xd0\x01\x81\xe0\x90\xe0\x02\xc0\x88\x0f\x99\x1f\x2a\x95"
"\xe2\xf7\x80\x93\xf5\x01\xa7\xcf\x47\x30\x09\xf0\xa4\xcf\x10\x92\xf8\x01\x81\xe0\x80\x93\xfd\x01\x88\xef\x91\xe0\x90\x93"
"\x08\x02\x80\x93\x07\x02\x41\xe0\x9c\xcf\x80\x5e\xa7\xcf\x20\x91\xd0\x01\x80\x91\xf7\x01\x30\xe0\x90\xe0\x87\x70\x90\x70"
"\x28\x17\x39\x07\x09\xf0\x89\xcf\x82\xe0\x80\x93\xfd\x01\x80\x91\xf7\x01\x83\xff\x88\xc0\x82\xea\x91\xe0\x90\x93\x08\x02"
"\x80\x93\x07\x02\x42\xe0\x7f\xcf\x80\x81\x8c\xb9\x41\x30\x09\xf4\xae\xcf\x31\x96\x42\x50\x94\xcf\xad\x9a\x70\xcf\xac\x9a"
"\x5c\xcf\x53\x30\x09\xf4\x5e\xc0\x54\x30\x09\xf0\xff\xce\x80\x91\x02\x02\x90\xe0\x83\x70\x90\x70\x96\x95\x98\x2f\x88\x27"
"\x97\x95\x87\x95\x20\x91\x03\x02\x26\x95\x30\xe0\x82\x2b\x93\x2b\x90\x93\xfb\x01\x80\x93\xfa\x01\x40\x93\xfc\x01\x40\x91"
"\xfd\x01\x51\xcf\x8b\xe0\x80\x93\xfd\x01\x8c\xe8\x91\xe0\x90\x93\x08\x02\x80\x93\x07\x02\x4b\xe0\x49\xcf\x80\x91\x00\x02"
"\x90\xe0\x8f\x70\x90\x70\x88\x0f\x99\x1f\x82\x95\x92\x95\x90\x7f\x98\x27\x80\x7f\x98\x27\x20\x91\x01\x02\x26\x95\x26\x95"
"\x26\x95\x30\xe0\x82\x2b\x93\x2b\x90\x93\xfb\x01\x80\x93\xfa\x01\x40\x93\xfc\x01\x28\xcf\x80\x91\xff\x01\x90\xe0\x8f\x71"
"\x90\x70\x82\x95\x92\x95\x90\x7f\x98\x27\x80\x7f\x98\x27\x20\x91\x00\x02\x22\x95\x2f\x70\x30\xe0\x82\x2b\x93\x2b\x90\x93"
"\xfb\x01\x80\x93\xfa\x01\x50\x93\xfc\x01\x40\x91\xfd\x01\x0f\xcf\x80\x91\x01\x02\x90\xe0\x87\x70\x90\x70\x00\x24\x96\x95"
"\x87\x95\x07\x94\x96\x95\x87\x95\x07\x94\x98\x2f\x80\x2d\x20\x91\x02\x02\x26\x95\x26\x95\xc8\xcf\x84\xea\x91\xe0\x90\x93"
"\x08\x02\x80\x93\x07\x02\x42\xe0\xf7\xce\x10\x92\x09\x02\x10\x92\x0a\x02\x10\x92\x0b\x02\x10\x92\x0c\x02\x80\xe2\x80\x93"
"\x0d\x02\x10\x92\x0e\x02\x10\x92\x0f\x02\x10\x92\x10\x02\x10\x92\x11\x02\x10\x92\x12\x02\x10\x92\x13\x02\x10\x92\x14\x02"
"\x10\x92\x15\x02\x80\x91\xa6\x01\x90\x91\xa7\x01\xa0\xe0\xb0\xe0\x80\x93\x16\x02\x90\x93\x17\x02\xa0\x93\x18\x02\xb0\x93"
"\x19\x02\x80\x93\x1a\x02\x90\x93\x1b\x02\xa0\x93\x1c\x02\xb0\x93\x1d\x02\x10\x92\x1f\x02\x10\x92\x1e\x02\x10\x92\x21\x02";
#elif BLOCK_NUMBER == 4
/* -------------------- 4 -------------------- */
"\x10\x92\x20\x02\x88\xec\x90\xe0\x90\x93\x23\x02\x80\x93\x22\x02\x8f\xef\x91\xe0\x90\x93\x25\x02\x80\x93\x24\x02\x08\x95"
"\x40\x91\x20\x02\x50\x91\x21\x02\x50\x93\x1f\x02\x40\x93\x1e\x02\x9a\x01\x22\x0f\x33\x1f\x24\x0f\x35\x1f\xc9\x01\x88\x0f"
"\x99\x1f\x88\x0f\x99\x1f\x82\x0f\x93\x1f\x20\x91\xa8\x01\x30\x91\xa9\x01\x82\x0f\x93\x1f\x92\x95\x82\x95\x8f\x70\x89\x27"
"\x9f\x70\x89\x27\x90\x93\x21\x02\x80\x93\x20\x02\x48\x17\x59\x07\x3c\xf0\x48\x1b\x59\x0b\x50\x93\x27\x02\x40\x93\x26\x02"
"\x08\x95\x84\x1b\x95\x0b\x90\x93\x27\x02\x80\x93\x26\x02\x08\x95\xcf\x92\xdf\x92\xef\x92\xff\x92\x80\x91\xac\x01\xc0\x90"
"\xad\x01\xdd\x24\xc8\x0e\xd1\x1c\x80\x91\xae\x01\xc8\x0e\xd1\x1c\x80\x91\xaf\x01\xc8\x0e\xd1\x1c\x80\x91\xb0\x01\xc8\x0e"
"\xd1\x1c\x80\x91\xb1\x01\xc8\x0e\xd1\x1c\xee\x24\xff\x24\x80\x91\x4c\x02\x81\x50\x04\xc0\xcc\x0c\xdd\x1c\xee\x1c\xff\x1c"
"\x8a\x95\xd2\xf7\xc1\x14\xd1\x04\xe1\x04\xf1\x04\x29\xf4\x31\xe0\xc3\x2e\xd1\x2c\xe1\x2c\xf1\x2c\x60\x91\x6b\x02\x70\x91"
"\x6c\x02\x80\x91\x6d\x02\x90\x91\x6e\x02\xa7\x01\x96\x01\x9f\xd5\x80\x91\x58\x02\x90\x91\x59\x02\xa0\xe0\xb0\xe0\x28\x17"
"\x39\x07\x4a\x07\x5b\x07\x60\xf0\x80\x91\x5a\x02\x90\x91\x5b\x02\xa0\xe0\xb0\xe0\x82\x17\x93\x07\xa4\x07\xb5\x07\x08\xf0"
"\x63\xc0\x81\xe0\x90\xe0\x90\x93\xa7\x01\x80\x93\xa6\x01\x8a\xb1\x8f\x73\x8a\xb9\x90\x91\xa6\x01\x80\x91\xa7\x01\x90\x93"
"\xa4\x01\x80\x93\xa5\x01\x8a\xb1\x80\x6c\x8a\xb9\xc0\x90\x1a\x02\xd0\x90\x1b\x02\xe0\x90\x1c\x02\xf0\x90\x1d\x02\xc0\x92"
"\x16\x02\xd0\x92\x17\x02\xe0\x92\x18\x02\xf0\x92\x19\x02\xd7\x01\xc6\x01\x88\x0f\x99\x1f\xaa\x1f\xbb\x1f\x88\x0f\x99\x1f"
"\xaa\x1f\xbb\x1f\x88\x0f\x99\x1f\xaa\x1f\xbb\x1f\x88\x0f\x99\x1f\xaa\x1f\xbb\x1f\x8c\x19\x9d\x09\xae\x09\xbf\x09\x40\x91"
"\xa6\x01\x50\x91\xa7\x01\x60\xe0\x70\xe0\x84\x0f\x95\x1f\xa6\x1f\xb7\x1f\x24\xe0\xb6\x95\xa7\x95\x97\x95\x87\x95\x2a\x95"
"\xd1\xf7\x80\x93\x1a\x02\x90\x93\x1b\x02\xa0\x93\x1c\x02\xb0\x93\x1d\x02\xc8\x16\xd9\x06\xea\x06\xfb\x06\x84\xf0\xc8\x1a"
"\xd9\x0a\xd0\x92\x29\x02\xc0\x92\x28\x02\xff\x90\xef\x90\xdf\x90\xcf\x90\x08\x95\x30\x93\xa7\x01\x20\x93\xa6\x01\x9e\xcf"
"\x8c\x19\x9d\x09\x90\x93\x29\x02\x80\x93\x28\x02\xff\x90\xef\x90\xdf\x90\xcf\x90\x08\x95\x80\x91\x4e\x02\x83\xff\x21\xc0"
"\x20\x91\xa6\x01\x30\x91\xa7\x01\x80\x91\x36\x02\x90\x91\x37\x02\x82\x17\x93\x07\xb0\xf4\x40\xe0\x50\xe0\x60\x91\x6f\x02"
"\x70\x91\x70\x02\x80\x91\x71\x02\x90\x91\x72\x02\xfb\xd4\xc9\x01\x2f\x3f\x31\x05\x09\xf0\x60\xf4\x80\x95\xf8\x94\x80\x93"
"\x31\x02\x78\x94\x08\x95\xf8\x94\x8f\xef\x80\x93\x31\x02\x78\x94\x08\x95\x8f\xef\x90\xe0\x80\x95\xf8\x94\x80\x93\x31\x02"
"\x78\x94\x08\x95\xaf\x92\xbf\x92\xcf\x92\xdf\x92\xef\x92\xff\x92\xcf\x93\xdf\x93\xec\x01\x5b\x01\xc0\x90\x1a\x02\xd0\x90"
"\x1b\x02\xe0\x90\x1c\x02\xf0\x90\x1d\x02\x20\x91\x60\x02\x30\x91\x61\x02\x40\xe0\x50\xe0\xc7\x01\xb6\x01\xe9\xd4\x80\x91"
"\x62\x02\x90\x91\x63\x02\xb9\x01\x68\x1b\x79\x0b\xcb\x01\x88\x0f\x99\x1f\x20\x91\x28\x02\x30\x91\x29\x02\x28\x17\x39\x07"
"\x60\xf1\xc7\x01\xb6\x01\x28\xee\x33\xe0\x40\xe0\x50\xe0\xd1\xd4\xc9\x01\x01\x96\x20\x91\x26\x02\x30\x91\x27\x02\x28\x17"
"\x39\x07\x08\xf4\x46\xc0\x1c\x16\x1d\x06\x0c\xf0\x4c\xc0\xd6\x95\xc7\x95\x24\x96\xd0\x93\x23\x02\xc0\x93\x22\x02\x80\x91"
"\xa8\x01\x90\x91\xa9\x01\x00\x97\xb1\xf4\xd2\xdb\xdf\x91\xcf\x91\xff\x90\xef\x90\xdf\x90\xcf\x90\xbf\x90\xaf\x90\x08\x95"
"\x84\xe0\x90\xe0\x90\x93\x23\x02\x80\x93\x22\x02\x80\x91\xa8\x01\x90\x91\xa9\x01\x00\x97\x51\xf3\x80\x91\x4e\x02\x81\xff"
"\x18\xc0\x80\x91\xa6\x01\x90\x91\xa7\x01\x20\x91\x5a\x02\x30\x91\x5b\x02\x82\x17\x93\x07\xd8\xf6\x20\x91\x58\x02\x30\x91"
"\x59\x02\x28\x17\x39\x07\xa0\xf6\x80\x91\x22\x02\x90\x91\x23\x02\x00\x97\x71\xf2\xc5\x01\x3e\xda\xcc\xcf\x80\x91\x22\x02";
#elif BLOCK_NUMBER == 5
/* -------------------- 5 -------------------- */
"\x90\x91\x23\x02\x01\x97\x90\x93\x23\x02\x80\x93\x22\x02\xd1\xcf\xd0\x95\xc1\x95\xdf\x4f\xb0\xcf\x6f\x92\x7f\x92\xaf\x92"
"\xbf\x92\xcf\x92\xdf\x92\xef\x92\xff\x92\xcf\x93\xdf\x93\xcd\xb7\xde\xb7\x2a\x97\x0f\xb6\xf8\x94\xde\xbf\x0f\xbe\xcd\xbf"
"\x7a\x87\x69\x87\x20\x91\x50\x02\x30\x91\x51\x02\x40\xe0\x50\xe0\x6c\x01\xee\x24\xd7\xfc\xe0\x94\xfe\x2c\xc9\x82\xda\x82"
"\xeb\x82\xfc\x82\xc7\x01\xb6\x01\xf8\xd3\x6d\x83\x7e\x83\x8f\x83\x98\x87\x80\x91\x0e\x02\x90\x91\x0f\x02\xa0\x91\x10\x02"
"\xb0\x91\x11\x02\x60\x90\x64\x02\x70\x90\x65\x02\xa3\x01\x66\x27\x57\xfd\x60\x95\x76\x2f\x48\x17\x59\x07\x6a\x07\x7b\x07"
"\x0c\xf4\xb9\xc0\xc0\x90\x09\x02\xd0\x90\x0a\x02\xe0\x90\x0b\x02\xf0\x90\x0c\x02\xa0\x90\x66\x02\xb0\x90\x67\x02\x31\xe4"
"\xc3\x16\x32\xe4\xd3\x06\x3f\xe0\xe3\x06\x30\xe0\xf3\x06\x0c\xf4\xc9\xc0\x80\xe4\x92\xe4\xaf\xe0\xb0\xe0\x80\x93\x09\x02"
"\x90\x93\x0a\x02\xa0\x93\x0b\x02\xb0\x93\x0c\x02\xf0\xe4\xcf\x2e\xf2\xe4\xdf\x2e\xff\xe0\xef\x2e\xf1\x2c\x60\x91\x52\x02"
"\x70\x91\x53\x02\x80\xe0\x90\xe0\xa7\x01\x96\x01\xab\xd3\xcd\x80\xde\x80\xef\x80\xf8\x84\x6c\x0d\x7d\x1d\x8e\x1d\x9f\x1d"
"\x20\x91\x56\x02\x30\x91\x57\x02\x40\xe0\x50\xe0\xf1\xd3\x2d\x83\x3e\x83\x4f\x83\x58\x87\xca\x01\xb9\x01\x24\xed\x33\xe0"
"\x40\xe0\x50\xe0\x91\xd3\x6b\x01\x7c\x01\x60\x91\x12\x02\x70\x91\x13\x02\x80\x91\x14\x02\x90\x91\x15\x02\x2e\xef\x31\xe0"
"\x40\xe0\x50\xe0\x82\xd3\xdc\x01\xcb\x01\xc8\x0e\xd9\x1e\xea\x1e\xfb\x1e\xc7\x01\xb6\x01\x20\xe0\x34\xe0\x40\xe0\x50\xe0"
"\xca\xd3\x29\x83\x3a\x83\x4b\x83\x5c\x83\x20\x93\x12\x02\x30\x93\x13\x02\x40\x93\x14\x02\x50\x93\x15\x02\xe9\x84\xfa\x84"
"\xc7\x01\xaa\x27\x97\xfd\xa0\x95\xba\x2f\x01\x30\x09\xf4\xc4\xc0\x20\x91\x32\x02\x22\x23\x09\xf4\x7b\xc0\xc9\x80\xda\x80"
"\xeb\x80\xfc\x80\xc8\x0e\xd9\x1e\xea\x1e\xfb\x1e\xc0\x92\x0e\x02\xd0\x92\x0f\x02\xe0\x92\x10\x02\xf0\x92\x11\x02\xc5\x01"
"\xa0\xe0\xb0\xe0\x8c\x15\x9d\x05\xae\x05\xbf\x05\x0c\xf4\xa4\xc0\xc3\x01\xa3\x01\x66\x27\x57\xfd\x60\x95\x76\x2f\xc4\x16"
"\xd5\x06\xe6\x06\xf7\x06\x0c\xf0\xc6\x01\x2a\x96\x0f\xb6\xf8\x94\xde\xbf\x0f\xbe\xcd\xbf\xdf\x91\xcf\x91\xff\x90\xef\x90"
"\xdf\x90\xcf\x90\xbf\x90\xaf\x90\x7f\x90\x6f\x90\x08\x95\xa0\x90\x66\x02\xb0\x90\x67\x02\xa5\x01\x60\xe0\x70\xe0\xc0\x90"
"\x09\x02\xd0\x90\x0a\x02\xe0\x90\x0b\x02\xf0\x90\x0c\x02\x84\x17\x95\x07\xa6\x07\xb7\x07\x0c\xf0\x3e\xcf\x29\x81\x3a\x81"
"\x4b\x81\x5c\x81\xc2\x0e\xd3\x1e\xe4\x1e\xf5\x1e\xc0\x92\x09\x02\xd0\x92\x0a\x02\xe0\x92\x0b\x02\xf0\x92\x0c\x02\x2d\xcf"
"\x40\xec\xc4\x16\x4d\xeb\xd4\x06\x40\xef\xe4\x06\x4f\xef\xf4\x06\x0c\xf0\x40\xcf\x80\xec\x9d\xeb\xa0\xef\xbf\xef\x80\x93"
"\x09\x02\x90\x93\x0a\x02\xa0\x93\x0b\x02\xb0\x93\x0c\x02\xe0\xec\xce\x2e\xed\xeb\xde\x2e\xe0\xef\xee\x2e\xef\xef\xfe\x2e"
"\x2b\xcf\x29\x85\x3a\x85\xa9\x01\xcc\xd2\x28\xea\x3d\xef\x4f\xef\x5f\xef\x2b\xd3\x69\x01\x7a\x01\x2d\x81\x3e\x81\x4f\x81"
"\x58\x85\xc2\x0e\xd3\x1e\xe4\x1e\xf5\x1e\x89\x85\x9a\x85\x88\x0f\x99\x1f\x88\x0f\x99\x1f\x88\x0f\x99\x1f\x49\x85\x5a\x85"
"\x84\x0f\x95\x1f\x65\xe0\x70\xe0\xdc\xd2\xcb\x01\xa0\xe0\xb0\xe0\xc8\x0e\xd9\x1e\xea\x1e\xfb\x1e\x8d\xea\x9f\xef\xaf\xef"
"\xbf\xef\xc8\x0e\xd9\x1e\xea\x1e\xfb\x1e\xc0\x92\x0e\x02\xd0\x92\x0f\x02\xe0\x92\x10\x02\xf0\x92\x11\x02\xc5\x01\xa0\xe0"
"\xb0\xe0\x8c\x15\x9d\x05\xae\x05\xbf\x05\x0c\xf0\x5c\xcf\xc5\x01\x66\xcf\x97\x01\xa7\x01\x89\xd2\x28\xe8\x33\xe1\x40\xe0"
"\x50\xe0\xe8\xd2\x69\x01\x7a\x01\x29\x81\x3a\x81\x4b\x81\x5c\x81\xc2\x0e\xd3\x1e\xe4\x1e\xf5\x1e\x89\x85\x9a\x85\x88\x0f"
"\x99\x1f\x65\xe0\x70\xe0\xa1\xd2\xcb\x01\xa0\xe0\xb0\xe0\xc8\x0e\xd9\x1e\xea\x1e\xfb\x1e\x83\xed\x9f\xef\xaf\xef\xbf\xef"
"\xc8\x0e\xd9\x1e\xea\x1e\xfb\x1e\xc0\x92\x0e\x02\xd0\x92\x0f\x02\xe0\x92\x10\x02\xf0\x92\x11\x02\x20\xcf\x20\x91\x69\x02";
#elif BLOCK_NUMBER == 6
/* -------------------- 6 -------------------- */
"\x30\x91\x6a\x02\x28\x17\x39\x07\xc0\xf4\x80\x91\x0d\x02\x88\x23\x99\xf5\x80\x91\xa6\x01\x90\x91\xa7\x01\x20\x91\x36\x02"
"\x30\x91\x37\x02\x82\x1b\x93\x0b\x60\x91\x3c\x02\x70\x91\x3d\x02\x6f\xd2\x70\x93\x25\x02\x60\x93\x24\x02\x09\xc0\x8f\xef"
"\x91\xe0\x90\x93\x25\x02\x80\x93\x24\x02\x80\xe2\x80\x93\x0d\x02\x8a\xb1\x8f\x73\x8a\xb9\x80\x91\x24\x02\x90\x91\x25\x02"
"\x80\x93\xa2\x01\x80\x91\x68\x02\x82\x95\x88\x0f\x88\x0f\x80\x7c\x89\x2b\x80\x93\xa3\x01\x8a\xb1\x80\x6c\x8a\xb9\x08\x95"
"\x81\x50\x80\x93\x0d\x02\xe6\xcf\xcf\x93\xdf\x93\x00\xd0\x00\xd0\xcd\xb7\xde\xb7\x68\xd7\xdd\xd5\x6f\xd6\x3c\xd6\x78\x94"
"\x81\xe0\x80\x93\x30\x02\xaa\x24\xbb\x24\x66\x24\x77\x24\xee\x24\xff\x24\x1a\x82\x19\x82\x50\xe3\xd5\x2e\x64\xe0\xc6\x2e"
"\x70\xe4\x97\x2e\x80\x91\x30\x02\x88\x23\x09\xf4\xe1\xc0\x22\x24\x23\x94\x80\x91\x30\x02\x81\x30\x09\xf0\x70\xc0\x08\xb6"
"\x00\xfe\xfd\xcf\x34\xe6\x32\xbf\x88\xb7\x81\x60\x88\xbf\xa6\xd9\x80\x91\xd0\x01\x00\x23\x09\xf0\xf0\xc0\x88\x23\x29\xf0"
"\x80\x91\x9b\x01\x88\x23\x09\xf4\x3c\xc1\x80\x91\xd0\x01\x88\x23\x69\xf0\x80\x91\xa8\x01\x90\x91\xa9\x01\x00\x97\x39\xf0"
"\x80\x91\xa1\x01\x88\x23\x19\xf4\x08\x94\xe1\x1c\xf1\x1c\xf5\xe6\xef\x16\xf1\x04\x88\xf2\x10\xd5\x82\xe0\x80\x93\x30\x02"
"\x20\x92\x68\x02\x8f\xef\x80\x93\xa2\x01\x81\xe4\x80\x93\xa3\x01\x85\xe0\x80\x93\xab\x01\x10\x92\x2a\x02\x10\x92\xa7\x01"
"\x10\x92\xa6\x01\x10\x92\xa5\x01\x10\x92\xa4\x01\x1f\xd7\x80\x91\xd0\x01\x81\x30\x29\xf0\x80\x91\xd0\x01\x83\x30\x09\xf0"
"\x36\xc1\x81\xe0\x16\xd6\x80\x91\x40\x02\x90\x91\x41\x02\xbd\xd7\x80\xe0\xe0\xd8\x81\xe0\xde\xd8\x20\x91\x46\x02\x30\x91"
"\x47\x02\x3a\x83\x29\x83\xca\xd5\x80\x91\x42\x02\x90\x91\x43\x02\xad\xd7\x88\xef\x82\xbf\x88\xb7\x81\x60\x88\xbf\xee\x24"
"\xff\x24\x80\x91\x30\x02\x81\x30\x09\xf4\x90\xcf\x43\xe0\x24\x2e\x80\x91\x30\x02\x82\x30\x09\xf0\x43\xc0\x08\xb6\x00\xfe"
"\xfd\xcf\x34\xe6\x32\xbf\x88\xb7\x81\x60\x88\xbf\x2f\xd9\x69\x81\x7a\x81\x9b\x01\x40\xe0\x50\xe0\x60\x91\x2b\x02\x70\x91"
"\x2c\x02\x80\x91\x2d\x02\x90\x91\x2e\x02\xa5\xd1\x2f\x3f\x31\x05\x11\xf0\x08\xf0\xf3\xc0\x7f\xef\x72\x1b\x87\x2f\x80\x93"
"\x31\x02\x80\x91\x4a\x02\x90\x91\x4b\x02\xe9\x81\xfa\x81\xe8\x0f\xf9\x1f\xfa\x83\xe9\x83\x80\x91\x48\x02\x90\x91\x49\x02"
"\xe8\x17\xf9\x07\x48\xf2\x20\x92\x30\x02\xac\xd5\x80\x91\x44\x02\x90\x91\x45\x02\x60\xd7\x97\xd5\x84\xd5\xee\x24\xff\x24"
"\x80\x91\x30\x02\x82\x30\x09\xf4\xbd\xcf\x22\x24\x2a\x94\x80\x91\x30\x02\x83\x30\x09\xf0\xe4\xc0\x08\xb6\x00\xfe\xfd\xcf"
"\xf8\xef\xf2\xbf\x88\xb7\x81\x60\x88\xbf\xe5\xd8\x8d\xdb\x08\x94\xe1\x1c\xf1\x1c\x21\xe0\xe2\x16\x22\xe0\xf2\x06\x08\xf0"
"\xb4\xc0\x32\xe0\xe3\x16\xf1\x04\x21\xf7\x04\xdb\xe2\xcf\x08\xb6\x00\xfe\xfd\xcf\x24\xe6\x22\xbf\x88\xb7\x81\x60\x88\xbf"
"\xcc\xd8\x80\x91\xa8\x01\x90\x91\xa9\x01\x00\x97\x09\xf0\x0a\xcf\x10\x92\xa1\x01\xab\x98\x10\x92\x68\x02\x81\xe0\x80\x93"
"\x30\x02\x10\x92\xa7\x01\x10\x92\xa6\x01\x9f\xef\x90\x93\xa2\x01\x80\x93\xa3\x01\xee\x24\xff\x24\xf6\xce\x88\x23\x09\xf4"
"\x14\xcf\x80\x91\x9c\x01\x88\x23\x09\xf0\x0f\xcf\x20\x92\x9c\x01\x5a\xd6\x80\x91\xd0\x01\x90\xe0\x82\x30\x91\x05\xac\xf0"
"\x40\xe0\x50\xe0\x00\x00\x4f\x5f\x5f\x4f\x80\x91\xd0\x01\x90\xe0\x01\x97\x6c\xeb\x72\xe0\x86\x9f\x90\x01\x87\x9f\x30\x0d"
"\x96\x9f\x30\x0d\x11\x24\x42\x17\x53\x07\x6c\xf3\x82\xe3\x90\xe0\xea\xd6\x20\xe9\x31\xe0\xf8\x94\xd1\xba\xc8\xba\x78\x94"
"\x8c\xe3\x90\xe0\x00\x00\x01\x97\xe9\xf7\x18\xba\x8c\xe8\x90\xe0\x00\x00\x01\x97\xe9\xf7\x21\x50\x30\x40\x71\xf7\x20\xe9"
"\x31\xe0\xf8\x94\xd1\xba\x98\xba\x78\x94\x8c\xe3\x90\xe0\x00\x00\x01\x97\xe9\xf7\x18\xba\x8c\xe8\x90\xe0\x00\x00\x01\x97"
"\xe9\xf7\x21\x50\x30\x40\x71\xf7\x03\xd6\xc4\xce\x20\x92\x9b\x01\x0f\xd6\x20\x91\xd0\x01\x30\xe0\x21\x50\x30\x40\xec\xeb";
#elif BLOCK_NUMBER == 7
/* -------------------- 7 -------------------- */
"\xf2\xe0\x2e\x9f\xc0\x01\x2f\x9f\x90\x0d\x3e\x9f\x90\x0d\x11\x24\x01\x97\x00\x00\x01\x97\xe9\xf7\x82\xe3\x90\xe0\xa8\xd6"
"\x27\xee\x33\xe0\x80\xe0\x2b\x83\x3c\x83\xf5\xd7\xb7\xd7\x2b\x81\x3c\x81\x21\x50\x30\x40\xb1\xf7\x27\xee\x33\xe0\x81\xe0"
"\x2b\x83\x3c\x83\xe9\xd7\xab\xd7\x2b\x81\x3c\x81\x21\x50\x30\x40\xb1\xf7\xd1\xd5\x92\xce\x80\xe0\xe0\xd4\xc9\xce\x80\xe0"
"\x0e\xcf\x42\xe0\x40\x93\x68\x02\x20\x92\xa2\x01\x51\xe8\x50\x93\xa3\x01\x64\xe0\x60\x93\x30\x02\x80\x91\x4e\x02\x86\x95"
"\x86\x95\x81\x70\x80\x93\x2a\x02\xaa\x24\xbb\x24\x66\x24\x77\x24\xee\x24\xff\x24\x80\x91\x30\x02\x83\x30\x09\xf4\x1c\xcf"
"\x80\x91\x30\x02\x84\x30\x09\xf0\x4a\xce\x38\xef\x23\x2e\x08\xb6\x00\xfe\xfd\xcf\x22\xbe\x88\xb7\x81\x60\x88\xbf\xfb\xd7"
"\xc7\x01\x83\x70\x90\x70\x00\x97\x61\xf5\x60\x91\xa8\x01\x70\x91\xa9\x01\x80\x91\x3c\x02\x90\x91\x3d\x02\x68\x9f\x50\x01"
"\x69\x9f\xb0\x0c\x78\x9f\xb0\x0c\x11\x24\x80\x91\xa6\x01\x90\x91\xa7\x01\xa8\x1a\xb9\x0a\x80\x91\x36\x02\x90\x91\x37\x02"
"\xa8\x0e\xb9\x1e\xc5\x01\x0c\xdc\x3c\x01\x39\xd6\xc7\x01\x8f\x70\x90\x70\x00\x97\x69\xf0\x08\x94\xe1\x1c\xf1\x1c\x80\x91"
"\x30\x02\x84\x30\x41\xf2\x0f\xce\x72\xda\xc5\x01\xb3\x01\x68\xdb\xf3\xcf\x33\xdb\xc3\x01\xa9\xdd\x21\xe0\xe2\x2e\xf1\x2c"
"\xef\xcf\x53\x02\xc0\x01\x42\x9f\xb0\x01\x52\x03\x70\x0d\x81\x1d\x11\x24\x91\x1d\x34\x03\x70\x0d\x81\x1d\x11\x24\x91\x1d"
"\x08\x95\x62\x9f\xd0\x01\x73\x9f\xf0\x01\x82\x9f\xe0\x0d\xf1\x1d\x64\x9f\xe0\x0d\xf1\x1d\x92\x9f\xf0\x0d\x83\x9f\xf0\x0d"
"\x74\x9f\xf0\x0d\x65\x9f\xf0\x0d\x99\x27\x72\x9f\xb0\x0d\xe1\x1d\xf9\x1f\x63\x9f\xb0\x0d\xe1\x1d\xf9\x1f\xbd\x01\xcf\x01"
"\x11\x24\x08\x95\xaa\x1b\xbb\x1b\x51\xe1\x07\xc0\xaa\x1f\xbb\x1f\xa6\x17\xb7\x07\x10\xf0\xa6\x1b\xb7\x0b\x88\x1f\x99\x1f"
"\x5a\x95\xa9\xf7\x80\x95\x90\x95\xbc\x01\xcd\x01\x08\x95\xa1\xe2\x1a\x2e\xaa\x1b\xbb\x1b\xfd\x01\x0d\xc0\xaa\x1f\xbb\x1f"
"\xee\x1f\xff\x1f\xa2\x17\xb3\x07\xe4\x07\xf5\x07\x20\xf0\xa2\x1b\xb3\x0b\xe4\x0b\xf5\x0b\x66\x1f\x77\x1f\x88\x1f\x99\x1f"
"\x1a\x94\x69\xf7\x60\x95\x70\x95\x80\x95\x90\x95\x9b\x01\xac\x01\xbd\x01\xcf\x01\x08\x95\x97\xfb\x09\x2e\x05\x26\x0e\xd0"
"\x57\xfd\x04\xd0\xd7\xdf\x0a\xd0\x00\x1c\x38\xf4\x50\x95\x40\x95\x30\x95\x21\x95\x3f\x4f\x4f\x4f\x5f\x4f\x08\x95\xf6\xf7"
"\x90\x95\x80\x95\x70\x95\x61\x95\x7f\x4f\x8f\x4f\x9f\x4f\x08\x95\xdc\x01\xcb\x01\xfc\x01\xe1\x99\xfe\xcf\x06\xc0\xff\xbb"
"\xee\xbb\xe0\x9a\x31\x96\x0d\xb2\x0d\x92\x41\x50\x50\x40\xb8\xf7\x08\x95\xf8\x94\xff\xcf\x00\x00\x10\xa4\xe2\x04\x01\x00"
"\x08\x45\x07\x00\x32\x00\x66\x00\x66\x00\x99\x00\x64\x00\x4c\x04\x0a\x00\x09\x00\x0b\x00\xe8\x03\x0a\x00\x00\x00\x00\x08"
"\xe8\x03\xec\x13\x05\x00\x00\x00\x80\x00\x00\x00\x01\x01\x10\xa4\xe2\x04\x01\x00\x08\x45\x07\x00\x32\x00\x26\x00\x26\x00"
"\x33\x00\x64\x00\x4c\x04\x0a\x00\x08\x00\x0b\x00\xf4\x01\x03\x00\x64\x00\x00\x10\xe8\x03\x50\x14\x07\x00\x00\x00\x80\x00"
"\x00\x00\x02\x01\x10\xa4\xe2\x04\x01\x00\x08\x45\x07\x00\x32\x00\xcc\x00\xcc\x00\x32\x01\x64\x00\x4c\x04\x0a\x00\x0a\x00"
"\x07\x00\xe8\x03\x0a\x00\x00\x00\x00\x08\x84\x03\x50\x14\x08\x00\x00\x00\x1e\x00\x14\x00\x02\x02\x10\xa4\xe2\x04\x01\x00"
"\x08\x45\x07\x00\x32\x00\xcc\x00\xcc\x00\x32\x01\x64\x00\x4c\x04\x0a\x00\x0a\x00\x07\x00\xe8\x03\x0a\x00\x00\x00\x00\x08"
"\x84\x03\x50\x14\x08\x00\x00\x00\x1e\x00\x14\x00\x03\x00\xe0\x2e\xb8\x0b\x06\x00\x01\x01\x10\x00\x5a\x00\x1e\x00\x1e\x00"
"\x1e\x00\x78\x00\xb8\x0b\x28\x00\x08\x00\x13\x00\x20\x00\x01\x00\x00\x00\x00\x08\xe8\x03\x20\x4e\x14\x00\x00\x00\x64\x00"
"\x04\x00\x03\x01\x98\x3a\xb0\x04\x08\x00\x01\x01\x07\x00\x32\x00\x26\x00\x26\x00\x19\x00\x64\x00\x4c\x04\x0a\x00\x08\x00"
"\x00\x00\x58\x02\x05\x00\x00\x01\x00\x20\x0a\x00\x98\x3a\x05\x00\x00\x00\x64\x00\x04\x00\x01\x2b\x00\x00\x00\x00\x00\x00";
#elif BLOCK_NUMBER == 8
/* -------------------- 8 -------------------- */
"\x00\x00\x00\x1e\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff";
#endif

SHA256 sha256;
Hash *hasher = &sha256;
int OFFSET = 30*30*BLOCK_NUMBER;

I2C_eeprom eeprom(0x50, 32768/8);

void setup() {
  start();
  Serial.println("");
  Serial.print("[-] Initialisation de la mémoire EEPROM...\n");
  init_eeprom();
  Serial.print("[-] Ecriture du firmware \n");
  write_firmware();
  Serial.print("[-] Ecriture terminé \n");
  Serial.print("[-] Lecture du firmware \n");
  read_firmware();
  Serial.print("[-] Lecture terminé \n");

}

void loop() {}

void start()
{
  Serial.begin(115200,SERIAL_8N1);
}

void pause()
{
  Serial.end();
  pinMode(1, INPUT);
}

void send_data(unsigned int data)
{
  Serial.print("\\x");
  if (data < 16) Serial.print("0");
  Serial.print(data,HEX);
}

void init_eeprom()
{
    Wire.begin();
    eeprom.begin();
}

void write_firmware()
{
    if (READ_ONLY)
      return;
    if (RESET_MEMORY)
      eeprom.setBlock(0,0xff,8192);
    for (int i = 0; i < 30; i++) {
      int start_pos = i*30;
      int end_pos = (i+1)*30;
      for (int c = start_pos; c<end_pos; c++)
      {
        //send_data(firmware_code[c]);
        eeprom.writeByte(OFFSET+c, firmware_code[c]);
        delay(5);
      }
  }
}

void read_firmware()
{
    hasher->reset();
    for (int i = 0; i < 123; i++) {
      int start_pos = i*64;
      int end_pos = (i+1)*64;
      for (int c = start_pos; c<end_pos; c++)
      {
        
        int data = eeprom.readByte(c);
        if (c < DATA_LENGTH)
          hasher->update(&data,(size_t) 1);
        send_data(data);
        //delay(100);
      }
    Serial.println();
  }

  Serial.print("[-] Hash: ");
  uint8_t hash[HASH_SIZE];
  hasher->finalize(hash, HASH_SIZE);
  for (byte i=0; i < HASH_SIZE; i++)
  {
    if (hash[i]<0x10) { Serial.print('0'); }
    Serial.print(hash[i],HEX);
  }
  Serial.println();
}