Kazuki Yamamoto / Mbed 2 deprecated 11u35_usbLocalFilesystem Featured

Dependencies:   BaseDAP SWD USBDAP USBLocalFileSystem mbed DA14580 SWSPI W25X40BV

USB memory + Writer for DA14580 BLE chip + CMSIS-DAP debugger + USB-UART functions in one chip

One button input loads your application into DA14580 or DA14580 included BLE modules

Quote:

Current compatible hardware description can be found at https://github.com/K4zuki/da14580/releases/tag/MurataBLEr04

Files at this revision

API Documentation at this revision

Comitter:
k4zuki
Date:
Fri Mar 04 10:34:25 2016 +0000
Parent:
5:77c115650c1f
Child:
7:5b78247c45c2
Commit message:
multi libraries update

Changed in this revision

DA14580.lib Show annotated file Show diff for this revision Revisions of this file
SWSPI.lib Show annotated file Show diff for this revision Revisions of this file
USBDAP.lib Show annotated file Show diff for this revision Revisions of this file
USBLocalFileSystem.lib Show annotated file Show diff for this revision Revisions of this file
W25X40BV.lib Show annotated file Show diff for this revision Revisions of this file
at45db161d.lib Show diff for this revision Revisions of this file
loader.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
mystorage.cpp Show annotated file Show diff for this revision Revisions of this file
mystorage.h Show annotated file Show diff for this revision Revisions of this file
--- a/DA14580.lib	Sat Sep 19 10:48:38 2015 +0000
+++ b/DA14580.lib	Fri Mar 04 10:34:25 2016 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/k4zuki/code/DA14580/#a9684679d1ec
+http://mbed.org/users/k4zuki/code/DA14580/#db0ae78150a3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SWSPI.lib	Fri Mar 04 10:34:25 2016 +0000
@@ -0,0 +1,1 @@
+https://developer.mbed.org/users/k4zuki/code/SWSPI/#457a920a1223
--- a/USBDAP.lib	Sat Sep 19 10:48:38 2015 +0000
+++ b/USBDAP.lib	Fri Mar 04 10:34:25 2016 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/va009039/code/USBDAP/#7dee016756ce
+http://mbed.org/users/va009039/code/USBDAP/#13462db266a8
--- a/USBLocalFileSystem.lib	Sat Sep 19 10:48:38 2015 +0000
+++ b/USBLocalFileSystem.lib	Fri Mar 04 10:34:25 2016 +0000
@@ -1,1 +1,1 @@
-https://developer.mbed.org/users/k4zuki/code/USBLocalFileSystem/#eafffa3c41d9
+https://developer.mbed.org/users/k4zuki/code/USBLocalFileSystem/#c396747794c6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/W25X40BV.lib	Fri Mar 04 10:34:25 2016 +0000
@@ -0,0 +1,1 @@
+https://developer.mbed.org/users/k4zuki/code/W25X40BV/#b422cdc9d751
--- a/at45db161d.lib	Sat Sep 19 10:48:38 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-https://developer.mbed.org/users/k4zuki/code/at45db161d/#111e8cf6f263
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/loader.h	Fri Mar 04 10:34:25 2016 +0000
@@ -0,0 +1,1553 @@
+static const uint8_t loader[] = {
+0x00, 0x08, 0x1A, 0x80,
+0x00, 0x00, 0x00, 0xB5,
+0x00, 0x00, 0x00, 0xBD,
+0x00, 0x00, 0x00, 0xBF,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0xC1,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0xC3,
+0x00, 0x00, 0x00, 0xC5,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x08, 0x02, 0x23,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x00, 0x00, 0x00, 0xC7,
+0x46, 0x85, 0x48, 0x03,
+0xF8, 0x4A, 0xF0, 0x00,
+0x47, 0x00, 0x48, 0x00,
+0x00, 0x08, 0x09, 0xB5,
+0x00, 0x08, 0x1A, 0x80,
+0x47, 0x80, 0x48, 0x04,
+0x47, 0x00, 0x48, 0x04,
+0xE7, 0xFE, 0xE7, 0xFE,
+0xE7, 0xFE, 0xE7, 0xFE,
+0xE7, 0xFE, 0xE7, 0xFE,
+0x00, 0x00, 0x00, 0xD1,
+0x00, 0x00, 0x00, 0xA1,
+0x20, 0x06, 0x49, 0x15,
+0x20, 0xFF, 0x80, 0x08,
+0x30, 0x01, 0x49, 0x14,
+0x20, 0x05, 0x60, 0x08,
+0x89, 0x41, 0x07, 0x00,
+0xD4, 0x09, 0x06, 0x09,
+0x06, 0x09, 0x8A, 0x81,
+0x89, 0x41, 0xD5, 0xFC,
+0x00, 0x89, 0x08, 0x89,
+0x89, 0x41, 0x81, 0x41,
+0xD5, 0xFC, 0x06, 0x09,
+0x80, 0x01, 0x21, 0x00,
+0x68, 0x91, 0x4A, 0x0B,
+0x43, 0x99, 0x23, 0x3E,
+0x60, 0x91, 0x31, 0x0E,
+0x22, 0x0F, 0x8A, 0x01,
+0x43, 0x11, 0x02, 0x12,
+0x49, 0x08, 0x82, 0x01,
+0x60, 0x08, 0x48, 0x06,
+0x49, 0x06, 0x47, 0x70,
+0x60, 0x08, 0x48, 0x04,
+0x00, 0x00, 0x47, 0x70,
+0x50, 0x00, 0x34, 0x00,
+0xE0, 0x00, 0xE1, 0x80,
+0x50, 0x00, 0x33, 0x00,
+0x00, 0xF4, 0x24, 0x00,
+0x00, 0x08, 0x16, 0x68,
+0x25, 0x01, 0x4C, 0x06,
+0xE0, 0x05, 0x4E, 0x06,
+0xCC, 0x07, 0x68, 0xE3,
+0x3C, 0x0C, 0x43, 0x2B,
+0x34, 0x10, 0x47, 0x98,
+0xD3, 0xF7, 0x42, 0xB4,
+0xFF, 0xA8, 0xF7, 0xFF,
+0x00, 0x00, 0x01, 0x80,
+0x00, 0x00, 0x01, 0xB0,
+0xC8, 0x08, 0xE0, 0x02,
+0xC1, 0x08, 0x1F, 0x12,
+0xD1, 0xFA, 0x2A, 0x00,
+0x47, 0x70, 0x47, 0x70,
+0xE0, 0x01, 0x20, 0x00,
+0x1F, 0x12, 0xC1, 0x01,
+0xD1, 0xFB, 0x2A, 0x00,
+0x00, 0x00, 0x47, 0x70,
+0x00, 0x00, 0x01, 0xB0,
+0x00, 0x08, 0x00, 0x00,
+0x00, 0x00, 0x16, 0x68,
+0x00, 0x00, 0x01, 0x60,
+0x00, 0x00, 0x18, 0x18,
+0x00, 0x08, 0x16, 0x68,
+0x00, 0x00, 0x00, 0x24,
+0x00, 0x00, 0x01, 0x60,
+0x00, 0x00, 0x18, 0x3C,
+0x00, 0x08, 0x16, 0x8C,
+0x00, 0x00, 0x03, 0xF4,
+0x00, 0x00, 0x01, 0x70,
+0x68, 0x01, 0x48, 0x02,
+0x68, 0x42, 0x46, 0x8D,
+0x00, 0x00, 0x47, 0x10,
+0x20, 0x00, 0x00, 0x00,
+0x4A, 0x6F, 0xB5, 0x10,
+0x46, 0x11, 0x46, 0x04,
+0x39, 0x10, 0x23, 0x00,
+0xF0, 0x00, 0x48, 0x6D,
+0x48, 0x6C, 0xFD, 0x77,
+0xFE, 0x08, 0xF0, 0x00,
+0x46, 0x23, 0x22, 0x00,
+0x48, 0x69, 0x46, 0x11,
+0xFF, 0x2F, 0xF0, 0x00,
+0xB5, 0xF0, 0xBD, 0x10,
+0xB0, 0x99, 0x20, 0x00,
+0x46, 0x04, 0x90, 0x14,
+0x90, 0x16, 0x90, 0x13,
+0x46, 0x07, 0x90, 0x15,
+0x46, 0x05, 0x46, 0x06,
+0x21, 0x1F, 0x90, 0x17,
+0x22, 0x0C, 0x46, 0x68,
+0xF0, 0x00, 0x03, 0x09,
+0x46, 0x68, 0xF8, 0xB5,
+0x28, 0x70, 0x78, 0x00,
+0x46, 0x68, 0xD1, 0x78,
+0x28, 0x52, 0x78, 0x40,
+0x98, 0x01, 0xD1, 0x74,
+0x98, 0x02, 0x90, 0x11,
+0x46, 0x68, 0x90, 0x10,
+0x90, 0x12, 0x22, 0x40,
+0xF0, 0x00, 0x99, 0x11,
+0x46, 0x68, 0xF8, 0xA3,
+0x28, 0xAA, 0x78, 0x80,
+0x46, 0x68, 0xD1, 0x11,
+0x28, 0x70, 0x78, 0x00,
+0x46, 0x68, 0xD1, 0x0D,
+0x28, 0x51, 0x78, 0x40,
+0x98, 0x01, 0xD1, 0x09,
+0x46, 0x68, 0x90, 0x14,
+0x90, 0x16, 0x78, 0xC0,
+0x90, 0x17, 0x98, 0x02,
+0x78, 0x06, 0xA8, 0x08,
+0x22, 0x40, 0x24, 0x01,
+0x98, 0x12, 0x99, 0x10,
+0xF8, 0x88, 0xF0, 0x00,
+0x78, 0x80, 0x46, 0x68,
+0xD1, 0x10, 0x28, 0xAA,
+0x78, 0x00, 0x46, 0x68,
+0xD1, 0x0C, 0x28, 0x70,
+0x78, 0x40, 0x46, 0x68,
+0xD1, 0x08, 0x28, 0x51,
+0x78, 0xC0, 0x46, 0x68,
+0x98, 0x01, 0x90, 0x15,
+0xA8, 0x08, 0x90, 0x13,
+0x9F, 0x02, 0x78, 0x05,
+0x2C, 0x03, 0x1C, 0xA4,
+0x2C, 0x01, 0xD0, 0x04,
+0x2C, 0x02, 0xD0, 0x0E,
+0xE0, 0x5F, 0xD0, 0x35,
+0x98, 0x15, 0x99, 0x16,
+0xD1, 0x01, 0x29, 0xFF,
+0xD0, 0x2E, 0x28, 0x00,
+0xD1, 0x01, 0x28, 0xFF,
+0xD0, 0x01, 0x29, 0x00,
+0xD3, 0x28, 0x42, 0x81,
+0x20, 0x00, 0x99, 0x11,
+0x9A, 0x14, 0x31, 0x40,
+0xF8, 0x5A, 0xF0, 0x00,
+0xD0, 0x02, 0x2E, 0x00,
+0xF7, 0xFF, 0x98, 0x14,
+0x21, 0x00, 0xFF, 0x7B,
+0x9A, 0x14, 0x46, 0x08,
+0xFC, 0xE4, 0xF0, 0x00,
+0x42, 0x88, 0x99, 0x17,
+0x2C, 0x03, 0xD0, 0x40,
+0x99, 0x10, 0xD1, 0x3E,
+0x31, 0x40, 0x20, 0x00,
+0xF0, 0x00, 0x9A, 0x13,
+0x2D, 0x00, 0xF8, 0x45,
+0x98, 0x13, 0xD0, 0x02,
+0xFF, 0x66, 0xF7, 0xFF,
+0x46, 0x08, 0x21, 0x00,
+0xF0, 0x00, 0x9A, 0x13,
+0x42, 0xB8, 0xFC, 0xCF,
+0xE0, 0x2B, 0xD1, 0x28,
+0x99, 0x10, 0xE0, 0x26,
+0x31, 0x40, 0x20, 0x00,
+0xF0, 0x00, 0x9A, 0x13,
+0x2D, 0x00, 0xF8, 0x31,
+0x98, 0x13, 0xD0, 0x02,
+0xFF, 0x52, 0xF7, 0xFF,
+0x46, 0x08, 0x21, 0x00,
+0xF0, 0x00, 0x9A, 0x13,
+0x42, 0xB8, 0xFC, 0xBB,
+0x2C, 0x03, 0xD0, 0x18,
+0x99, 0x11, 0xD1, 0x16,
+0x31, 0x40, 0x20, 0x00,
+0xF0, 0x00, 0x9A, 0x14,
+0x2E, 0x00, 0xF8, 0x1D,
+0x98, 0x14, 0xD0, 0x02,
+0xFF, 0x3E, 0xF7, 0xFF,
+0x46, 0x08, 0x21, 0x00,
+0xF0, 0x00, 0x9A, 0x14,
+0x99, 0x17, 0xFC, 0xA7,
+0xD0, 0x03, 0x42, 0x88,
+0x43, 0xC0, 0x20, 0x00,
+0xBD, 0xF0, 0xB0, 0x19,
+0xE7, 0xFB, 0x20, 0x00,
+0xF0, 0x00, 0xB5, 0x10,
+0xF0, 0x00, 0xFC, 0x1B,
+0xF0, 0x00, 0xFA, 0x12,
+0xF7, 0xFF, 0xFC, 0x4B,
+0xBD, 0x10, 0xFF, 0x3A,
+0xF0, 0x00, 0xB5, 0x10,
+0x20, 0x00, 0xF9, 0x0C,
+0x00, 0x00, 0xBD, 0x10,
+0x00, 0x08, 0x0F, 0xE8,
+0x00, 0x08, 0x16, 0x8C,
+0x07, 0x09, 0x21, 0x05,
+0x23, 0x08, 0x88, 0x8A,
+0x80, 0x8A, 0x43, 0x1A,
+0x21, 0x02, 0x4A, 0x16,
+0x49, 0x16, 0x80, 0x51,
+0x60, 0x0A, 0x22, 0x00,
+0x80, 0x0A, 0x49, 0x15,
+0x02, 0x12, 0x22, 0x7D,
+0x80, 0xCA, 0x80, 0x8A,
+0x60, 0x10, 0x4A, 0x13,
+0x80, 0x08, 0x20, 0x07,
+0x01, 0x58, 0x49, 0x12,
+0x47, 0x70, 0x60, 0x08,
+0x20, 0x06, 0x49, 0x0E,
+0x20, 0xFF, 0x80, 0x08,
+0x30, 0x01, 0x49, 0x0F,
+0x49, 0x0D, 0x60, 0x08,
+0x60, 0x08, 0x31, 0x80,
+0x48, 0x0A, 0x47, 0x70,
+0x29, 0x00, 0x68, 0x01,
+0x68, 0x01, 0xD0, 0x03,
+0x60, 0x01, 0x1E, 0x49,
+0x49, 0x04, 0x47, 0x70,
+0x60, 0x08, 0x20, 0x01,
+0x20, 0x06, 0x49, 0x03,
+0x47, 0x70, 0x80, 0x08,
+0x50, 0x00, 0x33, 0x00,
+0x00, 0x08, 0x16, 0x84,
+0x50, 0x00, 0x34, 0x00,
+0x00, 0x08, 0x16, 0x80,
+0xE0, 0x00, 0xE1, 0x00,
+0xE0, 0x00, 0xE2, 0x80,
+0x60, 0xD1, 0x4A, 0xF7,
+0x47, 0x70, 0x60, 0x90,
+0x20, 0x01, 0xB5, 0x10,
+0xFA, 0xBB, 0xF0, 0x00,
+0x02, 0x00, 0x20, 0x05,
+0xFA, 0xF8, 0xF0, 0x00,
+0xBD, 0x10, 0xB2, 0xC0,
+0x24, 0x00, 0xB5, 0x70,
+0xF7, 0xFF, 0x4D, 0xF0,
+0x07, 0xC0, 0xFF, 0xF1,
+0x1C, 0x64, 0xD0, 0x04,
+0xD3, 0xF8, 0x42, 0xAC,
+0x43, 0xC0, 0x20, 0x00,
+0xB5, 0x70, 0xBD, 0x70,
+0xFF, 0xF0, 0xF7, 0xFF,
+0xD1, 0x17, 0x28, 0x00,
+0xFA, 0xA1, 0xF0, 0x00,
+0xFA, 0x4C, 0xF0, 0x00,
+0xF0, 0x00, 0x20, 0x9F,
+0x20, 0x00, 0xFA, 0xC6,
+0xFA, 0xC3, 0xF0, 0x00,
+0x20, 0x00, 0x04, 0x05,
+0xFA, 0xBF, 0xF0, 0x00,
+0x43, 0x2C, 0x02, 0x04,
+0xF0, 0x00, 0x20, 0x00,
+0x43, 0x20, 0xFA, 0xBA,
+0xF0, 0x00, 0x46, 0x05,
+0x46, 0x28, 0xFA, 0x40,
+0xB5, 0x70, 0xBD, 0x70,
+0xFF, 0xDF, 0xF7, 0xFF,
+0x4A, 0xDB, 0x4C, 0xD9,
+0x23, 0x14, 0x21, 0x00,
+0x58, 0xD5, 0x43, 0x4B,
+0x68, 0x5B, 0x18, 0x9B,
+0x40, 0x03, 0x40, 0x1D,
+0xD1, 0x0E, 0x42, 0x9D,
+0xB2, 0x08, 0x23, 0x14,
+0x80, 0x20, 0x43, 0x4B,
+0x68, 0x9D, 0x18, 0x9B,
+0x68, 0xDB, 0x60, 0xA5,
+0x23, 0x14, 0x60, 0xE3,
+0x18, 0x80, 0x43, 0x58,
+0xB2, 0x48, 0x60, 0x60,
+0x1C, 0x49, 0xBD, 0x70,
+0x29, 0x04, 0xB2, 0x89,
+0x20, 0x00, 0xD3, 0xE3,
+0x1E, 0x40, 0x60, 0x60,
+0xB5, 0x70, 0xBD, 0x70,
+0xFF, 0xAC, 0xF7, 0xFF,
+0xD1, 0x15, 0x28, 0x00,
+0xFA, 0x5D, 0xF0, 0x00,
+0x25, 0x00, 0x4E, 0xC5,
+0xF0, 0x00, 0x20, 0x06,
+0x24, 0x00, 0xFA, 0x99,
+0xFF, 0x96, 0xF7, 0xFF,
+0xD1, 0x03, 0x07, 0xC1,
+0xD5, 0x01, 0x07, 0x80,
+0xBD, 0x70, 0x20, 0x00,
+0x42, 0xB4, 0x1C, 0x64,
+0x1C, 0x6D, 0xD3, 0xF4,
+0xD3, 0xED, 0x2D, 0x32,
+0x43, 0xC0, 0x20, 0x00,
+0xB5, 0x70, 0xBD, 0x70,
+0xFF, 0x8E, 0xF7, 0xFF,
+0xD1, 0x15, 0x28, 0x00,
+0xFA, 0x3F, 0xF0, 0x00,
+0x25, 0x00, 0x4E, 0xB6,
+0xF0, 0x00, 0x20, 0x50,
+0x24, 0x00, 0xFA, 0x7B,
+0xFF, 0x78, 0xF7, 0xFF,
+0xD1, 0x03, 0x07, 0xC1,
+0xD5, 0x01, 0x07, 0x80,
+0xBD, 0x70, 0x20, 0x00,
+0x42, 0xB4, 0x1C, 0x64,
+0x1C, 0x6D, 0xD3, 0xF4,
+0xD3, 0xED, 0x2D, 0x32,
+0x43, 0xC0, 0x20, 0x00,
+0xB5, 0x70, 0xBD, 0x70,
+0xFF, 0x70, 0xF7, 0xFF,
+0xD1, 0x11, 0x28, 0x00,
+0xFA, 0x21, 0xF0, 0x00,
+0x25, 0x00, 0x4E, 0xA7,
+0xF0, 0x00, 0x20, 0x04,
+0x24, 0x00, 0xFA, 0x5D,
+0xFF, 0x5A, 0xF7, 0xFF,
+0xD0, 0x07, 0x07, 0x80,
+0x42, 0xB4, 0x1C, 0x64,
+0x1C, 0x6D, 0xD3, 0xF8,
+0xD3, 0xF1, 0x2D, 0x32,
+0x43, 0xC0, 0x20, 0x00,
+0xB5, 0x10, 0xBD, 0x70,
+0xF7, 0xFF, 0x46, 0x04,
+0x28, 0x00, 0xFF, 0x55,
+0x20, 0x01, 0xD1, 0x08,
+0xFA, 0x05, 0xF0, 0x00,
+0x30, 0xF9, 0x1D, 0xE0,
+0xFA, 0x42, 0xF0, 0x00,
+0xFF, 0x4A, 0xF7, 0xFF,
+0xB5, 0x70, 0xBD, 0x10,
+0x48, 0x94, 0x46, 0x06,
+0x68, 0x80, 0x46, 0x0D,
+0x42, 0x81, 0x19, 0x51,
+0x1B, 0x44, 0xD9, 0x01,
+0x46, 0x14, 0xE0, 0x00,
+0xFF, 0x3C, 0xF7, 0xFF,
+0xD1, 0x1A, 0x28, 0x00,
+0xF0, 0x00, 0x20, 0x02,
+0xF0, 0x00, 0xF9, 0xEC,
+0x21, 0x03, 0xF9, 0x97,
+0x06, 0x09, 0x46, 0x28,
+0xF0, 0x00, 0x43, 0x08,
+0x20, 0x00, 0xFA, 0x0E,
+0xF9, 0xE1, 0xF0, 0x00,
+0xE0, 0x05, 0x25, 0x00,
+0xF0, 0x00, 0x20, 0x00,
+0x70, 0x30, 0xFA, 0x06,
+0x1C, 0x76, 0x1C, 0x6D,
+0xD3, 0xF7, 0x42, 0xA5,
+0xF9, 0x89, 0xF0, 0x00,
+0xBD, 0x70, 0x46, 0x20,
+0x46, 0x05, 0xB5, 0x70,
+0x46, 0x0E, 0x48, 0x7E,
+0x46, 0x14, 0x68, 0xC0,
+0xD9, 0x00, 0x42, 0x82,
+0xF7, 0xFF, 0xB2, 0x84,
+0x28, 0x00, 0xFF, 0x13,
+0xF7, 0xFF, 0xD1, 0x1E,
+0x28, 0x00, 0xFF, 0x60,
+0x20, 0x02, 0xD1, 0x1A,
+0xF9, 0xBF, 0xF0, 0x00,
+0xF9, 0x6A, 0xF0, 0x00,
+0x46, 0x30, 0x21, 0x01,
+0x43, 0x08, 0x06, 0x49,
+0xF9, 0xE1, 0xF0, 0x00,
+0xF0, 0x00, 0x20, 0x00,
+0xE0, 0x05, 0xF9, 0xB4,
+0x1C, 0x6D, 0x78, 0x28,
+0xF9, 0xD9, 0xF0, 0x00,
+0xB2, 0xA4, 0x1E, 0x64,
+0xD1, 0xF7, 0x2C, 0x00,
+0xF9, 0x5D, 0xF0, 0x00,
+0xFE, 0xF2, 0xF7, 0xFF,
+0xB5, 0x70, 0xBD, 0x70,
+0x46, 0x04, 0x46, 0x0D,
+0xFF, 0x3D, 0xF7, 0xFF,
+0xD0, 0x02, 0x28, 0x00,
+0x43, 0xC0, 0x20, 0x00,
+0x20, 0x02, 0xBD, 0x70,
+0xF9, 0x99, 0xF0, 0x00,
+0x43, 0x20, 0x06, 0x28,
+0xF9, 0xD6, 0xF0, 0x00,
+0xFE, 0xDE, 0xF7, 0xFF,
+0xB5, 0x10, 0xBD, 0x70,
+0xFF, 0x2B, 0xF7, 0xFF,
+0xD0, 0x02, 0x28, 0x00,
+0x43, 0xC0, 0x20, 0x00,
+0x20, 0x00, 0xBD, 0x10,
+0xF9, 0x87, 0xF0, 0x00,
+0xF0, 0x00, 0x20, 0xC7,
+0xF7, 0xFF, 0xF9, 0xC5,
+0xB2, 0x40, 0xFE, 0xCD,
+0xB5, 0x10, 0xBD, 0x10,
+0xF7, 0xFF, 0x24, 0x00,
+0x28, 0x00, 0xFE, 0xC7,
+0x20, 0x01, 0xD1, 0x11,
+0xF9, 0x77, 0xF0, 0x00,
+0xF9, 0x22, 0xF0, 0x00,
+0x03, 0x00, 0x20, 0x09,
+0xF9, 0x9B, 0xF0, 0x00,
+0xF0, 0x00, 0x20, 0x00,
+0x20, 0x00, 0xF9, 0x98,
+0xF9, 0x95, 0xF0, 0x00,
+0xF0, 0x00, 0xB2, 0x84,
+0xB2, 0x20, 0xF9, 0x1C,
+0xB5, 0x70, 0xBD, 0x10,
+0x46, 0x2C, 0x25, 0x00,
+0xFE, 0xAC, 0xF7, 0xFF,
+0xD1, 0x18, 0x28, 0x00,
+0xF9, 0x5D, 0xF0, 0x00,
+0xF9, 0x08, 0xF0, 0x00,
+0xF0, 0x00, 0x20, 0x4B,
+0x20, 0x02, 0xF9, 0x82,
+0xF9, 0x55, 0xF0, 0x00,
+0xF0, 0x00, 0x20, 0x00,
+0x20, 0x00, 0xF9, 0x7C,
+0xF9, 0x79, 0xF0, 0x00,
+0x46, 0x04, 0x26, 0x00,
+0xF0, 0x00, 0x46, 0x30,
+0x43, 0x30, 0xF9, 0x74,
+0xF0, 0x00, 0x46, 0x05,
+0x46, 0x28, 0xF8, 0xFA,
+0xBD, 0x70, 0x46, 0x21,
+0xB0, 0x82, 0xB5, 0xF7,
+0x46, 0x0E, 0x4F, 0x36,
+0x68, 0xF9, 0x91, 0x00,
+0x46, 0x0D, 0x46, 0x14,
+0xF0, 0x00, 0x46, 0x30,
+0x1C, 0x40, 0xFC, 0xF9,
+0x1E, 0x45, 0x43, 0x68,
+0xF0, 0x00, 0x20, 0x00,
+0x68, 0xB8, 0xF9, 0x32,
+0x42, 0xA0, 0x1B, 0x80,
+0x46, 0x04, 0xD2, 0x00,
+0x27, 0x00, 0x46, 0x26,
+0x98, 0x00, 0xE0, 0x19,
+0x42, 0xA8, 0x19, 0x80,
+0x98, 0x00, 0xD9, 0x02,
+0x1C, 0x76, 0x1A, 0x2E,
+0xB2, 0xB2, 0x98, 0x02,
+0x99, 0x00, 0x19, 0xC0,
+0xFF, 0x4A, 0xF7, 0xFF,
+0xD0, 0x03, 0x28, 0x00,
+0x43, 0xC0, 0x20, 0x00,
+0xBD, 0xF0, 0xB0, 0x05,
+0x90, 0x00, 0x1C, 0x68,
+0x19, 0xBF, 0x48, 0x20,
+0x18, 0x2D, 0x68, 0xC0,
+0x42, 0xA7, 0x1B, 0xE6,
+0x46, 0x38, 0xD3, 0xE3,
+0xB5, 0x10, 0xE7, 0xF2,
+0xFE, 0x54, 0xF7, 0xFF,
+0xD1, 0x05, 0x28, 0x00,
+0xF9, 0x05, 0xF0, 0x00,
+0xF0, 0x00, 0x20, 0xB9,
+0x20, 0x00, 0xF9, 0x43,
+0xB5, 0x10, 0xBD, 0x10,
+0xF0, 0x00, 0x20, 0x00,
+0x20, 0xAB, 0xF8, 0xFC,
+0xF9, 0x3A, 0xF0, 0x00,
+0xBD, 0x10, 0x20, 0x00,
+0x4C, 0x11, 0xB5, 0x70,
+0x68, 0x60, 0x46, 0x05,
+0xD0, 0x06, 0x28, 0x00,
+0xFE, 0x8B, 0xF7, 0xFF,
+0xD0, 0x05, 0x28, 0x00,
+0x43, 0xC0, 0x20, 0x00,
+0x20, 0x05, 0xBD, 0x70,
+0xBD, 0x70, 0x43, 0xC0,
+0xFE, 0x26, 0xF7, 0xFF,
+0x7C, 0x09, 0x68, 0x61,
+0x40, 0x29, 0x43, 0x88,
+0xF7, 0xFF, 0x43, 0x08,
+0xBD, 0x70, 0xFE, 0xD0,
+0x48, 0x04, 0xB5, 0x10,
+0x7C, 0x40, 0x68, 0x40,
+0xFF, 0xE0, 0xF7, 0xFF,
+0xD0, 0x07, 0x28, 0x00,
+0xBD, 0x10, 0xB2, 0x40,
+0x00, 0x08, 0x16, 0x6C,
+0x00, 0x03, 0x0D, 0x40,
+0x00, 0x08, 0x0F, 0xF8,
+0xFF, 0x39, 0xF7, 0xFF,
+0xB5, 0x70, 0xE7, 0xF5,
+0x48, 0x39, 0x46, 0x05,
+0x68, 0xC0, 0x46, 0x0E,
+0x42, 0x82, 0x46, 0x14,
+0xB2, 0x84, 0xD9, 0x00,
+0xFE, 0x0A, 0xF7, 0xFF,
+0xD1, 0x1D, 0x28, 0x00,
+0xFE, 0x57, 0xF7, 0xFF,
+0xD1, 0x19, 0x28, 0x00,
+0xF0, 0x00, 0x20, 0x02,
+0xF0, 0x00, 0xF8, 0xB6,
+0x21, 0x01, 0xF8, 0x61,
+0x06, 0x49, 0x46, 0x30,
+0xF0, 0x00, 0x43, 0x08,
+0x20, 0x00, 0xF8, 0xD8,
+0xF8, 0xAB, 0xF0, 0x00,
+0x46, 0x28, 0xE0, 0x04,
+0xF8, 0xD1, 0xF0, 0x00,
+0xB2, 0xA4, 0x1E, 0x64,
+0xD1, 0xF8, 0x2C, 0x00,
+0xF8, 0x55, 0xF0, 0x00,
+0xFD, 0xEA, 0xF7, 0xFF,
+0xB5, 0xF7, 0xBD, 0x70,
+0x4F, 0x23, 0xB0, 0x82,
+0x91, 0x00, 0x46, 0x0E,
+0x46, 0x14, 0x68, 0xF9,
+0x46, 0x30, 0x46, 0x0D,
+0xFC, 0x54, 0xF0, 0x00,
+0x43, 0x68, 0x1C, 0x40,
+0x20, 0x00, 0x1E, 0x45,
+0xF8, 0x8D, 0xF0, 0x00,
+0x1B, 0x80, 0x68, 0xB8,
+0xD2, 0x00, 0x42, 0xA0,
+0x46, 0x26, 0x46, 0x04,
+0xE0, 0x17, 0x27, 0x00,
+0x19, 0x80, 0x98, 0x00,
+0xD9, 0x02, 0x42, 0xA8,
+0x1A, 0x2E, 0x98, 0x00,
+0xB2, 0xB2, 0x1C, 0x76,
+0x98, 0x02, 0x99, 0x00,
+0xFF, 0xAF, 0xF7, 0xFF,
+0xD0, 0x02, 0x28, 0x00,
+0x43, 0xC0, 0x20, 0x00,
+0x1C, 0x68, 0xE7, 0x5A,
+0x48, 0x0E, 0x90, 0x00,
+0x68, 0xC0, 0x19, 0xBF,
+0x1B, 0xE6, 0x18, 0x2D,
+0xD3, 0xE5, 0x42, 0xA7,
+0xE7, 0x4F, 0x46, 0x38,
+0x46, 0x6A, 0xB5, 0x1F,
+0x73, 0x10, 0x73, 0x51,
+0x90, 0x00, 0x20, 0x00,
+0x46, 0x03, 0x90, 0x01,
+0x46, 0x01, 0x46, 0x02,
+0xA8, 0x03, 0x90, 0x02,
+0xF8, 0x16, 0xF0, 0x00,
+0xFF, 0x59, 0xF7, 0xFF,
+0xFD, 0xCD, 0xF7, 0xFF,
+0xE7, 0x80, 0xB0, 0x04,
+0x00, 0x08, 0x16, 0x6C,
+0x48, 0x4F, 0xB5, 0x10,
+0x78, 0x00, 0x78, 0x41,
+0xF8, 0xAB, 0xF0, 0x00,
+0xB5, 0x10, 0xBD, 0x10,
+0x78, 0x41, 0x48, 0x4B,
+0xF0, 0x00, 0x78, 0x00,
+0xBD, 0x10, 0xF8, 0xAE,
+0x46, 0x0E, 0xB5, 0xF8,
+0x49, 0x47, 0x46, 0x15,
+0x9F, 0x07, 0x78, 0x02,
+0x78, 0x40, 0x70, 0x0A,
+0x70, 0x48, 0x46, 0x1C,
+0xFF, 0xED, 0xF7, 0xFF,
+0x07, 0x00, 0x20, 0x05,
+0x22, 0x01, 0x88, 0x81,
+0x43, 0x11, 0x02, 0xD2,
+0x48, 0x40, 0x80, 0x81,
+0x08, 0x49, 0x88, 0x01,
+0x80, 0x01, 0x00, 0x49,
+0x22, 0xFF, 0x88, 0x01,
+0x43, 0x91, 0x32, 0x81,
+0x43, 0x11, 0x01, 0xF2,
+0x88, 0x01, 0x80, 0x01,
+0x43, 0x91, 0x22, 0x40,
+0x43, 0x11, 0x01, 0xAA,
+0x88, 0x01, 0x80, 0x01,
+0x43, 0x91, 0x22, 0x04,
+0x43, 0x11, 0x00, 0xA2,
+0x88, 0x01, 0x80, 0x01,
+0x43, 0x91, 0x22, 0x02,
+0x00, 0x52, 0x9A, 0x06,
+0x80, 0x01, 0x43, 0x11,
+0x22, 0x01, 0x88, 0x01,
+0x43, 0x91, 0x03, 0x92,
+0x43, 0x11, 0x03, 0xBA,
+0x88, 0x01, 0x80, 0x01,
+0x43, 0x91, 0x22, 0x18,
+0x00, 0xD2, 0x9A, 0x08,
+0x80, 0x01, 0x43, 0x11,
+0x22, 0x01, 0x88, 0x01,
+0x80, 0x01, 0x43, 0x11,
+0x49, 0x27, 0xBD, 0xF8,
+0x08, 0x52, 0x88, 0x0A,
+0x80, 0x0A, 0x00, 0x52,
+0x23, 0xFF, 0x88, 0x0A,
+0x43, 0x9A, 0x33, 0x81,
+0x43, 0x02, 0x01, 0xC0,
+0x88, 0x08, 0x80, 0x0A,
+0x43, 0x10, 0x22, 0x01,
+0x47, 0x70, 0x80, 0x08,
+0x48, 0x1E, 0xB5, 0x10,
+0x08, 0x49, 0x88, 0x01,
+0x80, 0x01, 0x00, 0x49,
+0x07, 0x00, 0x20, 0x05,
+0x22, 0x01, 0x88, 0x81,
+0x43, 0x91, 0x02, 0xD2,
+0x48, 0x17, 0x80, 0x81,
+0x78, 0x00, 0x78, 0x41,
+0xF8, 0x45, 0xF0, 0x00,
+0x48, 0x15, 0xBD, 0x10,
+0x08, 0x49, 0x88, 0x01,
+0x80, 0x01, 0x00, 0x49,
+0xB5, 0x10, 0x47, 0x70,
+0x23, 0x00, 0x49, 0x11,
+0x05, 0xD2, 0x88, 0x0A,
+0x2A, 0x01, 0x0F, 0x92,
+0x0C, 0x04, 0xD9, 0x01,
+0x80, 0x48, 0x80, 0x8C,
+0x04, 0x80, 0x88, 0x08,
+0x20, 0x01, 0xD5, 0xFC,
+0x2A, 0x01, 0x80, 0xC8,
+0x88, 0x88, 0xD9, 0x01,
+0x88, 0x48, 0x04, 0x03,
+0xBD, 0x10, 0x18, 0xC0,
+0x46, 0x04, 0xB5, 0x10,
+0xFF, 0x68, 0xF7, 0xFF,
+0xF7, 0xFF, 0x46, 0x20,
+0x46, 0x04, 0xFF, 0xE2,
+0xFF, 0x69, 0xF7, 0xFF,
+0xBD, 0x10, 0x46, 0x20,
+0x00, 0x08, 0x16, 0x7C,
+0x50, 0x00, 0x12, 0x00,
+0xB5, 0x10, 0x47, 0x70,
+0xD1, 0x00, 0x28, 0x03,
+0x4C, 0x29, 0x20, 0x04,
+0x19, 0x00, 0x01, 0x40,
+0x18, 0x08, 0x00, 0x49,
+0x80, 0xC2, 0x43, 0x1A,
+0x28, 0x03, 0xBD, 0x10,
+0x20, 0x04, 0xD1, 0x00,
+0x01, 0x40, 0x4A, 0x23,
+0x22, 0x01, 0x18, 0x80,
+0x80, 0x82, 0x40, 0x8A,
+0x28, 0x03, 0x47, 0x70,
+0x20, 0x04, 0xD1, 0x00,
+0x01, 0x40, 0x4A, 0x1E,
+0x22, 0x01, 0x18, 0x80,
+0x80, 0x42, 0x40, 0x8A,
+0xB5, 0x70, 0x47, 0x70,
+0x98, 0x04, 0x46, 0x06,
+0x28, 0x00, 0x46, 0x14,
+0x46, 0x30, 0x46, 0x0D,
+0xF7, 0xFF, 0xD0, 0x02,
+0xE0, 0x01, 0xFF, 0xEC,
+0xFF, 0xDF, 0xF7, 0xFF,
+0x46, 0x29, 0x46, 0x22,
+0xF7, 0xFF, 0x46, 0x30,
+0xBD, 0x70, 0xFF, 0xCE,
+0x28, 0x00, 0xB5, 0x10,
+0x1E, 0x43, 0xD0, 0x07,
+0x00, 0x5B, 0x4C, 0x0F,
+0x19, 0x1B, 0x34, 0x70,
+0xD0, 0x02, 0x28, 0x01,
+0x23, 0x00, 0xE0, 0x02,
+0x31, 0x08, 0xE7, 0xF6,
+0x24, 0x01, 0x88, 0x18,
+0x43, 0xA0, 0x40, 0x8C,
+0x43, 0x02, 0x40, 0x8A,
+0xBD, 0x10, 0x80, 0x1A,
+0xD1, 0x00, 0x28, 0x03,
+0x4A, 0x05, 0x20, 0x04,
+0x18, 0x80, 0x01, 0x40,
+0x22, 0x01, 0x88, 0x00,
+0x40, 0x10, 0x40, 0x8A,
+0x20, 0x01, 0xD0, 0x00,
+0x00, 0x00, 0x47, 0x70,
+0x50, 0x00, 0x30, 0x00,
+0xF7, 0xFF, 0xB5, 0x38,
+0x20, 0x01, 0xFF, 0x63,
+0x02, 0x02, 0x23, 0x00,
+0x46, 0x19, 0x90, 0x00,
+0xF7, 0xFF, 0x46, 0x18,
+0x24, 0x00, 0xFF, 0xBC,
+0x02, 0x6D, 0x25, 0x01,
+0x46, 0x2A, 0x46, 0x23,
+0x46, 0x20, 0x21, 0x05,
+0xF7, 0xFF, 0x94, 0x00,
+0x23, 0x00, 0xFF, 0xB2,
+0x21, 0x04, 0x46, 0x2A,
+0x94, 0x00, 0x46, 0x18,
+0xFF, 0xAB, 0xF7, 0xFF,
+0x46, 0x2A, 0x23, 0x00,
+0x46, 0x18, 0x21, 0x07,
+0xF7, 0xFF, 0x94, 0x00,
+0x05, 0x28, 0xFF, 0xA4,
+0x4C, 0x18, 0x68, 0x00,
+0xD5, 0x0B, 0x00, 0x80,
+0x46, 0x68, 0x8A, 0x61,
+0x88, 0x00, 0x80, 0x01,
+0x00, 0x89, 0x08, 0x81,
+0x80, 0x01, 0x46, 0x68,
+0x82, 0x60, 0x88, 0x00,
+0xFB, 0x32, 0xF7, 0xFF,
+0x46, 0x68, 0x8A, 0x61,
+0x88, 0x01, 0x80, 0x01,
+0x03, 0xC0, 0x20, 0x01,
+0x46, 0x68, 0x43, 0x01,
+0x88, 0x00, 0x80, 0x01,
+0xBD, 0x38, 0x82, 0x60,
+0x24, 0x08, 0x4D, 0x0B,
+0x48, 0x09, 0x80, 0x2C,
+0x22, 0x02, 0x8A, 0x01,
+0x82, 0x01, 0x43, 0x91,
+0x07, 0x09, 0x8A, 0x81,
+0x26, 0xC8, 0xD5, 0xFC,
+0xF7, 0xFF, 0x4F, 0x06,
+0x28, 0x00, 0xFB, 0xEF,
+0x80, 0x3E, 0xD1, 0xFB,
+0xF7, 0xFF, 0x80, 0x6C,
+0xE7, 0xF6, 0xFF, 0xAB,
+0x50, 0x00, 0x00, 0x00,
+0x50, 0x00, 0x33, 0x00,
+0x50, 0x00, 0x31, 0x00,
+0x20, 0x01, 0xB5, 0x3E,
+0x02, 0x2D, 0x25, 0x03,
+0x90, 0x00, 0x21, 0x00,
+0x46, 0x2A, 0x23, 0x08,
+0xF7, 0xFF, 0x46, 0x08,
+0x24, 0x00, 0xFF, 0x60,
+0x46, 0x2A, 0x23, 0x07,
+0x46, 0x20, 0x21, 0x05,
+0xF7, 0xFF, 0x94, 0x00,
+0x23, 0x06, 0xFF, 0x58,
+0x21, 0x04, 0x46, 0x2A,
+0x94, 0x00, 0x20, 0x00,
+0xFF, 0x51, 0xF7, 0xFF,
+0x23, 0x05, 0x22, 0x00,
+0x46, 0x10, 0x21, 0x07,
+0xF7, 0xFF, 0x94, 0x00,
+0x48, 0x2A, 0xFF, 0x4A,
+0x70, 0x44, 0x21, 0xFF,
+0x31, 0x01, 0x70, 0x04,
+0xF7, 0xFF, 0x02, 0x48,
+0x20, 0x02, 0xFC, 0x0D,
+0x90, 0x02, 0x23, 0x00,
+0x46, 0x1A, 0x94, 0x00,
+0x94, 0x01, 0x46, 0x19,
+0xF7, 0xFF, 0x48, 0x22,
+0xBD, 0x3E, 0xFE, 0x81,
+0xF7, 0xFF, 0xB5, 0x10,
+0x49, 0x20, 0xFD, 0x42,
+0x18, 0x42, 0xB2, 0x80,
+0x49, 0x20, 0x48, 0x1F,
+0x2A, 0x01, 0xD0, 0x02,
+0x00, 0x40, 0xD1, 0x00,
+0xFB, 0xF4, 0xF7, 0xFF,
+0x49, 0x1D, 0xBD, 0x10,
+0x88, 0x08, 0x80, 0x48,
+0xD5, 0xFC, 0x04, 0x80,
+0x80, 0xC8, 0x20, 0x01,
+0x47, 0x70, 0x88, 0x48,
+0x46, 0x15, 0xB5, 0x70,
+0x46, 0x06, 0x46, 0x0C,
+0xFE, 0x54, 0xF7, 0xFF,
+0xF7, 0xFF, 0x20, 0x03,
+0x02, 0x20, 0xFF, 0xEE,
+0xF7, 0xFF, 0x0E, 0x00,
+0x04, 0x20, 0xFF, 0xEA,
+0xF7, 0xFF, 0x0E, 0x00,
+0xB2, 0xE0, 0xFF, 0xE6,
+0xFF, 0xE3, 0xF7, 0xFF,
+0x20, 0x00, 0x4A, 0x0E,
+0xBF, 0x00, 0x80, 0x50,
+0x21, 0x00, 0xBF, 0x00,
+0x80, 0x50, 0xE0, 0x09,
+0xBF, 0x00, 0xBF, 0x00,
+0xBF, 0x00, 0xBF, 0x00,
+0xBF, 0x00, 0xBF, 0x00,
+0x54, 0x73, 0x88, 0x53,
+0x42, 0xA9, 0x1C, 0x49,
+0xF7, 0xFF, 0xD3, 0xF3,
+0xBD, 0x70, 0xFE, 0x38,
+0x00, 0x08, 0x16, 0x88,
+0xFF, 0xFF, 0x10, 0xF0,
+0x00, 0x02, 0x00, 0x00,
+0x00, 0x00, 0x01, 0x00,
+0x50, 0x00, 0x12, 0x00,
+0x43, 0xC0, 0xB5, 0x10,
+0xE0, 0x07, 0x4B, 0x06,
+0x40, 0x44, 0x78, 0x0C,
+0x0D, 0xA4, 0x06, 0x24,
+0x0A, 0x00, 0x59, 0x1C,
+0x1C, 0x49, 0x40, 0x60,
+0xD2, 0xF5, 0x1E, 0x52,
+0xBD, 0x10, 0x43, 0xC0,
+0x00, 0x08, 0x10, 0x48,
+0xB0, 0x83, 0xB5, 0xFF,
+0xD0, 0x4A, 0x2B, 0x00,
+0xD1, 0x7D, 0x2B, 0x01,
+0x25, 0x08, 0x20, 0x0E,
+0x80, 0x10, 0x9A, 0x03,
+0x80, 0x45, 0x98, 0x03,
+0x20, 0x00, 0x9F, 0x03,
+0x2D, 0x00, 0x1D, 0x3F,
+0x78, 0x0B, 0xDD, 0x27,
+0x46, 0x1A, 0x00, 0x84,
+0x1C, 0x80, 0x78, 0x4B,
+0x43, 0x1A, 0x02, 0x1B,
+0x04, 0x1B, 0x78, 0x8B,
+0x78, 0xCB, 0x43, 0x1A,
+0x43, 0x1A, 0x06, 0x1B,
+0x0A, 0x12, 0xBA, 0x12,
+0x02, 0x12, 0x78, 0xCB,
+0x51, 0x3A, 0x43, 0x1A,
+0x46, 0x1A, 0x79, 0x0B,
+0x02, 0x1B, 0x79, 0x4B,
+0x79, 0x8B, 0x43, 0x1A,
+0x43, 0x1A, 0x04, 0x1B,
+0x06, 0x1B, 0x79, 0xCB,
+0xBA, 0x12, 0x43, 0x1A,
+0x79, 0xCB, 0x0A, 0x12,
+0x43, 0x1A, 0x02, 0x12,
+0x31, 0x08, 0x19, 0xE3,
+0x42, 0xA8, 0x60, 0x5A,
+0x48, 0xF1, 0xDB, 0xD7,
+0x98, 0x03, 0x90, 0x00,
+0x88, 0x00, 0x46, 0x2E,
+0x1D, 0x00, 0x00, 0x80,
+0x42, 0x85, 0x90, 0x01,
+0x00, 0xB0, 0xDA, 0x47,
+0x19, 0xC0, 0x90, 0x02,
+0x6F, 0xC4, 0x38, 0x80,
+0x46, 0x30, 0x46, 0x29,
+0xF9, 0xF2, 0xF0, 0x00,
+0xD0, 0x03, 0x00, 0x0B,
+0x20, 0x0A, 0xE0, 0x1A,
+0xE7, 0xB5, 0x25, 0x04,
+0xB2, 0xE1, 0x48, 0xE5,
+0x02, 0x0A, 0x5C, 0x41,
+0x0E, 0x09, 0x04, 0x21,
+0x04, 0x09, 0x5C, 0x41,
+0x02, 0x22, 0x43, 0x11,
+0x5C, 0x82, 0x0E, 0x12,
+0x43, 0x0A, 0x06, 0x12,
+0x5C, 0x40, 0x0E, 0x21,
+0x43, 0x10, 0x99, 0x00,
+0x06, 0x0C, 0x78, 0x09,
+0x98, 0x00, 0x40, 0x44,
+0x90, 0x00, 0x1C, 0x40,
+0xD1, 0x12, 0x2D, 0x08,
+0xD1, 0x10, 0x2B, 0x04,
+0xB2, 0xE1, 0x48, 0xD7,
+0x04, 0x21, 0x5C, 0x42,
+0x5C, 0x41, 0x0E, 0x09,
+0x43, 0x11, 0x02, 0x09,
+0x0E, 0x12, 0x02, 0x22,
+0x04, 0x12, 0x5C, 0x82,
+0x0E, 0x21, 0x43, 0x0A,
+0x06, 0x04, 0x5C, 0x40,
+0x1B, 0x70, 0x43, 0x14,
+0x58, 0x38, 0x00, 0x80,
+0xE0, 0x00, 0x40, 0x60,
+0x99, 0x02, 0xE0, 0x0C,
+0x50, 0x78, 0x1C, 0x76,
+0x42, 0x86, 0x98, 0x01,
+0x98, 0x03, 0xDB, 0xB7,
+0x30, 0xFF, 0x22, 0x10,
+0x99, 0x05, 0x30, 0xE5,
+0xF9, 0xC0, 0xF0, 0x00,
+0xBD, 0xF0, 0xB0, 0x07,
+0x46, 0x05, 0xB4, 0xF0,
+0x35, 0x14, 0x88, 0x00,
+0x28, 0x04, 0x00, 0x80,
+0x68, 0x2C, 0xDD, 0x33,
+0x4B, 0xC2, 0x49, 0xC1,
+0x40, 0x0A, 0x46, 0x22,
+0x43, 0xDF, 0x09, 0xE6,
+0x1B, 0x92, 0x40, 0x3E,
+0x00, 0x61, 0x4E, 0xBF,
+0x40, 0x32, 0x40, 0x19,
+0x01, 0xFA, 0x40, 0x51,
+0x40, 0x16, 0x46, 0x0E,
+0x1B, 0xF6, 0x09, 0xF7,
+0x00, 0x4A, 0x4F, 0xBA,
+0x40, 0x3E, 0x40, 0x1A,
+0x4E, 0xB6, 0x40, 0x72,
+0x40, 0x16, 0x00, 0x57,
+0x09, 0xF3, 0x40, 0x1F,
+0x4E, 0xB5, 0x1A, 0xF3,
+0x40, 0x5F, 0x40, 0x33,
+0x40, 0x7C, 0x46, 0x0B,
+0x40, 0x61, 0x40, 0x53,
+0x40, 0x7B, 0x26, 0x18,
+0x40, 0x59, 0x41, 0xF1,
+0x23, 0x10, 0x40, 0x62,
+0x40, 0x4A, 0x41, 0xDA,
+0x41, 0xCC, 0x21, 0x08,
+0xC5, 0x10, 0x40, 0x54,
+0x28, 0x04, 0x1E, 0x40,
+0xBC, 0xF0, 0xDC, 0xCB,
+0xB5, 0xF0, 0x47, 0x70,
+0x88, 0x02, 0xB0, 0x95,
+0x01, 0x12, 0x92, 0x08,
+0x20, 0x00, 0x18, 0x12,
+0x32, 0x14, 0x25, 0x02,
+0x00, 0x84, 0x23, 0x03,
+0x1B, 0x14, 0x1A, 0x1B,
+0x3C, 0x80, 0x00, 0x9B,
+0x6F, 0xE7, 0x58, 0xCE,
+0x50, 0xCE, 0x40, 0x7E,
+0x1A, 0x1E, 0x23, 0x02,
+0x59, 0x8F, 0x00, 0xB6,
+0x1C, 0x80, 0x6F, 0xA4,
+0x51, 0x8F, 0x40, 0x67,
+0xD1, 0xEB, 0x1E, 0x6D,
+0x20, 0x00, 0x3A, 0x10,
+0x90, 0x05, 0x92, 0x12,
+0x28, 0x00, 0x98, 0x08,
+0x1E, 0x40, 0xDD, 0x7E,
+0x22, 0x04, 0x90, 0x09,
+0x07, 0xA4, 0x1C, 0x94,
+0x59, 0x0C, 0x0F, 0x24,
+0x02, 0x24, 0x4B, 0x94,
+0x5D, 0x1D, 0x0E, 0x24,
+0x1C, 0xD0, 0x1C, 0x54,
+0x07, 0x80, 0x07, 0xA4,
+0x0F, 0x00, 0x0F, 0x24,
+0x58, 0x08, 0x5B, 0x0C,
+0x04, 0x24, 0x07, 0x96,
+0x0E, 0x00, 0x0F, 0x36,
+0x5D, 0x8E, 0x0E, 0x24,
+0x5D, 0x1C, 0x5C, 0x18,
+0x9F, 0x05, 0x5D, 0x9B,
+0x42, 0xB7, 0x9E, 0x09,
+0x46, 0x06, 0xDA, 0x79,
+0x96, 0x03, 0x40, 0x6E,
+0xD5, 0x03, 0x06, 0x37,
+0x27, 0x1B, 0x00, 0x76,
+0xE0, 0x00, 0x40, 0x7E,
+0xB2, 0xF6, 0x00, 0x76,
+0x96, 0x07, 0x40, 0x65,
+0x06, 0x2E, 0x46, 0x2F,
+0x00, 0x7D, 0xD5, 0x03,
+0x40, 0x75, 0x26, 0x1B,
+0x00, 0x7D, 0xE0, 0x00,
+0x95, 0x04, 0xB2, 0xED,
+0x40, 0x5D, 0x46, 0x25,
+0xD5, 0x03, 0x06, 0x2E,
+0x26, 0x1B, 0x00, 0x6D,
+0xE0, 0x00, 0x40, 0x75,
+0xB2, 0xED, 0x00, 0x6D,
+0x46, 0x1D, 0x95, 0x0E,
+0x06, 0x2E, 0x40, 0x45,
+0x00, 0x6D, 0xD5, 0x03,
+0x40, 0x75, 0x26, 0x1B,
+0x00, 0x6D, 0xE0, 0x00,
+0x95, 0x13, 0xB2, 0xED,
+0x9D, 0x07, 0x9E, 0x04,
+0x06, 0x2E, 0x40, 0x75,
+0x00, 0x6D, 0xD5, 0x03,
+0x40, 0x75, 0x26, 0x1B,
+0x00, 0x6D, 0xE0, 0x00,
+0x46, 0xAC, 0xB2, 0xED,
+0x9D, 0x04, 0x9E, 0x0E,
+0x06, 0x2E, 0x40, 0x75,
+0x00, 0x6D, 0xD5, 0x03,
+0x40, 0x75, 0x26, 0x1B,
+0x00, 0x6D, 0xE0, 0x00,
+0x46, 0x66, 0xB2, 0xED,
+0x40, 0x6E, 0x46, 0xAE,
+0xD5, 0x03, 0x06, 0x35,
+0x26, 0x1B, 0x00, 0x75,
+0xE0, 0x00, 0x40, 0x75,
+0xB2, 0xEE, 0x00, 0x75,
+0x40, 0x5D, 0x46, 0x3D,
+0x40, 0x7D, 0x46, 0x67,
+0x40, 0x75, 0x9F, 0x07,
+0x40, 0x60, 0x40, 0x7D,
+0x46, 0x77, 0x40, 0x58,
+0x9F, 0x04, 0x40, 0x78,
+0x40, 0x78, 0x40, 0x70,
+0xE0, 0x00, 0x9F, 0x03,
+0x40, 0x5F, 0xE0, 0x49,
+0x40, 0x5F, 0x46, 0x63,
+0x40, 0x77, 0x9B, 0x0E,
+0x9B, 0x03, 0x40, 0x5F,
+0x40, 0x63, 0x04, 0x00,
+0x40, 0x63, 0x46, 0x74,
+0x40, 0x73, 0x9C, 0x13,
+0x06, 0x2C, 0x40, 0x63,
+0x02, 0x38, 0x43, 0x04,
+0x43, 0x1C, 0x43, 0x04,
+0xA8, 0x0A, 0x00, 0x93,
+0x38, 0x80, 0x18, 0x18,
+0xE0, 0x0B, 0x67, 0xC4,
+0x06, 0x00, 0xE7, 0xFF,
+0x43, 0x28, 0x04, 0x2D,
+0x43, 0x20, 0x02, 0x24,
+0x00, 0x94, 0x43, 0x18,
+0x18, 0xE3, 0xAB, 0x0A,
+0x67, 0xD8, 0x3B, 0x80,
+0xD0, 0x00, 0x1E, 0x52,
+0x20, 0x00, 0xE7, 0x5A,
+0x22, 0x03, 0x24, 0x02,
+0x00, 0x95, 0x1A, 0x12,
+0x00, 0x87, 0x9A, 0x12,
+0xAB, 0x0A, 0x1B, 0xD2,
+0x59, 0x5E, 0x3A, 0x80,
+0x40, 0x7E, 0x6F, 0xD7,
+0x25, 0x02, 0x51, 0x4E,
+0x00, 0xAD, 0x1A, 0x2D,
+0x6F, 0x92, 0x59, 0x5B,
+0x40, 0x53, 0x1C, 0x80,
+0x1E, 0x64, 0x51, 0x4B,
+0x98, 0x12, 0xD1, 0xE9,
+0x90, 0x12, 0x38, 0x10,
+0x9A, 0x08, 0x98, 0x05,
+0x90, 0x05, 0x1C, 0x40,
+0xDA, 0x00, 0x42, 0x90,
+0xB0, 0x15, 0xE7, 0x37,
+0xB5, 0xFF, 0xBD, 0xF0,
+0x98, 0x1B, 0xB0, 0x9B,
+0x30, 0x81, 0x30, 0xFF,
+0x6E, 0x44, 0x90, 0x00,
+0x6E, 0xC1, 0x6E, 0x82,
+0xBA, 0x25, 0x6F, 0x00,
+0x46, 0x1C, 0xBA, 0x00,
+0xBA, 0x0F, 0xBA, 0x16,
+0x3C, 0x10, 0x90, 0x03,
+0x22, 0x10, 0xD4, 0x3B,
+0x99, 0x1C, 0xA8, 0x12,
+0xF8, 0x7A, 0xF0, 0x00,
+0x30, 0x10, 0x98, 0x1C,
+0x98, 0x12, 0x90, 0x1C,
+0x90, 0x16, 0xBA, 0x00,
+0x98, 0x13, 0x90, 0x0A,
+0x98, 0x14, 0xBA, 0x01,
+0x91, 0x0B, 0x91, 0x02,
+0x98, 0x15, 0xBA, 0x01,
+0xBA, 0x00, 0x91, 0x18,
+0x90, 0x04, 0x91, 0x0C,
+0xA9, 0x0A, 0x90, 0x0D,
+0xF7, 0xFF, 0x98, 0x1B,
+0x98, 0x0A, 0xFE, 0xE2,
+0x40, 0x68, 0x99, 0x0D,
+0x90, 0x0E, 0xBA, 0x00,
+0x9D, 0x16, 0x98, 0x0B,
+0xBA, 0x00, 0x40, 0x70,
+0x98, 0x0C, 0x90, 0x0F,
+0x40, 0x78, 0x9E, 0x02,
+0x90, 0x10, 0xBA, 0x00,
+0x9F, 0x18, 0x98, 0x03,
+0x98, 0x04, 0x40, 0x41,
+0xBA, 0x08, 0x90, 0x03,
+0x22, 0x10, 0x90, 0x11,
+0x98, 0x1D, 0xA9, 0x0E,
+0xF8, 0x48, 0xF0, 0x00,
+0x30, 0x10, 0x98, 0x1D,
+0x3C, 0x10, 0x90, 0x1D,
+0x9A, 0x03, 0xD5, 0xC3,
+0xBA, 0x3B, 0x9C, 0x00,
+0x66, 0xE3, 0xBA, 0x12,
+0x67, 0x22, 0xBA, 0x31,
+0x66, 0xA1, 0xBA, 0x28,
+0xB0, 0x1F, 0x66, 0x60,
+0x00, 0x00, 0xBD, 0xF0,
+0x00, 0x08, 0x16, 0x48,
+0x00, 0x08, 0x14, 0x48,
+0x80, 0x80, 0x80, 0x80,
+0xFE, 0xFE, 0xFE, 0xFE,
+0x1B, 0x1B, 0x1B, 0x1B,
+0x00, 0x08, 0x15, 0x48,
+0x46, 0x0B, 0xB5, 0x30,
+0x20, 0x00, 0x46, 0x01,
+0x24, 0x01, 0x22, 0x20,
+0x46, 0x0D, 0xE0, 0x09,
+0x42, 0x9D, 0x40, 0xD5,
+0x46, 0x1D, 0xD3, 0x05,
+0x1B, 0x49, 0x40, 0x95,
+0x40, 0x95, 0x46, 0x25,
+0x46, 0x15, 0x19, 0x40,
+0x2D, 0x00, 0x1E, 0x52,
+0xBD, 0x30, 0xDC, 0xF1,
+0x24, 0x00, 0xB5, 0x70,
+0x28, 0x00, 0x46, 0x25,
+0x24, 0x01, 0xDA, 0x01,
+0x29, 0x00, 0x42, 0x40,
+0x25, 0x01, 0xDA, 0x01,
+0xF7, 0xFF, 0x42, 0x49,
+0x42, 0xAC, 0xFF, 0xDD,
+0x42, 0x40, 0xD0, 0x00,
+0xD0, 0x00, 0x2C, 0x00,
+0xBD, 0x70, 0x42, 0x49,
+0x43, 0x0B, 0x46, 0x03,
+0xD0, 0x03, 0x07, 0x9B,
+0xC9, 0x08, 0xE0, 0x09,
+0xC0, 0x08, 0x1F, 0x12,
+0xD2, 0xFA, 0x2A, 0x04,
+0x78, 0x0B, 0xE0, 0x03,
+0x1C, 0x40, 0x70, 0x03,
+0x1E, 0x52, 0x1C, 0x49,
+0x47, 0x70, 0xD2, 0xF9,
+0x40, 0x21, 0xA9, 0x06,
+0x5B, 0xA1, 0xB8, 0x36,
+0xD5, 0x03, 0x2E, 0x51,
+0x06, 0x00, 0x12, 0x34,
+0x42, 0xBA, 0xAF, 0x3D,
+0x30, 0xB4, 0x9E, 0x9D,
+0x80, 0xDA, 0x22, 0xB4,
+0x41, 0xAC, 0x9F, 0x2C,
+0x00, 0xEF, 0x30, 0x11,
+0x00, 0xFF, 0xFF, 0xFF,
+0x00, 0x02, 0x00, 0x00,
+0x00, 0x00, 0x01, 0x00,
+0x00, 0x00, 0x00, 0x2C,
+0x00, 0xEF, 0x30, 0x12,
+0x00, 0xFF, 0xFF, 0xFF,
+0x00, 0x04, 0x00, 0x00,
+0x00, 0x00, 0x01, 0x00,
+0x00, 0x00, 0x00, 0x2C,
+0x00, 0x1F, 0x42, 0x00,
+0x00, 0xFF, 0xFF, 0x00,
+0x00, 0x02, 0x00, 0x00,
+0x00, 0x00, 0x01, 0x00,
+0x00, 0x00, 0x00, 0x04,
+0x00, 0xC2, 0x20, 0x11,
+0x00, 0xFF, 0xFF, 0xFF,
+0x00, 0x02, 0x00, 0x00,
+0x00, 0x00, 0x01, 0x00,
+0x00, 0x00, 0x00, 0x0C,
+0x00, 0x00, 0x00, 0x00,
+0x77, 0x07, 0x30, 0x96,
+0xEE, 0x0E, 0x61, 0x2C,
+0x99, 0x09, 0x51, 0xBA,
+0x07, 0x6D, 0xC4, 0x19,
+0x70, 0x6A, 0xF4, 0x8F,
+0xE9, 0x63, 0xA5, 0x35,
+0x9E, 0x64, 0x95, 0xA3,
+0x0E, 0xDB, 0x88, 0x32,
+0x79, 0xDC, 0xB8, 0xA4,
+0xE0, 0xD5, 0xE9, 0x1E,
+0x97, 0xD2, 0xD9, 0x88,
+0x09, 0xB6, 0x4C, 0x2B,
+0x7E, 0xB1, 0x7C, 0xBD,
+0xE7, 0xB8, 0x2D, 0x07,
+0x90, 0xBF, 0x1D, 0x91,
+0x1D, 0xB7, 0x10, 0x64,
+0x6A, 0xB0, 0x20, 0xF2,
+0xF3, 0xB9, 0x71, 0x48,
+0x84, 0xBE, 0x41, 0xDE,
+0x1A, 0xDA, 0xD4, 0x7D,
+0x6D, 0xDD, 0xE4, 0xEB,
+0xF4, 0xD4, 0xB5, 0x51,
+0x83, 0xD3, 0x85, 0xC7,
+0x13, 0x6C, 0x98, 0x56,
+0x64, 0x6B, 0xA8, 0xC0,
+0xFD, 0x62, 0xF9, 0x7A,
+0x8A, 0x65, 0xC9, 0xEC,
+0x14, 0x01, 0x5C, 0x4F,
+0x63, 0x06, 0x6C, 0xD9,
+0xFA, 0x0F, 0x3D, 0x63,
+0x8D, 0x08, 0x0D, 0xF5,
+0x3B, 0x6E, 0x20, 0xC8,
+0x4C, 0x69, 0x10, 0x5E,
+0xD5, 0x60, 0x41, 0xE4,
+0xA2, 0x67, 0x71, 0x72,
+0x3C, 0x03, 0xE4, 0xD1,
+0x4B, 0x04, 0xD4, 0x47,
+0xD2, 0x0D, 0x85, 0xFD,
+0xA5, 0x0A, 0xB5, 0x6B,
+0x35, 0xB5, 0xA8, 0xFA,
+0x42, 0xB2, 0x98, 0x6C,
+0xDB, 0xBB, 0xC9, 0xD6,
+0xAC, 0xBC, 0xF9, 0x40,
+0x32, 0xD8, 0x6C, 0xE3,
+0x45, 0xDF, 0x5C, 0x75,
+0xDC, 0xD6, 0x0D, 0xCF,
+0xAB, 0xD1, 0x3D, 0x59,
+0x26, 0xD9, 0x30, 0xAC,
+0x51, 0xDE, 0x00, 0x3A,
+0xC8, 0xD7, 0x51, 0x80,
+0xBF, 0xD0, 0x61, 0x16,
+0x21, 0xB4, 0xF4, 0xB5,
+0x56, 0xB3, 0xC4, 0x23,
+0xCF, 0xBA, 0x95, 0x99,
+0xB8, 0xBD, 0xA5, 0x0F,
+0x28, 0x02, 0xB8, 0x9E,
+0x5F, 0x05, 0x88, 0x08,
+0xC6, 0x0C, 0xD9, 0xB2,
+0xB1, 0x0B, 0xE9, 0x24,
+0x2F, 0x6F, 0x7C, 0x87,
+0x58, 0x68, 0x4C, 0x11,
+0xC1, 0x61, 0x1D, 0xAB,
+0xB6, 0x66, 0x2D, 0x3D,
+0x76, 0xDC, 0x41, 0x90,
+0x01, 0xDB, 0x71, 0x06,
+0x98, 0xD2, 0x20, 0xBC,
+0xEF, 0xD5, 0x10, 0x2A,
+0x71, 0xB1, 0x85, 0x89,
+0x06, 0xB6, 0xB5, 0x1F,
+0x9F, 0xBF, 0xE4, 0xA5,
+0xE8, 0xB8, 0xD4, 0x33,
+0x78, 0x07, 0xC9, 0xA2,
+0x0F, 0x00, 0xF9, 0x34,
+0x96, 0x09, 0xA8, 0x8E,
+0xE1, 0x0E, 0x98, 0x18,
+0x7F, 0x6A, 0x0D, 0xBB,
+0x08, 0x6D, 0x3D, 0x2D,
+0x91, 0x64, 0x6C, 0x97,
+0xE6, 0x63, 0x5C, 0x01,
+0x6B, 0x6B, 0x51, 0xF4,
+0x1C, 0x6C, 0x61, 0x62,
+0x85, 0x65, 0x30, 0xD8,
+0xF2, 0x62, 0x00, 0x4E,
+0x6C, 0x06, 0x95, 0xED,
+0x1B, 0x01, 0xA5, 0x7B,
+0x82, 0x08, 0xF4, 0xC1,
+0xF5, 0x0F, 0xC4, 0x57,
+0x65, 0xB0, 0xD9, 0xC6,
+0x12, 0xB7, 0xE9, 0x50,
+0x8B, 0xBE, 0xB8, 0xEA,
+0xFC, 0xB9, 0x88, 0x7C,
+0x62, 0xDD, 0x1D, 0xDF,
+0x15, 0xDA, 0x2D, 0x49,
+0x8C, 0xD3, 0x7C, 0xF3,
+0xFB, 0xD4, 0x4C, 0x65,
+0x4D, 0xB2, 0x61, 0x58,
+0x3A, 0xB5, 0x51, 0xCE,
+0xA3, 0xBC, 0x00, 0x74,
+0xD4, 0xBB, 0x30, 0xE2,
+0x4A, 0xDF, 0xA5, 0x41,
+0x3D, 0xD8, 0x95, 0xD7,
+0xA4, 0xD1, 0xC4, 0x6D,
+0xD3, 0xD6, 0xF4, 0xFB,
+0x43, 0x69, 0xE9, 0x6A,
+0x34, 0x6E, 0xD9, 0xFC,
+0xAD, 0x67, 0x88, 0x46,
+0xDA, 0x60, 0xB8, 0xD0,
+0x44, 0x04, 0x2D, 0x73,
+0x33, 0x03, 0x1D, 0xE5,
+0xAA, 0x0A, 0x4C, 0x5F,
+0xDD, 0x0D, 0x7C, 0xC9,
+0x50, 0x05, 0x71, 0x3C,
+0x27, 0x02, 0x41, 0xAA,
+0xBE, 0x0B, 0x10, 0x10,
+0xC9, 0x0C, 0x20, 0x86,
+0x57, 0x68, 0xB5, 0x25,
+0x20, 0x6F, 0x85, 0xB3,
+0xB9, 0x66, 0xD4, 0x09,
+0xCE, 0x61, 0xE4, 0x9F,
+0x5E, 0xDE, 0xF9, 0x0E,
+0x29, 0xD9, 0xC9, 0x98,
+0xB0, 0xD0, 0x98, 0x22,
+0xC7, 0xD7, 0xA8, 0xB4,
+0x59, 0xB3, 0x3D, 0x17,
+0x2E, 0xB4, 0x0D, 0x81,
+0xB7, 0xBD, 0x5C, 0x3B,
+0xC0, 0xBA, 0x6C, 0xAD,
+0xED, 0xB8, 0x83, 0x20,
+0x9A, 0xBF, 0xB3, 0xB6,
+0x03, 0xB6, 0xE2, 0x0C,
+0x74, 0xB1, 0xD2, 0x9A,
+0xEA, 0xD5, 0x47, 0x39,
+0x9D, 0xD2, 0x77, 0xAF,
+0x04, 0xDB, 0x26, 0x15,
+0x73, 0xDC, 0x16, 0x83,
+0xE3, 0x63, 0x0B, 0x12,
+0x94, 0x64, 0x3B, 0x84,
+0x0D, 0x6D, 0x6A, 0x3E,
+0x7A, 0x6A, 0x5A, 0xA8,
+0xE4, 0x0E, 0xCF, 0x0B,
+0x93, 0x09, 0xFF, 0x9D,
+0x0A, 0x00, 0xAE, 0x27,
+0x7D, 0x07, 0x9E, 0xB1,
+0xF0, 0x0F, 0x93, 0x44,
+0x87, 0x08, 0xA3, 0xD2,
+0x1E, 0x01, 0xF2, 0x68,
+0x69, 0x06, 0xC2, 0xFE,
+0xF7, 0x62, 0x57, 0x5D,
+0x80, 0x65, 0x67, 0xCB,
+0x19, 0x6C, 0x36, 0x71,
+0x6E, 0x6B, 0x06, 0xE7,
+0xFE, 0xD4, 0x1B, 0x76,
+0x89, 0xD3, 0x2B, 0xE0,
+0x10, 0xDA, 0x7A, 0x5A,
+0x67, 0xDD, 0x4A, 0xCC,
+0xF9, 0xB9, 0xDF, 0x6F,
+0x8E, 0xBE, 0xEF, 0xF9,
+0x17, 0xB7, 0xBE, 0x43,
+0x60, 0xB0, 0x8E, 0xD5,
+0xD6, 0xD6, 0xA3, 0xE8,
+0xA1, 0xD1, 0x93, 0x7E,
+0x38, 0xD8, 0xC2, 0xC4,
+0x4F, 0xDF, 0xF2, 0x52,
+0xD1, 0xBB, 0x67, 0xF1,
+0xA6, 0xBC, 0x57, 0x67,
+0x3F, 0xB5, 0x06, 0xDD,
+0x48, 0xB2, 0x36, 0x4B,
+0xD8, 0x0D, 0x2B, 0xDA,
+0xAF, 0x0A, 0x1B, 0x4C,
+0x36, 0x03, 0x4A, 0xF6,
+0x41, 0x04, 0x7A, 0x60,
+0xDF, 0x60, 0xEF, 0xC3,
+0xA8, 0x67, 0xDF, 0x55,
+0x31, 0x6E, 0x8E, 0xEF,
+0x46, 0x69, 0xBE, 0x79,
+0xCB, 0x61, 0xB3, 0x8C,
+0xBC, 0x66, 0x83, 0x1A,
+0x25, 0x6F, 0xD2, 0xA0,
+0x52, 0x68, 0xE2, 0x36,
+0xCC, 0x0C, 0x77, 0x95,
+0xBB, 0x0B, 0x47, 0x03,
+0x22, 0x02, 0x16, 0xB9,
+0x55, 0x05, 0x26, 0x2F,
+0xC5, 0xBA, 0x3B, 0xBE,
+0xB2, 0xBD, 0x0B, 0x28,
+0x2B, 0xB4, 0x5A, 0x92,
+0x5C, 0xB3, 0x6A, 0x04,
+0xC2, 0xD7, 0xFF, 0xA7,
+0xB5, 0xD0, 0xCF, 0x31,
+0x2C, 0xD9, 0x9E, 0x8B,
+0x5B, 0xDE, 0xAE, 0x1D,
+0x9B, 0x64, 0xC2, 0xB0,
+0xEC, 0x63, 0xF2, 0x26,
+0x75, 0x6A, 0xA3, 0x9C,
+0x02, 0x6D, 0x93, 0x0A,
+0x9C, 0x09, 0x06, 0xA9,
+0xEB, 0x0E, 0x36, 0x3F,
+0x72, 0x07, 0x67, 0x85,
+0x05, 0x00, 0x57, 0x13,
+0x95, 0xBF, 0x4A, 0x82,
+0xE2, 0xB8, 0x7A, 0x14,
+0x7B, 0xB1, 0x2B, 0xAE,
+0x0C, 0xB6, 0x1B, 0x38,
+0x92, 0xD2, 0x8E, 0x9B,
+0xE5, 0xD5, 0xBE, 0x0D,
+0x7C, 0xDC, 0xEF, 0xB7,
+0x0B, 0xDB, 0xDF, 0x21,
+0x86, 0xD3, 0xD2, 0xD4,
+0xF1, 0xD4, 0xE2, 0x42,
+0x68, 0xDD, 0xB3, 0xF8,
+0x1F, 0xDA, 0x83, 0x6E,
+0x81, 0xBE, 0x16, 0xCD,
+0xF6, 0xB9, 0x26, 0x5B,
+0x6F, 0xB0, 0x77, 0xE1,
+0x18, 0xB7, 0x47, 0x77,
+0x88, 0x08, 0x5A, 0xE6,
+0xFF, 0x0F, 0x6A, 0x70,
+0x66, 0x06, 0x3B, 0xCA,
+0x11, 0x01, 0x0B, 0x5C,
+0x8F, 0x65, 0x9E, 0xFF,
+0xF8, 0x62, 0xAE, 0x69,
+0x61, 0x6B, 0xFF, 0xD3,
+0x16, 0x6C, 0xCF, 0x45,
+0xA0, 0x0A, 0xE2, 0x78,
+0xD7, 0x0D, 0xD2, 0xEE,
+0x4E, 0x04, 0x83, 0x54,
+0x39, 0x03, 0xB3, 0xC2,
+0xA7, 0x67, 0x26, 0x61,
+0xD0, 0x60, 0x16, 0xF7,
+0x49, 0x69, 0x47, 0x4D,
+0x3E, 0x6E, 0x77, 0xDB,
+0xAE, 0xD1, 0x6A, 0x4A,
+0xD9, 0xD6, 0x5A, 0xDC,
+0x40, 0xDF, 0x0B, 0x66,
+0x37, 0xD8, 0x3B, 0xF0,
+0xA9, 0xBC, 0xAE, 0x53,
+0xDE, 0xBB, 0x9E, 0xC5,
+0x47, 0xB2, 0xCF, 0x7F,
+0x30, 0xB5, 0xFF, 0xE9,
+0xBD, 0xBD, 0xF2, 0x1C,
+0xCA, 0xBA, 0xC2, 0x8A,
+0x53, 0xB3, 0x93, 0x30,
+0x24, 0xB4, 0xA3, 0xA6,
+0xBA, 0xD0, 0x36, 0x05,
+0xCD, 0xD7, 0x06, 0x93,
+0x54, 0xDE, 0x57, 0x29,
+0x23, 0xD9, 0x67, 0xBF,
+0xB3, 0x66, 0x7A, 0x2E,
+0xC4, 0x61, 0x4A, 0xB8,
+0x5D, 0x68, 0x1B, 0x02,
+0x2A, 0x6F, 0x2B, 0x94,
+0xB4, 0x0B, 0xBE, 0x37,
+0xC3, 0x0C, 0x8E, 0xA1,
+0x5A, 0x05, 0xDF, 0x1B,
+0x2D, 0x02, 0xEF, 0x8D,
+0x7B, 0x77, 0x7C, 0x63,
+0xC5, 0x6F, 0x6B, 0xF2,
+0x2B, 0x67, 0x01, 0x30,
+0x76, 0xAB, 0xD7, 0xFE,
+0x7D, 0xC9, 0x82, 0xCA,
+0xF0, 0x47, 0x59, 0xFA,
+0xAF, 0xA2, 0xD4, 0xAD,
+0xC0, 0x72, 0xA4, 0x9C,
+0x26, 0x93, 0xFD, 0xB7,
+0xCC, 0xF7, 0x3F, 0x36,
+0xF1, 0xE5, 0xA5, 0x34,
+0x15, 0x31, 0xD8, 0x71,
+0xC3, 0x23, 0xC7, 0x04,
+0x9A, 0x05, 0x96, 0x18,
+0xE2, 0x80, 0x12, 0x07,
+0x75, 0xB2, 0x27, 0xEB,
+0x1A, 0x2C, 0x83, 0x09,
+0xA0, 0x5A, 0x6E, 0x1B,
+0xB3, 0xD6, 0x3B, 0x52,
+0x84, 0x2F, 0xE3, 0x29,
+0xED, 0x00, 0xD1, 0x53,
+0x5B, 0xB1, 0xFC, 0x20,
+0x39, 0xBE, 0xCB, 0x6A,
+0xCF, 0x58, 0x4C, 0x4A,
+0xFB, 0xAA, 0xEF, 0xD0,
+0x85, 0x33, 0x4D, 0x43,
+0x7F, 0x02, 0xF9, 0x45,
+0xA8, 0x9F, 0x3C, 0x50,
+0x8F, 0x40, 0xA3, 0x51,
+0xF5, 0x38, 0x9D, 0x92,
+0x21, 0xDA, 0xB6, 0xBC,
+0xD2, 0xF3, 0xFF, 0x10,
+0xEC, 0x13, 0x0C, 0xCD,
+0x17, 0x44, 0x97, 0x5F,
+0x3D, 0x7E, 0xA7, 0xC4,
+0x73, 0x19, 0x5D, 0x64,
+0xDC, 0x4F, 0x81, 0x60,
+0x88, 0x90, 0x2A, 0x22,
+0x14, 0xB8, 0xEE, 0x46,
+0xDB, 0x0B, 0x5E, 0xDE,
+0x0A, 0x3A, 0x32, 0xE0,
+0x5C, 0x24, 0x06, 0x49,
+0x62, 0xAC, 0xD3, 0xC2,
+0x79, 0xE4, 0x95, 0x91,
+0x6D, 0x37, 0xC8, 0xE7,
+0xA9, 0x4E, 0xD5, 0x8D,
+0xEA, 0xF4, 0x56, 0x6C,
+0x08, 0xAE, 0x7A, 0x65,
+0x2E, 0x25, 0x78, 0xBA,
+0xC6, 0xB4, 0xA6, 0x1C,
+0x1F, 0x74, 0xDD, 0xE8,
+0x8A, 0x8B, 0xBD, 0x4B,
+0x66, 0xB5, 0x3E, 0x70,
+0x0E, 0xF6, 0x03, 0x48,
+0xB9, 0x57, 0x35, 0x61,
+0x9E, 0x1D, 0xC1, 0x86,
+0x11, 0x98, 0xF8, 0xE1,
+0x94, 0x8E, 0xD9, 0x69,
+0xE9, 0x87, 0x1E, 0x9B,
+0xDF, 0x28, 0x55, 0xCE,
+0x0D, 0x89, 0xA1, 0x8C,
+0x68, 0x42, 0xE6, 0xBF,
+0x0F, 0x2D, 0x99, 0x41,
+0x16, 0xBB, 0x54, 0xB0,
+0xD5, 0x6A, 0x09, 0x52,
+0x38, 0xA5, 0x36, 0x30,
+0x9E, 0xA3, 0x40, 0xBF,
+0xFB, 0xD7, 0xF3, 0x81,
+0x82, 0x39, 0xE3, 0x7C,
+0x87, 0xFF, 0x2F, 0x9B,
+0x44, 0x43, 0x8E, 0x34,
+0xCB, 0xE9, 0xDE, 0xC4,
+0x32, 0x94, 0x7B, 0x54,
+0x3D, 0x23, 0xC2, 0xA6,
+0x0B, 0x95, 0x4C, 0xEE,
+0x4E, 0xC3, 0xFA, 0x42,
+0x66, 0xA1, 0x2E, 0x08,
+0xB2, 0x24, 0xD9, 0x28,
+0x49, 0xA2, 0x5B, 0x76,
+0x25, 0xD1, 0x8B, 0x6D,
+0x64, 0xF6, 0xF8, 0x72,
+0x16, 0x98, 0x68, 0x86,
+0xCC, 0x5C, 0xA4, 0xD4,
+0x92, 0xB6, 0x65, 0x5D,
+0x50, 0x48, 0x70, 0x6C,
+0xDA, 0xB9, 0xED, 0xFD,
+0x57, 0x46, 0x15, 0x5E,
+0x84, 0x9D, 0x8D, 0xA7,
+0x00, 0xAB, 0xD8, 0x90,
+0x0A, 0xD3, 0xBC, 0x8C,
+0x05, 0x58, 0xE4, 0xF7,
+0x06, 0x45, 0xB3, 0xB8,
+0x8F, 0x1E, 0x2C, 0xD0,
+0x02, 0x0F, 0x3F, 0xCA,
+0x03, 0xBD, 0xAF, 0xC1,
+0x6B, 0x8A, 0x13, 0x01,
+0x41, 0x11, 0x91, 0x3A,
+0xEA, 0xDC, 0x67, 0x4F,
+0xCE, 0xCF, 0xF2, 0x97,
+0x73, 0xE6, 0xB4, 0xF0,
+0x22, 0x74, 0xAC, 0x96,
+0x85, 0x35, 0xAD, 0xE7,
+0xE8, 0x37, 0xF9, 0xE2,
+0x6E, 0xDF, 0x75, 0x1C,
+0x71, 0x1A, 0xF1, 0x47,
+0x89, 0xC5, 0x29, 0x1D,
+0x0E, 0x62, 0xB7, 0x6F,
+0x1B, 0xBE, 0x18, 0xAA,
+0x4B, 0x3E, 0x56, 0xFC,
+0x20, 0x79, 0xD2, 0xC6,
+0xFE, 0xC0, 0xDB, 0x9A,
+0xF4, 0x5A, 0xCD, 0x78,
+0x33, 0xA8, 0xDD, 0x1F,
+0x31, 0xC7, 0x07, 0x88,
+0x59, 0x10, 0x12, 0xB1,
+0x5F, 0xEC, 0x80, 0x27,
+0xA9, 0x7F, 0x51, 0x60,
+0x0D, 0x4A, 0xB5, 0x19,
+0x9F, 0x7A, 0xE5, 0x2D,
+0xEF, 0x9C, 0xC9, 0x93,
+0x4D, 0x3B, 0xE0, 0xA0,
+0xB0, 0xF5, 0x2A, 0xAE,
+0x3C, 0xBB, 0xEB, 0xC8,
+0x61, 0x99, 0x53, 0x83,
+0x7E, 0x04, 0x2B, 0x17,
+0x26, 0xD6, 0x77, 0xBA,
+0x63, 0x14, 0x69, 0xE1,
+0x7D, 0x0C, 0x21, 0x55,
+0x08, 0x04, 0x02, 0x01,
+0x80, 0x40, 0x20, 0x10,
+0xD8, 0x6C, 0x36, 0x1B,
+0x2F, 0x9A, 0x4D, 0xAB,
+0xC6, 0x63, 0xBC, 0x5E,
+0xD4, 0x6A, 0x35, 0x97,
+0xEF, 0xFA, 0x7D, 0xB3,
+0x00, 0x00, 0x91, 0xC5,
+0x00, 0xF4, 0x24, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00
+};
\ No newline at end of file
--- a/main.cpp	Sat Sep 19 10:48:38 2015 +0000
+++ b/main.cpp	Fri Mar 04 10:34:25 2016 +0000
@@ -4,52 +4,89 @@
 #include "BaseDAP.h"
 #include "USB_HID.h"
 #include "DA14580.h"
