Browse Source

Update u8glib to v1.19.1 and add setContrast() (#1385)

Arnim Läuger 7 years ago
parent
commit
7f8a2b2c19

+ 14 - 0
app/modules/u8g.c

@@ -238,6 +238,19 @@ static int lu8g_getMode( lua_State *L )
     return 1;
 }
 
+// Lua: u8g.setContrast( self, constrast )
+static int lu8g_setContrast( lua_State *L )
+{
+    lu8g_userdata_t *lud;
+
+    if ((lud = get_lud( L )) == NULL)
+        return 0;
+
+    u8g_SetContrast( LU8G, luaL_checkinteger( L, 2 ) );
+
+    return 0;
+}
+
 // Lua: u8g.setColorIndex( self, color )
 static int lu8g_setColorIndex( lua_State *L )
 {
@@ -1086,6 +1099,7 @@ static const LUA_REG_TYPE lu8g_display_map[] = {
   { LSTRKEY( "getStrWidth" ),                  LFUNCVAL( lu8g_getStrWidth ) },
   { LSTRKEY( "getWidth" ),                     LFUNCVAL( lu8g_getWidth ) },
   { LSTRKEY( "nextPage" ),                     LFUNCVAL( lu8g_nextPage ) },
+  { LSTRKEY( "setContrast" ),                  LFUNCVAL( lu8g_setContrast ) },
   { LSTRKEY( "setColorIndex" ),                LFUNCVAL( lu8g_setColorIndex ) },
   { LSTRKEY( "setDefaultBackgroundColor" ),    LFUNCVAL( lu8g_setDefaultBackgroundColor ) },
   { LSTRKEY( "setDefaultForegroundColor" ),    LFUNCVAL( lu8g_setDefaultForegroundColor ) },

+ 23 - 6
app/u8glib/u8g.h

@@ -134,15 +134,15 @@ typedef uint8_t u8g_fntpgm_uint8_t;
    typedef uint8_t u8g_fntpgm_uint8_t;
 #  define u8g_pgm_read(adr) (*(const u8g_pgm_uint8_t *)(adr)) 
 #  define U8G_PSTR(s) ((u8g_pgm_uint8_t *)(s))
+#endif
 
-#else
+#ifndef U8G_PROGMEM
 #  define U8G_PROGMEM
 #  define PROGMEM
-   typedef uint8_t u8g_pgm_uint8_t;
-   typedef uint8_t u8g_fntpgm_uint8_t;
+typedef uint8_t u8g_pgm_uint8_t;
+typedef uint8_t u8g_fntpgm_uint8_t;
 #  define u8g_pgm_read(adr) (*(const u8g_pgm_uint8_t *)(adr)) 
 #  define U8G_PSTR(s) ((u8g_pgm_uint8_t *)(s))
-
 #endif
   
 /*===============================================================*/
@@ -414,6 +414,7 @@ extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_bw_hw_spi;
 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_bw_parallel;
 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_gr_sw_spi;
 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_gr_hw_spi;
+extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_gr_parallel;
 
 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_sw_spi;
 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_hw_spi;
@@ -699,11 +700,18 @@ uint8_t u8g_com_atmega_st7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val
 uint8_t u8g_com_atmega_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
 uint8_t u8g_com_atmega_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);    /* u8g_com_atmega_parallel.c */
 
+uint8_t u8g_com_atxmega_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);      /* u8g_com_atxmega_hw_spi.c */
+uint8_t u8g_com_atxmega_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_atxmega_st7920_spi.c */
+
 uint8_t u8g_com_msp430_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);      /* u8g_com_msp430_hw_spi.c */
 
 uint8_t u8g_com_raspberrypi_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);                /* u8g_com_rasperrypi_hw_spi.c */
 uint8_t u8g_com_raspberrypi_ssd_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);		/* u8g_com_raspberrypi_ssd_i2c.c */
 
+uint8_t u8g_com_linux_ssd_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);             /* u8g_com_linux_ssd_i2c.c */
+
+uint8_t u8g_com_psoc5_ssd_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);   /* u8g_com_psoc5_ssd_hw_spi.c */
+uint8_t u8g_com_psoc5_ssd_hw_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);   /* u8g_com_psoc5_ssd_hw_parallel.c */
 
 /* 
   Translation of system specific com drives to generic com names
@@ -762,7 +770,10 @@ defined(__18CXX) || defined(__PIC32MX)
 #endif
 /* ==== HW SPI, not Arduino ====*/
 #ifndef U8G_COM_HW_SPI
-#if defined(__AVR__)
+#if defined(__AVR_XMEGA__)
+#define U8G_COM_HW_SPI u8g_com_atxmega_hw_spi_fn
+#define U8G_COM_ST7920_HW_SPI u8g_com_atxmega_st7920_hw_spi_fn
+#elif defined(__AVR__)
 #define U8G_COM_HW_SPI u8g_com_atmega_hw_spi_fn
 #define U8G_COM_ST7920_HW_SPI u8g_com_atmega_st7920_hw_spi_fn
 #endif
@@ -861,13 +872,19 @@ defined(__18CXX) || defined(__PIC32MX)
 #define U8G_COM_SSD_I2C u8g_com_raspberrypi_ssd_i2c_fn
 #endif
 #endif
-
 #ifndef U8G_COM_SSD_I2C
+#if defined(U8G_LINUX)
+#define U8G_COM_SSD_I2C u8g_com_linux_ssd_i2c_fn
+#endif
 #if defined(__XTENSA__)
 // ESP8266
 #define U8G_COM_SSD_I2C u8g_com_esp8266_ssd_i2c_fn
 #endif
 #endif
+#if defined(U8G_CYPRESS_PSOC5)
+#define U8G_COM_HW_SPI u8g_com_psoc5_ssd_hw_spi_fn
+#define U8G_COM_FAST_PARALLEL u8g_com_psoc5_ssd_hw_parallel_fn
+#endif
 
 #ifndef U8G_COM_SSD_I2C
 #define U8G_COM_SSD_I2C u8g_com_null_fn

+ 1 - 1
app/u8glib/u8g_clip.c

@@ -62,7 +62,7 @@
 #define U8G_ALWAYS_INLINE __inline__ __attribute__((always_inline))
 #else
 #define U8G_ALWAYS_INLINE
- #endif 
+#endif 
 
 /*
   intersection assumptions:

+ 2 - 2
app/u8glib/u8g_com_i2c.c

@@ -67,8 +67,8 @@ uint8_t u8g_i2c_get_err_pos(void)
 }
 
 
-
-#if defined(__AVR__)
+#if defined(__AVR_XMEGA__)
+#elif defined(__AVR__)
 
 static void u8g_i2c_set_error(uint8_t code, uint8_t pos)
 {

+ 78 - 0
app/u8glib/u8g_com_io.c

@@ -65,6 +65,83 @@ uint8_t u8g_Pin(uint8_t port, uint8_t bitpos)
   return port;
 }
 
+#if defined(__AVR_XMEGA__)
+
+const IO_PTR u8g_avr_ddr_P[] PROGMEM = {
+#ifdef PORTA
+  &PORTA.DIR,
+#else
+  0,
+#endif
+  &PORTB.DIR,
+#ifdef PORTC
+  &PORTC.DIR,
+#ifdef PORTD
+  &PORTD.DIR,
+#ifdef PORTE
+  &PORTE.DIR,
+#ifdef PORTF
+  &PORTF.DIR,
+#ifdef PORTR
+  &PORTR.DIR,
+#endif
+#endif
+#endif
+#endif
+#endif
+};
+
+
+const IO_PTR u8g_avr_port_P[] PROGMEM = {
+#ifdef PORTA
+  &PORTA.OUT,
+#else
+  0,
+#endif
+  &PORTB.OUT,
+#ifdef PORTC
+  &PORTC.OUT,
+#ifdef PORTD
+  &PORTD.OUT,
+#ifdef PORTE
+  &PORTE.OUT,
+#ifdef PORTF
+  &PORTF.OUT,
+#ifdef PORTR
+  &PORTR.OUT,
+#endif
+#endif
+#endif
+#endif
+#endif
+};
+
+const IO_PTR u8g_avr_pin_P[] PROGMEM = {
+#ifdef PORTA
+  &PORTA.IN,
+#else
+  0,
+#endif
+  &PORTB.IN,
+#ifdef PORTC
+  &PORTC.IN,
+#ifdef PORTD
+  &PORTD.IN,
+#ifdef PORTE
+  &PORTE.IN,
+#ifdef PORTF
+  &PORTF.IN,
+#ifdef PORTR
+  &PORTR.IN,
+#endif
+#endif
+#endif
+#endif
+#endif
+};
+
+
+#else
 const IO_PTR u8g_avr_ddr_P[] PROGMEM = {
 #ifdef DDRA
   &DDRA,
@@ -146,6 +223,7 @@ const IO_PTR u8g_avr_pin_P[] PROGMEM = {
 #endif
 #endif
 };
+#endif
 
 static volatile uint8_t *u8g_get_avr_io_ptr(const IO_PTR *base, uint8_t offset)
 {

+ 13 - 0
app/u8glib/u8g_delay.c

@@ -52,6 +52,11 @@
 #    include <Arduino.h> 
 #  endif
 
+/* issue 353 */
+#if defined(ARDUINO_ARCH_SAMD)
+#    include <delay.h>
+#endif
+
 #  if defined(__AVR__)
 #    define USE_AVR_DELAY
 #  elif defined(__PIC32MX)
@@ -71,6 +76,8 @@
 #  define USE_AVR_DELAY
 #elif defined(__18CXX)
 #  define USE_PIC18_DELAY
+#elif defined(U8G_CYPRESS_PSOC5)
+#define USE_PSOC5_DELAY
 #elif defined(__arm__) || defined(__XTENSA__)
 /* do not define anything, all procedures are expected to be defined outside u8glib */
 
@@ -293,6 +300,12 @@ void u8g_10MicroDelay(void)
   __delay_cycles(F_CPU/100000UL);
 }
 #endif
+#if defined USE_PSOC5_DELAY
+  #include <project.h>
+  void u8g_Delay(uint16_t val)  {CyDelay(val);};
+  void u8g_MicroDelay(void)     {CyDelay(1);};
+  void u8g_10MicroDelay(void)   {CyDelay(10);};  
+#endif
 
 
 /*== Any other systems: Dummy Delay ==*/

+ 1 - 1
app/u8glib/u8g_dev_lc7981_160x80.c

@@ -75,7 +75,7 @@ static const uint8_t u8g_dev_lc7981_160x80_init_seq[] PROGMEM = {
   U8G_ESC_ADR(1),               /* instruction mode */
   0x003,                                /* time division */
   U8G_ESC_ADR(0),               /* data mode */
-  0x07f,                                /*  */
+  0x050,                                /* Oct 2015: Changed from 7f to 50 (1/80 duty cycle) */
 
   U8G_ESC_ADR(1),               /* instruction mode */
   0x008,                                /* display start low */

+ 14 - 0
app/u8glib/u8g_dev_ssd1306_128x32.c

@@ -230,6 +230,13 @@ uint8_t u8g_dev_ssd1306_128x32_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void
         u8g_SetChipSelect(u8g, dev, 0);
       }
       break;
+    case U8G_DEV_MSG_CONTRAST:
+      u8g_SetChipSelect(u8g, dev, 1);
+      u8g_SetAddress(u8g, dev, 0);          /* instruction mode */
+      u8g_WriteByte(u8g, dev, 0x081);
+      u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) ); /* 11 Jul 2015: fixed contrast calculation */
+      u8g_SetChipSelect(u8g, dev, 0);      
+      return 1; 
     case U8G_DEV_MSG_SLEEP_ON:
       u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on);    
       return 1;
@@ -268,6 +275,13 @@ uint8_t u8g_dev_ssd1306_128x32_2x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, vo
         u8g_SetChipSelect(u8g, dev, 0);
       }
       break;
+    case U8G_DEV_MSG_CONTRAST:
+      u8g_SetChipSelect(u8g, dev, 1);
+      u8g_SetAddress(u8g, dev, 0);          /* instruction mode */
+      u8g_WriteByte(u8g, dev, 0x081);
+      u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) ); /* 11 Jul 2015: fixed contrast calculation */
+      u8g_SetChipSelect(u8g, dev, 0);      
+      return 1; 
     case U8G_DEV_MSG_SLEEP_ON:
       u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on);    
       return 1;

+ 45 - 0
app/u8glib/u8g_dev_ssd1306_128x64.c

@@ -240,6 +240,15 @@ uint8_t u8g_dev_ssd1306_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void
     case U8G_DEV_MSG_SLEEP_OFF:
       u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off);    
       return 1;
+    case U8G_DEV_MSG_CONTRAST:
+    {
+	u8g_SetChipSelect(u8g, dev, 1);
+	u8g_SetAddress(u8g, dev, 0); /* instruction mode */
+	u8g_WriteByte(u8g, dev, 0x81);
+	u8g_WriteByte(u8g, dev, *(uint8_t *) arg);
+	u8g_SetChipSelect(u8g, dev, 0);
+	return 1;
+    }
   }
   return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg);
 }
@@ -271,6 +280,15 @@ uint8_t u8g_dev_ssd1306_adafruit_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t m
     case U8G_DEV_MSG_SLEEP_OFF:
       u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off);    
       return 1;