-
-#include "at45db161d.h"
-
-#undef PAGE_SIZE
-//#define PAGE_SIZE 264 // AT45DB081D (1MB)
-#define PAGE_SIZE 256 // AT25XE011 (1Mbit)
-//#define PAGE_SIZE 528 // AT45DB321D (4MB)
+#include "W25X40BV.h"
+#include "loader.h"
+/**
+- UART -
+TX = P0_19
+RX = P0_18
+- SWD -
+SWDIO = P0_4
+SWCLK = P0_5
+NSRST = P0_21
+TGT_RST = P1_19
+- SD -
+MOSI = P0_8
+MISO = P0_10
+SCK = P0_9
+CS = P0_7
+DETECT2 = P0_22
+- 580 -
+MOSI = P0_15
+MISO = P0_13
+SCK = P0_14
+CS = P0_16
+DETECT1 = P0_11
+- LED -
+GREEN = P0_20
+YELLOW = P0_2
+*BL = P0_14*
+*/
+/** r0.1
+- UART -
+TX = P0_19
+RX = P0_18
+- SWD -
+SWDIO = P0_4
+SWCLK = P0_5
+NSRST = P0_21
+- SD -
+MOSI = P0_8
+MISO = P0_10
+SCK = P0_9
+CS = P0_7
+- 580/SPI Flash -
+MOSI = P0_15
+MISO = P0_13
+SCK = P0_14
+CS = P0_16
+- LED -
+GREEN = P0_20
+YELLOW = P0_2
+*/
 
-//#define PAGE_NUM 4095 // AT45DB081D (1MB)
-#define PAGE_NUM 512 // AT25XE011 (1Mbit)
-//#define PAGE_NUM 8192 // AT45DB321D (4MB)
+#undef      LOADER_FILE
+#define     LOADER_FILE         "/local/loader.bin"
 
-#define WRITE_BUFFER 1
-#define READ_BUFFER 2
-
-#define     LOADER_FILE         "/local/loader.bin"
+#undef      TARGET_FILE
 #define     TARGET_FILE         "/local/target.bin"
 
-#if defined(TARGET_LPC1768)
-//SWD swd(p25,p24,p23); // SWDIO,SWCLK,nRESET
-SWD swd(p24, p23, p22); // SWDIO,SWCLK,nRESET
-DigitalOut connected(LED1);
-DigitalOut running(LED4);
-
-SWSPI spi(p5, p7, p6); // mosi, miso, sclk
+//SWD swd(P0_4, P0_5, P0_21); // SWDIO,SWCLK,nRESET
 
-ATD45DB161D memory(spi, p8);
-RawSerial ble(p5, p6);
-DA14580 BLE(ble, p26);
-
-#elif defined(TARGET_LPC11U35_501)
-//SWD swd(p25,p24,p23); // SWDIO,SWCLK,nRESET
-SWD swd(P0_5,P0_4,P0_21); // SWDIO,SWCLK,nRESET
 DigitalOut connected(P0_20);
 DigitalOut running(P0_2);
 