+    case U8G_DEV_MSG_CONTRAST:
+    {
+	u8g_SetChipSelect(u8g, dev, 1);
+	u8g_SetAddress(u8g, dev, 0); /* instruction mode */
+	u8g_WriteByte(u8g, dev, 0x81);
+	u8g_WriteByte(u8g, dev, *(uint8_t *) arg);
+	u8g_SetChipSelect(u8g, dev, 0);
+	return 1;
+    }
   }
   return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg);
 }
@@ -302,6 +320,15 @@ uint8_t u8g_dev_sh1106_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *
     case U8G_DEV_MSG_SLEEP_OFF:
       u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off);    
       return 1;
+    case U8G_DEV_MSG_CONTRAST:
+    {
+	u8g_SetChipSelect(u8g, dev, 1);
+	u8g_SetAddress(u8g, dev, 0); /* instruction mode */
+	u8g_WriteByte(u8g, dev, 0x81);
+	u8g_WriteByte(u8g, dev, *(uint8_t *) arg);
+	u8g_SetChipSelect(u8g, dev, 0);
+	return 1;
+    }
   }
   return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg);
 }
@@ -340,6 +367,15 @@ uint8_t u8g_dev_ssd1306_128x64_2x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, vo
     case U8G_DEV_MSG_SLEEP_OFF:
       u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off);    
       return 1;
+    case U8G_DEV_MSG_CONTRAST:
+    {
+	u8g_SetChipSelect(u8g, dev, 1);
+	u8g_SetAddress(u8g, dev, 0); /* instruction mode */
+	u8g_WriteByte(u8g, dev, 0x81);
+	u8g_WriteByte(u8g, dev, *(uint8_t *) arg);
+	u8g_SetChipSelect(u8g, dev, 0);
+	return 1;
+    }
   }
   return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg);
 }
@@ -377,6 +413,15 @@ uint8_t u8g_dev_sh1106_128x64_2x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, voi
     case U8G_DEV_MSG_SLEEP_OFF:
       u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off);    
       return 1;
+    case U8G_DEV_MSG_CONTRAST:
+    {
+	u8g_SetChipSelect(u8g, dev, 1);
+	u8g_SetAddress(u8g, dev, 0); /* instruction mode */
+	u8g_WriteByte(u8g, dev, 0x81);
+	u8g_WriteByte(u8g, dev, *(uint8_t *) arg);
+	u8g_SetChipSelect(u8g, dev, 0);
+	return 1;
+    }
   }
   return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg);
 }

+ 14 - 0
app/u8glib/u8g_dev_ssd1306_64x48.c

@@ -128,6 +128,13 @@ uint8_t u8g_dev_ssd1306_64x48_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *
         u8g_SetChipSelect(u8g, dev, 0);
       }
       break;
+    case U8G_DEV_MSG_CONTRAST:
+      u8g_SetChipSelect(u8g, dev, 1);
+      u8g_SetAddress(u8g, dev, 0);          /* instruction mode */
+      u8g_WriteByte(u8g, dev, 0x081);
+      u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) ); /* 11 Jul 2015: fixed contrast calculation */
+      u8g_SetChipSelect(u8g, dev, 0);      
+      return 1; 
     case U8G_DEV_MSG_SLEEP_ON:
       u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on);    
       return 1;
@@ -166,6 +173,13 @@ uint8_t u8g_dev_ssd1306_64x48_2x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, voi
         u8g_SetChipSelect(u8g, dev, 0);
       }
       break;
+    case U8G_DEV_MSG_CONTRAST:
+      u8g_SetChipSelect(u8g, dev, 1);
+      u8g_SetAddress(u8g, dev, 0);          /* instruction mode */
+      u8g_WriteByte(u8g, dev, 0x081);
+      u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) ); /* 11 Jul 2015: fixed contrast calculation */
+      u8g_SetChipSelect(u8g, dev, 0);      
+      return 1; 
     case U8G_DEV_MSG_SLEEP_ON:
       u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on);    
       return 1;

+ 1 - 0
app/u8glib/u8g_dev_ssd1325_nhd27oled_gr_new.c

@@ -220,6 +220,7 @@ static uint8_t u8g_dev_ssd1325_nhd27oled_2x_gr_fn(u8g_t *u8g, u8g_dev_t *dev, ui
 
 U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_gr_sw_spi , WIDTH, HEIGHT, 4, u8g_dev_ssd1325_nhd27oled_gr_fn, U8G_COM_SW_SPI);
 U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_gr_hw_spi , WIDTH, HEIGHT, 4, u8g_dev_ssd1325_nhd27oled_gr_fn, U8G_COM_HW_SPI);
+U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_gr_parallel , WIDTH, HEIGHT, 4, u8g_dev_ssd1325_nhd27oled_gr_fn, U8G_COM_FAST_PARALLEL);
 
 uint8_t u8g_dev_ssd1325_nhd27oled_2x_buf[WIDTH*2] U8G_NOCOMMON ; 
 u8g_pb_t u8g_dev_ssd1325_nhd27oled_2x_pb = { {8, HEIGHT, 0, 0, 0},  WIDTH, u8g_dev_ssd1325_nhd27oled_2x_buf}; 

+ 12 - 4
app/u8glib/u8g_dev_uc1611_dogm240.c

@@ -43,8 +43,16 @@
 
 
 static const uint8_t u8g_dev_uc1611_dogm240_init_seq[] PROGMEM = {
-  U8G_ESC_CS(1),             // enable chip
+  U8G_ESC_CS(0),             /* disable chip */
+  U8G_ESC_ADR(0),           /* instruction mode */
+  U8G_ESC_RST(1),           /* do reset low pulse with (1*16)+2 milliseconds */
+  U8G_ESC_DLY(200),
+   U8G_ESC_CS(1),             // enable chip
   U8G_ESC_ADR(0),           // instruction mode
+  0xe2,	// system reset
+  U8G_ESC_DLY(1),
+  0x2f,	// enable internal charge pump
+  
   0xF1,     // set last COM electrode
   0x3F,     // 64-1=63
   0xF2,     // set display start line
@@ -96,16 +104,16 @@ uint8_t u8g_dev_uc1611_dogm240_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void
       u8g_SetAddress(u8g, dev, 1);     /* data mode */
       if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 )
         return 0;
-      u8g_SetChipSelect(u8g, dev, 1);
+      u8g_SetChipSelect(u8g, dev, 0);
       }
       break;
     case U8G_DEV_MSG_CONTRAST:
-      u8g_SetChipSelect(u8g, dev, 0);
+      u8g_SetChipSelect(u8g, dev, 1);
       u8g_SetAddress(u8g, dev, 0);          /* instruction mode */
       u8g_WriteByte(u8g, dev, 0x81);
       /* 11 Jul 2015: bugfix, github issue 339 */
       u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) );	/* set contrast from, keep gain at 0 */
-      u8g_SetChipSelect(u8g, dev, 1);
+      u8g_SetChipSelect(u8g, dev, 0);
       return 1;
   }
   return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg);

+ 12 - 3
app/u8glib/u8g_dev_uc1611_dogxl240.c

@@ -43,8 +43,17 @@
 
 
 static const uint8_t u8g_dev_uc1611_dogxl240_init_seq[] PROGMEM = {
+  U8G_ESC_CS(0),             /* disable chip */
+  U8G_ESC_ADR(0),           /* instruction mode */
+  U8G_ESC_RST(1),           /* do reset low pulse with (1*16)+2 milliseconds */
+  U8G_ESC_DLY(200),
   U8G_ESC_CS(1),             // enable chip
   U8G_ESC_ADR(0),           // instruction mode
+  
+  0xe2,	// system reset
+  U8G_ESC_DLY(1),
+  0x2f,	// enable internal charge pump
+  
   0xF1,     // set last COM electrode
   0x7F,     // DOGXL240
   0xF2,     // set display start line
@@ -96,16 +105,16 @@ static uint8_t u8g_dev_uc1611_dogxl240_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t ms
       u8g_SetAddress(u8g, dev, 1);     /* data mode */
       if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 )
         return 0;
-      u8g_SetChipSelect(u8g, dev, 1);
+      u8g_SetChipSelect(u8g, dev, 0);
       }
       break;
     case U8G_DEV_MSG_CONTRAST:
-      u8g_SetChipSelect(u8g, dev, 0);
+      u8g_SetChipSelect(u8g, dev, 1);
       u8g_SetAddress(u8g, dev, 0);          /* instruction mode */
       u8g_WriteByte(u8g, dev, 0x81);
       /* 11 Jul 2015: bugfix, github issue 339 */
       u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) );	/* set contrast from, keep gain at 0 */
-      u8g_SetChipSelect(u8g, dev, 1);
+      u8g_SetChipSelect(u8g, dev, 0);
       return 1;
   }
   return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg);

+ 35 - 799
app/u8glib/u8g_font_data.c

@@ -1,6 +1,6 @@
 /*
   Fontname: -FreeType-04b03b-Medium-R-Normal--8-80-72-72-P-39-ISO10646-1
-  Copyright: 19992003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org
+  Copyright: 19992003 / yuji oshimo�o / 04@dsg4.com / www.04.jp.org
   Capital A Height: 5, '1' Height: 5
   Calculated Max Values w= 5 h= 5 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 5
   Font Bounding box     w= 5 h= 6 x= 0 y=-1
@@ -65,7 +65,7 @@ const u8g_fntpgm_uint8_t u8g_font_04b_03b[826] U8G_FONT_SECTION("u8g_font_04b_03
   255,255,255,255,255,255,255,255,255,255};
 /*
   Fontname: -FreeType-04b03b-Medium-R-Normal--8-80-72-72-P-39-ISO10646-1
-  Copyright: 19992003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org
+  Copyright: 19992003 / yuji oshimo�o / 04@dsg4.com / www.04.jp.org
   Capital A Height: 0, '1' Height: 5
   Calculated Max Values w= 5 h= 5 x= 0 y= 2 dx= 6 dy= 0 ascent= 5 len= 5
   Font Bounding box     w= 5 h= 6 x= 0 y=-1
@@ -87,7 +87,7 @@ const u8g_fntpgm_uint8_t u8g_font_04b_03bn[136] U8G_FONT_SECTION("u8g_font_04b_0
   16,112,3,19,35,128,0,128};
 /*
   Fontname: -FreeType-04b03b-Medium-R-Normal--8-80-72-72-P-39-ISO10646-1
-  Copyright: 19992003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org
+  Copyright: 19992003 / yuji oshimo�o / 04@dsg4.com / www.04.jp.org
   Capital A Height: 5, '1' Height: 5
   Calculated Max Values w= 5 h= 5 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 5
   Font Bounding box     w= 5 h= 6 x= 0 y=-1
@@ -144,7 +144,7 @@ const u8g_fntpgm_uint8_t u8g_font_04b_03br[696] U8G_FONT_SECTION("u8g_font_04b_0
   64,192,5,66,82,80,160,255};
 /*
   Fontname: -FreeType-04b03-Medium-R-Normal--8-80-72-72-P-38-ISO10646-1
-  Copyright: 19992003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org
+  Copyright: 19992003 / yuji oshimo�o / 04@dsg4.com / www.04.jp.org
   Capital A Height: 5, '1' Height: 5
   Calculated Max Values w= 5 h= 7 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 7
   Font Bounding box     w= 5 h= 7 x= 0 y=-2
@@ -211,7 +211,7 @@ const u8g_fntpgm_uint8_t u8g_font_04b_03[859] U8G_FONT_SECTION("u8g_font_04b_03"
   255,255,255,255,255,255,255,255,255,255,255};
 /*
   Fontname: -FreeType-04b03-Medium-R-Normal--8-80-72-72-P-38-ISO10646-1
-  Copyright: 19992003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org
+  Copyright: 19992003 / yuji oshimo�o / 04@dsg4.com / www.04.jp.org
   Capital A Height: 0, '1' Height: 5
   Calculated Max Values w= 5 h= 5 x= 0 y= 2 dx= 6 dy= 0 ascent= 5 len= 5
   Font Bounding box     w= 5 h= 7 x= 0 y=-2
@@ -233,7 +233,7 @@ const u8g_fntpgm_uint8_t u8g_font_04b_03n[136] U8G_FONT_SECTION("u8g_font_04b_03
   16,96,3,19,35,128,0,128};
 /*
   Fontname: -FreeType-04b03-Medium-R-Normal--8-80-72-72-P-38-ISO10646-1
-  Copyright: 19992003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org
+  Copyright: 19992003 / yuji oshimo�o / 04@dsg4.com / www.04.jp.org
   Capital A Height: 5, '1' Height: 5
   Calculated Max Values w= 5 h= 7 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 7
   Font Bounding box     w= 5 h= 7 x= 0 y=-2
@@ -292,7 +292,7 @@ const u8g_fntpgm_uint8_t u8g_font_04b_03r[729] U8G_FONT_SECTION("u8g_font_04b_03
   32,64,192,5,66,82,80,160,255};
 /*
   Fontname: -FreeType-04b24-Medium-R-Normal--8-80-72-72-P-32-ISO10646-1
-  Copyright: 20002003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org
+  Copyright: 20002003 / yuji oshimo�o / 04@dsg4.com / www.04.jp.org
   Capital A Height: 5, '1' Height: 5
   Calculated Max Values w= 5 h= 6 x= 0 y= 4 dx= 6 dy= 0 ascent= 5 len= 6
   Font Bounding box     w= 5 h= 6 x= 0 y=-1
@@ -363,7 +363,7 @@ const u8g_fntpgm_uint8_t u8g_font_04b_24[912] U8G_FONT_SECTION("u8g_font_04b_24"
   };
 /*
   Fontname: -FreeType-04b24-Medium-R-Normal--8-80-72-72-P-32-ISO10646-1
-  Copyright: 20002003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org
+  Copyright: 20002003 / yuji oshimo�o / 04@dsg4.com / www.04.jp.org
   Capital A Height: 0, '1' Height: 5
   Calculated Max Values w= 3 h= 5 x= 0 y= 2 dx= 4 dy= 0 ascent= 5 len= 5
   Font Bounding box     w= 5 h= 6 x= 0 y=-1
@@ -385,7 +385,7 @@ const u8g_fntpgm_uint8_t u8g_font_04b_24n[136] U8G_FONT_SECTION("u8g_font_04b_24
   224,32,3,19,35,128,0,128};
 /*
   Fontname: -FreeType-04b24-Medium-R-Normal--8-80-72-72-P-32-ISO10646-1
-  Copyright: 20002003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org
+  Copyright: 20002003 / yuji oshimo�o / 04@dsg4.com / www.04.jp.org
   Capital A Height: 5, '1' Height: 5
   Calculated Max Values w= 5 h= 6 x= 0 y= 4 dx= 6 dy= 0 ascent= 5 len= 6
   Font Bounding box     w= 5 h= 6 x= 0 y=-1
@@ -15757,7 +15757,7 @@ const u8g_fntpgm_uint8_t u8g_font_cursorr[492] U8G_FONT_SECTION("u8g_font_cursor
   64,28,0,56,0,112,0,224,0,192,0,255};
 /*
   Fontname: -FreeType-fixed_v01-Medium-R-Normal--8-80-72-72-P-51-ISO10646-1
-  Copyright: © www.orgdot.com
+  Copyright: � www.orgdot.com
   Capital A Height: 7, '1' Height: 7
   Calculated Max Values w= 7 h= 9 x= 2 y= 6 dx= 6 dy= 0 ascent= 7 len= 9
   Font Bounding box     w= 7 h= 9 x= 0 y=-2
@@ -15877,7 +15877,7 @@ const u8g_fntpgm_uint8_t u8g_font_fixed_v0[1702] U8G_FONT_SECTION("u8g_font_fixe
   136,136,136,120,8,112};
 /*
   Fontname: -FreeType-fixed_v01-Medium-R-Normal--8-80-72-72-P-51-ISO10646-1
-  Copyright: © www.orgdot.com
+  Copyright: � www.orgdot.com
   Capital A Height: 0, '1' Height: 7
   Calculated Max Values w= 5 h= 7 x= 1 y= 3 dx= 6 dy= 0 ascent= 7 len= 7
   Font Bounding box     w= 7 h= 9 x= 0 y=-2
@@ -15901,7 +15901,7 @@ const u8g_fntpgm_uint8_t u8g_font_fixed_v0n[167] U8G_FONT_SECTION("u8g_font_fixe
   21,101,128,128,0,128,128};
 /*
   Fontname: -FreeType-fixed_v01-Medium-R-Normal--8-80-72-72-P-51-ISO10646-1
-  Copyright: © www.orgdot.com
+  Copyright: � www.orgdot.com
   Capital A Height: 7, '1' Height: 7
   Calculated Max Values w= 7 h= 9 x= 2 y= 5 dx= 6 dy= 0 ascent= 7 len= 9
   Font Bounding box     w= 7 h= 9 x= 0 y=-2
@@ -18731,49 +18731,6 @@ const u8g_fntpgm_uint8_t u8g_font_fub20r[4022] U8G_FONT_SECTION("u8g_font_fub20r
   192,15,0,30,0,30,0,30,0,30,0,30,0,30,0,30,
   0,30,0,124,0,252,0,240,0,14,3,6,14,0,5,63,
   156,127,248,225,240,255};
-/*
-  Fontname: -FreeType-FreeUniversal-Bold-R-Normal--27-270-72-72-P-136-ISO10646-1
-  Copyright: FreeUniveral (c) Stephen Wilson 2009    Original Font Sil-Sophia  Copyright (c) SIL International, 1994-2008.
-  Capital A Height: 0, '1' Height: 20
-  Calculated Max Values w=14 h=20 x= 4 y= 0 dx=15 dy= 0 ascent=20 len=40
-  Font Bounding box     w=40 h=36 x=-2 y=-7
-  Calculated Min Values           x= 0 y= 0 dx= 0 dy= 0
-  Pure Font   ascent =20 descent= 0
-  X Font      ascent =20 descent= 0
-  Max Font    ascent =20 descent= 0
-*/
-#include "u8g.h"
-const u8g_fntpgm_uint8_t u8g_font_fub20t[477] U8G_SECTION(".progmem.u8g_font_fub20t") = {
-  0,40,36,254,249,20,0,0,0,0,48,58,0,20,0,20,
-  0,14,20,40,15,1,0,15,128,31,224,60,240,120,112,112,
-  56,240,56,240,56,240,60,240,60,240,60,240,60,240,60,240,
-  60,240,56,240,56,112,56,120,120,60,240,31,224,15,128,8,
-  20,20,15,3,0,15,63,127,255,239,207,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,14,20,40,15,1,0,7,
-  192,31,240,63,248,124,120,120,60,120,60,0,60,0,120,0,
-  120,0,240,1,240,3,224,7,192,15,128,31,0,124,0,248,
-  0,255,252,255,252,255,252,13,20,40,15,1,0,15,128,63,
-  224,127,240,248,240,240,120,0,120,0,120,0,240,15,224,15,
-  128,15,224,0,240,0,120,0,120,240,120,240,120,248,240,127,
-  240,63,224,31,128,14,20,40,15,1,0,1,240,3,240,3,
-  240,7,240,7,240,14,240,30,240,28,240,60,240,56,240,120,
-  240,112,240,240,240,255,252,255,252,255,252,0,240,0,240,0,
-  240,0,240,13,20,40,15,1,0,255,240,255,240,255,240,240,
-  0,240,0,240,0,240,0,247,192,255,224,253,240,240,120,240,
-  120,0,120,0,120,0,120,240,120,240,240,127,240,63,224,31,
-  128,13,20,40,15,1,0,15,192,31,224,63,240,120,120,120,
-  120,112,0,240,0,247,192,239,224,253,240,248,120,240,120,240,
-  120,240,120,240,120,112,120,120,240,63,240,63,224,15,128,13,
-  20,40,15,1,0,255,248,255,248,255,248,0,120,0,120,0,
-  240,0,240,1,224,1,224,1,224,3,192,3,192,7,128,7,
-  128,15,128,15,0,31,0,30,0,30,0,62,0,14,20,40,
-  15,1,0,31,192,63,240,127,240,120,248,240,120,240,120,240,
-  120,120,240,63,224,31,192,63,240,120,120,240,56,240,60,240,
-  60,240,60,248,120,127,248,63,240,31,192,13,20,40,15,1,
-  0,15,128,63,192,127,224,120,240,240,112,240,120,240,120,240,
-  120,240,120,120,248,127,184,63,56,0,120,0,120,0,112,240,
-  240,120,240,127,224,63,192,15,128,4,14,14,9,4,0,240,
-  240,240,240,0,0,0,0,0,0,240,240,240,240};
 /*
   Fontname: -FreeType-FreeUniversal-Bold-R-Normal--34-340-72-72-P-170-ISO10646-1
   Copyright: FreeUniveral (c) Stephen Wilson 2009    Original Font Sil-Sophia  Copyright (c) SIL International, 1994-2008.
@@ -45380,34 +45337,6 @@ const u8g_fntpgm_uint8_t u8g_font_helvR08[2687] U8G_FONT_SECTION("u8g_font_helvR
   11,5,255,254,8,16,0,72,72,80,80,48,32,32,192,5,
   10,10,6,0,254,128,128,176,200,136,136,200,176,128,128,5,
   10,10,5,255,254,80,0,72,72,80,80,48,32,32,192};
-/*
-  Fontname: -Adobe-Helvetica-Medium-R-Normal--11-80-100-100-P-56-ISO10646-1
-  Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved.
-  Capital A Height: 0, '1' Height: 8
-  Calculated Max Values w= 5 h= 8 x= 1 y= 5 dx= 6 dy= 0 ascent= 8 len= 8
-  Font Bounding box     w=13 h=18 x=-2 y=-4
-  Calculated Min Values           x= 0 y=-2 dx= 0 dy= 0
-  Pure Font   ascent = 8 descent= 0
-  X Font      ascent = 8 descent= 0
-  Max Font    ascent = 8 descent=-2
-*/
-#include "u8g.h"
-const u8g_fntpgm_uint8_t u8g_font_helvR08n[226] U8G_FONT_SECTION("u8g_font_helvR08n") = {
-  0,13,18,254,252,8,0,0,0,0,42,58,0,8,254,8,
-  0,3,3,3,4,0,5,160,64,160,5,5,5,6,0,1,
-  32,32,248,32,32,2,3,3,3,0,254,64,64,128,3,1,
-  1,4,0,3,224,1,1,1,3,1,0,128,3,8,8,3,
-  0,0,32,32,64,64,64,64,128,128,5,8,8,6,0,0,
-  112,136,136,136,136,136,136,112,2,8,8,6,1,0,64,192,
-  64,64,64,64,64,64,5,8,8,6,0,0,112,136,8,8,
-  48,64,128,248,5,8,8,6,0,0,112,136,8,48,8,8,
-  136,112,5,8,8,6,0,0,16,48,80,80,144,248,16,16,
-  5,8,8,6,0,0,120,64,64,112,8,8,136,112,5,8,
-  8,6,0,0,112,136,128,240,136,136,136,112,5,8,8,6,
-  0,0,248,8,16,32,32,64,64,64,5,8,8,6,0,0,
-  112,136,136,112,136,136,136,112,5,8,8,6,0,0,112,136,
-  136,136,120,8,136,112,1,6,6,3,1,0,128,0,0,0,
-  0,128};
 /*
   Fontname: -Adobe-Helvetica-Medium-R-Normal--11-80-100-100-P-56-ISO10646-1
   Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved.
@@ -45735,36 +45664,6 @@ const u8g_fntpgm_uint8_t u8g_font_helvR10[3527] U8G_FONT_SECTION("u8g_font_helvR
   14,14,8,1,253,128,128,128,184,204,132,132,132,132,204,184,
   128,128,128,7,14,14,7,0,253,36,36,0,130,194,68,68,
   36,40,24,16,16,48,96};
-/*
-  Fontname: -Adobe-Helvetica-Medium-R-Normal--14-100-100-100-P-76-ISO10646-1
-  Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved.
-  Capital A Height: 0, '1' Height: 11
-  Calculated Max Values w= 7 h=11 x= 2 y= 6 dx= 9 dy= 0 ascent=11 len=11
-  Font Bounding box     w=17 h=22 x=-2 y=-5
-  Calculated Min Values           x= 0 y=-2 dx= 0 dy= 0
-  Pure Font   ascent =11 descent= 0
-  X Font      ascent =11 descent= 0
-  Max Font    ascent =11 descent=-2
-*/
-#include "u8g.h"
-const u8g_fntpgm_uint8_t u8g_font_helvR10n[267] U8G_FONT_SECTION("u8g_font_helvR10n") = {
-  0,17,22,254,251,11,0,0,0,0,42,58,0,11,254,11,
-  0,5,5,5,7,1,6,32,168,112,168,32,7,7,7,9,
-  1,1,16,16,16,254,16,16,16,2,4,4,3,0,254,64,
-  64,64,128,3,1,1,4,0,4,224,1,2,2,3,1,0,
-  128,128,4,11,11,4,0,0,16,16,32,32,32,64,64,64,
-  128,128,128,6,11,11,8,1,0,120,132,132,132,132,132,132,
-  132,132,132,120,3,11,11,8,2,0,32,224,32,32,32,32,
-  32,32,32,32,32,6,11,11,8,1,0,120,132,132,4,8,
-  16,32,64,128,128,252,6,11,11,8,1,0,120,132,132,4,
-  4,56,4,4,132,132,120,7,11,11,8,1,0,4,12,20,
-  36,68,132,132,254,4,4,4,6,11,11,8,1,0,252,128,
-  128,128,248,4,4,4,132,132,120,6,11,11,8,1,0,120,
-  132,128,128,184,196,132,132,132,132,120,6,11,11,8,1,0,
-  252,4,8,8,16,16,32,32,64,64,64,6,11,11,8,1,
-  0,120,132,132,132,132,120,132,132,132,132,120,6,11,11,8,
-  1,0,120,132,132,132,132,124,4,4,132,132,120,1,8,8,
-  3,1,0,128,128,0,0,0,0,128,128};
 /*
   Fontname: -Adobe-Helvetica-Medium-R-Normal--14-100-100-100-P-76-ISO10646-1
   Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved.
@@ -46150,38 +46049,6 @@ const u8g_fntpgm_uint8_t u8g_font_helvR12[4077] U8G_FONT_SECTION("u8g_font_helvR
   32,192,7,16,16,9,1,252,128,128,128,184,196,130,130,130,
   130,130,196,184,128,128,128,128,7,15,15,8,0,253,40,40,
   0,130,130,68,68,40,40,56,16,16,32,32,192};
-/*
-  Fontname: -Adobe-Helvetica-Medium-R-Normal--17-120-100-100-P-88-ISO10646-1
-  Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved.
-  Capital A Height: 0, '1' Height: 12
-  Calculated Max Values w= 9 h=12 x= 3 y= 7 dx=10 dy= 0 ascent=12 len=18
-  Font Bounding box     w=20 h=26 x=-2 y=-6
-  Calculated Min Values           x= 0 y=-2 dx= 0 dy= 0
-  Pure Font   ascent =12 descent= 0
-  X Font      ascent =12 descent= 0
-  Max Font    ascent =12 descent=-2
-*/
-#include "u8g.h"
-const u8g_fntpgm_uint8_t u8g_font_helvR12n[290] U8G_FONT_SECTION("u8g_font_helvR12n") = {
-  0,20,26,254,250,12,0,0,0,0,42,58,0,12,254,12,
-  0,5,5,5,6,0,7,32,168,112,80,136,9,9,18,10,
-  0,0,8,0,8,0,8,0,8,0,255,128,8,0,8,0,
-  8,0,8,0,2,4,4,4,1,254,64,64,64,128,4,1,
-  1,5,0,4,240,1,2,2,4,2,0,128,128,4,12,12,
-  5,0,0,16,16,32,32,32,32,64,64,64,128,128,128,7,
-  12,12,9,1,0,56,68,68,130,130,130,130,130,130,68,68,
-  56,3,12,12,9,3,0,32,32,96,160,32,32,32,32,32,
-  32,32,32,7,12,12,9,1,0,56,68,130,130,2,4,8,
-  48,64,128,128,254,7,12,12,9,1,0,56,68,130,130,4,
-  56,4,2,130,130,68,56,8,12,12,9,0,0,12,20,20,
-  36,36,68,68,132,255,4,4,4,7,12,12,9,1,0,62,
-  32,32,64,120,68,2,2,2,130,68,56,7,12,12,9,1,
-  0,60,66,130,128,184,196,130,130,130,130,68,56,8,12,12,
-  9,0,0,255,1,2,4,4,8,8,16,16,16,32,32,7,
-  12,12,9,1,0,56,68,130,130,68,56,68,130,130,130,68,
-  56,7,12,12,9,1,0,56,68,130,130,130,130,70,58,2,
-  130,132,120,1,9,9,4,2,0,128,128,0,0,0,0,0,
-  128,128};
 /*
   Fontname: -Adobe-Helvetica-Medium-R-Normal--17-120-100-100-P-88-ISO10646-1
   Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved.
@@ -46636,39 +46503,6 @@ const u8g_fntpgm_uint8_t u8g_font_helvR14[4920] U8G_FONT_SECTION("u8g_font_helvR
   193,128,227,0,255,0,222,0,192,0,192,0,192,0,192,0,
   8,18,18,10,1,252,102,102,0,0,195,195,195,102,102,102,
   36,60,24,24,24,24,112,112};
-/*
-  Fontname: -Adobe-Helvetica-Medium-R-Normal--20-140-100-100-P-100-ISO10646-1
-  Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved.
-  Capital A Height: 0, '1' Height: 13
-  Calculated Max Values w= 9 h=14 x= 2 y= 7 dx=10 dy= 0 ascent=14 len=26
-  Font Bounding box     w=22 h=29 x=-2 y=-7
-  Calculated Min Values           x= 0 y=-3 dx= 0 dy= 0
-  Pure Font   ascent =13 descent= 0
-  X Font      ascent =13 descent= 0
-  Max Font    ascent =14 descent=-3
-*/
-#include "u8g.h"
-const u8g_fntpgm_uint8_t u8g_font_helvR14n[311] U8G_FONT_SECTION("u8g_font_helvR14n") = {
-  0,22,29,254,249,13,0,0,0,0,42,58,0,14,253,13,
-  0,5,7,7,7,1,7,32,168,248,32,248,168,32,8,10,
-  10,10,1,0,24,24,24,24,255,255,24,24,24,24,2,5,
-  5,5,1,253,192,192,64,64,128,5,1,1,6,0,5,248,
-  2,2,2,5,1,0,192,192,5,14,14,5,0,0,24,24,
-  24,24,48,48,48,96,96,96,192,192,192,192,8,13,13,10,
-  1,0,60,126,102,195,195,195,195,195,195,195,102,126,60,5,
-  13,13,10,2,0,24,248,248,24,24,24,24,24,24,24,24,
-  24,24,8,13,13,10,1,0,60,254,195,3,7,14,28,56,
-  112,224,192,255,255,8,13,13,10,1,0,62,127,195,195,6,
-  28,30,7,3,195,199,126,60,9,13,26,10,0,0,3,0,
-  7,0,15,0,27,0,51,0,51,0,99,0,195,0,255,128,
-  255,128,3,0,3,0,3,0,8,13,13,10,1,0,254,254,
-  192,192,252,254,199,3,3,195,199,254,124,8,13,13,10,1,
-  0,60,127,99,192,192,220,254,195,195,195,227,126,60,8,13,
-  13,10,1,0,255,255,3,6,12,12,24,24,48,48,96,96,
-  96,8,13,13,10,1,0,60,126,231,195,195,102,126,231,195,
-  195,231,126,60,8,13,13,10,1,0,60,126,199,195,195,195,
-  127,59,3,3,198,254,124,2,10,10,5,1,0,192,192,0,
-  0,0,0,0,0,192,192};
 /*
   Fontname: -Adobe-Helvetica-Medium-R-Normal--20-140-100-100-P-100-ISO10646-1
   Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved.
@@ -47295,53 +47129,6 @@ const u8g_fntpgm_uint8_t u8g_font_helvR18[7307] U8G_FONT_SECTION("u8g_font_helvR
   128,0,0,0,0,192,48,192,48,96,48,112,96,48,96,56,
   224,24,192,24,192,13,128,13,128,7,128,7,0,3,0,3,
   0,6,0,6,0,12,0,60,0,56,0};
-/*
-  Fontname: -Adobe-Helvetica-Medium-R-Normal--25-180-100-100-P-130-ISO10646-1
-  Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved.
-  Capital A Height: 0, '1' Height: 18
-  Calculated Max Values w=12 h=19 x= 2 y=12 dx=14 dy= 0 ascent=19 len=36
-  Font Bounding box     w=28 h=37 x=-3 y=-8
-  Calculated Min Values           x= 0 y=-3 dx= 0 dy= 0
-  Pure Font   ascent =18 descent= 0
-  X Font      ascent =18 descent= 0
-  Max Font    ascent =19 descent=-3
-*/
-#include "u8g.h"
-const u8g_fntpgm_uint8_t u8g_font_helvR18n[536] U8G_FONT_SECTION("u8g_font_helvR18n") = {
-  0,28,37,253,248,18,0,0,0,0,42,58,0,19,253,18,
-  0,7,7,7,10,1,12,16,16,214,124,56,108,68,12,12,
-  24,14,1,1,6,0,6,0,6,0,6,0,6,0,255,240,
-  255,240,6,0,6,0,6,0,6,0,6,0,2,6,6,6,
-  2,253,192,192,192,64,64,128,6,2,2,8,1,6,252,252,
-  2,3,3,6,2,0,192,192,192,7,19,19,7,0,0,6,
-  4,12,12,8,24,24,16,16,48,48,32,96,96,64,192,192,
-  128,128,11,18,36,13,1,0,31,0,63,128,113,192,96,192,
-  96,192,224,224,192,96,192,96,192,96,192,96,192,96,192,96,
-  224,224,96,192,96,192,113,192,63,128,31,0,6,18,18,13,
-  2,0,12,12,28,252,252,12,12,12,12,12,12,12,12,12,
-  12,12,12,12,11,18,36,13,1,0,30,0,127,128,97,192,
-  192,192,192,96,192,96,0,224,0,192,1,192,3,128,15,0,
-  28,0,56,0,112,0,224,0,192,0,255,224,255,224,11,18,
-  36,13,1,0,31,0,127,128,97,128,192,192,192,192,192,192,
-  0,192,1,128,15,0,15,192,0,192,0,96,0,96,192,96,
-  192,192,97,192,127,128,31,0,11,18,36,13,1,0,1,128,
-  3,128,3,128,7,128,15,128,13,128,25,128,57,128,49,128,
-  97,128,225,128,193,128,255,224,255,224,1,128,1,128,1,128,
-  1,128,11,18,36,13,1,0,127,192,127,192,96,0,96,0,
-  96,0,96,0,126,0,127,128,113,192,0,192,0,224,0,96,
-  0,96,192,224,192,192,225,192,127,128,30,0,11,18,36,13,
-  1,0,15,0,63,192,112,192,96,96,224,96,192,0,192,0,
-  207,0,223,128,241,192,224,192,192,96,192,96,192,96,224,224,
-  113,192,127,192,31,0,11,18,36,13,1,0,255,224,255,224,
-  0,224,0,192,1,128,1,128,3,0,3,0,6,0,6,0,
-  12,0,12,0,28,0,24,0,24,0,56,0,48,0,48,0,
-  11,18,36,13,1,0,14,0,63,128,49,128,96,192,96,192,
-  96,192,49,128,31,0,63,128,113,192,96,192,192,96,192,96,
-  192,96,192,96,96,192,127,192,31,0,11,18,36,13,1,0,
-  31,0,127,192,113,192,224,192,192,96,192,96,192,96,192,96,
-  224,224,113,224,127,96,30,96,0,96,0,224,192,192,225,192,
-  127,128,30,0,2,14,14,6,2,0,192,192,192,0,0,0,
-  0,0,0,0,0,192,192,192};
 /*
   Fontname: -Adobe-Helvetica-Medium-R-Normal--25-180-100-100-P-130-ISO10646-1
   Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved.
@@ -56251,7 +56038,7 @@ const u8g_fntpgm_uint8_t u8g_font_ncenR24r[5367] U8G_FONT_SECTION("u8g_font_ncen
   127,135,225,254,192,120,255};
 /*
   Fontname: -FreeType-Org_v01-Medium-R-Normal--8-80-72-72-P-43-ISO10646-1
-  Copyright: © www.orgdot.com
+  Copyright: � www.orgdot.com
   Capital A Height: 5, '1' Height: 5
   Calculated Max Values w=11 h= 9 x= 1 y= 4 dx=12 dy= 0 ascent= 9 len=10
   Font Bounding box     w=11 h=11 x= 0 y=-2
@@ -56360,7 +56147,7 @@ const u8g_fntpgm_uint8_t u8g_font_orgv01[1535] U8G_FONT_SECTION("u8g_font_orgv01
   128,240,136,240,128,1,71,87,144,0,144,144,144,240,16};
 /*
   Fontname: -FreeType-Org_v01-Medium-R-Normal--8-80-72-72-P-43-ISO10646-1
-  Copyright: © www.orgdot.com
+  Copyright: � www.orgdot.com
   Capital A Height: 0, '1' Height: 5
   Calculated Max Values w= 5 h= 5 x= 0 y= 2 dx= 6 dy= 0 ascent= 5 len= 5
   Font Bounding box     w=11 h=11 x= 0 y=-2
@@ -56382,7 +56169,7 @@ const u8g_fntpgm_uint8_t u8g_font_orgv01n[137] U8G_FONT_SECTION("u8g_font_orgv01
   8,248,2,20,36,128,0,0,128};
 /*
   Fontname: -FreeType-Org_v01-Medium-R-Normal--8-80-72-72-P-43-ISO10646-1
-  Copyright: © www.orgdot.com
+  Copyright: � www.orgdot.com
   Capital A Height: 5, '1' Height: 5
   Calculated Max Values w= 5 h= 5 x= 0 y= 4 dx= 6 dy= 0 ascent= 5 len= 5
   Font Bounding box     w=11 h=11 x= 0 y=-2
@@ -70404,7 +70191,7 @@ const u8g_fntpgm_uint8_t u8g_font_pixelle_micror[1012] U8G_FONT_SECTION("u8g_fon
   1,80,160,255};
 /*
   Fontname: ProFont10
-  Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5
+  Copyright: ProFont Distribution 2.2 � Generated by Fontographer 4.1.5
   Capital A Height: 6, '1' Height: 6
   Calculated Max Values w= 5 h= 9 x= 2 y= 5 dx= 5 dy= 0 ascent= 8 len= 9
   Font Bounding box     w= 5 h= 9 x= 0 y=-2
@@ -70578,7 +70365,7 @@ const u8g_fntpgm_uint8_t u8g_font_profont10[2560] U8G_FONT_SECTION("u8g_font_pro
   };
 /*
   Fontname: ProFont10
-  Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5
+  Copyright: ProFont Distribution 2.2 � Generated by Fontographer 4.1.5
   Capital A Height: 6, '1' Height: 6
   Calculated Max Values w= 5 h= 9 x= 2 y= 5 dx= 5 dy= 0 ascent= 7 len= 9
   Font Bounding box     w= 5 h= 9 x= 0 y=-2
@@ -70661,7 +70448,7 @@ const u8g_fntpgm_uint8_t u8g_font_profont10r[1106] U8G_FONT_SECTION("u8g_font_pr
   0,0};
 /*
   Fontname: ProFont11
-  Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5
+  Copyright: ProFont Distribution 2.2 � Generated by Fontographer 4.1.5
   Capital A Height: 7, '1' Height: 7
   Calculated Max Values w= 6 h=11 x= 3 y= 6 dx= 6 dy= 0 ascent= 9 len=11
   Font Bounding box     w= 6 h=10 x= 0 y=-2
@@ -70848,7 +70635,7 @@ const u8g_fntpgm_uint8_t u8g_font_profont11[2768] U8G_FONT_SECTION("u8g_font_pro
   };
 /*
   Fontname: ProFont11
-  Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5
+  Copyright: ProFont Distribution 2.2 � Generated by Fontographer 4.1.5
   Capital A Height: 7, '1' Height: 7
   Calculated Max Values w= 6 h=11 x= 2 y= 6 dx= 6 dy= 0 ascent= 9 len=11
   Font Bounding box     w= 6 h=10 x= 0 y=-2
@@ -70937,7 +70724,7 @@ const u8g_fntpgm_uint8_t u8g_font_profont11r[1200] U8G_FONT_SECTION("u8g_font_pr
   };
 /*
   Fontname: ProFont12
-  Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5
+  Copyright: ProFont Distribution 2.2 � Generated by Fontographer 4.1.5
   Capital A Height: 8, '1' Height: 8
   Calculated Max Values w= 6 h=12 x= 3 y= 7 dx= 6 dy= 0 ascent=10 len=12
   Font Bounding box     w= 6 h=11 x= 0 y=-2
@@ -71132,7 +70919,7 @@ const u8g_fntpgm_uint8_t u8g_font_profont12[2907] U8G_FONT_SECTION("u8g_font_pro
   254,80,0,0,136,136,136,136,120,8,112};
 /*
   Fontname: ProFont12
-  Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5
+  Copyright: ProFont Distribution 2.2 � Generated by Fontographer 4.1.5
   Capital A Height: 8, '1' Height: 8
   Calculated Max Values w= 6 h=11 x= 2 y= 7 dx= 6 dy= 0 ascent= 9 len=11
   Font Bounding box     w= 6 h=11 x= 0 y=-2
@@ -71224,7 +71011,7 @@ const u8g_fntpgm_uint8_t u8g_font_profont12r[1258] U8G_FONT_SECTION("u8g_font_pr
   0,4,104,176,0,0,0,6,0,0};
 /*
   Fontname: ProFont15
-  Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5
+  Copyright: ProFont Distribution 2.2 � Generated by Fontographer 4.1.5
   Capital A Height: 9, '1' Height: 9
   Calculated Max Values w= 7 h=15 x= 4 y= 8 dx= 7 dy= 0 ascent=12 len=15
   Font Bounding box     w= 7 h=14 x= 0 y=-3
@@ -71437,7 +71224,7 @@ const u8g_fntpgm_uint8_t u8g_font_profont15[3186] U8G_FONT_SECTION("u8g_font_pro
   4,120};
 /*
   Fontname: ProFont15
-  Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5
+  Copyright: ProFont Distribution 2.2 � Generated by Fontographer 4.1.5
   Capital A Height: 9, '1' Height: 9
   Calculated Max Values w= 7 h=15 x= 3 y= 8 dx= 7 dy= 0 ascent=12 len=15
   Font Bounding box     w= 7 h=14 x= 0 y=-3
@@ -71536,7 +71323,7 @@ const u8g_fntpgm_uint8_t u8g_font_profont15r[1372] U8G_FONT_SECTION("u8g_font_pr
   2,7,0,4,100,152,0,0,0,7,0,0};
 /*
   Fontname: ProFont17
-  Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5
+  Copyright: ProFont Distribution 2.2 � Generated by Fontographer 4.1.5
   Capital A Height: 11, '1' Height: 11
   Calculated Max Values w= 9 h=17 x= 5 y=10 dx=14 dy= 0 ascent=14 len=32
   Font Bounding box     w=14 h=16 x= 0 y=-3
@@ -71780,7 +71567,7 @@ const u8g_fntpgm_uint8_t u8g_font_profont17[3681] U8G_FONT_SECTION("u8g_font_pro
   60};
 /*
   Fontname: ProFont17
-  Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5
+  Copyright: ProFont Distribution 2.2 � Generated by Fontographer 4.1.5
   Capital A Height: 11, '1' Height: 11
   Calculated Max Values w= 9 h=17 x= 3 y= 9 dx=14 dy= 0 ascent=14 len=32
   Font Bounding box     w=14 h=16 x= 0 y=-3
@@ -71893,7 +71680,7 @@ const u8g_fntpgm_uint8_t u8g_font_profont17r[1590] U8G_FONT_SECTION("u8g_font_pr
   0,0,0,14,0,0};
 /*
   Fontname: ProFont22
-  Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5
+  Copyright: ProFont Distribution 2.2 � Generated by Fontographer 4.1.5
   Capital A Height: 14, '1' Height: 14
   Calculated Max Values w=12 h=22 x= 6 y=12 dx=12 dy= 0 ascent=18 len=44
   Font Bounding box     w=12 h=21 x= 0 y=-4
@@ -72310,7 +72097,7 @@ const u8g_fntpgm_uint8_t u8g_font_profont22[6454] U8G_FONT_SECTION("u8g_font_pro
   1,192,63,128,63,0};
 /*
   Fontname: ProFont22
-  Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5
+  Copyright: ProFont Distribution 2.2 � Generated by Fontographer 4.1.5
   Capital A Height: 14, '1' Height: 14
   Calculated Max Values w=12 h=22 x= 4 y=12 dx=12 dy= 0 ascent=18 len=40
   Font Bounding box     w=12 h=21 x= 0 y=-4
@@ -72493,7 +72280,7 @@ const u8g_fntpgm_uint8_t u8g_font_profont22r[2719] U8G_FONT_SECTION("u8g_font_pr
   6,48,192,124,192,207,128,195,0,0,0,0,12,0,0};
 /*
   Fontname: ProFont29
-  Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5
+  Copyright: ProFont Distribution 2.2 � Generated by Fontographer 4.1.5
   Capital A Height: 19, '1' Height: 19
   Calculated Max Values w=16 h=29 x= 8 y=16 dx=16 dy= 0 ascent=24 len=58
   Font Bounding box     w=16 h=28 x= 0 y=-5
@@ -73048,7 +72835,7 @@ const u8g_fntpgm_uint8_t u8g_font_profont29[8666] U8G_FONT_SECTION("u8g_font_pro
   0,28,0,56,31,248,31,240,31,224};
 /*
   Fontname: ProFont29
-  Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5
+  Copyright: ProFont Distribution 2.2 � Generated by Fontographer 4.1.5
   Capital A Height: 19, '1' Height: 19
   Calculated Max Values w=16 h=29 x= 5 y=15 dx=16 dy= 0 ascent=24 len=58
   Font Bounding box     w=16 h=28 x= 0 y=-5
@@ -83005,7 +82792,7 @@ const u8g_fntpgm_uint8_t u8g_font_timR24r[4764] U8G_FONT_SECTION("u8g_font_timR2
   18,1,7,62,3,127,135,225,254,192,124,255};
 /*
   Fontname: -FreeType-Teachers Pet Sans Serif Bold-Medium-R-Normal--8-80-72-72-P-61-ISO10646-1
-  Copyright: © www.orgdot.com
+  Copyright: � www.orgdot.com
   Capital A Height: 9, '1' Height: 9
   Calculated Max Values w=11 h=13 x= 1 y=10 dx=12 dy= 0 ascent=13 len=18
   Font Bounding box     w=11 h=17 x= 0 y=-4
@@ -83185,7 +82972,7 @@ const u8g_fntpgm_uint8_t u8g_font_tpssb[2656] U8G_FONT_SECTION("u8g_font_tpssb")
   };
 /*
   Fontname: -FreeType-Teachers Pet Sans Serif Bold-Medium-R-Normal--8-80-72-72-P-61-ISO10646-1
-  Copyright: © www.orgdot.com
+  Copyright: � www.orgdot.com
   Capital A Height: 0, '1' Height: 9
   Calculated Max Values w= 6 h= 9 x= 1 y= 3 dx= 8 dy= 0 ascent= 9 len= 9
   Font Bounding box     w=11 h=17 x= 0 y=-4
@@ -83214,7 +83001,7 @@ const u8g_fntpgm_uint8_t u8g_font_tpssbn[240] U8G_FONT_SECTION("u8g_font_tpssbn"
   };
 /*
   Fontname: -FreeType-Teachers Pet Sans Serif Bold-Medium-R-Normal--8-80-72-72-P-61-ISO10646-1
-  Copyright: © www.orgdot.com
+  Copyright: � www.orgdot.com
   Capital A Height: 9, '1' Height: 9
   Calculated Max Values w=10 h=13 x= 1 y=10 dx=12 dy= 0 ascent=12 len=18
   Font Bounding box     w=11 h=17 x= 0 y=-4
@@ -83312,7 +83099,7 @@ const u8g_fntpgm_uint8_t u8g_font_tpssbr[1346] U8G_FONT_SECTION("u8g_font_tpssbr
   184,255};
 /*
   Fontname: -FreeType-Teachers Pet Sans Serif-Medium-R-Normal--8-80-72-72-P-18-ISO10646-1
-  Copyright: © www.orgdot.com
+  Copyright: � www.orgdot.com
   Capital A Height: 9, '1' Height: 9
   Calculated Max Values w= 9 h=13 x= 1 y=10 dx=11 dy= 0 ascent=13 len=18
   Font Bounding box     w=11 h=17 x=-1 y=-4
@@ -83488,7 +83275,7 @@ const u8g_fntpgm_uint8_t u8g_font_tpss[2605] U8G_FONT_SECTION("u8g_font_tpss") =
   252,80,0,136,136,136,136,136,120,8,8,136,112};
 /*
   Fontname: -FreeType-Teachers Pet Sans Serif-Medium-R-Normal--8-80-72-72-P-18-ISO10646-1
-  Copyright: © www.orgdot.com
+  Copyright: � www.orgdot.com
   Capital A Height: 0, '1' Height: 9
   Calculated Max Values w= 5 h= 9 x= 1 y= 3 dx= 7 dy= 0 ascent= 9 len= 9
   Font Bounding box     w=11 h=17 x=-1 y=-4
@@ -83516,7 +83303,7 @@ const u8g_fntpgm_uint8_t u8g_font_tpssn[238] U8G_FONT_SECTION("u8g_font_tpssn")
   8,8,136,112,1,4,4,3,1,0,128,0,0,128};
 /*
   Fontname: -FreeType-Teachers Pet Sans Serif-Medium-R-Normal--8-80-72-72-P-18-ISO10646-1
-  Copyright: © www.orgdot.com
+  Copyright: � www.orgdot.com
   Capital A Height: 9, '1' Height: 9
   Calculated Max Values w= 9 h=13 x= 1 y=10 dx=11 dy= 0 ascent=12 len=16
   Font Bounding box     w=11 h=17 x=-1 y=-4
@@ -83974,557 +83761,6 @@ const u8g_fntpgm_uint8_t u8g_font_u8glib_4r[664] U8G_FONT_SECTION("u8g_font_u8gl
   1,54,70,96,64,128,128,64,96,1,22,38,128,128,128,128,
   128,128,1,54,70,192,64,32,32,64,192,5,66,82,80,160,
   2,69,85,240,144,144,144,240};
-/*
-  Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1
-  Copyright: 
-  Capital A Height: 10, '1' Height: 10
-  Calculated Max Values w=16 h=16 x= 4 y=14 dx=16 dy= 0 ascent=14 len=32
-  Font Bounding box     w=16 h=16 x= 0 y=-2
-  Calculated Min Values           x= 0 y=-2 dx= 0 dy= 0
-  Pure Font   ascent =10 descent=-2
-  X Font      ascent =11 descent=-2
-  Max Font    ascent =14 descent=-2
-*/
-#include "u8g.h"
-const u8g_fntpgm_uint8_t u8g_font_unifont_0_10[5136] U8G_FONT_SECTION("u8g_font_unifont_0_10") = {
-  0,16,16,0,254,10,5,43,7,25,10,255,254,14,254,11,
-  254,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128,
-  0,65,241,193,0,65,241,193,0,125,1,128,0,0,1,128,
-  0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0,
-  1,128,0,0,1,128,0,69,241,196,64,68,65,168,64,16,
-  65,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32,
-  16,0,254,170,170,0,1,128,0,0,1,128,0,125,241,193,
-  0,125,241,193,0,65,1,128,0,0,1,128,0,0,1,128,
-  0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0,
-  1,128,0,61,225,193,16,65,225,193,32,61,17,128,0,0,
-  1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170,
-  170,0,1,128,0,0,1,128,0,60,225,193,16,57,17,133,
-  16,120,225,128,0,0,1,128,0,0,1,128,0,85,85,16,
-  16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,61,
-  241,192,64,56,65,132,64,121,241,128,0,0,1,128,0,0,
-  1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128,
-  0,0,1,128,0,114,57,202,32,74,57,202,32,115,185,128,
-  0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0,
-  254,170,170,0,1,128,0,0,1,128,0,113,137,202,24,74,
-  9,202,8,113,157,128,0,0,1,128,0,0,1,128,0,85,
-  85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128,
-  0,113,153,202,4,74,9,202,16,113,157,128,0,0,1,128,
-  0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0,
-  1,128,0,0,1,128,0,113,153,202,4,74,25,202,4,113,
-  153,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32,
-  16,0,254,170,170,0,1,128,0,0,1,128,0,113,133,202,
-  12,74,21,202,28,113,133,128,0,0,1,128,0,0,1,128,
-  0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0,
-  1,128,0,73,147,234,84,106,89,219,212,74,83,128,0,0,
-  1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170,
-  170,0,1,128,0,0,1,128,0,52,83,194,154,49,23,137,
-  18,113,19,128,0,0,1,128,0,0,1,128,0,85,85,16,
-  16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,123,
-  185,193,36,121,57,193,36,121,57,128,0,0,1,128,0,0,
-  1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128,
-  0,0,1,128,0,51,37,196,180,71,173,196,164,52,165,128,
-  0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0,
-  254,170,170,0,1,128,0,0,1,128,0,125,17,193,176,125,
-  81,193,16,125,17,128,0,0,1,128,0,0,1,128,0,85,
-  85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128,
-  0,58,93,194,82,50,93,138,82,113,157,128,0,0,1,128,
-  0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0,
-  1,128,0,0,1,128,0,121,207,194,16,121,145,192,80,123,
-  143,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32,
-  16,0,254,170,170,0,1,128,0,0,1,128,0,121,193,194,
-  0,121,129,192,64,67,129,128,0,0,1,128,0,0,1,128,
-  0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0,
-  1,128,0,57,193,194,0,89,129,200,64,59,129,128,0,0,
-  1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170,
-  170,0,1,128,0,0,1,128,0,113,193,202,0,113,129,208,
-  64,75,129,128,0,0,1,128,0,0,1,128,0,85,85,16,
-  16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,73,
-  193,202,0,73,129,200,64,51,129,128,0,0,1,128,0,0,
-  1,128,0,85,85,0,0,0,8,0,14,1,10,10,8,4,
-  0,128,128,128,128,128,128,128,0,128,128,5,4,4,8,2,
-  8,136,136,136,136,6,10,10,8,1,0,36,36,36,252,72,
-  72,252,144,144,144,7,10,10,8,1,0,16,124,146,144,112,
-  28,18,146,124,16,7,10,10,8,1,0,98,148,148,104,16,
-  16,44,82,82,140,7,10,10,8,1,0,56,68,68,68,56,
-  114,138,132,140,114,1,4,4,8,4,8,128,128,128,128,3,
-  12,12,8,3,255,32,64,64,128,128,128,128,128,128,64,64,
-  32,3,12,12,8,2,255,128,64,64,32,32,32,32,32,32,
-  64,64,128,7,7,7,8,1,1,16,146,84,56,84,146,16,
-  7,7,7,8,1,1,16,16,16,254,16,16,16,2,4,4,
-  8,3,254,192,64,64,128,6,1,1,8,1,4,252,2,2,
-  2,8,3,0,192,192,6,10,10,8,1,0,4,4,8,16,
-  16,32,32,64,128,128,6,10,10,8,1,0,48,72,132,132,
-  132,132,132,132,72,48,5,10,10,8,2,0,32,96,160,32,
-  32,32,32,32,32,248,6,10,10,8,1,0,120,132,132,4,
-  24,32,64,128,128,252,6,10,10,8,1,0,120,132,132,4,
-  56,4,4,132,132,120,6,10,10,8,1,0,8,24,40,72,
-  136,136,252,8,8,8,6,10,10,8,1,0,252,128,128,128,
-  248,4,4,4,132,120,6,10,10,8,1,0,56,64,128,128,
-  248,132,132,132,132,120,6,10,10,8,1,0,252,4,4,8,
-  8,8,16,16,16,16,6,10,10,8,1,0,120,132,132,132,
-  120,132,132,132,132,120,6,10,10,8,1,0,120,132,132,132,
-  124,4,4,4,8,112,2,7,7,8,3,1,192,192,0,0,
-  0,192,192,2,9,9,8,3,255,192,192,0,0,0,192,64,
-  64,128,5,9,9,8,2,0,8,16,32,64,128,64,32,16,
-  8,6,5,5,8,1,2,252,0,0,0,252,5,9,9,8,
-  1,0,128,64,32,16,8,16,32,64,128,6,10,10,8,1,
-  0,120,132,132,4,8,16,16,0,16,16,6,10,10,8,1,
-  0,56,68,148,172,164,164,164,156,64,60,6,10,10,8,1,
-  0,48,72,72,132,132,252,132,132,132,132,6,10,10,8,1,
-  0,248,132,132,132,248,132,132,132,132,248,6,10,10,8,1,
-  0,120,132,132,128,128,128,128,132,132,120,6,10,10,8,1,
-  0,240,136,132,132,132,132,132,132,136,240,6,10,10,8,1,
-  0,252,128,128,128,248,128,128,128,128,252,6,10,10,8,1,
-  0,252,128,128,128,248,128,128,128,128,128,6,10,10,8,1,
-  0,120,132,132,128,128,156,132,132,140,116,6,10,10,8,1,
-  0,132,132,132,132,252,132,132,132,132,132,5,10,10,8,2,
-  0,248,32,32,32,32,32,32,32,32,248,7,10,10,8,1,
-  0,62,8,8,8,8,8,8,136,136,112,6,10,10,8,1,
-  0,132,136,144,160,192,192,160,144,136,132,6,10,10,8,1,
-  0,128,128,128,128,128,128,128,128,128,252,6,10,10,8,1,
-  0,132,132,204,204,180,180,132,132,132,132,6,10,10,8,1,
-  0,132,196,196,164,164,148,148,140,140,132,6,10,10,8,1,
-  0,120,132,132,132,132,132,132,132,132,120,6,10,10,8,1,
-  0,248,132,132,132,248,128,128,128,128,128,7,11,11,8,1,
-  255,120,132,132,132,132,132,132,180,204,120,6,6,10,10,8,
-  1,0,248,132,132,132,248,144,136,136,132,132,6,10,10,8,
-  1,0,120,132,132,128,96,24,4,132,132,120,7,10,10,8,
-  1,0,254,16,16,16,16,16,16,16,16,16,6,10,10,8,
-  1,0,132,132,132,132,132,132,132,132,132,120,7,10,10,8,
-  1,0,130,130,130,68,68,68,40,40,16,16,6,10,10,8,
-  1,0,132,132,132,132,180,180,204,204,132,132,6,10,10,8,
-  1,0,132,132,72,72,48,48,72,72,132,132,7,10,10,8,
-  1,0,130,130,68,68,40,16,16,16,16,16,6,10,10,8,
-  1,0,252,4,4,8,16,32,64,128,128,252,3,12,12,8,
-  4,255,224,128,128,128,128,128,128,128,128,128,128,224,6,10,
-  10,8,1,0,128,128,64,32,32,16,16,8,4,4,3,12,
-  12,8,1,255,224,32,32,32,32,32,32,32,32,32,32,224,
-  6,3,3,8,1,9,48,72,132,7,1,1,8,1,255,254,
-  3,3,3,8,2,10,128,64,32,6,8,8,8,1,0,120,
-  132,4,124,132,132,140,116,6,11,11,8,1,0,128,128,128,
-  184,196,132,132,132,132,196,184,6,8,8,8,1,0,120,132,
-  128,128,128,128,132,120,6,11,11,8,1,0,4,4,4,116,
-  140,132,132,132,132,140,116,6,8,8,8,1,0,120,132,132,
-  252,128,128,132,120,5,11,11,8,1,0,24,32,32,32,248,
-  32,32,32,32,32,32,6,11,11,8,1,254,4,116,136,136,
-  136,112,64,120,132,132,120,6,11,11,8,1,0,128,128,128,
-  184,196,132,132,132,132,132,132,5,11,11,8,2,0,32,32,
-  0,96,32,32,32,32,32,32,248,5,13,13,8,1,254,8,
-  8,0,24,8,8,8,8,8,8,8,144,96,6,10,10,8,
-  1,0,128,128,136,144,160,192,160,144,136,132,5,10,10,8,
-  2,0,96,32,32,32,32,32,32,32,32,248,7,8,8,8,
-  1,0,236,146,146,146,146,146,146,146,6,8,8,8,1,0,
-  184,196,132,132,132,132,132,132,6,8,8,8,1,0,120,132,
-  132,132,132,132,132,120,6,10,10,8,1,254,184,196,132,132,
-  132,132,196,184,128,128,6,10,10,8,1,254,116,140,132,132,
-  132,132,140,116,4,4,6,8,8,8,1,0,184,196,132,128,
-  128,128,128,128,6,8,8,8,1,0,120,132,128,96,24,4,
-  132,120,5,10,10,8,1,0,32,32,248,32,32,32,32,32,
-  32,24,6,8,8,8,1,0,132,132,132,132,132,132,140,116,
-  6,8,8,8,1,0,132,132,132,72,72,72,48,48,7,8,
-  8,8,1,0,130,146,146,146,146,146,146,108,6,8,8,8,
-  1,0,132,132,72,48,48,72,132,132,6,10,10,8,1,254,
-  132,132,132,132,132,76,52,4,4,120,6,8,8,8,1,0,
-  252,4,8,16,32,64,128,252,3,12,12,8,3,255,96,128,
-  128,64,64,128,128,64,64,128,128,96,1,14,14,8,4,254,
-  128,128,128,128,128,128,128,128,128,128,128,128,128,128,3,12,
-  12,8,2,255,192,32,32,64,64,32,32,64,64,32,32,192,
-  7,3,3,8,1,8,98,146,140,16,16,32,16,0,254,170,
-  170,0,1,128,0,0,1,128,0,115,209,202,16,75,209,202,
-  16,115,223,128,0,0,1,128,0,0,1,128,0,85,85,16,
-  16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,113,
-  157,202,82,115,211,194,82,66,93,128,0,0,1,128,0,0,
-  1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128,
-  0,0,1,128,0,73,157,202,82,122,93,202,80,73,145,128,
-  0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0,
-  254,170,170,0,1,128,0,0,1,128,0,115,147,202,82,115,
-  159,202,18,114,19,128,0,0,1,128,0,0,1,128,0,85,
-  85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128,
-  0,75,147,234,82,91,159,202,82,75,147,128,0,0,1,128,
-  0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0,
-  1,128,0,0,1,128,0,116,185,166,164,37,165,164,164,116,
-  185,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32,
-  16,0,254,170,170,0,1,128,0,0,1,128,0,75,209,234,
-  16,91,209,202,16,75,223,128,0,0,1,128,0,0,1,128,
-  0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0,
-  1,128,0,57,205,194,18,49,159,136,82,115,147,128,0,0,
-  1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170,
-  170,0,1,128,0,0,1,128,0,121,205,194,18,121,159,192,
-  82,123,147,128,0,0,1,128,0,0,1,128,0,85,85,16,
-  16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,75,
-  157,201,32,121,25,201,4,73,57,128,0,0,1,128,0,0,
-  1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128,
-  0,0,1,128,0,75,185,201,8,121,9,201,8,73,49,128,
-  0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0,
-  254,170,170,0,1,128,0,0,1,128,0,69,205,196,144,68,
-  137,168,132,16,153,128,0,0,1,128,0,0,1,128,0,85,
-  85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128,
-  0,114,29,202,18,114,19,194,18,67,221,128,0,0,1,128,
-  0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0,
-  1,128,0,0,1,128,0,114,19,202,18,114,19,194,18,67,
-  205,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32,
-  16,0,254,170,170,0,1,128,0,0,1,128,0,14,33,137,
-  32,14,33,138,32,9,33,128,0,0,1,128,0,0,1,128,
-  0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0,
-  1,128,0,57,221,194,2,49,141,136,80,115,159,128,0,0,
-  1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170,
-  170,0,1,128,0,0,1,128,0,57,221,194,2,49,141,136,
-  66,115,157,128,0,0,1,128,0,0,1,128,0,85,85,16,
-  16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,113,
-  207,202,16,74,13,202,2,113,221,128,0,0,1,128,0,0,
-  1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128,
-  0,0,1,128,0,114,69,202,76,114,69,194,68,65,143,128,
-  0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0,
-  254,170,170,0,1,128,0,0,1,128,0,114,93,202,66,114,
-  77,194,80,65,159,128,0,0,1,128,0,0,1,128,0,85,
-  85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128,
-  0,59,157,193,32,49,25,137,4,113,57,128,0,0,1,128,
-  0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0,
-  1,128,0,0,1,128,0,57,211,194,18,66,31,194,18,57,
-  211,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32,
-  16,0,254,170,170,0,1,128,0,0,1,128,0,69,17,237,
-  16,85,81,197,176,69,17,128,0,0,1,128,0,0,1,128,
-  0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0,
-  1,128,0,59,141,194,82,51,159,138,18,114,19,128,0,0,
-  1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170,
-  170,0,1,128,0,0,1,128,0,123,141,194,82,123,159,194,
-  18,122,19,128,0,0,1,128,0,0,1,128,0,85,85,16,
-  16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,57,
-  143,194,80,50,77,138,66,113,157,128,0,0,1,128,0,0,
-  1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128,
-  0,0,1,128,0,51,155,196,34,37,163,148,162,99,155,128,
-  0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0,
-  254,170,170,0,1,128,0,0,1,128,0,57,221,194,8,50,
-  9,138,8,113,221,128,0,0,1,128,0,0,1,128,0,85,
-  85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128,
-  0,57,221,194,8,65,137,192,72,59,157,128,0,0,1,128,
-  0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0,
-  1,128,0,0,1,128,0,14,249,144,32,12,33,130,32,28,
-  33,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32,
-  16,0,254,170,170,0,1,128,0,0,1,128,0,49,207,202,
-  16,73,145,200,80,51,143,128,0,0,1,128,0,0,1,128,
-  0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0,
-  1,128,0,114,33,203,96,114,161,194,32,66,33,128,0,0,
-  1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170,
-  170,0,1,128,0,0,1,128,0,51,143,202,80,123,145,202,
-  16,74,15,128,0,0,1,128,0,0,1,128,0,85,85,0,
-  0,0,8,0,14,1,10,10,8,4,0,128,128,0,128,128,
-  128,128,128,128,128,7,10,10,8,1,0,16,16,124,146,144,
-  144,146,124,16,16,7,10,10,8,1,0,28,32,32,32,248,
-  32,32,32,124,194,6,8,8,8,1,1,132,72,120,72,72,
-  120,72,132,7,10,10,8,1,0,130,68,40,16,254,16,254,
-  16,16,16,1,10,10,8,4,0,128,128,128,128,0,0,128,
-  128,128,128,6,10,10,8,1,0,120,132,128,120,132,132,120,
-  4,132,120,4,2,2,8,2,12,144,144,8,10,10,8,0,
-  0,60,66,153,165,161,161,165,153,66,60,5,7,7,8,2,
-  5,112,8,120,136,120,0,248,6,9,9,8,1,0,36,36,
-  72,72,144,72,72,36,36,6,4,4,8,1,0,252,4,4,
-  4,6,1,1,8,1,4,252,8,10,10,8,0,0,60,66,
-  185,165,165,185,169,165,66,60,6,1,1,8,1,11,252,3,
-  4,4,8,2,10,64,160,160,64,7,9,9,8,1,1,16,
-  16,16,254,16,16,16,0,254,5,7,7,8,2,5,112,136,
-  8,112,128,128,248,5,7,7,8,2,5,112,136,8,112,8,
-  136,112,3,3,3,8,3,10,32,64,128,5,8,8,8,2,
-  254,136,136,136,136,216,168,128,128,6,12,12,8,1,255,124,
-  244,244,244,244,116,20,20,20,20,20,28,2,2,2,8,3,
-  4,192,192,3,2,2,8,2,254,32,192,3,7,7,8,2,
-  5,32,96,160,32,32,32,32,5,7,7,8,2,5,112,136,
-  136,136,112,0,248,6,9,9,8,1,0,144,144,72,72,36,
-  72,72,144,144,6,10,10,8,1,0,68,196,72,80,80,36,
-  44,84,156,132,6,10,10,8,1,0,68,196,72,80,80,40,
-  52,68,136,156,6,10,10,8,1,0,196,36,72,48,208,36,
-  44,84,156,132,6,10,10,8,1,0,16,16,0,16,16,96,
-  132,132,132,120,6,14,14,8,1,0,96,24,0,0,48,72,
-  72,132,132,252,132,132,132,132,6,14,14,8,1,0,24,96,
-  0,0,48,72,72,132,132,252,132,132,132,132,6,14,14,8,
-  1,0,48,72,0,0,48,72,72,132,132,252,132,132,132,132,
-  6,14,14,8,1,0,100,152,0,0,48,72,72,132,132,252,
-  132,132,132,132,6,14,14,8,1,0,72,72,0,0,48,72,
-  72,132,132,252,132,132,132,132,6,14,14,8,1,0,48,72,
-  48,0,48,72,72,132,132,252,132,132,132,132,7,10,10,8,
-  1,0,62,80,144,144,254,144,144,144,144,158,6,12,12,8,
-  1,254,120,132,132,128,128,128,128,132,132,120,16,96,6,14,
-  14,8,1,0,96,24,0,0,252,128,128,128,248,128,128,128,
-  128,252,6,14,14,8,1,0,24,96,0,0,252,128,128,128,
-  248,128,128,128,128,252,6,14,14,8,1,0,48,72,0,0,
-  252,128,128,128,248,128,128,128,128,252,6,14,14,8,1,0,
-  72,72,0,0,252,128,128,128,248,128,128,128,128,252,5,14,
-  14,8,2,0,96,24,0,0,248,32,32,32,32,32,32,32,
-  32,248,5,14,14,8,2,0,48,192,0,0,248,32,32,32,
-  32,32,32,32,32,248,5,14,14,8,2,0,96,144,0,0,
-  248,32,32,32,32,32,32,32,32,248,5,14,14,8,2,0,
-  144,144,0,0,248,32,32,32,32,32,32,32,32,248,7,10,
-  10,8,0,0,120,68,66,66,242,66,66,66,68,120,6,14,
-  14,8,1,0,100,152,0,0,132,196,196,164,164,148,148,140,
-  140,132,6,14,14,8,1,0,96,24,0,0,120,132,132,132,
-  132,132,132,132,132,120,6,14,14,8,1,0,24,96,0,0,
-  120,132,132,132,132,132,132,132,132,120,6,14,14,8,1,0,
-  48,72,0,0,120,132,132,132,132,132,132,132,132,120,6,14,
-  14,8,1,0,100,152,0,0,120,132,132,132,132,132,132,132,
-  132,120,6,14,14,8,1,0,72,72,0,0,120,132,132,132,
-  132,132,132,132,132,120,6,5,5,8,1,2,132,72,48,72,
-  132,6,12,12,8,1,255,4,116,136,140,148,148,164,164,196,
-  68,184,128,6,14,14,8,1,0,96,24,0,0,132,132,132,
-  132,132,132,132,132,132,120,6,14,14,8,1,0,24,96,0,
-  0,132,132,132,132,132,132,132,132,132,120,6,14,14,8,1,
-  0,48,72,0,0,132,132,132,132,132,132,132,132,132,120,6,
-  14,14,8,1,0,72,72,0,0,132,132,132,132,132,132,132,
-  132,132,120,7,14,14,8,1,0,24,96,0,0,130,130,68,
-  68,40,16,16,16,16,16,6,11,11,8,1,0,128,128,240,
-  136,132,132,136,240,128,128,128,6,10,10,8,1,0,112,136,
-  136,136,248,132,132,132,196,184,6,12,12,8,1,0,96,24,
-  0,0,120,132,4,124,132,132,140,116,6,12,12,8,1,0,
-  24,96,0,0,120,132,4,124,132,132,140,116,6,12,12,8,
-  1,0,48,72,0,0,120,132,4,124,132,132,140,116,6,12,
-  12,8,1,0,100,152,0,0,120,132,4,124,132,132,140,116,
-  6,12,12,8,1,0,72,72,0,0,120,132,4,124,132,132,
-  140,116,6,13,13,8,1,0,48,72,48,0,0,120,132,4,
-  124,132,132,140,116,7,8,8,8,1,0,124,146,18,126,144,
-  144,146,124,6,10,10,8,1,254,120,132,128,128,128,128,132,
-  120,16,96,6,12,12,8,1,0,96,24,0,0,120,132,132,
-  252,128,128,132,120,6,12,12,8,1,0,24,96,0,0,120,
-  132,132,252,128,128,132,120,6,12,12,8,1,0,48,72,0,
-  0,120,132,132,252,128,128,132,120,6,12,12,8,1,0,72,
-  72,0,0,120,132,132,252,128,128,132,120,5,12,12,8,2,
-  0,192,48,0,0,96,32,32,32,32,32,32,248,5,12,12,
-  8,2,0,48,192,0,0,96,32,32,32,32,32,32,248,5,
-  12,12,8,2,0,96,144,0,0,96,32,32,32,32,32,32,
-  248,5,12,12,8,2,0,144,144,0,0,96,32,32,32,32,
-  32,32,248,6,12,12,8,1,0,100,24,40,68,4,124,132,
-  132,132,132,132,120,6,12,12,8,1,0,100,152,0,0,184,
-  196,132,132,132,132,132,132,6,12,12,8,1,0,96,24,0,
-  0,120,132,132,132,132,132,132,120,6,12,12,8,1,0,24,
-  96,0,0,120,132,132,132,132,132,132,120,6,12,12,8,1,
-  0,48,72,0,0,120,132,132,132,132,132,132,120,6,12,12,
-  8,1,0,100,152,0,0,120,132,132,132,132,132,132,120,6,
-  12,12,8,1,0,72,72,0,0,120,132,132,132,132,132,132,
-  120,6,7,7,8,1,1,48,0,0,252,0,0,48,6,10,
-  10,8,1,255,4,120,140,148,148,164,164,196,120,128,6,12,
-  12,8,1,0,96,24,0,0,132,132,132,132,132,132,140,116,
-  6,12,12,8,1,0,24,96,0,0,132,132,132,132,132,132,
-  140,116,6,12,12,8,1,0,48,72,0,0,132,132,132,132,
-  132,132,140,116,6,12,12,8,1,0,72,72,0,0,132,132,
-  132,132,132,132,140,116,6,14,14,8,1,254,24,96,0,0,
-  132,132,132,132,132,76,52,4,4,120,5,12,12,8,2,254,
-  128,128,240,136,136,136,144,160,192,128,128,128,6,14,14,8,
-  1,254,72,72,0,0,132,132,132,132,132,76,52,4,4,120
-  };
-/*
-  Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1
-  Copyright: 
-  Capital A Height: 10, '1' Height: 10
-  Calculated Max Values w=16 h=16 x= 5 y=14 dx=16 dy= 0 ascent=14 len=32
-  Font Bounding box     w=16 h=16 x= 0 y=-2
-  Calculated Min Values           x= 0 y=-2 dx= 0 dy= 0
-  Pure Font   ascent =10 descent=-2
-  X Font      ascent =11 descent=-2
-  Max Font    ascent =14 descent=-2
-*/
-#include "u8g.h"
-const u8g_fntpgm_uint8_t u8g_font_unifont_0_11[3240] U8G_FONT_SECTION("u8g_font_unifont_0_11") = {
-  0,16,16,0,254,10,1,231,3,213,32,255,254,14,254,11,
-  254,0,0,0,8,0,14,1,10,10,8,4,0,128,128,128,
-  128,128,128,128,0,128,128,5,4,4,8,2,8,136,136,136,
-  136,6,10,10,8,1,0,36,36,36,252,72,72,252,144,144,
-  144,7,10,10,8,1,0,16,124,146,144,112,28,18,146,124,
-  16,7,10,10,8,1,0,98,148,148,104,16,16,44,82,82,
-  140,7,10,10,8,1,0,56,68,68,68,56,114,138,132,140,
-  114,1,4,4,8,4,8,128,128,128,128,3,12,12,8,3,
-  255,32,64,64,128,128,128,128,128,128,64,64,32,3,12,12,
-  8,2,255,128,64,64,32,32,32,32,32,32,64,64,128,7,
-  7,7,8,1,1,16,146,84,56,84,146,16,7,7,7,8,
-  1,1,16,16,16,254,16,16,16,2,4,4,8,3,254,192,
-  64,64,128,6,1,1,8,1,4,252,2,2,2,8,3,0,
-  192,192,6,10,10,8,1,0,4,4,8,16,16,32,32,64,
-  128,128,6,10,10,8,1,0,48,72,132,132,132,132,132,132,
-  72,48,5,10,10,8,2,0,32,96,160,32,32,32,32,32,
-  32,248,6,10,10,8,1,0,120,132,132,4,24,32,64,128,
-  128,252,6,10,10,8,1,0,120,132,132,4,56,4,4,132,
-  132,120,6,10,10,8,1,0,8,24,40,72,136,136,252,8,
-  8,8,6,10,10,8,1,0,252,128,128,128,248,4,4,4,
-  132,120,6,10,10,8,1,0,56,64,128,128,248,132,132,132,
-  132,120,6,10,10,8,1,0,252,4,4,8,8,8,16,16,
-  16,16,6,10,10,8,1,0,120,132,132,132,120,132,132,132,
-  132,120,6,10,10,8,1,0,120,132,132,132,124,4,4,4,
-  8,112,2,7,7,8,3,1,192,192,0,0,0,192,192,2,
-  9,9,8,3,255,192,192,0,0,0,192,64,64,128,5,9,
-  9,8,2,0,8,16,32,64,128,64,32,16,8,6,5,5,
-  8,1,2,252,0,0,0,252,5,9,9,8,1,0,128,64,
-  32,16,8,16,32,64,128,6,10,10,8,1,0,120,132,132,
-  4,8,16,16,0,16,16,6,10,10,8,1,0,56,68,148,
-  172,164,164,164,156,64,60,6,10,10,8,1,0,48,72,72,
-  132,132,252,132,132,132,132,6,10,10,8,1,0,248,132,132,
-  132,248,132,132,132,132,248,6,10,10,8,1,0,120,132,132,
-  128,128,128,128,132,132,120,6,10,10,8,1,0,240,136,132,
-  132,132,132,132,132,136,240,6,10,10,8,1,0,252,128,128,
-  128,248,128,128,128,128,252,6,10,10,8,1,0,252,128,128,
-  128,248,128,128,128,128,128,6,10,10,8,1,0,120,132,132,
-  128,128,156,132,132,140,116,6,10,10,8,1,0,132,132,132,
-  132,252,132,132,132,132,132,5,10,10,8,2,0,248,32,32,
-  32,32,32,32,32,32,248,7,10,10,8,1,0,62,8,8,
-  8,8,8,8,136,136,112,6,10,10,8,1,0,132,136,144,
-  160,192,192,160,144,136,132,6,10,10,8,1,0,128,128,128,
-  128,128,128,128,128,128,252,6,10,10,8,1,0,132,132,204,
-  204,180,180,132,132,132,132,6,10,10,8,1,0,132,196,196,
-  164,164,148,148,140,140,132,6,10,10,8,1,0,120,132,132,
-  132,132,132,132,132,132,120,6,10,10,8,1,0,248,132,132,
-  132,248,128,128,128,128,128,7,11,11,8,1,255,120,132,132,
-  132,132,132,132,180,204,120,6,6,10,10,8,1,0,248,132,
-  132,132,248,144,136,136,132,132,6,10,10,8,1,0,120,132,
-  132,128,96,24,4,132,132,120,7,10,10,8,1,0,254,16,
-  16,16,16,16,16,16,16,16,6,10,10,8,1,0,132,132,
-  132,132,132,132,132,132,132,120,7,10,10,8,1,0,130,130,
-  130,68,68,68,40,40,16,16,6,10,10,8,1,0,132,132,
-  132,132,180,180,204,204,132,132,6,10,10,8,1,0,132,132,
-  72,72,48,48,72,72,132,132,7,10,10,8,1,0,130,130,
-  68,68,40,16,16,16,16,16,6,10,10,8,1,0,252,4,
-  4,8,16,32,64,128,128,252,3,12,12,8,4,255,224,128,
-  128,128,128,128,128,128,128,128,128,224,6,10,10,8,1,0,
-  128,128,64,32,32,16,16,8,4,4,3,12,12,8,1,255,
-  224,32,32,32,32,32,32,32,32,32,32,224,6,3,3,8,
-  1,9,48,72,132,7,1,1,8,1,255,254,3,3,3,8,
-  2,10,128,64,32,6,8,8,8,1,0,120,132,4,124,132,
-  132,140,116,6,11,11,8,1,0,128,128,128,184,196,132,132,
-  132,132,196,184,6,8,8,8,1,0,120,132,128,128,128,128,
-  132,120,6,11,11,8,1,0,4,4,4,116,140,132,132,132,
-  132,140,116,6,8,8,8,1,0,120,132,132,252,128,128,132,
-  120,5,11,11,8,1,0,24,32,32,32,248,32,32,32,32,
-  32,32,6,11,11,8,1,254,4,116,136,136,136,112,64,120,
-  132,132,120,6,11,11,8,1,0,128,128,128,184,196,132,132,
-  132,132,132,132,5,11,11,8,2,0,32,32,0,96,32,32,
-  32,32,32,32,248,5,13,13,8,1,254,8,8,0,24,8,
-  8,8,8,8,8,8,144,96,6,10,10,8,1,0,128,128,
-  136,144,160,192,160,144,136,132,5,10,10,8,2,0,96,32,
-  32,32,32,32,32,32,32,248,7,8,8,8,1,0,236,146,
-  146,146,146,146,146,146,6,8,8,8,1,0,184,196,132,132,
-  132,132,132,132,6,8,8,8,1,0,120,132,132,132,132,132,
-  132,120,6,10,10,8,1,254,184,196,132,132,132,132,196,184,
-  128,128,6,10,10,8,1,254,116,140,132,132,132,132,140,116,
-  4,4,6,8,8,8,1,0,184,196,132,128,128,128,128,128,
-  6,8,8,8,1,0,120,132,128,96,24,4,132,120,5,10,
-  10,8,1,0,32,32,248,32,32,32,32,32,32,24,6,8,
-  8,8,1,0,132,132,132,132,132,132,140,116,6,8,8,8,
-  1,0,132,132,132,72,72,72,48,48,7,8,8,8,1,0,
-  130,146,146,146,146,146,146,108,6,8,8,8,1,0,132,132,
-  72,48,48,72,132,132,6,10,10,8,1,254,132,132,132,132,
-  132,76,52,4,4,120,6,8,8,8,1,0,252,4,8,16,
-  32,64,128,252,3,12,12,8,3,255,96,128,128,64,64,128,
-  128,64,64,128,128,96,1,14,14,8,4,254,128,128,128,128,
-  128,128,128,128,128,128,128,128,128,128,3,12,12,8,2,255,
-  192,32,32,64,64,32,32,64,64,32,32,192,7,3,3,8,
-  1,8,98,146,140,16,16,32,16,0,254,170,170,0,1,128,
-  0,0,1,128,0,115,209,202,16,75,209,202,16,115,223,128,
-  0,0,1,128,0,0,1,128,0,85,85,6,10,10,8,1,
-  254,184,196,132,132,132,132,132,132,128,128,6,10,10,8,1,
-  254,116,140,132,132,132,140,116,4,132,120,4,8,8,8,3,
-  0,192,64,64,64,64,64,64,112,7,12,12,8,1,254,16,
-  16,148,154,146,146,146,146,178,82,16,16,7,11,11,8,1,
-  0,28,34,32,32,248,32,32,32,32,32,32,6,8,8,8,
-  1,0,120,132,132,132,132,132,132,120,7,12,12,8,1,254,
-  112,144,144,112,28,18,18,18,146,124,16,16,7,10,10,8,
-  1,0,128,128,128,136,136,136,136,136,136,118,6,14,14,8,
-  1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84,
-  2,7,7,8,3,1,192,192,0,0,0,192,192,6,2,2,
-  8,1,1,196,120,6,14,14,8,1,255,168,84,168,84,168,
-  84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,
-  84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,
-  8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,
-  84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,
-  84,168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,
-  84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,
-  84,168,84,168,84,168,84,168,84,168,84,168,84,5,4,4,
-  8,2,255,32,32,112,136,6,3,3,8,1,9,48,0,204,
-  4,6,6,8,2,8,48,192,48,192,48,192,2,3,3,8,
-  3,10,192,0,192,4,3,3,8,2,10,176,128,176,3,3,
-  3,8,3,255,128,128,96,5,5,5,8,2,9,32,112,248,
-  112,32,6,4,4,8,1,9,72,164,148,72,3,3,3,8,
-  0,9,192,32,32,2,3,3,8,5,255,64,128,64,4,4,
-  4,8,1,254,208,208,16,224,3,3,3,8,3,10,96,128,
-  128,3,3,3,8,5,9,96,128,128,5,5,5,8,3,9,
-  48,64,152,160,32,8,4,4,8,0,9,66,165,66,36,3,
-  4,4,8,5,9,64,160,64,128,4,3,3,8,0,8,80,
-  96,128,5,3,3,8,1,254,136,112,32,3,3,3,8,2,
-  255,32,32,224,2,3,3,8,3,255,64,128,64,3,3,3,
-  8,2,255,32,32,192,5,4,4,8,1,254,40,200,16,96,
-  4,5,5,8,2,254,96,128,96,16,96,3,3,3,8,2,
-  9,192,32,32,3,4,4,8,1,9,64,160,64,32,5,4,
-  4,8,2,254,136,112,32,32,2,3,3,8,2,10,64,128,
-  64,3,3,3,8,3,10,32,32,224,3,3,3,8,5,255,
-  128,128,96,5,4,4,8,0,9,72,168,168,144,4,4,4,
-  8,2,9,96,144,144,96,2,3,3,8,3,255,192,0,192,
-  5,3,3,8,2,255,168,0,72,5,3,3,8,2,255,232,
-  0,8,5,3,3,8,2,255,232,64,72,2,2,2,8,3,
-  0,192,192,6,2,2,8,1,0,204,204,6,3,3,8,1,
-  254,204,0,48,4,1,1,8,2,0,240,5,3,3,8,2,
-  254,248,32,32,2,2,2,8,2,10,192,192,2,2,2,8,
-  1,10,192,192,5,3,3,8,2,255,128,32,8,2,1,1,
-  8,3,5,192,1,3,3,8,4,255,128,128,128,6,2,2,
-  8,1,10,124,248,4,1,1,8,2,10,240,1,9,9,8,
-  4,0,128,128,128,128,128,128,128,128,128,2,2,2,8,5,
-  10,192,192,2,2,2,8,1,10,192,192,3,8,8,8,3,
-  0,64,224,64,0,0,64,224,64,2,2,2,8,3,10,192,
-  192,2,2,2,8,3,10,192,192,4,9,9,8,2,0,224,
-  128,128,128,128,128,128,128,240,5,4,4,8,2,254,248,32,
-  32,32,6,14,14,8,1,255,168,84,168,84,168,84,168,84,
-  168,84,168,84,168,84,6,14,14,8,1,255,168,84,168,84,
-  168,84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,
-  168,84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,
-  14,8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,
-  168,84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,
-  168,84,168,84,168,84,6,14,14,8,1,255,168,84,168,84,
-  168,84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,
-  168,84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,
-  14,8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,
-  168,84,6,9,9,8,1,0,132,132,68,36,88,144,136,132,
-  132,7,9,9,8,1,0,248,8,8,8,8,8,8,8,254,
-  6,9,9,8,1,0,96,16,16,16,8,24,40,68,132,6,
-  9,9,8,1,0,252,8,8,8,8,8,8,8,8,6,9,
-  9,8,1,0,252,4,4,68,68,68,68,68,68,3,9,9,
-  8,2,0,224,32,32,32,32,32,32,32,32,5,9,9,8,
-  2,0,192,48,40,32,32,32,32,32,32,6,9,9,8,1,
-  0,252,68,68,68,68,68,68,68,68,6,9,9,8,1,0,
-  140,148,132,132,132,132,132,132,252,3,4,4,8,2,5,224,
-  32,32,32,6,11,11,8,1,254,252,4,4,4,4,4,4,
-  4,4,4,4,6,9,9,8,1,0,252,4,4,4,4,4,
-  4,4,248,5,11,11,8,2,0,128,128,248,8,8,8,8,
-  16,16,32,192,7,9,9,8,0,0,254,34,34,34,34,34,
-  34,34,62,7,9,9,8,1,0,156,98,66,130,130,130,130,
-  130,142,3,11,11,8,2,254,224,32,32,32,32,32,32,32,
-  32,32,32,4,9,9,8,2,0,112,16,16,16,16,16,16,
-  16,240,6,9,9,8,1,0,252,132,132,132,132,132,132,136,
-  240,7,9,9,8,0,0,18,18,18,18,18,18,18,18,254,
-  6,11,11,8,1,254,252,132,132,132,228,4,4,4,4,4,
-  4,6,9,9,8,1,0,252,132,132,132,228,4,4,4,252,
-  5,11,11,8,2,254,136,136,144,160,192,128,128,128,128,128,
-  128,6,9,9,8,1,0,132,132,72,48,16,8,4,4,252,
-  6,11,11,8,1,254,252,68,68,72,72,80,64,64,64,64,
-  64,6,9,9,8,1,0,252,4,4,4,4,4,4,4,4,
-  7,9,9,8,1,0,146,146,146,146,146,146,146,146,254,6,
-  9,9,8,1,0,124,68,68,68,68,68,68,68,196,6,14,
-  14,8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,
-  168,84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,
-  168,84,168,84,168,84,6,14,14,8,1,255,168,84,168,84,
-  168,84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,
-  168,84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,
-  14,8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,
-  168,84,7,9,9,8,1,0,238,34,34,34,34,34,34,34,
-  34,7,9,9,8,1,0,238,34,34,34,2,2,2,2,2,
-  7,4,4,8,1,5,238,34,34,34,3,3,3,8,4,9,
-  32,64,128,6,3,3,8,1,9,36,72,144,6,14,14,8,
-  1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84,
-  6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84,
-  168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84,
-  168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84,
-  168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8,
-  1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84,
-  6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84,
-  168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84,
-  168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84,
-  168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8,
-  1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84,
-  6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84,
-  168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84,
-  168,84,168,84,168,84,168,84};
 /*
   Fontname: -gnu-Unifont-Medium-R-Normal-Sans-16-160-75-75-c-80-iso10646-1
   Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception.

+ 1 - 1
app/u8glib/u8g_rot.c

@@ -40,7 +40,7 @@ uint8_t u8g_dev_rot90_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
 uint8_t u8g_dev_rot180_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
 uint8_t u8g_dev_rot270_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
 
-uint8_t u8g_dev_rot_dummy_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg)
+uint8_t u8g_dev_rot_dummy_fn(u8g_t *u8g, u8g_dev_t*dev, uint8_t msg, void *arg)
 {
   return 0;
 }

+ 2 - 1
app/u8glib/u8g_state.c

@@ -75,7 +75,8 @@ uint8_t global_SREG_backup;
 /*===============================================================*/
 /* AVR */
 