-SWSPI spi(P0_9,P0_8,P0_10); // mosi, miso, sclk
-ATD45DB161D memory(spi, P0_7);
-RawSerial ble(P0_19,P0_18);
-DA14580 BLE(ble, P0_1);
-#endif
+InterruptIn BL(P1_19);
+volatile bool isISP = false;
+void BL_int();
+
+W25X40BV memory(P0_15, P0_13, P0_14, P0_16); // mosi, miso, sclk, cs
+uint8_t Headerbuffer[8]={0x70,0x50,0x00,0x00,0x00,0x00,0x00,0x00};
+/*
+header[0] | 0x70 | 'p'
+header[1] | 0x50 | 'P'
+header[2] | 0x00 | dummy[3]
+header[3] | 0x00 | dummy[2]
+header[4] | 0x00 | dummy[1]
+header[5] | 0x00 | dummy[0]
+header[6] | 0x00 | binary size MSB <- to be replaced to actual size
+header[7] | 0x00 | binary size LSB <- to be replaced to actual size
+*/
+DA14580 BLE(P0_19, P0_18, P0_21); // TX, RX, RESET
 
 int file_size( FILE *fp );
-void flash_write (int addr, char *buf, int len);
-void flash_read (int addr, char *buf, int len);
 
+/*
 class myDAP : public BaseDAP
 {
 public:
@@ -67,61 +104,127 @@
         }
     }
 };
+*/
 