-#if defined(__AVR__)
+#if defined(__AVR_XMEGA__)
+#elif defined(__AVR__)
 #define U8G_ATMEGA_HW_SPI
 
 /* remove the definition for attiny */

+ 4 - 2
docs/en/modules/u8g.md

@@ -28,7 +28,7 @@ SPI only:
 - uc1611 - dogm240 and dogxl240 variants
 - uc1701 - dogs102 and mini12864 variants
 
-This integration is based on [v1.18.1](https://github.com/olikraus/U8glib_Arduino/releases/tag/1.18.1).
+This integration is based on [v1.19.1](https://github.com/olikraus/U8glib_Arduino/releases/tag/1.19.1).
 
 ## Overview
 ### I²C Connection
@@ -347,6 +347,9 @@ See [u8glib nextPage()](https://github.com/olikraus/u8glib/wiki/userreference#ne
 ## u8g.disp:setColorIndex()
 See [u8glib setColorIndex()](https://github.com/olikraus/u8glib/wiki/userreference#setcolortndex).
 
+## u8g.disp:setContrast()
+See [u8glib setContrast()](https://github.com/olikraus/u8glib/wiki/userreference#setcontrast).
+
 ## u8g.disp:setDefaultBackgroundColor()
 See [u8glib setDefaultBackgroundColor()](https://github.com/olikraus/u8glib/wiki/userreference#setdefaultbackgroundcolor).
 
@@ -437,7 +440,6 @@ See [u8glib undoScale()](https://github.com/olikraus/u8glib/wiki/userreference#u
 	- setCursorPos()
 	- setCursorStyle()
 - General functions
-	- setContrast()
 	- setPrintPos()
 	- setHardwareBackup()
 	- setRGB()