-
+MyStorage flash(P0_15, P0_13, P0_14, P0_16);
 int main()
 {
-//    USBLocalFileSystem* usb_local = new USBLocalFileSystem(P0_9, P0_8, P0_10, P0_7,"local"); // RamDisk(64KB)
-    USBLocalFileSystem* usb_local = new USBLocalFileSystem(p17, p15, p16, p18,"local"); // SD
-//    USBLocalFileSystem* usb_local = new USBLocalFileSystem(P0_14, P0_15, P0_16, P0_32,"local"); // SD
-    usb_local->lock(true);
-    myDAP* dap = new myDAP(&swd);
+//    USBLocalFileSystem* usb_local = new USBLocalFileSystem(P0_8, P0_10, P0_9, P0_7, "local"); //PinName mosi, PinName miso, PinName sclk, PinName cs, const char* name
+    USBLocalFileSystem* usb_local = new USBLocalFileSystem(&flash, "local"); //PinName mosi, PinName miso, PinName sclk, PinName cs, const char* name
+    running.write(1);
+    BL.mode(PullUp);
+    char hex[]="0123456789ABCDEF"; //DEBUG
+
+//    usb_local->lock(true);
 
 //    uint8_t recieve;
-//    uint8_t read;
-//    int filesize=0;
+//    uint8_t read=0;
+    int read = 0;
+    int loadersize = sizeof(loader)/sizeof(loader[0]);
+    int targetsize = 0;
     FILE* fp;
-//    ble.baud(57600);
+//    BLE.baud(57600);
 //    int crc=0x00;
 
+//    myDAP* dap = new myDAP(&swd);
 
     int result=0;
+    BL.mode(PullUp);
+    BL.fall(&BL_int);
+
+/*
+    fp = fopen(LOADER_FILE, "rb");
+    loadersize = file_size(fp);
+    fclose(fp);
+#if defined(__MICROLIB) && defined(__ARMCC_VERSION) // with microlib and ARM compiler
+#warning "free(fp)"
+    free(fp);
+#endif
+*/
+/*
+    fp = fopen(TARGET_FILE, "rb");
+    targetsize = file_size(fp);
+    fclose(fp);
+#if defined(__MICROLIB) && defined(__ARMCC_VERSION) // with microlib and ARM compiler
+#warning "free(fp)"
+    free(fp);
+#endif
+*/
+
+    bool _hidresult;
+
     while(1) {
         usb_local->lock(true);
         usb_local->remount();
+        connected.write(1);
         char filename[32];
 
-        usb_local->puts("Try BLE.load(): ");
-        result = BLE.load();
-        usb_local->putc(result);
-        usb_local->puts("\n\r");
-
-        if (usb_local->find(filename, sizeof(filename), "*.TXT")) {
-            fp = fopen(filename, "r");
-            if (fp) {
-                int c;
-                while((c = fgetc(fp)) != EOF) {
-                    usb_local->putc(c);
-                }
-                fclose(fp);
-#if defined(__MICROLIB) && defined(__ARMCC_VERSION) // with microlib and ARM compiler
-#warning "free(fp)"
-                free(fp);
-#endif
+        if(isISP) {
+            usb_local->puts("\n\r");
+            usb_local->puts("Writing "TARGET_FILE" into SPI flash");
+            usb_local->puts("\n\r");
+            usb_local->puts("Try BLE.load(): ");
+            running.write(0);
+            result = BLE.load();
+            running.write(1);
+            usb_local->putc(result);
+            usb_local->puts("\n\r");
+            isISP = false;
+        } else {
+            if(BLE._ble.readable()){
+                usb_local->putc(BLE._ble.getc());
+            }else{
+                usb_local->putc('.');
             }
         }
+        /*
+        usb_local->puts("loadersize: ");
+        read= 0x0f& (loadersize>>12);
+        usb_local->putc(hex[read]);
+        read= 0x0f& (loadersize>>8);
+        usb_local->putc(hex[read]);
+        read= 0x0f& (loadersize>>4);
+        usb_local->putc(hex[read]);
+        read= 0x0f& (loadersize);
+        usb_local->putc(hex[read]);
+        usb_local->puts("\n\r");
+        */
+        /*
+                if (usb_local->find(filename, sizeof(filename), "*.TXT")) {
+                    fp = fopen(filename, "r");
+                    if (fp) {
+                        int c;
+                        while((c = fgetc(fp)) != EOF) {
+                            usb_local->putc(c);
+                        }
+                        fclose(fp);
+        #if defined(__MICROLIB) && defined(__ARMCC_VERSION) // with microlib and ARM compiler
+        #warning "free(fp)"
+                        free(fp);
+        #endif
+                    }
+                }
+        */
 
-        USBStorage2* _usb = usb_local->getUsb();
-        USB_HID* _hid = _usb->getHID();
+//        USBStorage2* _usb = usb_local->getUsb();
+/*
         HID_REPORT recv_report;
-        if( _usb->readNB(&recv_report) ) {
+
+        USB_HID* _hid = usb_local->getUsb()->getHID();
+        _hidresult = _hid->readNB(&recv_report);
+        if( _hidresult ) {
             HID_REPORT send_report;
+            usb_local->puts("T\n\r");
             dap->Command(recv_report.data, send_report.data);
             send_report.length = 64;
-            _usb->send(&send_report);
+            _hid->send(&send_report);
+        } else {
+            usb_local->puts("F\n\r");
         }
+*/
         usb_local->lock(false);
-        wait_ms(1000*5);
+        connected = 0;
+        wait_ms(1000);
     }
 }
 
@@ -136,24 +239,7 @@
     return size;
 }
 
-
-void flash_write (int addr, char *buf, int len)
+void BL_int()
 {
-    int i;
-    memory.BufferWrite(WRITE_BUFFER, addr % PAGE_SIZE);
-    for (i = 0; i < len; i ++) {
-        spi.write(buf[i]);
-    }
-    memory.BufferToPage(WRITE_BUFFER, addr / PAGE_SIZE, 1);
+    isISP = true;
 }
-
-void flash_read (int addr, char *buf, int len)
-{
-    int i;
-    memory.PageToBuffer(addr / PAGE_SIZE, READ_BUFFER);
-    memory.BufferRead(READ_BUFFER, addr % PAGE_SIZE, 1);
-    for (i = 0; i < len; i ++) {
-        buf[i] = spi.write(0xff);
-    }
-}
-
--- a/mbed.bld	Sat Sep 19 10:48:38 2015 +0000
+++ b/mbed.bld	Fri Mar 04 10:34:25 2016 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/mbed/builds/4f6c30876dfa
\ No newline at end of file
+http://mbed.org/users/mbed_official/code/mbed/builds/f141b2784e32
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mystorage.cpp	Fri Mar 04 10:34:25 2016 +0000
@@ -0,0 +1,49 @@
+#include "mbed.h"
+#include "mystorage.h"
+#include "W25X40BV.h"
+
+// MyStorage(PinName mosi, PinName miso, PinName sclk, PinName cs);
+MyStorage::MyStorage(PinName mosi, PinName miso, PinName sclk, PinName cs) :
+    _flash(mosi, miso, sclk, cs) {
+
+    //storage_initialize();
+    }
+
+// virtual int storage_read(uint8_t* data, uint32_t block);
+int MyStorage::storage_read(uint8_t *buffer, uint32_t block_number) {
+    report_read_count++;
+    
+    // receive the data
+//    _read(buffer, 512);
+//    _flash.readStream(uint32_t addr, uint8_t* buf, uint32_t count);
+    _flash.readStream(block_number*256, buffer, 512);
+    return 0;
+}
+
+// virtual int storage_write(const uint8_t* data, uint32_t block);
+int MyStorage::storage_write(const uint8_t *buffer, uint32_t block_number) {
+    report_write_count++;
+    
+    // send the data block
+//    _write(buffer, 512);
+//    writeStream(uint32_t addr, uint8_t* buf, uint32_t count);
+//    void pageErase(uint8_t page);
+    _flash.pageErase(block_number);
+    _flash.pageErase(block_number + 1);
+    _flash.writeStream(block_number * 256, (uint8_t*)buffer, 256);
+    _flash.writeStream(block_number * 256 + 256, (uint8_t*)(buffer + 256), 256);
+    return 0;
+}
+
+// virtual uint32_t storage_sectors();
+uint32_t MyStorage::storage_sectors() { 
+    report_sectors_count++;
+    return 256; //256*512
+}
+
+// virtual uint32_t storage_size();
+uint32_t MyStorage::storage_size()
+{
+    report_size_count++;
+    return 128*1024; //256*512
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mystorage.h	Fri Mar 04 10:34:25 2016 +0000
@@ -0,0 +1,23 @@
+/** MyStorage: a StorageInterface class to interface SPI flash memory and USBLocalFilesystem
+*/
+#include "mbed.h"
+#include "StorageInterface.h"
+#include "W25X40BV.h"
+/** MyStorage: a StorageInterface class to interface SPI flash memory and USBLocalFilesystem
+It uses W25X40BV library also hints from Sissors/code/S25FL216K_USBFileSystem
+- USBLocalFileSystem by va009039/USBLocalFileSystem
+- W25X40BV by k4zuki/code/W25X40BV forked from jyam/code/W25X40BV
+*/
+class MyStorage : public StorageInterface {
+public:
+    MyStorage(PinName mosi, PinName miso, PinName sclk, PinName cs);
+
+    virtual int storage_read(uint8_t* data, uint32_t block);
+    virtual int storage_write(const uint8_t* data, uint32_t block);
+    virtual uint32_t storage_sectors();
+    virtual uint32_t storage_size();
+
+private:
+    W25X40BV _flash;
+    uint64_t _sectors;
+};