Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
authoretisserant
Wed, 01 Aug 2007 13:48:03 +0200
changeset 246 d635cfc520ee
parent 245 d43ebbed895f
child 247 e655aab6bfc9
Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
configure
examples/DS401_Master/.cvsignore
examples/DS401_Master/Makefile.in
examples/DS401_Master/TestMaster.c
examples/DS401_Master/TestMaster.h
examples/DS401_Master/TestMaster.od
examples/DS401_Master/TestMasterMicroMod.c
examples/DS401_Master/TestMasterMicroMod.h
examples/DS401_Master/TestMasterMicroMod.vcproj
examples/DS401_Master/getopt.c
examples/DS401_Master/getopt.h
examples/DS401_Slave_Gui/.cvsignore
examples/DS401_Slave_Gui/CallBack.cpp
examples/DS401_Slave_Gui/CallBack.h
examples/DS401_Slave_Gui/Makefile.in
examples/DS401_Slave_Gui/ObjDict.c
examples/DS401_Slave_Gui/ObjDict.h
examples/DS401_Slave_Gui/ObjDict.od
examples/DS401_Slave_Gui/TestSlaveGui.cpp
examples/DS401_Slave_Gui/TestSlaveGui.h
examples/DS401_Slave_Gui/TestSlaveGui.vcproj
examples/DS401_Slave_Gui/getopt.c
examples/DS401_Slave_Gui/getopt.h
examples/DS401_Slave_Gui/main.cpp
examples/DS401_Slave_Gui/main.h
examples/DS401_Slave_Gui/monicone.xpm
examples/DS401_Slave_Gui/tools.cpp
examples/DS401_Slave_Gui/tools.h
examples/Makefile.in
--- a/configure	Wed Jul 25 18:01:14 2007 +0200
+++ b/configure	Wed Aug 01 13:48:03 2007 +0200
@@ -651,6 +651,14 @@
 
 if [ "$SUB_TARGET" = "unix" ]; then
 	MAKEFILES=$MAKEFILES\
+\	examples/DS401_Master/Makefile.in
+fi
+if [ "$SUB_TARGET" = "unix" ]; then
+	MAKEFILES=$MAKEFILES\
+\	examples/DS401_Slave_Gui/Makefile.in
+fi
+if [ "$SUB_TARGET" = "unix" ]; then
+	MAKEFILES=$MAKEFILES\
 \	examples/TestMasterMicroMod/Makefile.in
 fi
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Master/.cvsignore	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,3 @@
+Makefile
+TestMasterMicroMod
+DS401_Master
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Master/Makefile.in	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,77 @@
+#! gmake
+
+#
+# Copyright (C) 2006 Laurent Bessard
+# 
+# This file is part of canfestival, a library implementing the canopen
+# stack
+# 
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+# 
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+# 
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+# 
+
+CC = SUB_CC
+OPT_CFLAGS = -O2
+CFLAGS = SUB_OPT_CFLAGS
+PROG_CFLAGS = SUB_PROG_CFLAGS
+EXE_CFLAGS = SUB_EXE_CFLAGS
+OS_NAME = SUB_OS_NAME
+ARCH_NAME = SUB_ARCH_NAME
+PREFIX = SUB_PREFIX
+TARGET = SUB_TARGET
+CAN_DRIVER = SUB_CAN_DRIVER
+TIMERS_DRIVER = SUB_TIMERS_DRIVER
+
+INCLUDES = -I../../include -I../../include/$(TARGET) -I../../include/$(CAN_DRIVER) -I../../include/$(TIMERS_DRIVER)
+
+MASTER_OBJS = TestMaster.o TestMasterMicroMod.o
+
+OBJS = $(MASTER_OBJS) ../../src/libcanfestival.a ../../drivers/$(TARGET)/libcanfestival_$(TARGET).a
+
+ifeq ($(TIMERS_DRIVER),timers_xeno)
+	PROGDEFINES = -DUSE_XENO
+endif
+
+all: DS401_Master
+
+../../drivers/$(TARGET)/libcanfestival_$(TARGET).a:
+	$(MAKE) -C ../../drivers/$(TARGET) libcanfestival_$(TARGET).a
+
+
+DS401_Master: TestMaster.c $(OBJS)
+	$(CC) $(CFLAGS) $(PROG_CFLAGS) ${PROGDEFINES} $(INCLUDES) -o $@ $(OBJS) $(EXE_CFLAGS)
+
+	
+TestMaster.c: TestMaster.od
+	$(MAKE) -C ../../objdictgen gnosis
+	python ../../objdictgen/objdictgen.py TestMaster.od TestMaster.c
+
+%o: %c
+	$(CC) $(CFLAGS) $(PROG_CFLAGS) ${PROGDEFINES} $(INCLUDES) -o $@ -c $<
+
+clean:
+	rm -f $(MASTER_OBJS)
+	rm -f DS401_Master
+
+mrproper: clean
+	rm -f TestMaster.c
+	
+install: DS401_Master
+	mkdir -p $(PREFIX)/bin/
+	cp $< $(PREFIX)/bin/
+	
+uninstall:
+	rm -f $(PREFIX)/bin/DS401_Master
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Master/TestMaster.c	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,566 @@
+
+/* File generated by gen_cfile.py. Should not be modified. */
+
+#include "TestMaster.h"
+
+/**************************************************************************/
+/* Declaration of the mapped variables                                    */
+/**************************************************************************/
+UNS8 DO = 0x0;		/* Mapped at index 0x2000, subindex 0x00 */
+INTEGER16 AO1 = 0x0;		/* Mapped at index 0x2001, subindex 0x00 */
+INTEGER16 AO2 = 0x0;		/* Mapped at index 0x2002, subindex 0x00 */
+INTEGER16 AO3 = 0x0;		/* Mapped at index 0x2003, subindex 0x00 */
+INTEGER16 AO4 = 0x0;		/* Mapped at index 0x2004, subindex 0x00 */
+INTEGER16 AI1 = 0x0;		/* Mapped at index 0x2005, subindex 0x00 */
+INTEGER16 AI2 = 0x0;		/* Mapped at index 0x2006, subindex 0x00 */
+INTEGER16 AI3 = 0x0;		/* Mapped at index 0x2007, subindex 0x00 */
+INTEGER16 AI4 = 0x0;		/* Mapped at index 0x2008, subindex 0x00 */
+INTEGER16 AI5 = 0x0;		/* Mapped at index 0x2009, subindex 0x00 */
+INTEGER16 AI6 = 0x0;		/* Mapped at index 0x200A, subindex 0x00 */
+INTEGER16 AI7 = 0x0;		/* Mapped at index 0x200B, subindex 0x00 */
+INTEGER16 AI8 = 0x0;		/* Mapped at index 0x200C, subindex 0x00 */
+UNS8 DI1 = 0x0;		/* Mapped at index 0x200F, subindex 0x00 */
+UNS8 DI2 = 0x0;		/* Mapped at index 0x2010, subindex 0x00 */
+UNS8 DI3 = 0x0;		/* Mapped at index 0x2011, subindex 0x00 */
+UNS8 DI4 = 0x0;		/* Mapped at index 0x2012, subindex 0x00 */
+UNS8 DI5 = 0x0;		/* Mapped at index 0x2013, subindex 0x00 */
+UNS8 DI6 = 0x0;		/* Mapped at index 0x2014, subindex 0x00 */
+UNS8 DI7 = 0x0;		/* Mapped at index 0x2015, subindex 0x00 */
+UNS8 DI8 = 0x0;		/* Mapped at index 0x2016, subindex 0x00 */
+
+/**************************************************************************/
+/* Declaration of the value range types                                   */
+/**************************************************************************/
+
+UNS32 TestMaster_valueRangeTest (UNS8 typeValue, void * value)
+{
+  switch (typeValue) {
+  }
+  return 0;
+}
+
+/**************************************************************************/
+/* The node id                                                            */
+/**************************************************************************/
+/* node_id default value.*/
+UNS8 TestMaster_bDeviceNodeId = 0x01;
+
+/**************************************************************************/
+/* Array of message processing information */
+
+const UNS8 TestMaster_iam_a_slave = 0;
+
+TIMER_HANDLE TestMaster_heartBeatTimers[1] = {TIMER_NONE,};
+
+/*
+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
+
+                               OBJECT DICTIONARY
+
+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
+*/
+
+/* index 0x1000 :   Device Type. */
+                    UNS32 TestMaster_obj1000 = 0x191;	/* 401 */
+                    subindex TestMaster_Index1000[] = 
+                     {
+                       { RO, uint32, sizeof (UNS32), (void*)&TestMaster_obj1000 }
+                     };
+
+/* index 0x1001 :   Error Register. */
+                    UNS8 TestMaster_obj1001 = 0x0;	/* 0 */
+                    subindex TestMaster_Index1001[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&TestMaster_obj1001 }
+                     };
+
+/* index 0x1005 :   SYNC COB ID. */
+                    UNS32 TestMaster_obj1005 = 0x40000080;	/* 1073741952 */
+                    ODCallback_t TestMaster_Index1005_callbacks[] = 
+                     {
+                       NULL,
+                     };
+                    subindex TestMaster_Index1005[] = 
+                     {
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1005 }
+                     };
+
+/* index 0x1006 :   Communication / Cycle Period. */
+                    UNS32 TestMaster_obj1006 = 0xC350;	/* 50000 */
+                    ODCallback_t TestMaster_Index1006_callbacks[] = 
+                     {
+                       NULL,
+                     };
+                    subindex TestMaster_Index1006[] = 
+                     {
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1006 }
+                     };
+
+/* index 0x1016 :   Consumer Heartbeat Time. */
+                    UNS8 TestMaster_highestSubIndex_obj1016 = 1; /* number of subindex - 1*/
+                    UNS32 TestMaster_obj1016[] = 
+                    {
+                      0x4005DC	/* 4195804 */
+                    };
+                    subindex TestMaster_Index1016[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1016 },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1016[0] }
+                     };
+
+/* index 0x1017 :   Producer Heartbeat Time */ 
+                    UNS16 TestMaster_obj1017 = 0x0;   /* 0 */
+
+/* index 0x1018 :   Identity. */
+                    UNS8 TestMaster_highestSubIndex_obj1018 = 4; /* number of subindex - 1*/
+                    UNS32 TestMaster_obj1018_Vendor_ID = 0x0;	/* 0 */
+                    UNS32 TestMaster_obj1018_Product_Code = 0x0;	/* 0 */
+                    UNS32 TestMaster_obj1018_Revision_Number = 0x0;	/* 0 */
+                    UNS32 TestMaster_obj1018_Serial_Number = 0x0;	/* 0 */
+                    subindex TestMaster_Index1018[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1018 },
+                       { RO, uint32, sizeof (UNS32), (void*)&TestMaster_obj1018_Vendor_ID },
+                       { RO, uint32, sizeof (UNS32), (void*)&TestMaster_obj1018_Product_Code },
+                       { RO, uint32, sizeof (UNS32), (void*)&TestMaster_obj1018_Revision_Number },
+                       { RO, uint32, sizeof (UNS32), (void*)&TestMaster_obj1018_Serial_Number }
+                     };
+
+/* index 0x1280 :   Client SDO 1 Parameter. */
+                    UNS8 TestMaster_highestSubIndex_obj1280 = 3; /* number of subindex - 1*/
+                    UNS32 TestMaster_obj1280_COB_ID_Client_to_Server_Transmit_SDO = 0x640;	/* 1600 */
+                    UNS32 TestMaster_obj1280_COB_ID_Server_to_Client_Receive_SDO = 0x5C0;	/* 1472 */
+                    INTEGER32 TestMaster_obj1280_Node_ID_of_the_SDO_Server = 0x40;	/* 64 */
+                    subindex TestMaster_Index1280[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1280 },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1280_COB_ID_Client_to_Server_Transmit_SDO },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1280_COB_ID_Server_to_Client_Receive_SDO },
+                       { RW, int32, sizeof (INTEGER32), (void*)&TestMaster_obj1280_Node_ID_of_the_SDO_Server }
+                     };
+
+/* index 0x1400 :   Receive PDO 1 Parameter. */
+                    UNS8 TestMaster_highestSubIndex_obj1400 = 5; /* number of subindex - 1*/
+                    UNS32 TestMaster_obj1400_COB_ID_used_by_PDO = 0x1C0;	/* 448 */
+                    UNS8 TestMaster_obj1400_Transmission_Type = 0x1;	/* 1 */
+                    UNS16 TestMaster_obj1400_Inhibit_Time = 0x0;	/* 0 */
+                    UNS8 TestMaster_obj1400_Compatibility_Entry = 0x0;	/* 0 */
+                    UNS16 TestMaster_obj1400_Event_Timer = 0x0;	/* 0 */
+                    subindex TestMaster_Index1400[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1400 },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1400_COB_ID_used_by_PDO },
+                       { RW, uint8, sizeof (UNS8), (void*)&TestMaster_obj1400_Transmission_Type },
+                       { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1400_Inhibit_Time },
+                       { RW, uint8, sizeof (UNS8), (void*)&TestMaster_obj1400_Compatibility_Entry },
+                       { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1400_Event_Timer }
+                     };
+
+/* index 0x1401 :   Receive PDO 2 Parameter. */
+                    UNS8 TestMaster_highestSubIndex_obj1401 = 5; /* number of subindex - 1*/
+                    UNS32 TestMaster_obj1401_COB_ID_used_by_PDO = 0x2C0;	/* 704 */
+                    UNS8 TestMaster_obj1401_Transmission_Type = 0x1;	/* 1 */
+                    UNS16 TestMaster_obj1401_Inhibit_Time = 0x0;	/* 0 */
+                    UNS8 TestMaster_obj1401_Compatibility_Entry = 0x0;	/* 0 */
+                    UNS16 TestMaster_obj1401_Event_Timer = 0x0;	/* 0 */
+                    subindex TestMaster_Index1401[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1401 },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1401_COB_ID_used_by_PDO },
+                       { RW, uint8, sizeof (UNS8), (void*)&TestMaster_obj1401_Transmission_Type },
+                       { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1401_Inhibit_Time },
+                       { RW, uint8, sizeof (UNS8), (void*)&TestMaster_obj1401_Compatibility_Entry },
+                       { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1401_Event_Timer }
+                     };
+
+/* index 0x1402 :   Receive PDO 3 Parameter. */
+                    UNS8 TestMaster_highestSubIndex_obj1402 = 5; /* number of subindex - 1*/
+                    UNS32 TestMaster_obj1402_COB_ID_used_by_PDO = 0x3C0;	/* 960 */
+                    UNS8 TestMaster_obj1402_Transmission_Type = 0x1;	/* 1 */
+                    UNS16 TestMaster_obj1402_Inhibit_Time = 0x0;	/* 0 */
+                    UNS8 TestMaster_obj1402_Compatibility_Entry = 0x0;	/* 0 */
+                    UNS16 TestMaster_obj1402_Event_Timer = 0x0;	/* 0 */
+                    subindex TestMaster_Index1402[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1402 },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1402_COB_ID_used_by_PDO },
+                       { RW, uint8, sizeof (UNS8), (void*)&TestMaster_obj1402_Transmission_Type },
+                       { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1402_Inhibit_Time },
+                       { RW, uint8, sizeof (UNS8), (void*)&TestMaster_obj1402_Compatibility_Entry },
+                       { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1402_Event_Timer }
+                     };
+
+/* index 0x1600 :   Receive PDO 1 Mapping. */
+                    UNS8 TestMaster_highestSubIndex_obj1600 = 8; /* number of subindex - 1*/
+                    UNS32 TestMaster_obj1600[] = 
+                    {
+                      0x200F0001,	/* 537853953 */
+                      0x20100001,	/* 537919489 */
+                      0x20110001,	/* 537985025 */
+                      0x20120001,	/* 538050561 */
+                      0x20130001,	/* 538116097 */
+                      0x20140001,	/* 538181633 */
+                      0x20150001,	/* 538247169 */
+                      0x20160001	/* 538312705 */
+                    };
+                    subindex TestMaster_Index1600[] = 
+                     {
+                       { RW, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1600 },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[0] },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[1] },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[2] },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[3] },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[4] },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[5] },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[6] },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1600[7] }
+                     };
+
+/* index 0x1601 :   Receive PDO 2 Mapping. */
+                    UNS8 TestMaster_highestSubIndex_obj1601 = 4; /* number of subindex - 1*/
+                    UNS32 TestMaster_obj1601[] = 
+                    {
+                      0x20050010,	/* 537198608 */
+                      0x20060010,	/* 537264144 */
+                      0x20070010,	/* 537329680 */
+                      0x20080010	/* 537395216 */
+                    };
+                    subindex TestMaster_Index1601[] = 
+                     {
+                       { RW, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1601 },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1601[0] },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1601[1] },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1601[2] },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1601[3] }
+                     };
+
+/* index 0x1602 :   Receive PDO 3 Mapping. */
+                    UNS8 TestMaster_highestSubIndex_obj1602 = 4; /* number of subindex - 1*/
+                    UNS32 TestMaster_obj1602[] = 
+                    {
+                      0x20090010,	/* 537460752 */
+                      0x200A0010,	/* 537526288 */
+                      0x200B0010,	/* 537591824 */
+                      0x200C0010	/* 537657360 */
+                    };
+                    subindex TestMaster_Index1602[] = 
+                     {
+                       { RW, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1602 },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1602[0] },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1602[1] },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1602[2] },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1602[3] }
+                     };
+
+/* index 0x1800 :   Transmit PDO 1 Parameter. */
+                    UNS8 TestMaster_highestSubIndex_obj1800 = 5; /* number of subindex - 1*/
+                    UNS32 TestMaster_obj1800_COB_ID_used_by_PDO = 0x240;	/* 576 */
+                    UNS8 TestMaster_obj1800_Transmission_Type = 0x1;	/* 1 */
+                    UNS16 TestMaster_obj1800_Inhibit_Time = 0x0;	/* 0 */
+                    UNS8 TestMaster_obj1800_Compatibility_Entry = 0x0;	/* 0 */
+                    UNS16 TestMaster_obj1800_Event_Timer = 0x0;	/* 0 */
+                    subindex TestMaster_Index1800[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1800 },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1800_COB_ID_used_by_PDO },
+                       { RW, uint8, sizeof (UNS8), (void*)&TestMaster_obj1800_Transmission_Type },
+                       { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1800_Inhibit_Time },
+                       { RW, uint8, sizeof (UNS8), (void*)&TestMaster_obj1800_Compatibility_Entry },
+                       { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1800_Event_Timer }
+                     };
+
+/* index 0x1801 :   Transmit PDO 2 Parameter. */
+                    UNS8 TestMaster_highestSubIndex_obj1801 = 5; /* number of subindex - 1*/
+                    UNS32 TestMaster_obj1801_COB_ID_used_by_PDO = 0x340;	/* 832 */
+                    UNS8 TestMaster_obj1801_Transmission_Type = 0x1;	/* 1 */
+                    UNS16 TestMaster_obj1801_Inhibit_Time = 0x0;	/* 0 */
+                    UNS8 TestMaster_obj1801_Compatibility_Entry = 0x0;	/* 0 */
+                    UNS16 TestMaster_obj1801_Event_Timer = 0x0;	/* 0 */
+                    subindex TestMaster_Index1801[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1801 },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1801_COB_ID_used_by_PDO },
+                       { RW, uint8, sizeof (UNS8), (void*)&TestMaster_obj1801_Transmission_Type },
+                       { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1801_Inhibit_Time },
+                       { RW, uint8, sizeof (UNS8), (void*)&TestMaster_obj1801_Compatibility_Entry },
+                       { RW, uint16, sizeof (UNS16), (void*)&TestMaster_obj1801_Event_Timer }
+                     };
+
+/* index 0x1A00 :   Transmit PDO 1 Mapping. */
+                    UNS8 TestMaster_highestSubIndex_obj1A00 = 1; /* number of subindex - 1*/
+                    UNS32 TestMaster_obj1A00[] = 
+                    {
+                      0x20000008	/* 536870920 */
+                    };
+                    subindex TestMaster_Index1A00[] = 
+                     {
+                       { RW, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1A00 },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1A00[0] }
+                     };
+
+/* index 0x1A01 :   Transmit PDO 2 Mapping. */
+                    UNS8 TestMaster_highestSubIndex_obj1A01 = 4; /* number of subindex - 1*/
+                    UNS32 TestMaster_obj1A01[] = 
+                    {
+                      0x20010010,	/* 536936464 */
+                      0x20020010,	/* 537002000 */
+                      0x20030010,	/* 537067536 */
+                      0x20040010	/* 537133072 */
+                    };
+                    subindex TestMaster_Index1A01[] = 
+                     {
+                       { RW, uint8, sizeof (UNS8), (void*)&TestMaster_highestSubIndex_obj1A01 },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1A01[0] },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1A01[1] },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1A01[2] },
+                       { RW, uint32, sizeof (UNS32), (void*)&TestMaster_obj1A01[3] }
+                     };
+
+/* index 0x2000 :   Mapped variable DO */
+                    subindex TestMaster_Index2000[] = 
+                     {
+                       { RW, uint8, sizeof (UNS8), (void*)&DO }
+                     };
+
+/* index 0x2001 :   Mapped variable AO1 */
+                    subindex TestMaster_Index2001[] = 
+                     {
+                       { RW, int16, sizeof (INTEGER16), (void*)&AO1 }
+                     };
+
+/* index 0x2002 :   Mapped variable AO2 */
+                    subindex TestMaster_Index2002[] = 
+                     {
+                       { RW, int16, sizeof (INTEGER16), (void*)&AO2 }
+                     };
+
+/* index 0x2003 :   Mapped variable AO3 */
+                    subindex TestMaster_Index2003[] = 
+                     {
+                       { RW, int16, sizeof (INTEGER16), (void*)&AO3 }
+                     };
+
+/* index 0x2004 :   Mapped variable AO4 */
+                    subindex TestMaster_Index2004[] = 
+                     {
+                       { RW, int16, sizeof (INTEGER16), (void*)&AO4 }
+                     };
+
+/* index 0x2005 :   Mapped variable AI1 */
+                    subindex TestMaster_Index2005[] = 
+                     {
+                       { RW, int16, sizeof (INTEGER16), (void*)&AI1 }
+                     };
+
+/* index 0x2006 :   Mapped variable AI2 */
+                    subindex TestMaster_Index2006[] = 
+                     {
+                       { RW, int16, sizeof (INTEGER16), (void*)&AI2 }
+                     };
+
+/* index 0x2007 :   Mapped variable AI3 */
+                    subindex TestMaster_Index2007[] = 
+                     {
+                       { RW, int16, sizeof (INTEGER16), (void*)&AI3 }
+                     };
+
+/* index 0x2008 :   Mapped variable AI4 */
+                    subindex TestMaster_Index2008[] = 
+                     {
+                       { RW, int16, sizeof (INTEGER16), (void*)&AI4 }
+                     };
+
+/* index 0x2009 :   Mapped variable AI5 */
+                    subindex TestMaster_Index2009[] = 
+                     {
+                       { RW, int16, sizeof (INTEGER16), (void*)&AI5 }
+                     };
+
+/* index 0x200A :   Mapped variable AI6 */
+                    subindex TestMaster_Index200A[] = 
+                     {
+                       { RW, int16, sizeof (INTEGER16), (void*)&AI6 }
+                     };
+
+/* index 0x200B :   Mapped variable AI7 */
+                    subindex TestMaster_Index200B[] = 
+                     {
+                       { RW, int16, sizeof (INTEGER16), (void*)&AI7 }
+                     };
+
+/* index 0x200C :   Mapped variable AI8 */
+                    subindex TestMaster_Index200C[] = 
+                     {
+                       { RW, int16, sizeof (INTEGER16), (void*)&AI8 }
+                     };
+
+/* index 0x200F :   Mapped variable DI1 */
+                    subindex TestMaster_Index200F[] = 
+                     {
+                       { RW, boolean, sizeof (UNS8), (void*)&DI1 }
+                     };
+
+/* index 0x2010 :   Mapped variable DI2 */
+                    subindex TestMaster_Index2010[] = 
+                     {
+                       { RW, boolean, sizeof (UNS8), (void*)&DI2 }
+                     };
+
+/* index 0x2011 :   Mapped variable DI3 */
+                    subindex TestMaster_Index2011[] = 
+                     {
+                       { RW, boolean, sizeof (UNS8), (void*)&DI3 }
+                     };
+
+/* index 0x2012 :   Mapped variable DI4 */
+                    subindex TestMaster_Index2012[] = 
+                     {
+                       { RW, boolean, sizeof (UNS8), (void*)&DI4 }
+                     };
+
+/* index 0x2013 :   Mapped variable DI5 */
+                    subindex TestMaster_Index2013[] = 
+                     {
+                       { RW, boolean, sizeof (UNS8), (void*)&DI5 }
+                     };
+
+/* index 0x2014 :   Mapped variable DI6 */
+                    subindex TestMaster_Index2014[] = 
+                     {
+                       { RW, boolean, sizeof (UNS8), (void*)&DI6 }
+                     };
+
+/* index 0x2015 :   Mapped variable DI7 */
+                    subindex TestMaster_Index2015[] = 
+                     {
+                       { RW, boolean, sizeof (UNS8), (void*)&DI7 }
+                     };
+
+/* index 0x2016 :   Mapped variable DI8 */
+                    subindex TestMaster_Index2016[] = 
+                     {
+                       { RW, boolean, sizeof (UNS8), (void*)&DI8 }
+                     };
+
+const indextable TestMaster_objdict[] = 
+{
+  { (subindex*)TestMaster_Index1000,sizeof(TestMaster_Index1000)/sizeof(TestMaster_Index1000[0]), 0x1000},
+  { (subindex*)TestMaster_Index1001,sizeof(TestMaster_Index1001)/sizeof(TestMaster_Index1001[0]), 0x1001},
+  { (subindex*)TestMaster_Index1005,sizeof(TestMaster_Index1005)/sizeof(TestMaster_Index1005[0]), 0x1005},
+  { (subindex*)TestMaster_Index1006,sizeof(TestMaster_Index1006)/sizeof(TestMaster_Index1006[0]), 0x1006},
+  { (subindex*)TestMaster_Index1016,sizeof(TestMaster_Index1016)/sizeof(TestMaster_Index1016[0]), 0x1016},
+  { (subindex*)TestMaster_Index1018,sizeof(TestMaster_Index1018)/sizeof(TestMaster_Index1018[0]), 0x1018},
+  { (subindex*)TestMaster_Index1280,sizeof(TestMaster_Index1280)/sizeof(TestMaster_Index1280[0]), 0x1280},
+  { (subindex*)TestMaster_Index1400,sizeof(TestMaster_Index1400)/sizeof(TestMaster_Index1400[0]), 0x1400},
+  { (subindex*)TestMaster_Index1401,sizeof(TestMaster_Index1401)/sizeof(TestMaster_Index1401[0]), 0x1401},
+  { (subindex*)TestMaster_Index1402,sizeof(TestMaster_Index1402)/sizeof(TestMaster_Index1402[0]), 0x1402},
+  { (subindex*)TestMaster_Index1600,sizeof(TestMaster_Index1600)/sizeof(TestMaster_Index1600[0]), 0x1600},
+  { (subindex*)TestMaster_Index1601,sizeof(TestMaster_Index1601)/sizeof(TestMaster_Index1601[0]), 0x1601},
+  { (subindex*)TestMaster_Index1602,sizeof(TestMaster_Index1602)/sizeof(TestMaster_Index1602[0]), 0x1602},
+  { (subindex*)TestMaster_Index1800,sizeof(TestMaster_Index1800)/sizeof(TestMaster_Index1800[0]), 0x1800},
+  { (subindex*)TestMaster_Index1801,sizeof(TestMaster_Index1801)/sizeof(TestMaster_Index1801[0]), 0x1801},
+  { (subindex*)TestMaster_Index1A00,sizeof(TestMaster_Index1A00)/sizeof(TestMaster_Index1A00[0]), 0x1A00},
+  { (subindex*)TestMaster_Index1A01,sizeof(TestMaster_Index1A01)/sizeof(TestMaster_Index1A01[0]), 0x1A01},
+  { (subindex*)TestMaster_Index2000,sizeof(TestMaster_Index2000)/sizeof(TestMaster_Index2000[0]), 0x2000},
+  { (subindex*)TestMaster_Index2001,sizeof(TestMaster_Index2001)/sizeof(TestMaster_Index2001[0]), 0x2001},
+  { (subindex*)TestMaster_Index2002,sizeof(TestMaster_Index2002)/sizeof(TestMaster_Index2002[0]), 0x2002},
+  { (subindex*)TestMaster_Index2003,sizeof(TestMaster_Index2003)/sizeof(TestMaster_Index2003[0]), 0x2003},
+  { (subindex*)TestMaster_Index2004,sizeof(TestMaster_Index2004)/sizeof(TestMaster_Index2004[0]), 0x2004},
+  { (subindex*)TestMaster_Index2005,sizeof(TestMaster_Index2005)/sizeof(TestMaster_Index2005[0]), 0x2005},
+  { (subindex*)TestMaster_Index2006,sizeof(TestMaster_Index2006)/sizeof(TestMaster_Index2006[0]), 0x2006},
+  { (subindex*)TestMaster_Index2007,sizeof(TestMaster_Index2007)/sizeof(TestMaster_Index2007[0]), 0x2007},
+  { (subindex*)TestMaster_Index2008,sizeof(TestMaster_Index2008)/sizeof(TestMaster_Index2008[0]), 0x2008},
+  { (subindex*)TestMaster_Index2009,sizeof(TestMaster_Index2009)/sizeof(TestMaster_Index2009[0]), 0x2009},
+  { (subindex*)TestMaster_Index200A,sizeof(TestMaster_Index200A)/sizeof(TestMaster_Index200A[0]), 0x200A},
+  { (subindex*)TestMaster_Index200B,sizeof(TestMaster_Index200B)/sizeof(TestMaster_Index200B[0]), 0x200B},
+  { (subindex*)TestMaster_Index200C,sizeof(TestMaster_Index200C)/sizeof(TestMaster_Index200C[0]), 0x200C},
+  { (subindex*)TestMaster_Index200F,sizeof(TestMaster_Index200F)/sizeof(TestMaster_Index200F[0]), 0x200F},
+  { (subindex*)TestMaster_Index2010,sizeof(TestMaster_Index2010)/sizeof(TestMaster_Index2010[0]), 0x2010},
+  { (subindex*)TestMaster_Index2011,sizeof(TestMaster_Index2011)/sizeof(TestMaster_Index2011[0]), 0x2011},
+  { (subindex*)TestMaster_Index2012,sizeof(TestMaster_Index2012)/sizeof(TestMaster_Index2012[0]), 0x2012},
+  { (subindex*)TestMaster_Index2013,sizeof(TestMaster_Index2013)/sizeof(TestMaster_Index2013[0]), 0x2013},
+  { (subindex*)TestMaster_Index2014,sizeof(TestMaster_Index2014)/sizeof(TestMaster_Index2014[0]), 0x2014},
+  { (subindex*)TestMaster_Index2015,sizeof(TestMaster_Index2015)/sizeof(TestMaster_Index2015[0]), 0x2015},
+  { (subindex*)TestMaster_Index2016,sizeof(TestMaster_Index2016)/sizeof(TestMaster_Index2016[0]), 0x2016},
+};
+
+const indextable * TestMaster_scanIndexOD (UNS16 wIndex, UNS32 * errorCode, ODCallback_t **callbacks)
+{
+	int i;
+	*callbacks = NULL;
+	switch(wIndex){
+		case 0x1000: i = 0;break;
+		case 0x1001: i = 1;break;
+		case 0x1005: i = 2;*callbacks = TestMaster_Index1005_callbacks; break;
+		case 0x1006: i = 3;*callbacks = TestMaster_Index1006_callbacks; break;
+		case 0x1016: i = 4;break;
+		case 0x1018: i = 5;break;
+		case 0x1280: i = 6;break;
+		case 0x1400: i = 7;break;
+		case 0x1401: i = 8;break;
+		case 0x1402: i = 9;break;
+		case 0x1600: i = 10;break;
+		case 0x1601: i = 11;break;
+		case 0x1602: i = 12;break;
+		case 0x1800: i = 13;break;
+		case 0x1801: i = 14;break;
+		case 0x1A00: i = 15;break;
+		case 0x1A01: i = 16;break;
+		case 0x2000: i = 17;break;
+		case 0x2001: i = 18;break;
+		case 0x2002: i = 19;break;
+		case 0x2003: i = 20;break;
+		case 0x2004: i = 21;break;
+		case 0x2005: i = 22;break;
+		case 0x2006: i = 23;break;
+		case 0x2007: i = 24;break;
+		case 0x2008: i = 25;break;
+		case 0x2009: i = 26;break;
+		case 0x200A: i = 27;break;
+		case 0x200B: i = 28;break;
+		case 0x200C: i = 29;break;
+		case 0x200F: i = 30;break;
+		case 0x2010: i = 31;break;
+		case 0x2011: i = 32;break;
+		case 0x2012: i = 33;break;
+		case 0x2013: i = 34;break;
+		case 0x2014: i = 35;break;
+		case 0x2015: i = 36;break;
+		case 0x2016: i = 37;break;
+		default:
+			*errorCode = OD_NO_SUCH_OBJECT;
+			return NULL;
+	}
+	*errorCode = OD_SUCCESSFUL;
+	return &TestMaster_objdict[i];
+}
+
+/* 
+ * To count at which received SYNC a PDO must be sent.
+ * Even if no pdoTransmit are defined, at least one entry is computed
+ * for compilations issues.
+ */
+s_PDO_status TestMaster_PDO_status[2] = {s_PDO_staus_Initializer,s_PDO_staus_Initializer};
+
+quick_index TestMaster_firstIndex = {
+  0, /* SDO_SVR */
+  6, /* SDO_CLT */
+  7, /* PDO_RCV */
+  10, /* PDO_RCV_MAP */
+  13, /* PDO_TRS */
+  15 /* PDO_TRS_MAP */
+};
+
+quick_index TestMaster_lastIndex = {
+  0, /* SDO_SVR */
+  6, /* SDO_CLT */
+  9, /* PDO_RCV */
+  12, /* PDO_RCV_MAP */
+  14, /* PDO_TRS */
+  16 /* PDO_TRS_MAP */
+};
+
+UNS16 TestMaster_ObjdictSize = sizeof(TestMaster_objdict)/sizeof(TestMaster_objdict[0]); 
+
+CO_Data TestMaster_Data = CANOPEN_NODE_DATA_INITIALIZER(TestMaster);
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Master/TestMaster.h	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,37 @@
+
+/* File generated by gen_cfile.py. Should not be modified. */
+
+#ifndef TESTMASTER_H
+#define TESTMASTER_H
+
+#include "data.h"
+
+/* Prototypes of function provided by object dictionnary */
+UNS32 TestMaster_valueRangeTest (UNS8 typeValue, void * value);
+const indextable * TestMaster_scanIndexOD (UNS16 wIndex, UNS32 * errorCode, ODCallback_t **callbacks);
+
+/* Master node data struct */
+extern CO_Data TestMaster_Data;
+extern UNS8 DO;		/* Mapped at index 0x2000, subindex 0x00*/
+extern INTEGER16 AO1;		/* Mapped at index 0x2001, subindex 0x00*/
+extern INTEGER16 AO2;		/* Mapped at index 0x2002, subindex 0x00*/
+extern INTEGER16 AO3;		/* Mapped at index 0x2003, subindex 0x00*/
+extern INTEGER16 AO4;		/* Mapped at index 0x2004, subindex 0x00*/
+extern INTEGER16 AI1;		/* Mapped at index 0x2005, subindex 0x00*/
+extern INTEGER16 AI2;		/* Mapped at index 0x2006, subindex 0x00*/
+extern INTEGER16 AI3;		/* Mapped at index 0x2007, subindex 0x00*/
+extern INTEGER16 AI4;		/* Mapped at index 0x2008, subindex 0x00*/
+extern INTEGER16 AI5;		/* Mapped at index 0x2009, subindex 0x00*/
+extern INTEGER16 AI6;		/* Mapped at index 0x200A, subindex 0x00*/
+extern INTEGER16 AI7;		/* Mapped at index 0x200B, subindex 0x00*/
+extern INTEGER16 AI8;		/* Mapped at index 0x200C, subindex 0x00*/
+extern UNS8 DI1;		/* Mapped at index 0x200F, subindex 0x00*/
+extern UNS8 DI2;		/* Mapped at index 0x2010, subindex 0x00*/
+extern UNS8 DI3;		/* Mapped at index 0x2011, subindex 0x00*/
+extern UNS8 DI4;		/* Mapped at index 0x2012, subindex 0x00*/
+extern UNS8 DI5;		/* Mapped at index 0x2013, subindex 0x00*/
+extern UNS8 DI6;		/* Mapped at index 0x2014, subindex 0x00*/
+extern UNS8 DI7;		/* Mapped at index 0x2015, subindex 0x00*/
+extern UNS8 DI8;		/* Mapped at index 0x2016, subindex 0x00*/
+
+#endif // TESTMASTER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Master/TestMaster.od	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,1079 @@
+<?xml version="1.0"?>
+<!DOCTYPE PyObject SYSTEM "PyObjects.dtd">
+<PyObject module="node" class="Node" id="159651660">
+<attr name="Profile" type="dict" id="159765884" >
+</attr>
+<attr name="Name" type="string">TestMaster</attr>
+<attr name="Dictionary" type="dict" id="159766156" >
+  <entry>
+    <key type="numeric" value="4096" />
+    <val type="numeric" value="401" />
+  </entry>
+  <entry>
+    <key type="numeric" value="4097" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="8194" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="8195" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="8196" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="4101" />
+    <val type="numeric" value="1073741952" />
+  </entry>
+  <entry>
+    <key type="numeric" value="4102" />
+    <val type="numeric" value="50000" />
+  </entry>
+  <entry>
+    <key type="numeric" value="8193" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="8200" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="8201" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="8202" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="8203" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="8204" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="5122" />
+    <val type="list" id="160594860" >
+      <item type="numeric" value="960" />
+      <item type="numeric" value="1" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="8207" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="8208" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="8209" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="8210" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="8211" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="8212" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="8213" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="8214" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="4120" />
+    <val type="list" id="160621036" >
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="4118" />
+    <val type="list" id="160594156" >
+      <item type="numeric" value="4195804" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="8197" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="4736" />
+    <val type="list" id="160592364" >
+      <item type="numeric" value="1600" />
+      <item type="numeric" value="1472" />
+      <item type="numeric" value="64" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="8198" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="5120" />
+    <val type="list" id="160595948" >
+      <item type="numeric" value="448" />
+      <item type="numeric" value="1" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="8192" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="8199" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="5632" />
+    <val type="list" id="160594124" >
+      <item type="numeric" value="537853953" />
+      <item type="numeric" value="537919489" />
+      <item type="numeric" value="537985025" />
+      <item type="numeric" value="538050561" />
+      <item type="numeric" value="538116097" />
+      <item type="numeric" value="538181633" />
+      <item type="numeric" value="538247169" />
+      <item type="numeric" value="538312705" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="5121" />
+    <val type="list" id="160595276" >
+      <item type="numeric" value="704" />
+      <item type="numeric" value="1" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="6144" />
+    <val type="list" id="160592428" >
+      <item type="numeric" value="576" />
+      <item type="numeric" value="1" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="5633" />
+    <val type="list" id="159736236" >
+      <item type="numeric" value="537198608" />
+      <item type="numeric" value="537264144" />
+      <item type="numeric" value="537329680" />
+      <item type="numeric" value="537395216" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="6656" />
+    <val type="list" id="159597228" >
+      <item type="numeric" value="536870920" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="6145" />
+    <val type="list" id="159599564" >
+      <item type="numeric" value="832" />
+      <item type="numeric" value="1" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="5634" />
+    <val type="list" id="159713900" >
+      <item type="numeric" value="537460752" />
+      <item type="numeric" value="537526288" />
+      <item type="numeric" value="537591824" />
+      <item type="numeric" value="537657360" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="6657" />
+    <val type="list" id="159714252" >
+      <item type="numeric" value="536936464" />
+      <item type="numeric" value="537002000" />
+      <item type="numeric" value="537067536" />
+      <item type="numeric" value="537133072" />
+    </val>
+  </entry>
+</attr>
+<attr name="SpecificMenu" type="list" id="160603788" >
+</attr>
+<attr name="ParamsDictionary" type="dict" id="159716732" >
+</attr>
+<attr name="UserMapping" type="dict" id="159658164" >
+  <entry>
+    <key type="numeric" value="8192" />
+    <val type="dict" id="160582348" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159631692" >
+          <item type="dict" id="160588908" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string">DO</val>
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string">DO</val>
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="1" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="8193" />
+    <val type="dict" id="160608980" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159709036" >
+          <item type="dict" id="159716460" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="3" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string">AO1</val>
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string">AO1</val>
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="1" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="8194" />
+    <val type="dict" id="159675636" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160591948" >
+          <item type="dict" id="160589044" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="3" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string">AO2</val>
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string">AO2</val>
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="1" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="8195" />
+    <val type="dict" id="159660340" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159735948" >
+          <item type="dict" id="159780620" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="3" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string">AO3</val>
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string">AO3</val>
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="1" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="8196" />
+    <val type="dict" id="160582212" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159738028" >
+          <item type="dict" id="160589588" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="3" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string">AO4</val>
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string">AO4</val>
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="1" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="8197" />
+    <val type="dict" id="159757556" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159738956" >
+          <item type="dict" id="160589724" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="3" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string">AI1</val>
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string">AI1</val>
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="1" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="8198" />
+    <val type="dict" id="159745948" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159591436" >
+          <item type="dict" id="160567476" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="3" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string">AI2</val>
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string">AI2</val>
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="1" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="8199" />
+    <val type="dict" id="160590132" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159652460" >
+          <item type="dict" id="159740084" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="3" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string">AI3</val>
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string">AI3</val>
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="1" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="8200" />
+    <val type="dict" id="160589452" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159650188" >
+          <item type="dict" id="159654884" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="3" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string">AI4</val>
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string">AI4</val>
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="1" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="8201" />
+    <val type="dict" id="159742124" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159707884" >
+          <item type="dict" id="160588092" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="3" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string">AI5</val>
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string">AI5</val>
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="1" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="8202" />
+    <val type="dict" id="160569652" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159650092" >
+          <item type="dict" id="160570876" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="3" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string">AI6</val>
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string">AI6</val>
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="1" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="8203" />
+    <val type="dict" id="160714100" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159653452" >
+          <item type="dict" id="160714236" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="3" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string">AI7</val>
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string">AI7</val>
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="1" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="8204" />
+    <val type="dict" id="160714372" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159610380" >
+          <item type="dict" id="160714508" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="3" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string">AI8</val>
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string">AI8</val>
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="1" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="8207" />
+    <val type="dict" id="160718892" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159651052" >
+          <item type="dict" id="160719028" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="1" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string">DI1</val>
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string">DI1</val>
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="1" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="8208" />
+    <val type="dict" id="160719164" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159600396" >
+          <item type="dict" id="160719300" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="1" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string">DI2</val>
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string">DI2</val>
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="1" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="8209" />
+    <val type="dict" id="160719436" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159652204" >
+          <item type="dict" id="160719572" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="1" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string">DI3</val>
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string">DI3</val>
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="1" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="8210" />
+    <val type="dict" id="160719708" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159651980" >
+          <item type="dict" id="160719844" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="1" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string">DI4</val>
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string">DI4</val>
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="1" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="8211" />
+    <val type="dict" id="160719980" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159650540" >
+          <item type="dict" id="160720116" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="1" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string">DI5</val>
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string">DI5</val>
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="1" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="8212" />
+    <val type="dict" id="160720252" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160621004" >
+          <item type="dict" id="160720388" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="1" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string">DI6</val>
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string">DI6</val>
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="1" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="8213" />
+    <val type="dict" id="160720524" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159652780" >
+          <item type="dict" id="160720660" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="1" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string">DI7</val>
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string">DI7</val>
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="1" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="8214" />
+    <val type="dict" id="160720796" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159612396" >
+          <item type="dict" id="160720932" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="1" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string">DI8</val>
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string">DI8</val>
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="1" />
+      </entry>
+    </val>
+  </entry>
+</attr>
+<attr name="DS302" type="dict" id="160721068" >
+</attr>
+<attr name="ProfileName" type="string" value="DS-301" />
+<attr name="Type" type="string">master</attr>
+<attr name="ID" type="numeric" value="1" />
+</PyObject>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Master/TestMasterMicroMod.c	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,510 @@
+/*
+This file is part of CanFestival, a library implementing CanOpen Stack. 
+
+Copyright (C): Edouard TISSERANT and Francis DUPIN
+
+See COPYING file for copyrights details.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+
+#if defined(WIN32) && !defined(__CYGWIN__)
+#include <windows.h>
+#include "getopt.h"
+void pause(void)
+{
+	system("PAUSE");
+}
+#else
+#include <unistd.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <signal.h>
+#endif
+
+#include "canfestival.h"
+#include "TestMasterMicroMod.h"
+#include "TestMaster.h"
+UNS8 slavenodeid;
+
+
+/*****************************************************************************/
+void TestMaster_heartbeatError(UNS8 heartbeatID)
+{
+	eprintf("TestMaster_heartbeatError %d\n", heartbeatID);
+}
+
+/********************************************************
+ * ConfigureSlaveNode is responsible to
+ *  - setup master RPDO 1 to receive TPDO 1 from id 0x40
+ *  - setup master TPDO 1 to send RPDO 1 to id 0x40
+ ********************************************************/
+void TestMaster_initialisation()
+{
+	UNS32 PDO1_COBID = 0x0180 + slavenodeid; 
+	UNS32 PDO2_COBID = 0x0200 + slavenodeid;
+	UNS8 size = sizeof(UNS32); 
+
+	eprintf("TestMaster_initialisation\n");
+
+	/*****************************************
+	 * Define RPDOs to match slave ID=0x40 TPDOs*
+	 *****************************************/
+	writeLocalDict( &TestMaster_Data, /*CO_Data* d*/
+			0x1400, /*UNS16 index*/
+			0x01, /*UNS8 subind*/ 
+			&PDO1_COBID, /*void * pSourceData,*/ 
+			&size, /* UNS8 * pExpectedSize*/
+			RW);  /* UNS8 checkAccess */
+			
+
+	/*****************************************
+	 * Define TPDOs to match slave ID=0x40 RPDOs*
+	 *****************************************/
+	writeLocalDict( &TestMaster_Data, /*CO_Data* d*/
+			0x1800, /*UNS16 index*/
+			0x01, /*UNS8 subind*/ 
+			&PDO2_COBID, /*void * pSourceData,*/ 
+			&size, /* UNS8 * pExpectedSize*/
+			RW);  /* UNS8 checkAccess */
+}
+
+static init_step = 0;
+
+/*Froward declaration*/
+static void ConfigureSlaveNode(CO_Data* d, UNS8 nodeId);
+
+/**/
+static void CheckSDOAndContinue(CO_Data* d, UNS8 nodeId)
+{
+	UNS32 abortCode;
+
+	if(getWriteResultNetworkDict (d, nodeId, &abortCode) != SDO_FINISHED)
+		eprintf("Master : Failed in initializing slave %2.2x, step %d, AbortCode :%4.4x \n", nodeId, init_step, abortCode);
+
+	/* Finalise last SDO transfer with this node */
+	closeSDOtransfer(&TestMaster_Data, nodeId, SDO_CLIENT);
+
+	ConfigureSlaveNode(d, nodeId);
+}
+
+/********************************************************
+ * ConfigureSlaveNode is responsible to
+ *  - setup slave TPDO 1 transmit time
+ *  - setup slave TPDO 2 transmit time
+ *  - setup slave Heartbeat Producer time
+ *  - switch to operational mode
+ *  - send NMT to slave
+ ********************************************************
+ * This an example of :
+ * Network Dictionary Access (SDO) with Callback 
+ * Slave node state change request (NMT) 
+ ********************************************************
+ * This is called first by TestMaster_preOperational
+ * then it called again each time a SDO exchange is
+ * finished.
+ ********************************************************/
+static void ConfigureSlaveNode(CO_Data* d, UNS8 nodeId)
+{
+	UNS8 res;
+	eprintf("Master : ConfigureSlaveNode %2.2x\n", nodeId);
+	printf("nodeid slave=%x\n",nodeId);
+	switch(++init_step){
+		case 1: 
+		{	/*disable Slave's TPDO 1 */
+			UNS32 TPDO_COBId = 0x80000180 + nodeId;
+			
+			eprintf("Master : disable slave %2.2x TPDO 1 \n", nodeId);
+			res = writeNetworkDictCallBack (d, /*CO_Data* d*/
+					/**TestSlave_Data.bDeviceNodeId, UNS8 nodeId*/
+					nodeId, /*UNS8 nodeId*/
+					0x1800, /*UNS16 index*/
+					0x01, /*UNS8 subindex*/
+					4, /*UNS8 count*/
+					0, /*UNS8 dataType*/
+					&TPDO_COBId,/*void *data*/
+					CheckSDOAndContinue); /*SDOCallback_t Callback*/
+		}			
+		break;
+
+		case 2: 
+		{	/*setup Slave's TPDO 1 to be transmitted on SYNC*/
+			UNS8 Transmission_Type = 0x01;
+			
+			eprintf("Master : set slave %2.2x TPDO 1 transmit type\n", nodeId);
+			res = writeNetworkDictCallBack (d, /*CO_Data* d*/
+					/**TestSlave_Data.bDeviceNodeId, UNS8 nodeId*/
+					nodeId, /*UNS8 nodeId*/
+					0x1800, /*UNS16 index*/
+					0x02, /*UNS8 subindex*/
+					1, /*UNS8 count*/
+					0, /*UNS8 dataType*/
+					&Transmission_Type,/*void *data*/
+					CheckSDOAndContinue); /*SDOCallback_t Callback*/
+		}			
+		break;
+
+		case 3: 
+		{	/*re-enable Slave's TPDO 1 */
+			UNS32 TPDO_COBId = 0x00000180 + nodeId;
+			
+			eprintf("Master : re-enable slave %2.2x TPDO 1\n", nodeId);
+			res = writeNetworkDictCallBack (d, /*CO_Data* d*/
+					/**TestSlave_Data.bDeviceNodeId, UNS8 nodeId*/
+					nodeId, /*UNS8 nodeId*/
+					0x1800, /*UNS16 index*/
+					0x01, /*UNS8 subindex*/
+					4, /*UNS8 count*/
+					0, /*UNS8 dataType*/
+					&TPDO_COBId,/*void *data*/
+					CheckSDOAndContinue); /*SDOCallback_t Callback*/
+		}			
+		break;
+					
+		case 4: 
+		{	/*disable Slave's TPDO 2 */
+			UNS32 TPDO_COBId = 0x80000200 + nodeId;
+			
+			eprintf("Master : disable slave %2.2x RPDO 1\n", nodeId);
+			res = writeNetworkDictCallBack (d, /*CO_Data* d*/
+					/**TestSlave_Data.bDeviceNodeId, UNS8 nodeId*/
+					nodeId, /*UNS8 nodeId*/
+					0x1400, /*UNS16 index*/
+					0x01, /*UNS8 subindex*/
+					4, /*UNS8 count*/
+					0, /*UNS8 dataType*/
+					&TPDO_COBId,/*void *data*/
+					CheckSDOAndContinue); /*SDOCallback_t Callback*/
+		}			
+		break;
+
+					
+		case 5:
+		{	
+			UNS8 Transmission_Type = 0x01;
+			
+			eprintf("Master : set slave %2.2x RPDO 1 receive type\n", nodeId);
+			res = writeNetworkDictCallBack (d, /*CO_Data* d*/
+					/**TestSlave_Data.bDeviceNodeId, UNS8 nodeId*/
+					nodeId, /*UNS8 nodeId*/
+					0x1400, /*UNS16 index*/
+					0x02, /*UNS8 subindex*/
+					1, /*UNS8 count*/
+					0, /*UNS8 dataType*/
+					&Transmission_Type,/*void *data*/
+					CheckSDOAndContinue); /*SDOCallback_t Callback*/
+		}	
+		break;
+
+		case 6: 
+		{	/*re-enable Slave's TPDO 1 */
+			UNS32 TPDO_COBId = 0x00000200 + nodeId;
+			
+			eprintf("Master : re-enable %2.2x RPDO 1\n", nodeId);
+			res = writeNetworkDictCallBack (d, /*CO_Data* d*/
+					/**TestSlave_Data.bDeviceNodeId, UNS8 nodeId*/
+					nodeId, /*UNS8 nodeId*/
+					0x1400, /*UNS16 index*/
+					0x01, /*UNS8 subindex*/
+					4, /*UNS8 count*/
+					0, /*UNS8 dataType*/
+					&TPDO_COBId,/*void *data*/
+					CheckSDOAndContinue); /*SDOCallback_t Callback*/
+		}			
+		break;
+		
+		case 7:	
+		{
+			UNS16 Heartbeat_Producer_Time = 0x03E8; 
+			eprintf("Master : set slave %2.2x heartbeat producer time \n", nodeId);
+			res = writeNetworkDictCallBack (d, /*CO_Data* d*/
+					/**TestSlave_Data.bDeviceNodeId, UNS8 nodeId*/
+					nodeId, /*UNS8 nodeId*/
+					0x1017, /*UNS16 index*/
+					0x00, /*UNS8 subindex*/
+					2, /*UNS8 count*/
+					0, /*UNS8 dataType*/
+					&Heartbeat_Producer_Time,/*void *data*/
+					CheckSDOAndContinue); /*SDOCallback_t Callback*/
+		}			
+		break;
+
+		case 8: 
+		{	/*disable Slave's TPDO 2 */
+			UNS32 TPDO_COBId = 0x80000280 + nodeId;
+			
+			eprintf("Master : disable slave %2.2x TPDO 2 \n", nodeId);
+			res = writeNetworkDictCallBack (d, /*CO_Data* d*/
+					/**TestSlave_Data.bDeviceNodeId, UNS8 nodeId*/
+					nodeId, /*UNS8 nodeId*/
+					0x1801, /*UNS16 index*/
+					0x01, /*UNS8 subindex*/
+					4, /*UNS8 count*/
+					0, /*UNS8 dataType*/
+					&TPDO_COBId,/*void *data*/
+					CheckSDOAndContinue); /*SDOCallback_t Callback*/
+		}			
+		break;
+
+		case 9: 
+		{	/*disable Slave's TPDO 3 */
+			UNS32 TPDO_COBId = 0x80000380 + nodeId;
+			
+			eprintf("Master : disable slave %2.2x TPDO 3 \n", nodeId);
+			res = writeNetworkDictCallBack (d, /*CO_Data* d*/
+					/**TestSlave_Data.bDeviceNodeId, UNS8 nodeId*/
+					nodeId, /*UNS8 nodeId*/
+					0x1802, /*UNS16 index*/
+					0x01, /*UNS8 subindex*/
+					4, /*UNS8 count*/
+					0, /*UNS8 dataType*/
+					&TPDO_COBId,/*void *data*/
+					CheckSDOAndContinue); /*SDOCallback_t Callback*/
+		}
+		break;			
+
+		case 10: 
+		{	/*disable Slave's TPDO 2 */
+			UNS32 TPDO_COBId = 0x80000480 + nodeId;
+			
+			eprintf("Master : disable slave %2.2x TPDO 4 \n", nodeId);
+			res = writeNetworkDictCallBack (d, /*CO_Data* d*/
+					/**TestSlave_Data.bDeviceNodeId, UNS8 nodeId*/
+					nodeId, /*UNS8 nodeId*/
+					0x1803, /*UNS16 index*/
+					0x01, /*UNS8 subindex*/
+					4, /*UNS8 count*/
+					0, /*UNS8 dataType*/
+					&TPDO_COBId,/*void *data*/
+					CheckSDOAndContinue); /*SDOCallback_t Callback*/
+		}			
+		break;			
+		
+		case 11:
+			/* Put the master in operational mode */
+			setState(d, Operational);
+			  
+			/* Ask slave node to go in operational mode */
+			masterSendNMTstateChange (d, nodeId, NMT_Start_Node);
+	}
+			
+}
+
+void TestMaster_preOperational()
+{
+
+	eprintf("TestMaster_preOperational\n");
+	ConfigureSlaveNode(&TestMaster_Data, slavenodeid);
+	
+}
+
+void TestMaster_operational()
+{
+	eprintf("TestMaster_operational\n");
+}
+
+void TestMaster_stopped()
+{
+	eprintf("TestMaster_stopped\n");
+}
+
+void TestMaster_post_sync()
+{
+	DO++;
+	
+	AO1 = AI1 / 2;
+	AO2 = AI2 / 2;
+	AO3 = AI3 / 2;
+	AO4 = AI4 / 2;
+	eprintf("MicroMod Digital Out: %2.2x\n",DO);
+	eprintf("MicroMod Analogue Out1: %d\n",AO1);
+	eprintf("MicroMod Analogue Out2: %d\n",AO2);
+	eprintf("MicroMod Analogue Out3: %d\n",AO3);
+	eprintf("MicroMod Analogue Out4: %d\n",AO4);
+	eprintf("MicroMod Digital In (by bit): DI1: %2.2x DI2: %2.2x DI3: %2.2x DI4: %2.2x DI5: %2.2x DI6: %2.2x DI7: %2.2x DI8: %2.2x\n",DI1,DI2,DI3,DI4,DI5,DI6,DI7,DI8);
+	eprintf("MicroMod Analogue In1: %d\n", AI1);
+	eprintf("MicroMod Analogue In2: %d\n", AI2);
+	eprintf("MicroMod Analogue In3: %d\n", AI3);
+	eprintf("MicroMod Analogue In4: %d\n", AI4);
+	eprintf("MicroMod Analogue In5: %d\n", AI5);
+	eprintf("MicroMod Analogue In6: %d\n", AI6);
+	eprintf("MicroMod Analogue In7: %d\n", AI7);
+	eprintf("MicroMod Analogue In8: %d\n", AI8);
+}
+
+void TestMaster_post_TPDO()
+{
+//	eprintf("TestMaster_post_TPDO\n");	
+}
+
+//s_BOARD SlaveBoard = {"0", "500K"};
+s_BOARD MasterBoard = {"32", "125K"};
+
+#if !defined(WIN32) || defined(__CYGWIN__)
+void catch_signal(int sig)
+{
+  signal(SIGTERM, catch_signal);
+  signal(SIGINT, catch_signal);
+  
+  eprintf("Got Signal %d\n",sig);
+}
+#endif
+
+void help()
+{
+  printf("**************************************************************\n");
+  printf("*  TestMasterMicroMod                                        *\n");
+  printf("*                                                            *\n");
+  printf("*  A simple example for PC.                                  *\n");
+  printf("*  A CanOpen master that control a MicroMod module:          *\n");
+  printf("*  - setup module TPDO 1 transmit type                       *\n");
+  printf("*  - setup module RPDO 1 transmit type                       *\n");
+  printf("*  - setup module hearbeatbeat period                        *\n");
+  printf("*  - disable others TPDOs                                    *\n");
+  printf("*  - set state to operational                                *\n");
+  printf("*  - send periodic SYNC                                      *\n");
+  printf("*  - send periodic RPDO 1 to Micromod (digital output)       *\n");
+  printf("*  - listen Micromod's TPDO 1 (digital input)                *\n");
+  printf("*  - Mapping RPDO 1 bit per bit (digital input)              *\n");
+  printf("*                                                            *\n");
+  printf("*   Usage:                                                   *\n");
+  printf("*   ./TestMasterMicroMod  [OPTIONS]                          *\n");
+  printf("*                                                            *\n");
+  printf("*   OPTIONS:                                                 *\n");
+  printf("*     -l : Can library [\"libcanfestival_can_virtual.so\"]     *\n");
+  printf("*                                                            *\n");
+  printf("*    Slave:                                                  *\n");
+  printf("*     -i : Slave Node id format [0x01 , 0x7F]                *\n");
+  printf("*                                                            *\n");
+  printf("*    Master:                                                 *\n");
+  printf("*     -m : bus name [\"1\"]                                    *\n");
+  printf("*     -M : 1M,500K,250K,125K,100K,50K,20K,10K                *\n");
+  printf("*                                                            *\n");
+  printf("**************************************************************\n");
+}
+
+/***************************  INIT  *****************************************/
+void InitNodes(CO_Data* d, UNS32 id)
+{
+	/****************************** INITIALISATION MASTER *******************************/
+	if(MasterBoard.baudrate){
+		/* Defining the node Id */
+		//setNodeId(&TestMaster_Data, 0x01);
+
+		/* init */
+		setState(&TestMaster_Data, Initialisation);
+	}
+}
+
+/****************************************************************************/
+/***************************  MAIN  *****************************************/
+/****************************************************************************/
+int main(int argc,char **argv)
+{
+
+  int c;
+  extern char *optarg;
+  char* LibraryPath="libcanfestival_can_virtual.so";
+  char *snodeid;
+  while ((c = getopt(argc, argv, "-m:s:M:S:l:i:")) != EOF)
+  {
+    switch(c)
+    {
+      case 'm' :
+        if (optarg[0] == 0)
+        {
+          help();
+          exit(1);
+        }
+        MasterBoard.busname = optarg;
+        break;
+      case 'M' :
+        if (optarg[0] == 0)
+        {
+          help();
+          exit(1);
+        }
+        MasterBoard.baudrate = optarg;
+        break;
+      case 'l' :
+        if (optarg[0] == 0)
+        {
+          help();
+          exit(1);
+        }
+        LibraryPath = optarg;
+        break;
+      case 'i' :
+        if (optarg[0] == 0)
+        {
+          help();
+          exit(1);
+        }
+        snodeid = optarg;
+		sscanf(snodeid,"%x",&slavenodeid);
+        break;
+      default:
+        help();
+        exit(1);
+    }
+  }
+
+#if !defined(WIN32) || defined(__CYGWIN__)
+  /* install signal handler for manual break */
+	signal(SIGTERM, catch_signal);
+	signal(SIGINT, catch_signal);
+#endif
+
+#ifndef NOT_USE_DYNAMIC_LOADING
+	LoadCanDriver(LibraryPath);
+#endif		
+
+	TestMaster_Data.heartbeatError = TestMaster_heartbeatError;
+	TestMaster_Data.initialisation = TestMaster_initialisation;
+	TestMaster_Data.preOperational = TestMaster_preOperational;
+	TestMaster_Data.operational = TestMaster_operational;
+	TestMaster_Data.stopped = TestMaster_stopped;
+	TestMaster_Data.post_sync = TestMaster_post_sync;
+	TestMaster_Data.post_TPDO = TestMaster_post_TPDO;
+	
+	if(!canOpen(&MasterBoard,&TestMaster_Data)){
+		eprintf("Cannot open Master Board\n");
+		goto fail_master;
+	}
+	
+	// Start timer thread
+	StartTimerLoop(&InitNodes);
+
+	// wait Ctrl-C
+	pause();
+	eprintf("Finishing.\n");
+	
+	// Reset the slave node for next use (will stop emitting heartbeat)
+	masterSendNMTstateChange (&TestMaster_Data, slavenodeid, NMT_Reset_Node);
+	
+	// Stop master
+	setState(&TestMaster_Data, Stopped);
+	
+	// Stop timer thread
+	StopTimerLoop();
+	
+fail_master:
+	if(MasterBoard.baudrate) canClose(&TestMaster_Data);	
+
+  return 0;
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Master/TestMasterMicroMod.h	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,59 @@
+/*
+This file is part of CanFestival, a library implementing CanOpen Stack. 
+
+Copyright (C): Edouard TISSERANT and Francis DUPIN
+
+See COPYING file for copyrights details.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+#ifdef USE_XENO
+#define eprintf(...)
+#else
+#define eprintf(...) printf (__VA_ARGS__)
+#endif
+//void print_message(Message *m);
+
+/*UNS8 canSend(CAN_HANDLE fd0, Message *m);*/
+
+#include "canfestival.h"
+
+/*
+#define CAN_FIFO_LENGTH 100
+
+#define DECLARE_A_CAN_FIFO \
+static Message FIFO[CAN_FIFO_LENGTH];\
+static int FIFO_First = 0;\
+static int FIFO_Last = 0;\
+\
+static void PutInFIFO(Message *m)\
+{\
+	FIFO[FIFO_Last++] = *m;\
+	FIFO_Last %= CAN_FIFO_LENGTH;\
+}\
+\
+static void GetFromFIFO(Message *m)\
+{\
+	*m = FIFO[FIFO_First++];\
+	FIFO_First %= CAN_FIFO_LENGTH;\
+}\
+\
+static void TransmitMessage(CO_Data* d, UNS32 id)\
+{\
+	Message m;\
+	GetFromFIFO(&m);\
+	canDispatch(d, &m);\
+}
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Master/TestMasterMicroMod.vcproj	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8,00"
+	Name="TestMasterMicroMod"
+	ProjectGUID="{B51A176D-5320-4534-913B-3025CED5B27E}"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="../../Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="../../include;../../include/win32"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="CanFestival-3.lib"
+				OutputFile="$(OutDir)/TestMasterMicroMod.exe"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="../../Debug UNICODE"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/TestMasterMicroMod.pdb"
+				SubSystem="1"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="../../Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="../../include;../../include/win32"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="CanFestival-3.lib"
+				OutputFile="$(OutDir)/TestMasterMicroMod.exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="../../Release"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath=".\getopt.c"
+				>
+			</File>
+			<File
+				RelativePath=".\TestMaster.c"
+				>
+			</File>
+			<File
+				RelativePath=".\TestMasterMicroMod.c"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath=".\getopt.h"
+				>
+			</File>
+			<File
+				RelativePath=".\TestMaster.h"
+				>
+			</File>
+			<File
+				RelativePath=".\TestMasterMicroMod.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Master/getopt.c	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,1260 @@
+/* from http://www.pwilson.net/getopt.html */
+
+/* Getopt for GNU.
+   NOTE: getopt is now part of the C library, so if you don't know what
+   "Keep this file name-space clean" means, talk to drepper@gnu.org
+   before changing it!
+   Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001
+        Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
+   Ditto for AIX 3.2 and <stdlib.h>.  */
+#ifndef _NO_PROTO
+# define _NO_PROTO
+#endif
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#if !defined __STDC__ || !__STDC__
+/* This is a separate conditional since some stdc systems
+   reject `defined (const)'.  */
+# ifndef const
+#  define const
+# endif
+#endif
+
+#include <stdio.h>
+
+/* Comment out all this code if we are using the GNU C Library, and are not
+   actually compiling the library itself.  This code is part of the GNU C
+   Library, but also included in many other GNU distributions.  Compiling
+   and linking in this code is a waste when using the GNU C library
+   (especially if it is a shared library).  Rather than having every GNU
+   program understand `configure --with-gnu-libc' and omit the object files,
+   it is simpler to just do this in the source for each such file.  */
+
+#define GETOPT_INTERFACE_VERSION 2
+#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
+# include <gnu-versions.h>
+# if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
+#  define ELIDE_CODE
+# endif
+#endif
+
+#ifndef ELIDE_CODE
+
+
+/* This needs to come after some library #include
+   to get __GNU_LIBRARY__ defined.  */
+#ifdef  __GNU_LIBRARY__
+/* Don't include stdlib.h for non-GNU C libraries because some of them
+   contain conflicting prototypes for getopt.  */
+# include <stdlib.h>
+# include <unistd.h>
+#endif  /* GNU C library.  */
+
+#ifdef VMS
+# include <unixlib.h>
+# if HAVE_STRING_H - 0
+#  include <string.h>
+# endif
+#endif
+
+#ifndef _
+/* This is for other GNU distributions with internationalized messages.  */
+# if (HAVE_LIBINTL_H && ENABLE_NLS) || defined _LIBC
+#  include <libintl.h>
+#  ifndef _
+#   define _(msgid)     gettext (msgid)
+#  endif
+# else
+#  define _(msgid)      (msgid)
+# endif
+# if defined _LIBC && defined USE_IN_LIBIO
+#  include <wchar.h>
+# endif
+#endif
+
+/* This version of `getopt' appears to the caller like standard Unix `getopt'
+   but it behaves differently for the user, since it allows the user
+   to intersperse the options with the other arguments.
+
+   As `getopt' works, it permutes the elements of ARGV so that,
+   when it is done, all the options precede everything else.  Thus
+   all application programs are extended to handle flexible argument order.
+
+   Setting the environment variable POSIXLY_CORRECT disables permutation.
+   Then the behavior is completely standard.
+
+   GNU application programs can use a third alternative mode in which
+   they can distinguish the relative order of options and other arguments.  */
+
+#include "getopt.h"
+
+/* For communication from `getopt' to the caller.
+   When `getopt' finds an option that takes an argument,
+   the argument value is returned here.
+   Also, when `ordering' is RETURN_IN_ORDER,
+   each non-option ARGV-element is returned here.  */
+
+char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+   This is used for communication to and from the caller
+   and for communication between successive calls to `getopt'.
+
+   On entry to `getopt', zero means this is the first call; initialize.
+
+   When `getopt' returns -1, this is the index of the first of the
+   non-option elements that the caller should itself scan.
+
+   Otherwise, `optind' communicates from one call to the next
+   how much of ARGV has been scanned so far.  */
+
+/* 1003.2 says this must be 1 before any call.  */
+int optind = 1;
+
+/* Formerly, initialization of getopt depended on optind==0, which
+   causes problems with re-calling getopt as programs generally don't
+   know that. */
+
+int __getopt_initialized;
+
+/* The next char to be scanned in the option-element
+   in which the last option character we returned was found.
+   This allows us to pick up the scan where we left off.
+
+   If this is zero, or a null string, it means resume the scan
+   by advancing to the next ARGV-element.  */
+
+static char *nextchar;
+
+/* Callers store zero here to inhibit the error message
+   for unrecognized options.  */
+
+int opterr = 1;
+
+/* Set to an option character which was unrecognized.
+   This must be initialized on some systems to avoid linking in the
+   system's own getopt implementation.  */
+
+int optopt = '?';
+
+/* Describe how to deal with options that follow non-option ARGV-elements.
+
+   If the caller did not specify anything,
+   the default is REQUIRE_ORDER if the environment variable
+   POSIXLY_CORRECT is defined, PERMUTE otherwise.
+
+   REQUIRE_ORDER means don't recognize them as options;
+   stop option processing when the first non-option is seen.
+   This is what Unix does.
+   This mode of operation is selected by either setting the environment
+   variable POSIXLY_CORRECT, or using `+' as the first character
+   of the list of option characters.
+
+   PERMUTE is the default.  We permute the contents of ARGV as we scan,
+   so that eventually all the non-options are at the end.  This allows options
+   to be given in any order, even with programs that were not written to
+   expect this.
+
+   RETURN_IN_ORDER is an option available to programs that were written
+   to expect options and other ARGV-elements in any order and that care about
+   the ordering of the two.  We describe each non-option ARGV-element
+   as if it were the argument of an option with character code 1.
+   Using `-' as the first character of the list of option characters
+   selects this mode of operation.
+
+   The special argument `--' forces an end of option-scanning regardless
+   of the value of `ordering'.  In the case of RETURN_IN_ORDER, only
+   `--' can cause `getopt' to return -1 with `optind' != ARGC.  */
+
+static enum
+{
+  REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
+} ordering;
+
+/* Value of POSIXLY_CORRECT environment variable.  */
+static char *posixly_correct;
+
+#ifdef  __GNU_LIBRARY__
+/* We want to avoid inclusion of string.h with non-GNU libraries
+   because there are many ways it can cause trouble.
+   On some systems, it contains special magic macros that don't work
+   in GCC.  */
+# include <string.h>
+# define my_index       strchr
+#else
+
+# if HAVE_STRING_H || WIN32 /* Pete Wilson mod 7/28/02 */
+#  include <string.h>
+# else
+#  include <strings.h>
+# endif
+
+/* Avoid depending on library functions or files
+   whose names are inconsistent.  */
+
+#ifndef getenv
+extern char *getenv ();
+#endif
+
+static char *
+my_index (str, chr)
+     const char *str;
+     int chr;
+{
+  while (*str)
+    {
+      if (*str == chr)
+        return (char *) str;
+      str++;
+    }
+  return 0;
+}
+
+/* If using GCC, we can safely declare strlen this way.
+   If not using GCC, it is ok not to declare it.  */
+#ifdef __GNUC__
+/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h.
+   That was relevant to code that was here before.  */
+# if (!defined __STDC__ || !__STDC__) && !defined strlen
+/* gcc with -traditional declares the built-in strlen to return int,
+   and has done so at least since version 2.4.5. -- rms.  */
+extern int strlen (const char *);
+# endif /* not __STDC__ */
+#endif /* __GNUC__ */
+
+#endif /* not __GNU_LIBRARY__ */
+
+/* Handle permutation of arguments.  */
+
+/* Describe the part of ARGV that contains non-options that have
+   been skipped.  `first_nonopt' is the index in ARGV of the first of them;
+   `last_nonopt' is the index after the last of them.  */
+
+static int first_nonopt;
+static int last_nonopt;
+
+#ifdef _LIBC
+/* Stored original parameters.
+   XXX This is no good solution.  We should rather copy the args so
+   that we can compare them later.  But we must not use malloc(3).  */
+extern int __libc_argc;
+extern char **__libc_argv;
+
+/* Bash 2.0 gives us an environment variable containing flags
+   indicating ARGV elements that should not be considered arguments.  */
+
+# ifdef USE_NONOPTION_FLAGS
+/* Defined in getopt_init.c  */
+extern char *__getopt_nonoption_flags;
+
+static int nonoption_flags_max_len;
+static int nonoption_flags_len;
+# endif
+
+# ifdef USE_NONOPTION_FLAGS
+#  define SWAP_FLAGS(ch1, ch2) \
+  if (nonoption_flags_len > 0)                                                \
+    {                                                                         \
+      char __tmp = __getopt_nonoption_flags[ch1];                             \
+      __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2];          \
+      __getopt_nonoption_flags[ch2] = __tmp;                                  \
+    }
+# else
+#  define SWAP_FLAGS(ch1, ch2)
+# endif
+#else   /* !_LIBC */
+# define SWAP_FLAGS(ch1, ch2)
+#endif  /* _LIBC */
+
+/* Exchange two adjacent subsequences of ARGV.
+   One subsequence is elements [first_nonopt,last_nonopt)
+   which contains all the non-options that have been skipped so far.
+   The other is elements [last_nonopt,optind), which contains all
+   the options processed since those non-options were skipped.
+
+   `first_nonopt' and `last_nonopt' are relocated so that they describe
+   the new indices of the non-options in ARGV after they are moved.  */
+
+#if defined __STDC__ && __STDC__
+static void exchange (char **);
+#endif
+
+static void
+exchange (argv)
+     char **argv;
+{
+  int bottom = first_nonopt;
+  int middle = last_nonopt;
+  int top = optind;
+  char *tem;
+
+  /* Exchange the shorter segment with the far end of the longer segment.
+     That puts the shorter segment into the right place.
+     It leaves the longer segment in the right place overall,
+     but it consists of two parts that need to be swapped next.  */
+
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+  /* First make sure the handling of the `__getopt_nonoption_flags'
+     string can work normally.  Our top argument must be in the range
+     of the string.  */
+  if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len)
+    {
+      /* We must extend the array.  The user plays games with us and
+         presents new arguments.  */
+      char *new_str = malloc (top + 1);
+      if (new_str == NULL)
+        nonoption_flags_len = nonoption_flags_max_len = 0;
+      else
+        {
+          memset (__mempcpy (new_str, __getopt_nonoption_flags,
+                             nonoption_flags_max_len),
+                  '\0', top + 1 - nonoption_flags_max_len);
+          nonoption_flags_max_len = top + 1;
+          __getopt_nonoption_flags = new_str;
+        }
+    }
+#endif
+
+  while (top > middle && middle > bottom)
+    {
+      if (top - middle > middle - bottom)
+        {
+          /* Bottom segment is the short one.  */
+          int len = middle - bottom;
+          register int i;
+
+          /* Swap it with the top part of the top segment.  */
+          for (i = 0; i < len; i++)
+            {
+              tem = argv[bottom + i];
+              argv[bottom + i] = argv[top - (middle - bottom) + i];
+              argv[top - (middle - bottom) + i] = tem;
+              SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
+            }
+          /* Exclude the moved bottom segment from further swapping.  */
+          top -= len;
+        }
+      else
+        {
+          /* Top segment is the short one.  */
+          int len = top - middle;
+          register int i;
+
+          /* Swap it with the bottom part of the bottom segment.  */
+          for (i = 0; i < len; i++)
+            {
+              tem = argv[bottom + i];
+              argv[bottom + i] = argv[middle + i];
+              argv[middle + i] = tem;
+              SWAP_FLAGS (bottom + i, middle + i);
+            }
+          /* Exclude the moved top segment from further swapping.  */
+          bottom += len;
+        }
+    }
+
+  /* Update records for the slots the non-options now occupy.  */
+
+  first_nonopt += (optind - last_nonopt);
+  last_nonopt = optind;
+}
+
+/* Initialize the internal data when the first call is made.  */
+
+#if defined __STDC__ && __STDC__
+static const char *_getopt_initialize (int, char *const *, const char *);
+#endif
+static const char *
+_getopt_initialize (argc, argv, optstring)
+     int argc;
+     char *const *argv;
+     const char *optstring;
+{
+  /* Start processing options with ARGV-element 1 (since ARGV-element 0
+     is the program name); the sequence of previously skipped
+     non-option ARGV-elements is empty.  */
+
+  first_nonopt = last_nonopt = optind;
+
+  nextchar = NULL;
+
+  posixly_correct = getenv ("POSIXLY_CORRECT");
+
+  /* Determine how to handle the ordering of options and nonoptions.  */
+
+  if (optstring[0] == '-')
+    {
+      ordering = RETURN_IN_ORDER;
+      ++optstring;
+    }
+  else if (optstring[0] == '+')
+    {
+      ordering = REQUIRE_ORDER;
+      ++optstring;
+    }
+  else if (posixly_correct != NULL)
+    ordering = REQUIRE_ORDER;
+  else
+    ordering = PERMUTE;
+
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+  if (posixly_correct == NULL
+      && argc == __libc_argc && argv == __libc_argv)
+    {
+      if (nonoption_flags_max_len == 0)
+        {
+          if (__getopt_nonoption_flags == NULL
+              || __getopt_nonoption_flags[0] == '\0')
+            nonoption_flags_max_len = -1;
+          else
+            {
+              const char *orig_str = __getopt_nonoption_flags;
+              int len = nonoption_flags_max_len = strlen (orig_str);
+              if (nonoption_flags_max_len < argc)
+                nonoption_flags_max_len = argc;
+              __getopt_nonoption_flags =
+                (char *) malloc (nonoption_flags_max_len);
+              if (__getopt_nonoption_flags == NULL)
+                nonoption_flags_max_len = -1;
+              else
+                memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
+                        '\0', nonoption_flags_max_len - len);
+            }
+        }
+      nonoption_flags_len = nonoption_flags_max_len;
+    }
+  else
+    nonoption_flags_len = 0;
+#endif
+
+  return optstring;
+}
+
+/* Scan elements of ARGV (whose length is ARGC) for option characters
+   given in OPTSTRING.
+
+   If an element of ARGV starts with '-', and is not exactly "-" or "--",
+   then it is an option element.  The characters of this element
+   (aside from the initial '-') are option characters.  If `getopt'
+   is called repeatedly, it returns successively each of the option characters
+   from each of the option elements.
+
+   If `getopt' finds another option character, it returns that character,
+   updating `optind' and `nextchar' so that the next call to `getopt' can
+   resume the scan with the following option character or ARGV-element.
+
+   If there are no more option characters, `getopt' returns -1.
+   Then `optind' is the index in ARGV of the first ARGV-element
+   that is not an option.  (The ARGV-elements have been permuted
+   so that those that are not options now come last.)
+
+   OPTSTRING is a string containing the legitimate option characters.
+   If an option character is seen that is not listed in OPTSTRING,
+   return '?' after printing an error message.  If you set `opterr' to
+   zero, the error message is suppressed but we still return '?'.
+
+   If a char in OPTSTRING is followed by a colon, that means it wants an arg,
+   so the following text in the same ARGV-element, or the text of the following
+   ARGV-element, is returned in `optarg'.  Two colons mean an option that
+   wants an optional arg; if there is text in the current ARGV-element,
+   it is returned in `optarg', otherwise `optarg' is set to zero.
+
+   If OPTSTRING starts with `-' or `+', it requests different methods of
+   handling the non-option ARGV-elements.
+   See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
+
+   Long-named options begin with `--' instead of `-'.
+   Their names may be abbreviated as long as the abbreviation is unique
+   or is an exact match for some defined option.  If they have an
+   argument, it follows the option name in the same ARGV-element, separated
+   from the option name by a `=', or else the in next ARGV-element.
+   When `getopt' finds a long-named option, it returns 0 if that option's
+   `flag' field is nonzero, the value of the option's `val' field
+   if the `flag' field is zero.
+
+   The elements of ARGV aren't really const, because we permute them.
+   But we pretend they're const in the prototype to be compatible
+   with other systems.
+
+   LONGOPTS is a vector of `struct option' terminated by an
+   element containing a name which is zero.
+
+   LONGIND returns the index in LONGOPT of the long-named option found.
+   It is only valid when a long-named option has been found by the most
+   recent call.
+
+   If LONG_ONLY is nonzero, '-' as well as '--' can introduce
+   long-named options.  */
+
+int
+_getopt_internal (argc, argv, optstring, longopts, longind, long_only)
+     int argc;
+     char *const *argv;
+     const char *optstring;
+     const struct option *longopts;
+     int *longind;
+     int long_only;
+{
+  int print_errors = opterr;
+  if (optstring[0] == ':')
+    print_errors = 0;
+
+  if (argc < 1)
+    return -1;
+
+  optarg = NULL;
+
+  if (optind == 0 || !__getopt_initialized)
+    {
+      if (optind == 0)
+        optind = 1;     /* Don't scan ARGV[0], the program name.  */
+      optstring = _getopt_initialize (argc, argv, optstring);
+      __getopt_initialized = 1;
+    }
+
+  /* Test whether ARGV[optind] points to a non-option argument.
+     Either it does not have option syntax, or there is an environment flag
+     from the shell indicating it is not an option.  The later information
+     is only used when the used in the GNU libc.  */
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0'       \
+                      || (optind < nonoption_flags_len                        \
+                          && __getopt_nonoption_flags[optind] == '1'))
+#else
+# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0')
+#endif
+
+  if (nextchar == NULL || *nextchar == '\0')
+    {
+      /* Advance to the next ARGV-element.  */
+
+      /* Give FIRST_NONOPT and LAST_NONOPT rational values if OPTIND has been
+         moved back by the user (who may also have changed the arguments).  */
+      if (last_nonopt > optind)
+        last_nonopt = optind;
+      if (first_nonopt > optind)
+        first_nonopt = optind;
+
+      if (ordering == PERMUTE)
+        {
+          /* If we have just processed some options following some non-options,
+             exchange them so that the options come first.  */
+
+          if (first_nonopt != last_nonopt && last_nonopt != optind)
+            exchange ((char **) argv);
+          else if (last_nonopt != optind)
+            first_nonopt = optind;
+
+          /* Skip any additional non-options
+             and extend the range of non-options previously skipped.  */
+
+          while (optind < argc && NONOPTION_P)
+            optind++;
+          last_nonopt = optind;
+        }
+
+      /* The special ARGV-element `--' means premature end of options.
+         Skip it like a null option,
+         then exchange with previous non-options as if it were an option,
+         then skip everything else like a non-option.  */
+
+      if (optind != argc && !strcmp (argv[optind], "--"))
+        {
+          optind++;
+
+          if (first_nonopt != last_nonopt && last_nonopt != optind)
+            exchange ((char **) argv);
+          else if (first_nonopt == last_nonopt)
+            first_nonopt = optind;
+          last_nonopt = argc;
+
+          optind = argc;
+        }
+
+      /* If we have done all the ARGV-elements, stop the scan
+         and back over any non-options that we skipped and permuted.  */
+
+      if (optind == argc)
+        {
+          /* Set the next-arg-index to point at the non-options
+             that we previously skipped, so the caller will digest them.  */
+          if (first_nonopt != last_nonopt)
+            optind = first_nonopt;
+          return -1;
+        }
+
+      /* If we have come to a non-option and did not permute it,
+         either stop the scan or describe it to the caller and pass it by.  */
+
+      if (NONOPTION_P)
+        {
+          if (ordering == REQUIRE_ORDER)
+            return -1;
+          optarg = argv[optind++];
+          return 1;
+        }
+
+      /* We have found another option-ARGV-element.
+         Skip the initial punctuation.  */
+
+      nextchar = (argv[optind] + 1
+                  + (longopts != NULL && argv[optind][1] == '-'));
+    }
+
+  /* Decode the current option-ARGV-element.  */
+
+  /* Check whether the ARGV-element is a long option.
+
+     If long_only and the ARGV-element has the form "-f", where f is
+     a valid short option, don't consider it an abbreviated form of
+     a long option that starts with f.  Otherwise there would be no
+     way to give the -f short option.
+
+     On the other hand, if there's a long option "fubar" and
+     the ARGV-element is "-fu", do consider that an abbreviation of
+     the long option, just like "--fu", and not "-f" with arg "u".
+
+     This distinction seems to be the most useful approach.  */
+
+  if (longopts != NULL
+      && (argv[optind][1] == '-'
+          || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1])))))
+    {
+      char *nameend;
+      const struct option *p;
+      const struct option *pfound = NULL;
+      int exact = 0;
+      int ambig = 0;
+      int indfound = -1;
+      int option_index;
+
+      for (nameend = nextchar; *nameend && *nameend != '='; nameend++)
+        /* Do nothing.  */ ;
+
+      /* Test all long options for either exact match
+         or abbreviated matches.  */
+      for (p = longopts, option_index = 0; p->name; p++, option_index++)
+        if (!strncmp (p->name, nextchar, nameend - nextchar))
+          {
+            if ((unsigned int) (nameend - nextchar)
+                == (unsigned int) strlen (p->name))
+              {
+                /* Exact match found.  */
+                pfound = p;
+                indfound = option_index;
+                exact = 1;
+                break;
+              }
+            else if (pfound == NULL)
+              {
+                /* First nonexact match found.  */
+                pfound = p;
+                indfound = option_index;
+              }
+            else if (long_only
+                     || pfound->has_arg != p->has_arg
+                     || pfound->flag != p->flag
+                     || pfound->val != p->val)
+              /* Second or later nonexact match found.  */
+              ambig = 1;
+          }
+
+      if (ambig && !exact)
+        {
+          if (print_errors)
+            {
+#if defined _LIBC && defined USE_IN_LIBIO
+              char *buf;
+
+              __asprintf (&buf, _("%s: option `%s' is ambiguous\n"),
+                          argv[0], argv[optind]);
+
+              if (_IO_fwide (stderr, 0) > 0)
+                __fwprintf (stderr, L"%s", buf);
+              else
+                fputs (buf, stderr);
+
+              free (buf);
+#else
+              fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
+                       argv[0], argv[optind]);
+#endif
+            }
+          nextchar += strlen (nextchar);
+          optind++;
+          optopt = 0;
+          return '?';
+        }
+
+      if (pfound != NULL)
+        {
+          option_index = indfound;
+          optind++;
+          if (*nameend)
+            {
+              /* Don't test has_arg with >, because some C compilers don't
+                 allow it to be used on enums.  */
+              if (pfound->has_arg)
+                optarg = nameend + 1;
+              else
+                {
+                  if (print_errors)
+                    {
+#if defined _LIBC && defined USE_IN_LIBIO
+                      char *buf;
+#endif
+
+                      if (argv[optind - 1][1] == '-')
+                        {
+                          /* --option */
+#if defined _LIBC && defined USE_IN_LIBIO
+                          __asprintf (&buf, _("\
+%s: option `--%s' doesn't allow an argument\n"),
+                                      argv[0], pfound->name);
+#else
+                          fprintf (stderr, _("\
+%s: option `--%s' doesn't allow an argument\n"),
+                                   argv[0], pfound->name);
+#endif
+                        }
+                      else
+                        {
+                          /* +option or -option */
+#if defined _LIBC && defined USE_IN_LIBIO
+                          __asprintf (&buf, _("\
+%s: option `%c%s' doesn't allow an argument\n"),
+                                      argv[0], argv[optind - 1][0],
+                                      pfound->name);
+#else
+                          fprintf (stderr, _("\
+%s: option `%c%s' doesn't allow an argument\n"),
+                                   argv[0], argv[optind - 1][0], pfound->name);
+#endif
+                        }
+
+#if defined _LIBC && defined USE_IN_LIBIO
+                      if (_IO_fwide (stderr, 0) > 0)
+                        __fwprintf (stderr, L"%s", buf);
+                      else
+                        fputs (buf, stderr);
+
+                      free (buf);
+#endif
+                    }
+
+                  nextchar += strlen (nextchar);
+
+                  optopt = pfound->val;
+                  return '?';
+                }
+            }
+          else if (pfound->has_arg == 1)
+            {
+              if (optind < argc)
+                optarg = argv[optind++];
+              else
+                {
+                  if (print_errors)
+                    {
+#if defined _LIBC && defined USE_IN_LIBIO
+                      char *buf;
+
+                      __asprintf (&buf,
+                                  _("%s: option `%s' requires an argument\n"),
+                                  argv[0], argv[optind - 1]);
+
+                      if (_IO_fwide (stderr, 0) > 0)
+                        __fwprintf (stderr, L"%s", buf);
+                      else
+                        fputs (buf, stderr);
+
+                      free (buf);
+#else
+                      fprintf (stderr,
+                               _("%s: option `%s' requires an argument\n"),
+                               argv[0], argv[optind - 1]);
+#endif
+                    }
+                  nextchar += strlen (nextchar);
+                  optopt = pfound->val;
+                  return optstring[0] == ':' ? ':' : '?';
+                }
+            }
+          nextchar += strlen (nextchar);
+          if (longind != NULL)
+            *longind = option_index;
+          if (pfound->flag)
+            {
+              *(pfound->flag) = pfound->val;
+              return 0;
+            }
+          return pfound->val;
+        }
+
+      /* Can't find it as a long option.  If this is not getopt_long_only,
+         or the option starts with '--' or is not a valid short
+         option, then it's an error.
+         Otherwise interpret it as a short option.  */
+      if (!long_only || argv[optind][1] == '-'
+          || my_index (optstring, *nextchar) == NULL)
+        {
+          if (print_errors)
+            {
+#if defined _LIBC && defined USE_IN_LIBIO
+              char *buf;
+#endif
+
+              if (argv[optind][1] == '-')
+                {
+                  /* --option */
+#if defined _LIBC && defined USE_IN_LIBIO
+                  __asprintf (&buf, _("%s: unrecognized option `--%s'\n"),
+                              argv[0], nextchar);
+#else
+                  fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
+                           argv[0], nextchar);
+#endif
+                }
+              else
+                {
+                  /* +option or -option */
+#if defined _LIBC && defined USE_IN_LIBIO
+                  __asprintf (&buf, _("%s: unrecognized option `%c%s'\n"),
+                              argv[0], argv[optind][0], nextchar);
+#else
+                  fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
+                           argv[0], argv[optind][0], nextchar);
+#endif
+                }
+
+#if defined _LIBC && defined USE_IN_LIBIO
+              if (_IO_fwide (stderr, 0) > 0)
+                __fwprintf (stderr, L"%s", buf);
+              else
+                fputs (buf, stderr);
+
+              free (buf);
+#endif
+            }
+          nextchar = (char *) "";
+          optind++;
+          optopt = 0;
+          return '?';
+        }
+    }
+
+  /* Look at and handle the next short option-character.  */
+
+  {
+    char c = *nextchar++;
+    char *temp = my_index (optstring, c);
+
+    /* Increment `optind' when we start to process its last character.  */
+    if (*nextchar == '\0')
+      ++optind;
+
+    if (temp == NULL || c == ':')
+      {
+        if (print_errors)
+          {
+#if defined _LIBC && defined USE_IN_LIBIO
+              char *buf;
+#endif
+
+            if (posixly_correct)
+              {
+                /* 1003.2 specifies the format of this message.  */
+#if defined _LIBC && defined USE_IN_LIBIO
+                __asprintf (&buf, _("%s: illegal option -- %c\n"),
+                            argv[0], c);
+#else
+                fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c);
+#endif
+              }
+            else
+              {
+#if defined _LIBC && defined USE_IN_LIBIO
+                __asprintf (&buf, _("%s: invalid option -- %c\n"),
+                            argv[0], c);
+#else
+                fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c);
+#endif
+              }
+
+#if defined _LIBC && defined USE_IN_LIBIO
+            if (_IO_fwide (stderr, 0) > 0)
+              __fwprintf (stderr, L"%s", buf);
+            else
+              fputs (buf, stderr);
+
+            free (buf);
+#endif
+          }
+        optopt = c;
+        return '?';
+      }
+    /* Convenience. Treat POSIX -W foo same as long option --foo */
+    if (temp[0] == 'W' && temp[1] == ';')
+      {
+        char *nameend;
+        const struct option *p;
+        const struct option *pfound = NULL;
+        int exact = 0;
+        int ambig = 0;
+        int indfound = 0;
+        int option_index;
+
+        /* This is an option that requires an argument.  */
+        if (*nextchar != '\0')
+          {
+            optarg = nextchar;
+            /* If we end this ARGV-element by taking the rest as an arg,
+               we must advance to the next element now.  */
+            optind++;
+          }
+        else if (optind == argc)
+          {
+            if (print_errors)
+              {
+                /* 1003.2 specifies the format of this message.  */
+#if defined _LIBC && defined USE_IN_LIBIO
+                char *buf;
+
+                __asprintf (&buf, _("%s: option requires an argument -- %c\n"),
+                            argv[0], c);
+
+                if (_IO_fwide (stderr, 0) > 0)
+                  __fwprintf (stderr, L"%s", buf);
+                else
+                  fputs (buf, stderr);
+
+                free (buf);
+#else
+                fprintf (stderr, _("%s: option requires an argument -- %c\n"),
+                         argv[0], c);
+#endif
+              }
+            optopt = c;
+            if (optstring[0] == ':')
+              c = ':';
+            else
+              c = '?';
+            return c;
+          }
+        else
+          /* We already incremented `optind' once;
+             increment it again when taking next ARGV-elt as argument.  */
+          optarg = argv[optind++];
+
+        /* optarg is now the argument, see if it's in the
+           table of longopts.  */
+
+        for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++)
+          /* Do nothing.  */ ;
+
+        /* Test all long options for either exact match
+           or abbreviated matches.  */
+        for (p = longopts, option_index = 0; p->name; p++, option_index++)
+          if (!strncmp (p->name, nextchar, nameend - nextchar))
+            {
+              if ((unsigned int) (nameend - nextchar) == strlen (p->name))
+                {
+                  /* Exact match found.  */
+                  pfound = p;
+                  indfound = option_index;
+                  exact = 1;
+                  break;
+                }
+              else if (pfound == NULL)
+                {
+                  /* First nonexact match found.  */
+                  pfound = p;
+                  indfound = option_index;
+                }
+              else
+                /* Second or later nonexact match found.  */
+                ambig = 1;
+            }
+        if (ambig && !exact)
+          {
+            if (print_errors)
+              {
+#if defined _LIBC && defined USE_IN_LIBIO
+                char *buf;
+
+                __asprintf (&buf, _("%s: option `-W %s' is ambiguous\n"),
+                            argv[0], argv[optind]);
+
+                if (_IO_fwide (stderr, 0) > 0)
+                  __fwprintf (stderr, L"%s", buf);
+                else
+                  fputs (buf, stderr);
+
+                free (buf);
+#else
+                fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
+                         argv[0], argv[optind]);
+#endif
+              }
+            nextchar += strlen (nextchar);
+            optind++;
+            return '?';
+          }
+        if (pfound != NULL)
+          {
+            option_index = indfound;
+            if (*nameend)
+              {
+                /* Don't test has_arg with >, because some C compilers don't
+                   allow it to be used on enums.  */
+                if (pfound->has_arg)
+                  optarg = nameend + 1;
+                else
+                  {
+                    if (print_errors)
+                      {
+#if defined _LIBC && defined USE_IN_LIBIO
+                        char *buf;
+
+                        __asprintf (&buf, _("\
+%s: option `-W %s' doesn't allow an argument\n"),
+                                    argv[0], pfound->name);
+
+                        if (_IO_fwide (stderr, 0) > 0)
+                          __fwprintf (stderr, L"%s", buf);
+                        else
+                          fputs (buf, stderr);
+
+                        free (buf);
+#else
+                        fprintf (stderr, _("\
+%s: option `-W %s' doesn't allow an argument\n"),
+                                 argv[0], pfound->name);
+#endif
+                      }
+
+                    nextchar += strlen (nextchar);
+                    return '?';
+                  }
+              }
+            else if (pfound->has_arg == 1)
+              {
+                if (optind < argc)
+                  optarg = argv[optind++];
+                else
+                  {
+                    if (print_errors)
+                      {
+#if defined _LIBC && defined USE_IN_LIBIO
+                        char *buf;
+
+                        __asprintf (&buf, _("\
+%s: option `%s' requires an argument\n"),
+                                    argv[0], argv[optind - 1]);
+
+                        if (_IO_fwide (stderr, 0) > 0)
+                          __fwprintf (stderr, L"%s", buf);
+                        else
+                          fputs (buf, stderr);
+
+                        free (buf);
+#else
+                        fprintf (stderr,
+                                 _("%s: option `%s' requires an argument\n"),
+                                 argv[0], argv[optind - 1]);
+#endif
+                      }
+                    nextchar += strlen (nextchar);
+                    return optstring[0] == ':' ? ':' : '?';
+                  }
+              }
+            nextchar += strlen (nextchar);
+            if (longind != NULL)
+              *longind = option_index;
+            if (pfound->flag)
+              {
+                *(pfound->flag) = pfound->val;
+                return 0;
+              }
+            return pfound->val;
+          }
+          nextchar = NULL;
+          return 'W';   /* Let the application handle it.   */
+      }
+    if (temp[1] == ':')
+      {
+        if (temp[2] == ':')
+          {
+            /* This is an option that accepts an argument optionally.  */
+            if (*nextchar != '\0')
+              {
+                optarg = nextchar;
+                optind++;
+              }
+            else
+              optarg = NULL;
+            nextchar = NULL;
+          }
+        else
+          {
+            /* This is an option that requires an argument.  */
+            if (*nextchar != '\0')
+              {
+                optarg = nextchar;
+                /* If we end this ARGV-element by taking the rest as an arg,
+                   we must advance to the next element now.  */
+                optind++;
+              }
+            else if (optind == argc)
+              {
+                if (print_errors)
+                  {
+                    /* 1003.2 specifies the format of this message.  */
+#if defined _LIBC && defined USE_IN_LIBIO
+                    char *buf;
+
+                    __asprintf (&buf,
+                                _("%s: option requires an argument -- %c\n"),
+                                argv[0], c);
+
+                    if (_IO_fwide (stderr, 0) > 0)
+                      __fwprintf (stderr, L"%s", buf);
+                    else
+                      fputs (buf, stderr);
+
+                    free (buf);
+#else
+                    fprintf (stderr,
+                             _("%s: option requires an argument -- %c\n"),
+                             argv[0], c);
+#endif
+                  }
+                optopt = c;
+                if (optstring[0] == ':')
+                  c = ':';
+                else
+                  c = '?';
+              }
+            else
+              /* We already incremented `optind' once;
+                 increment it again when taking next ARGV-elt as argument.  */
+              optarg = argv[optind++];
+            nextchar = NULL;
+          }
+      }
+    return c;
+  }
+}
+
+int
+getopt (argc, argv, optstring)
+     int argc;
+     char *const *argv;
+     const char *optstring;
+{
+  return _getopt_internal (argc, argv, optstring,
+                           (const struct option *) 0,
+                           (int *) 0,
+                           0);
+}
+
+#endif  /* Not ELIDE_CODE.  */
+
+
+/* Compile with -DTEST to make an executable for use in testing
+   the above definition of `getopt'.  */
+
+/* #define TEST */        /* Pete Wilson mod 7/28/02 */
+#ifdef TEST
+
+#ifndef exit         /* Pete Wilson mod 7/28/02 */
+  int exit(int);     /* Pete Wilson mod 7/28/02 */
+#endif               /* Pete Wilson mod 7/28/02 */
+
+int
+main (argc, argv)
+     int argc;
+     char **argv;
+{
+  int c;
+  int digit_optind = 0;
+
+  while (1)
+    {
+      int this_option_optind = optind ? optind : 1;
+
+      c = getopt (argc, argv, "abc:d:0123456789");
+      if (c == -1)
+        break;
+
+      switch (c)
+        {
+        case '0':
+        case '1':
+        case '2':
+        case '3':
+        case '4':
+        case '5':
+        case '6':
+        case '7':
+        case '8':
+        case '9':
+          if (digit_optind != 0 && digit_optind != this_option_optind)
+            printf ("digits occur in two different argv-elements.\n");
+          digit_optind = this_option_optind;
+          printf ("option %c\n", c);
+          break;
+
+        case 'a':
+          printf ("option a\n");
+          break;
+
+        case 'b':
+          printf ("option b\n");
+          break;
+
+        case 'c':
+          printf ("option c with value `%s'\n", optarg);
+          break;
+
+        case '?':
+          break;
+
+        default:
+          printf ("?? getopt returned character code 0%o ??\n", c);
+        }
+    }
+
+  if (optind < argc)
+    {
+      printf ("non-option ARGV-elements: ");
+      while (optind < argc)
+        printf ("%s ", argv[optind++]);
+      printf ("\n");
+    }
+
+  exit (0);
+}
+
+#endif /* TEST */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Master/getopt.h	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,191 @@
+/* from http://www.pwilson.net/getopt.html */
+
+/* getopt.h */
+/* Declarations for getopt.
+   Copyright (C) 1989-1994, 1996-1999, 2001 Free Software 
+   Foundation, Inc. This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute 
+   it and/or modify it under the terms of the GNU Lesser 
+   General Public License as published by the Free Software 
+   Foundation; either version 2.1 of the License, or 
+   (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will 
+   be useful, but WITHOUT ANY WARRANTY; without even the 
+   implied warranty of MERCHANTABILITY or FITNESS FOR A 
+   PARTICULAR PURPOSE.  See the GNU Lesser General Public 
+   License for more details.
+
+   You should have received a copy of the GNU Lesser General 
+   Public License along with the GNU C Library; if not, write 
+   to the Free Software Foundation, Inc., 59 Temple Place,
+   Suite 330, Boston, MA 02111-1307 USA.  */
+
+  
+
+  
+
+#ifndef _GETOPT_H
+
+#ifndef __need_getopt
+# define _GETOPT_H 1
+#endif
+
+/* If __GNU_LIBRARY__ is not already defined, either we are being used
+   standalone, or this is the first header included in the source file.
+   If we are being used with glibc, we need to include <features.h>, but
+   that does not exist if we are standalone.  So: if __GNU_LIBRARY__ is
+   not defined, include <ctype.h>, which will pull in <features.h> for us
+   if it's from glibc.  (Why ctype.h?  It's guaranteed to exist and it
+   doesn't flood the namespace with stuff the way some other headers do.)  */
+#if !defined __GNU_LIBRARY__
+# include <ctype.h>
+#endif
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+/* For communication from `getopt' to the caller.
+   When `getopt' finds an option that takes an argument,
+   the argument value is returned here.
+   Also, when `ordering' is RETURN_IN_ORDER,
+   each non-option ARGV-element is returned here.  */
+
+extern char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+   This is used for communication to and from the caller
+   and for communication between successive calls to `getopt'.
+
+   On entry to `getopt', zero means this is the first call; initialize.
+
+   When `getopt' returns -1, this is the index of the first of the
+   non-option elements that the caller should itself scan.
+
+   Otherwise, `optind' communicates from one call to the next
+   how much of ARGV has been scanned so far.  */
+
+extern int optind;
+
+/* Callers store zero here to inhibit the error message `getopt' prints
+   for unrecognized options.  */
+
+extern int opterr;
+
+/* Set to an option character which was unrecognized.  */
+
+extern int optopt;
+
+#ifndef __need_getopt
+/* Describe the long-named options requested by the application.
+   The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
+   of `struct option' terminated by an element containing a name which is
+   zero.
+
+   The field `has_arg' is:
+   no_argument          (or 0) if the option does not take an argument,
+   required_argument    (or 1) if the option requires an argument,
+   optional_argument    (or 2) if the option takes an optional argument.
+
+   If the field `flag' is not NULL, it points to a variable that is set
+   to the value given in the field `val' when the option is found, but
+   left unchanged if the option is not found.
+
+   To have a long-named option do something other than set an `int' to
+   a compiled-in constant, such as set a value from `optarg', set the
+   option's `flag' field to zero and its `val' field to a nonzero
+   value (the equivalent single-letter option character, if there is
+   one).  For long options that have a zero `flag' field, `getopt'
+   returns the contents of the `val' field.  */
+
+struct option
+{
+# if (defined __STDC__ && __STDC__) || defined __cplusplus
+  const char *name;
+# else
+  char *name;
+# endif
+  /* has_arg can't be an enum because some compilers complain about
+     type mismatches in all the code that assumes it is an int.  */
+  int has_arg;
+  int *flag;
+  int val;
+};
+
+/* Names for the values of the `has_arg' field of `struct option'.  */
+
+# define no_argument            0
+# define required_argument      1
+# define optional_argument      2
+#endif  /* need getopt */
+
+
+/* Get definitions and prototypes for functions to process the
+   arguments in ARGV (ARGC of them, minus the program name) for
+   options given in OPTS.
+
+   Return the option character from OPTS just read.  Return -1 when
+   there are no more options.  For unrecognized options, or options
+   missing arguments, `optopt' is set to the option letter, and '?' is
+   returned.
+
+   The OPTS string is a list of characters which are recognized option
+   letters, optionally followed by colons, specifying that that letter
+   takes an argument, to be placed in `optarg'.
+
+   If a letter in OPTS is followed by two colons, its argument is
+   optional.  This behavior is specific to the GNU `getopt'.
+
+   The argument `--' causes premature termination of argument
+   scanning, explicitly telling `getopt' that there are no more
+   options.
+
+   If OPTS begins with `--', then non-option arguments are treated as
+   arguments to the option '\0'.  This behavior is specific to the GNU
+   `getopt'.  */
+
+#if (defined __STDC__ && __STDC__) || defined __cplusplus
+# ifdef __GNU_LIBRARY__
+/* Many other libraries have conflicting prototypes for getopt, with
+   differences in the consts, in stdlib.h.  To avoid compilation
+   errors, only prototype getopt for the GNU C library.  */
+extern int getopt (int ___argc, char *const *___argv, const char *__shortopts);
+# else /* not __GNU_LIBRARY__ */
+extern int getopt ();
+# endif /* __GNU_LIBRARY__ */
+
+# ifndef __need_getopt
+extern int getopt_long (int ___argc, char *const *___argv,
+                        const char *__shortopts,
+                        const struct option *__longopts, int *__longind);
+extern int getopt_long_only (int ___argc, char *const *___argv,
+                             const char *__shortopts,
+                             const struct option *__longopts, int *__longind);
+
+/* Internal only.  Users should not call this directly.  */
+extern int _getopt_internal (int ___argc, char *const *___argv,
+                             const char *__shortopts,
+                             const struct option *__longopts, int *__longind,
+                             int __long_only);
+# endif
+#else /* not __STDC__ */
+extern int getopt ();
+# ifndef __need_getopt
+extern int getopt_long ();
+extern int getopt_long_only ();
+
+extern int _getopt_internal ();
+# endif
+#endif /* __STDC__ */
+
+#ifdef  __cplusplus
+}
+#endif
+
+/* Make sure we later can get all the definitions and declarations.  */
+#undef __need_getopt
+
+#endif /* getopt.h */
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Slave_Gui/.cvsignore	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,8 @@
+Makefile
+TestMasterSlave
+result.txt
+TestMasterSlave.exe
+TestMasterSalve.vcproj.KONG.edouard.user
+Release
+*.depend
+DS401_Slave_Gui
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Slave_Gui/CallBack.cpp	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,80 @@
+/*
+This file is part of CanFestival, a library implementing CanOpen Stack. 
+
+Copyright (C): Edouard TISSERANT and Francis DUPIN
+
+See COPYING file for copyrights details.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+#include <wx/wxprec.h>
+#include <wx/wx.h>
+#include <wx/textctrl.h>
+#include <iostream>
+
+#include "CallBack.h"
+#include "main.h"
+extern "C" 
+  {
+	#include "ObjDict.h"
+  }
+
+
+extern wxTextCtrl 	*textLog;
+
+/*****************************************************************************/
+void Call_heartbeatError(UNS8 heartbeatID)
+{
+	*textLog << wxT("HeartbeatError\n");
+}
+
+void Call_initialisation()
+{
+	*textLog << wxT("Initialisation\n");
+}
+
+void Call_preOperational()
+{
+	*textLog << wxT("PreOperational\n");
+}
+
+void Call_operational()
+{
+	*textLog << wxT("Operational\n");
+}
+
+void Call_stopped()
+{
+	*textLog << wxT("Stopped\n");
+}
+
+void Call_post_sync()
+{
+    *textLog << wxT("Post_sync\n");
+	printf("POST SYNC:\n");
+	printf("     Write_Outputs: %x \n     Analogue_Output1: %d \n     Analogue_Output2: %d \n", Write_Outputs_8_Bit[0], Write_Analogue_Output_16_Bit[0], Write_Analogue_Output_16_Bit[1]);
+	printf("     Read_Input: %x \n     Analogue_Input1: %d \n     Analogue_Input2: %d \n", Read_Inputs_8_Bit[0], Read_Analogue_Input_16_Bit[0], Read_Analogue_Input_16_Bit[1]);
+}
+
+void Call_post_TPDO()
+{
+	*textLog << wxT("Post_TPDO\n");
+}
+
+void Call_storeODSubIndex(UNS16 wIndex, UNS8 bSubindex)
+{
+	printf("StoreODSubIndex : %4.4x %2.2x\n", wIndex,  bSubindex);
+	*textLog << wxT("StoreODSubIndex :\n");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Slave_Gui/CallBack.h	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,22 @@
+#ifndef CALLBACK_H_
+#define CALLBACK_H_
+
+extern "C" 
+  {
+	#include "ObjDict.h"
+  }
+
+void Call_heartbeatError(UNS8);
+
+UNS8 Call_canSend(Message *);
+
+void Call_initialisation(void);
+void Call_preOperational(void);
+void Call_operational(void);
+void Call_stopped(void);
+
+void Call_post_sync(void);
+void Call_post_TPDO(void);
+void Call_storeODSubIndex(UNS16 wIndex, UNS8 bSubindex);
+
+#endif /*CALLBACK_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Slave_Gui/Makefile.in	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,101 @@
+#! gmake
+
+#
+# Copyright (C) 2006 Laurent Bessard
+# 
+# This file is part of canfestival, a library implementing the canopen
+# stack
+# 
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+# 
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+# 
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+# 
+
+CC = SUB_CC
+OPT_CFLAGS = -O2
+CFLAGS = SUB_OPT_CFLAGS
+PROG_CFLAGS = SUB_PROG_CFLAGS
+EXE_CFLAGS = SUB_EXE_CFLAGS
+OS_NAME = SUB_OS_NAME
+ARCH_NAME = SUB_ARCH_NAME
+PREFIX = SUB_PREFIX
+TARGET = SUB_TARGET
+CAN_DRIVER = SUB_CAN_DRIVER
+TIMERS_DRIVER = SUB_TIMERS_DRIVER
+
+
+# DƩtermine le nom du fichier exƩcutable.
+EXEC = main
+# DĆ©termine la liste des fichiers sources.
+SRCS = $(wildcard *.cpp)
+# DƩtermine le nom du fichier qui contiendra les dƩpendances.
+DEPFILE = .depend
+# Construit la liste des fichiers temporaires Ć  partir de la liste des fichiers
+# sources.
+
+CPP_OBJS = $(SRCS:%.cpp=%.o)
+
+
+INCLUDES = -I../../include -I../../include/$(TARGET) -I../../include/$(CAN_DRIVER) -I../../include/$(TIMERS_DRIVER)
+
+OBJS = ObjDict.o ../../src/libcanfestival.a ../../drivers/$(TARGET)/libcanfestival_$(TARGET).a
+
+ifeq ($(TIMERS_DRIVER),timers_xeno)
+	PROGDEFINES = -DUSE_XENO
+endif
+
+all: DS401_Slave_Gui
+
+../../drivers/$(TARGET)/libcanfestival_$(TARGET).a:
+	$(MAKE) -C ../../drivers/$(TARGET) libcanfestival_$(TARGET).a
+
+
+DS401_Slave_Gui: ObjDict.c $(OBJS) $(CPP_OBJS)
+	$(CC) $(CFLAGS) $(PROG_CFLAGS) ${PROGDEFINES} $(INCLUDES) `wx-config --libs` $(OBJS) $(CPP_OBJS) $(EXE_CFLAGS) -o $@
+
+%o: %c
+	$(CC) -c $(CFLAGS) $(PROG_CFLAGS) ${PROGDEFINES} $(INCLUDES) $< -o $@
+
+ObjDict.c: ObjDict.od
+	$(MAKE) -C ../../objdictgen gnosis
+	python ../../objdictgen/objdictgen.py ObjDict.od ObjDict.c
+
+.cpp.o:
+	g++ -c $(CFLAGS) $(PROG_CFLAGS) ${PROGDEFINES} $(INCLUDES) `wx-config --cxxflags` $< -o $@
+
+clean:
+	rm -f $(MASTER_OBJS)
+	rm -f DS401_Slave_Gui
+	rm -f *~ *.o \#*
+
+mrproper: clean
+	rm -f ObjDict.c
+	rm -f ObjDict.h
+	$(RM) $(EXEC) $(DEPEND_FILE)
+	
+install: DS401_Slave_Gui
+	mkdir -p $(PREFIX)/bin/
+	cp $< $(PREFIX)/bin/
+	
+uninstall:
+	rm -f $(PREFIX)/bin/DS401_Slave_Gui
+
+$(EXEC): $(OBJS)
+	g++ $(OBJS) `wx-config --libs` -o $(EXEC)
+
+-include $(DEPFILE)
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Slave_Gui/ObjDict.c	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,709 @@
+
+/* File generated by gen_cfile.py. Should not be modified. */
+
+#include "ObjDict.h"
+
+/**************************************************************************/
+/* Declaration of the mapped variables                                    */
+/**************************************************************************/
+UNS8 Read_Inputs_8_Bit[] =		/* Mapped at index 0x6000, subindex 0x01 - 0x01 */
+  {
+    0x0	/* 0 */
+  };
+UNS8 Polarity_Input_8_Bit[] =		/* Mapped at index 0x6002, subindex 0x01 - 0x01 */
+  {
+    0x0	/* 0 */
+  };
+UNS8 Write_Outputs_8_Bit[] =		/* Mapped at index 0x6200, subindex 0x01 - 0x01 */
+  {
+    0x0	/* 0 */
+  };
+UNS8 Change_Polarity_Outputs_8_Bit[] =		/* Mapped at index 0x6202, subindex 0x01 - 0x01 */
+  {
+    0x0	/* 0 */
+  };
+UNS8 Error_Mode_Outputs_8_Bit[] =		/* Mapped at index 0x6206, subindex 0x01 - 0x01 */
+  {
+    0x0	/* 0 */
+  };
+UNS8 Error_Value_Outputs_8_Bit[] =		/* Mapped at index 0x6207, subindex 0x01 - 0x01 */
+  {
+    0x0	/* 0 */
+  };
+INTEGER16 Read_Analogue_Input_16_Bit[] =		/* Mapped at index 0x6401, subindex 0x01 - 0x08 */
+  {
+    0x0,	/* 0 */
+    0x0,	/* 0 */
+    0x0,	/* 0 */
+    0x0,	/* 0 */
+    0x0,	/* 0 */
+    0x0,	/* 0 */
+    0x0,	/* 0 */
+    0x0	/* 0 */
+  };
+INTEGER16 Write_Analogue_Output_16_Bit[] =		/* Mapped at index 0x6411, subindex 0x01 - 0x04 */
+  {
+    0x0,	/* 0 */
+    0x0,	/* 0 */
+    0x0,	/* 0 */
+    0x0	/* 0 */
+  };
+UNS8 Analogue_Input_Global_Interrupt_Enable = 0x0;		/* Mapped at index 0x6423, subindex 0x00 */
+UNS32 Analogue_Input_Interrupt_Delta_Unsigned[] =		/* Mapped at index 0x6426, subindex 0x01 - 0x08 */
+  {
+    0x0,	/* 0 */
+    0x0,	/* 0 */
+    0x0,	/* 0 */
+    0x0,	/* 0 */
+    0x0,	/* 0 */
+    0x0,	/* 0 */
+    0x0,	/* 0 */
+    0x0	/* 0 */
+  };
+UNS8 Analogue_Output_Error_Mode[] =		/* Mapped at index 0x6443, subindex 0x01 - 0x04 */
+  {
+    0x0,	/* 0 */
+    0x0,	/* 0 */
+    0x0,	/* 0 */
+    0x0	/* 0 */
+  };
+INTEGER32 Analogue_Output_Error_Value_Integer[] =		/* Mapped at index 0x6444, subindex 0x01 - 0x04 */
+  {
+    0x0,	/* 0 */
+    0x0,	/* 0 */
+    0x0,	/* 0 */
+    0x0	/* 0 */
+  };
+
+/**************************************************************************/
+/* Declaration of the value range types                                   */
+/**************************************************************************/
+
+UNS32 ObjDict_valueRangeTest (UNS8 typeValue, void * value)
+{
+  switch (typeValue) {
+  }
+  return 0;
+}
+
+/**************************************************************************/
+/* The node id                                                            */
+/**************************************************************************/
+/* node_id default value.*/
+UNS8 ObjDict_bDeviceNodeId = 0x40;
+
+/**************************************************************************/
+/* Array of message processing information */
+
+const UNS8 ObjDict_iam_a_slave = 1;
+
+TIMER_HANDLE ObjDict_heartBeatTimers[3] = {TIMER_NONE,};
+
+/*
+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
+
+                               OBJECT DICTIONARY
+
+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
+*/
+
+/* index 0x1000 :   Device Type. */
+                    UNS32 ObjDict_obj1000 = 0xF0191;	/* 983441 */
+                    subindex ObjDict_Index1000[] = 
+                     {
+                       { RO, uint32, sizeof (UNS32), (void*)&ObjDict_obj1000 }
+                     };
+
+/* index 0x1001 :   Error Register. */
+                    UNS8 ObjDict_obj1001 = 0x0;	/* 0 */
+                    subindex ObjDict_Index1001[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_obj1001 }
+                     };
+
+/* index 0x1002 :   Manufacturer Status Register. */
+                    UNS32 ObjDict_obj1002 = 0x0;	/* 0 */
+                    subindex ObjDict_Index1002[] = 
+                     {
+                       { RO, uint32, sizeof (UNS32), (void*)&ObjDict_obj1002 }
+                     };
+
+/* index 0x1005 :   SYNC COB ID. */
+                    UNS32 ObjDict_obj1005 = 0x80;	/* 128 */
+                    ODCallback_t ObjDict_Index1005_callbacks[] = 
+                     {
+                       NULL,
+                     };
+                    subindex ObjDict_Index1005[] = 
+                     {
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1005 }
+                     };
+
+/* index 0x1006 :   Communication / Cycle Period */
+                    UNS32 ObjDict_obj1006 = 0x0;   /* 0 */
+
+/* index 0x1008 :   Manufacturer Device Name. */
+                    UNS8 ObjDict_obj1008[10] = "";
+                    subindex ObjDict_Index1008[] = 
+                     {
+                       { RO, visible_string, 0, (void*)&ObjDict_obj1008 }
+                     };
+
+/* index 0x1009 :   Manufacturer Hardware Version. */
+                    UNS8 ObjDict_obj1009[10] = "";
+                    subindex ObjDict_Index1009[] = 
+                     {
+                       { RO, visible_string, 0, (void*)&ObjDict_obj1009 }
+                     };
+
+/* index 0x100A :   Manufacturer Software Version. */
+                    UNS8 ObjDict_obj100A[10] = "";
+                    subindex ObjDict_Index100A[] = 
+                     {
+                       { RO, visible_string, 0, (void*)&ObjDict_obj100A }
+                     };
+
+/* index 0x100C :   Guard Time. */
+                    UNS16 ObjDict_obj100C = 0x0;	/* 0 */
+                    subindex ObjDict_Index100C[] = 
+                     {
+                       { RW, uint16, sizeof (UNS16), (void*)&ObjDict_obj100C }
+                     };
+
+/* index 0x100D :   Life Time Factor. */
+                    UNS8 ObjDict_obj100D = 0x0;	/* 0 */
+                    subindex ObjDict_Index100D[] = 
+                     {
+                       { RW, uint8, sizeof (UNS8), (void*)&ObjDict_obj100D }
+                     };
+
+/* index 0x1010 :   Store parameters. */
+                    UNS8 ObjDict_highestSubIndex_obj1010 = 1; /* number of subindex - 1*/
+                    UNS32 ObjDict_obj1010_Save_All_Parameters = 0x0;	/* 0 */
+                    subindex ObjDict_Index1010[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1010 },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1010_Save_All_Parameters }
+                     };
+
+/* index 0x1011 :   Restore Default Parameters. */
+                    UNS8 ObjDict_highestSubIndex_obj1011 = 1; /* number of subindex - 1*/
+                    UNS32 ObjDict_obj1011_Restore_All_Default_Parameters = 0x0;	/* 0 */
+                    subindex ObjDict_Index1011[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1011 },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1011_Restore_All_Default_Parameters }
+                     };
+
+/* index 0x1016 :   Consumer Heartbeat Time. */
+                    UNS8 ObjDict_highestSubIndex_obj1016 = 3; /* number of subindex - 1*/
+                    UNS32 ObjDict_obj1016[] = 
+                    {
+                      0x0,	/* 0 */
+                      0x0,	/* 0 */
+                      0x0	/* 0 */
+                    };
+                    subindex ObjDict_Index1016[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1016 },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1016[0] },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1016[1] },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1016[2] }
+                     };
+
+/* index 0x1017 :   Producer Heartbeat Time. */
+                    UNS16 ObjDict_obj1017 = 0x0;	/* 0 */
+                    ODCallback_t ObjDict_Index1017_callbacks[] = 
+                     {
+                       NULL,
+                     };
+                    subindex ObjDict_Index1017[] = 
+                     {
+                       { RW, uint16, sizeof (UNS16), (void*)&ObjDict_obj1017 }
+                     };
+
+/* index 0x1018 :   Identity. */
+                    UNS8 ObjDict_highestSubIndex_obj1018 = 3; /* number of subindex - 1*/
+                    UNS32 ObjDict_obj1018_Vendor_ID = 0x175;	/* 373 */
+                    UNS32 ObjDict_obj1018_Product_Code = 0x100000;	/* 1048576 */
+                    UNS32 ObjDict_obj1018_Revision_Number = 0x10001;	/* 65537 */
+                    subindex ObjDict_Index1018[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1018 },
+                       { RO, uint32, sizeof (UNS32), (void*)&ObjDict_obj1018_Vendor_ID },
+                       { RO, uint32, sizeof (UNS32), (void*)&ObjDict_obj1018_Product_Code },
+                       { RO, uint32, sizeof (UNS32), (void*)&ObjDict_obj1018_Revision_Number }
+                     };
+
+/* index 0x1020 :   Verify Configuration. */
+                    UNS8 ObjDict_highestSubIndex_obj1020 = 2; /* number of subindex - 1*/
+                    UNS32 ObjDict_obj1020_Configuration_Date = 0x0;	/* 0 */
+                    UNS32 ObjDict_obj1020_Configuration_Time = 0x0;	/* 0 */
+                    subindex ObjDict_Index1020[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1020 },
+                       { RO, uint32, sizeof (UNS32), (void*)&ObjDict_obj1020_Configuration_Date },
+                       { RO, uint32, sizeof (UNS32), (void*)&ObjDict_obj1020_Configuration_Time }
+                     };
+
+/* index 0x1200 :   Server SDO Parameter. */
+                    UNS8 ObjDict_highestSubIndex_obj1200 = 2; /* number of subindex - 1*/
+                    UNS32 ObjDict_obj1200_COB_ID_Client_to_Server_Receive_SDO = 0x640;	/* 1600 */
+                    UNS32 ObjDict_obj1200_COB_ID_Server_to_Client_Transmit_SDO = 0x5C0;	/* 1472 */
+                    subindex ObjDict_Index1200[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1200 },
+                       { RO, uint32, sizeof (UNS32), (void*)&ObjDict_obj1200_COB_ID_Client_to_Server_Receive_SDO },
+                       { RO, uint32, sizeof (UNS32), (void*)&ObjDict_obj1200_COB_ID_Server_to_Client_Transmit_SDO }
+                     };
+
+/* index 0x1400 :   Receive PDO 1 Parameter. */
+                    UNS8 ObjDict_highestSubIndex_obj1400 = 2; /* number of subindex - 1*/
+                    UNS32 ObjDict_obj1400_COB_ID_used_by_PDO = 0x240;	/* 576 */
+                    UNS8 ObjDict_obj1400_Transmission_Type = 0x1;	/* 1 */
+                    subindex ObjDict_Index1400[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1400 },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1400_COB_ID_used_by_PDO },
+                       { RW, uint8, sizeof (UNS8), (void*)&ObjDict_obj1400_Transmission_Type }
+                     };
+
+/* index 0x1401 :   Receive PDO 2 Parameter. */
+                    UNS8 ObjDict_highestSubIndex_obj1401 = 2; /* number of subindex - 1*/
+                    UNS32 ObjDict_obj1401_COB_ID_used_by_PDO = 0x340;	/* 832 */
+                    UNS8 ObjDict_obj1401_Transmission_Type = 0x1;	/* 1 */
+                    subindex ObjDict_Index1401[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1401 },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1401_COB_ID_used_by_PDO },
+                       { RW, uint8, sizeof (UNS8), (void*)&ObjDict_obj1401_Transmission_Type }
+                     };
+
+/* index 0x1402 :   Receive PDO 3 Parameter. */
+                    UNS8 ObjDict_highestSubIndex_obj1402 = 2; /* number of subindex - 1*/
+                    UNS32 ObjDict_obj1402_COB_ID_used_by_PDO = 0x80000440;	/* 2147484736 */
+                    UNS8 ObjDict_obj1402_Transmission_Type = 0x1;	/* 1 */
+                    subindex ObjDict_Index1402[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1402 },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1402_COB_ID_used_by_PDO },
+                       { RW, uint8, sizeof (UNS8), (void*)&ObjDict_obj1402_Transmission_Type }
+                     };
+
+/* index 0x1403 :   Receive PDO 4 Parameter. */
+                    UNS8 ObjDict_highestSubIndex_obj1403 = 2; /* number of subindex - 1*/
+                    UNS32 ObjDict_obj1403_COB_ID_used_by_PDO = 0x80000540;	/* 2147484992 */
+                    UNS8 ObjDict_obj1403_Transmission_Type = 0x1;	/* 1 */
+                    subindex ObjDict_Index1403[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1403 },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1403_COB_ID_used_by_PDO },
+                       { RW, uint8, sizeof (UNS8), (void*)&ObjDict_obj1403_Transmission_Type }
+                     };
+
+/* index 0x1600 :   Receive PDO 1 Mapping. */
+                    UNS8 ObjDict_highestSubIndex_obj1600 = 1; /* number of subindex - 1*/
+                    UNS32 ObjDict_obj1600[] = 
+                    {
+                      0x62000108	/* 1644167432 */
+                    };
+                    subindex ObjDict_Index1600[] = 
+                     {
+                       { RW, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1600 },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1600[0] }
+                     };
+
+/* index 0x1601 :   Receive PDO 2 Mapping. */
+                    UNS8 ObjDict_highestSubIndex_obj1601 = 4; /* number of subindex - 1*/
+                    UNS32 ObjDict_obj1601[] = 
+                    {
+                      0x64110110,	/* 1678835984 */
+                      0x64110210,	/* 1678836240 */
+                      0x64110310,	/* 1678836496 */
+                      0x64110410	/* 1678836752 */
+                    };
+                    subindex ObjDict_Index1601[] = 
+                     {
+                       { RW, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1601 },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1601[0] },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1601[1] },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1601[2] },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1601[3] }
+                     };
+
+/* index 0x1800 :   Transmit PDO 1 Parameter. */
+                    UNS8 ObjDict_highestSubIndex_obj1800 = 5; /* number of subindex - 1*/
+                    UNS32 ObjDict_obj1800_COB_ID_used_by_PDO = 0x1C0;	/* 448 */
+                    UNS8 ObjDict_obj1800_Transmission_Type = 0x1;	/* 1 */
+                    UNS16 ObjDict_obj1800_Inhibit_Time = 0x0;	/* 0 */
+                    UNS8 ObjDict_obj1800_Compatibility_Entry = 0x0;	/* 0 */
+                    UNS16 ObjDict_obj1800_Event_Timer = 0x0;	/* 0 */
+                    subindex ObjDict_Index1800[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1800 },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1800_COB_ID_used_by_PDO },
+                       { RW, uint8, sizeof (UNS8), (void*)&ObjDict_obj1800_Transmission_Type },
+                       { RW, uint16, sizeof (UNS16), (void*)&ObjDict_obj1800_Inhibit_Time },
+                       { RW, uint8, sizeof (UNS8), (void*)&ObjDict_obj1800_Compatibility_Entry },
+                       { RW, uint16, sizeof (UNS16), (void*)&ObjDict_obj1800_Event_Timer }
+                     };
+
+/* index 0x1801 :   Transmit PDO 2 Parameter. */
+                    UNS8 ObjDict_highestSubIndex_obj1801 = 5; /* number of subindex - 1*/
+                    UNS32 ObjDict_obj1801_COB_ID_used_by_PDO = 0x2C0;	/* 704 */
+                    UNS8 ObjDict_obj1801_Transmission_Type = 0x1;	/* 1 */
+                    UNS16 ObjDict_obj1801_Inhibit_Time = 0x0;	/* 0 */
+                    UNS8 ObjDict_obj1801_Compatibility_Entry = 0x0;	/* 0 */
+                    UNS16 ObjDict_obj1801_Event_Timer = 0x0;	/* 0 */
+                    subindex ObjDict_Index1801[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1801 },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1801_COB_ID_used_by_PDO },
+                       { RW, uint8, sizeof (UNS8), (void*)&ObjDict_obj1801_Transmission_Type },
+                       { RW, uint16, sizeof (UNS16), (void*)&ObjDict_obj1801_Inhibit_Time },
+                       { RW, uint8, sizeof (UNS8), (void*)&ObjDict_obj1801_Compatibility_Entry },
+                       { RW, uint16, sizeof (UNS16), (void*)&ObjDict_obj1801_Event_Timer }
+                     };
+
+/* index 0x1802 :   Transmit PDO 3 Parameter. */
+                    UNS8 ObjDict_highestSubIndex_obj1802 = 5; /* number of subindex - 1*/
+                    UNS32 ObjDict_obj1802_COB_ID_used_by_PDO = 0x3C0;	/* 960 */
+                    UNS8 ObjDict_obj1802_Transmission_Type = 0x1;	/* 1 */
+                    UNS16 ObjDict_obj1802_Inhibit_Time = 0x0;	/* 0 */
+                    UNS8 ObjDict_obj1802_Compatibility_Entry = 0x0;	/* 0 */
+                    UNS16 ObjDict_obj1802_Event_Timer = 0x0;	/* 0 */
+                    subindex ObjDict_Index1802[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1802 },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1802_COB_ID_used_by_PDO },
+                       { RW, uint8, sizeof (UNS8), (void*)&ObjDict_obj1802_Transmission_Type },
+                       { RW, uint16, sizeof (UNS16), (void*)&ObjDict_obj1802_Inhibit_Time },
+                       { RW, uint8, sizeof (UNS8), (void*)&ObjDict_obj1802_Compatibility_Entry },
+                       { RW, uint16, sizeof (UNS16), (void*)&ObjDict_obj1802_Event_Timer }
+                     };
+
+/* index 0x1803 :   Transmit PDO 4 Parameter. */
+                    UNS8 ObjDict_highestSubIndex_obj1803 = 5; /* number of subindex - 1*/
+                    UNS32 ObjDict_obj1803_COB_ID_used_by_PDO = 0x800004C0;	/* 2147484864 */
+                    UNS8 ObjDict_obj1803_Transmission_Type = 0x1;	/* 1 */
+                    UNS16 ObjDict_obj1803_Inhibit_Time = 0x0;	/* 0 */
+                    UNS8 ObjDict_obj1803_Compatibility_Entry = 0x0;	/* 0 */
+                    UNS16 ObjDict_obj1803_Event_Timer = 0x0;	/* 0 */
+                    subindex ObjDict_Index1803[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1803 },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1803_COB_ID_used_by_PDO },
+                       { RW, uint8, sizeof (UNS8), (void*)&ObjDict_obj1803_Transmission_Type },
+                       { RW, uint16, sizeof (UNS16), (void*)&ObjDict_obj1803_Inhibit_Time },
+                       { RW, uint8, sizeof (UNS8), (void*)&ObjDict_obj1803_Compatibility_Entry },
+                       { RW, uint16, sizeof (UNS16), (void*)&ObjDict_obj1803_Event_Timer }
+                     };
+
+/* index 0x1A00 :   Transmit PDO 1 Mapping. */
+                    UNS8 ObjDict_highestSubIndex_obj1A00 = 1; /* number of subindex - 1*/
+                    UNS32 ObjDict_obj1A00[] = 
+                    {
+                      0x60000108	/* 1610613000 */
+                    };
+                    subindex ObjDict_Index1A00[] = 
+                     {
+                       { RW, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1A00 },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1A00[0] }
+                     };
+
+/* index 0x1A01 :   Transmit PDO 2 Mapping. */
+                    UNS8 ObjDict_highestSubIndex_obj1A01 = 4; /* number of subindex - 1*/
+                    UNS32 ObjDict_obj1A01[] = 
+                    {
+                      0x64010110,	/* 1677787408 */
+                      0x64010210,	/* 1677787664 */
+                      0x64010310,	/* 1677787920 */
+                      0x64010410	/* 1677788176 */
+                    };
+                    subindex ObjDict_Index1A01[] = 
+                     {
+                       { RW, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1A01 },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1A01[0] },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1A01[1] },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1A01[2] },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1A01[3] }
+                     };
+
+/* index 0x1A02 :   Transmit PDO 3 Mapping. */
+                    UNS8 ObjDict_highestSubIndex_obj1A02 = 4; /* number of subindex - 1*/
+                    UNS32 ObjDict_obj1A02[] = 
+                    {
+                      0x64010510,	/* 1677788432 */
+                      0x64010610,	/* 1677788688 */
+                      0x64010710,	/* 1677788944 */
+                      0x64010810	/* 1677789200 */
+                    };
+                    subindex ObjDict_Index1A02[] = 
+                     {
+                       { RW, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1A02 },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1A02[0] },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1A02[1] },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1A02[2] },
+                       { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1A02[3] }
+                     };
+
+/* index 0x1F50 :   Download Program Data. */
+                    UNS8 ObjDict_highestSubIndex_obj1F50 = 3; /* number of subindex - 1*/
+                    UNS8 ObjDict_obj1F50_Compatibility_Entry = 0x0;	/* 0 */
+                    UNS8 ObjDict_obj1F50_Compatibility = 0x0;	/* 0 */
+                    UNS8* ObjDict_obj1F50_Download_Program_Data_HW_Settings = "";
+                    subindex ObjDict_Index1F50[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1F50 },
+                       { RW, uint8, sizeof (UNS8), (void*)&ObjDict_obj1F50_Compatibility_Entry },
+                       { RW, uint8, sizeof (UNS8), (void*)&ObjDict_obj1F50_Compatibility },
+                       { RW, domain, 0, (void*)&ObjDict_obj1F50_Download_Program_Data_HW_Settings }
+                     };
+
+/* index 0x6000 :   Mapped variable Read Inputs 8 Bit */
+                    UNS8 ObjDict_highestSubIndex_obj6000 = 1; /* number of subindex - 1*/
+                    subindex ObjDict_Index6000[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj6000 },
+                       { RO, uint8, sizeof (UNS8), (void*)&Read_Inputs_8_Bit[0] }
+                     };
+
+/* index 0x6002 :   Mapped variable Polarity Input 8 Bit */
+                    UNS8 ObjDict_highestSubIndex_obj6002 = 1; /* number of subindex - 1*/
+                    subindex ObjDict_Index6002[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj6002 },
+                       { RW, uint8, sizeof (UNS8), (void*)&Polarity_Input_8_Bit[0] }
+                     };
+
+/* index 0x6200 :   Mapped variable Write Outputs 8 Bit */
+                    UNS8 ObjDict_highestSubIndex_obj6200 = 1; /* number of subindex - 1*/
+                    subindex ObjDict_Index6200[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj6200 },
+                       { RW, uint8, sizeof (UNS8), (void*)&Write_Outputs_8_Bit[0] }
+                     };
+
+/* index 0x6202 :   Mapped variable Change Polarity Outputs 8 Bit */
+                    UNS8 ObjDict_highestSubIndex_obj6202 = 1; /* number of subindex - 1*/
+                    subindex ObjDict_Index6202[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj6202 },
+                       { RW, uint8, sizeof (UNS8), (void*)&Change_Polarity_Outputs_8_Bit[0] }
+                     };
+
+/* index 0x6206 :   Mapped variable Error Mode Outputs 8 Bit */
+                    UNS8 ObjDict_highestSubIndex_obj6206 = 1; /* number of subindex - 1*/
+                    subindex ObjDict_Index6206[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj6206 },
+                       { RW, uint8, sizeof (UNS8), (void*)&Error_Mode_Outputs_8_Bit[0] }
+                     };
+
+/* index 0x6207 :   Mapped variable Error Value Outputs 8 Bit */
+                    UNS8 ObjDict_highestSubIndex_obj6207 = 1; /* number of subindex - 1*/
+                    subindex ObjDict_Index6207[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj6207 },
+                       { RW, uint8, sizeof (UNS8), (void*)&Error_Value_Outputs_8_Bit[0] }
+                     };
+
+/* index 0x6401 :   Mapped variable Read Analogue Input 16 Bit */
+                    UNS8 ObjDict_highestSubIndex_obj6401 = 8; /* number of subindex - 1*/
+                    subindex ObjDict_Index6401[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj6401 },
+                       { RO, int16, sizeof (INTEGER16), (void*)&Read_Analogue_Input_16_Bit[0] },
+                       { RO, int16, sizeof (INTEGER16), (void*)&Read_Analogue_Input_16_Bit[1] },
+                       { RO, int16, sizeof (INTEGER16), (void*)&Read_Analogue_Input_16_Bit[2] },
+                       { RO, int16, sizeof (INTEGER16), (void*)&Read_Analogue_Input_16_Bit[3] },
+                       { RO, int16, sizeof (INTEGER16), (void*)&Read_Analogue_Input_16_Bit[4] },
+                       { RO, int16, sizeof (INTEGER16), (void*)&Read_Analogue_Input_16_Bit[5] },
+                       { RO, int16, sizeof (INTEGER16), (void*)&Read_Analogue_Input_16_Bit[6] },
+                       { RO, int16, sizeof (INTEGER16), (void*)&Read_Analogue_Input_16_Bit[7] }
+                     };
+
+/* index 0x6411 :   Mapped variable Write Analogue Output 16 Bit */
+                    UNS8 ObjDict_highestSubIndex_obj6411 = 4; /* number of subindex - 1*/
+                    subindex ObjDict_Index6411[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj6411 },
+                       { RW, int16, sizeof (INTEGER16), (void*)&Write_Analogue_Output_16_Bit[0] },
+                       { RW, int16, sizeof (INTEGER16), (void*)&Write_Analogue_Output_16_Bit[1] },
+                       { RW, int16, sizeof (INTEGER16), (void*)&Write_Analogue_Output_16_Bit[2] },
+                       { RW, int16, sizeof (INTEGER16), (void*)&Write_Analogue_Output_16_Bit[3] }
+                     };
+
+/* index 0x6423 :   Mapped variable Analogue Input Global Interrupt Enable */
+                    subindex ObjDict_Index6423[] = 
+                     {
+                       { RW, boolean, sizeof (UNS8), (void*)&Analogue_Input_Global_Interrupt_Enable }
+                     };
+
+/* index 0x6426 :   Mapped variable Analogue Input Interrupt Delta Unsigned */
+                    UNS8 ObjDict_highestSubIndex_obj6426 = 8; /* number of subindex - 1*/
+                    subindex ObjDict_Index6426[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj6426 },
+                       { RW, uint32, sizeof (UNS32), (void*)&Analogue_Input_Interrupt_Delta_Unsigned[0] },
+                       { RW, uint32, sizeof (UNS32), (void*)&Analogue_Input_Interrupt_Delta_Unsigned[1] },
+                       { RW, uint32, sizeof (UNS32), (void*)&Analogue_Input_Interrupt_Delta_Unsigned[2] },
+                       { RW, uint32, sizeof (UNS32), (void*)&Analogue_Input_Interrupt_Delta_Unsigned[3] },
+                       { RW, uint32, sizeof (UNS32), (void*)&Analogue_Input_Interrupt_Delta_Unsigned[4] },
+                       { RW, uint32, sizeof (UNS32), (void*)&Analogue_Input_Interrupt_Delta_Unsigned[5] },
+                       { RW, uint32, sizeof (UNS32), (void*)&Analogue_Input_Interrupt_Delta_Unsigned[6] },
+                       { RW, uint32, sizeof (UNS32), (void*)&Analogue_Input_Interrupt_Delta_Unsigned[7] }
+                     };
+
+/* index 0x6443 :   Mapped variable Analogue Output Error Mode */
+                    UNS8 ObjDict_highestSubIndex_obj6443 = 4; /* number of subindex - 1*/
+                    subindex ObjDict_Index6443[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj6443 },
+                       { RW, uint8, sizeof (UNS8), (void*)&Analogue_Output_Error_Mode[0] },
+                       { RW, uint8, sizeof (UNS8), (void*)&Analogue_Output_Error_Mode[1] },
+                       { RW, uint8, sizeof (UNS8), (void*)&Analogue_Output_Error_Mode[2] },
+                       { RW, uint8, sizeof (UNS8), (void*)&Analogue_Output_Error_Mode[3] }
+                     };
+
+/* index 0x6444 :   Mapped variable Analogue Output Error Value Integer */
+                    UNS8 ObjDict_highestSubIndex_obj6444 = 4; /* number of subindex - 1*/
+                    subindex ObjDict_Index6444[] = 
+                     {
+                       { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj6444 },
+                       { RW, int32, sizeof (INTEGER32), (void*)&Analogue_Output_Error_Value_Integer[0] },
+                       { RW, int32, sizeof (INTEGER32), (void*)&Analogue_Output_Error_Value_Integer[1] },
+                       { RW, int32, sizeof (INTEGER32), (void*)&Analogue_Output_Error_Value_Integer[2] },
+                       { RW, int32, sizeof (INTEGER32), (void*)&Analogue_Output_Error_Value_Integer[3] }
+                     };
+
+const indextable ObjDict_objdict[] = 
+{
+  { (subindex*)ObjDict_Index1000,sizeof(ObjDict_Index1000)/sizeof(ObjDict_Index1000[0]), 0x1000},
+  { (subindex*)ObjDict_Index1001,sizeof(ObjDict_Index1001)/sizeof(ObjDict_Index1001[0]), 0x1001},
+  { (subindex*)ObjDict_Index1002,sizeof(ObjDict_Index1002)/sizeof(ObjDict_Index1002[0]), 0x1002},
+  { (subindex*)ObjDict_Index1005,sizeof(ObjDict_Index1005)/sizeof(ObjDict_Index1005[0]), 0x1005},
+  { (subindex*)ObjDict_Index1008,sizeof(ObjDict_Index1008)/sizeof(ObjDict_Index1008[0]), 0x1008},
+  { (subindex*)ObjDict_Index1009,sizeof(ObjDict_Index1009)/sizeof(ObjDict_Index1009[0]), 0x1009},
+  { (subindex*)ObjDict_Index100A,sizeof(ObjDict_Index100A)/sizeof(ObjDict_Index100A[0]), 0x100A},
+  { (subindex*)ObjDict_Index100C,sizeof(ObjDict_Index100C)/sizeof(ObjDict_Index100C[0]), 0x100C},
+  { (subindex*)ObjDict_Index100D,sizeof(ObjDict_Index100D)/sizeof(ObjDict_Index100D[0]), 0x100D},
+  { (subindex*)ObjDict_Index1010,sizeof(ObjDict_Index1010)/sizeof(ObjDict_Index1010[0]), 0x1010},
+  { (subindex*)ObjDict_Index1011,sizeof(ObjDict_Index1011)/sizeof(ObjDict_Index1011[0]), 0x1011},
+  { (subindex*)ObjDict_Index1016,sizeof(ObjDict_Index1016)/sizeof(ObjDict_Index1016[0]), 0x1016},
+  { (subindex*)ObjDict_Index1017,sizeof(ObjDict_Index1017)/sizeof(ObjDict_Index1017[0]), 0x1017},
+  { (subindex*)ObjDict_Index1018,sizeof(ObjDict_Index1018)/sizeof(ObjDict_Index1018[0]), 0x1018},
+  { (subindex*)ObjDict_Index1020,sizeof(ObjDict_Index1020)/sizeof(ObjDict_Index1020[0]), 0x1020},
+  { (subindex*)ObjDict_Index1200,sizeof(ObjDict_Index1200)/sizeof(ObjDict_Index1200[0]), 0x1200},
+  { (subindex*)ObjDict_Index1400,sizeof(ObjDict_Index1400)/sizeof(ObjDict_Index1400[0]), 0x1400},
+  { (subindex*)ObjDict_Index1401,sizeof(ObjDict_Index1401)/sizeof(ObjDict_Index1401[0]), 0x1401},
+  { (subindex*)ObjDict_Index1402,sizeof(ObjDict_Index1402)/sizeof(ObjDict_Index1402[0]), 0x1402},
+  { (subindex*)ObjDict_Index1403,sizeof(ObjDict_Index1403)/sizeof(ObjDict_Index1403[0]), 0x1403},
+  { (subindex*)ObjDict_Index1600,sizeof(ObjDict_Index1600)/sizeof(ObjDict_Index1600[0]), 0x1600},
+  { (subindex*)ObjDict_Index1601,sizeof(ObjDict_Index1601)/sizeof(ObjDict_Index1601[0]), 0x1601},
+  { (subindex*)ObjDict_Index1800,sizeof(ObjDict_Index1800)/sizeof(ObjDict_Index1800[0]), 0x1800},
+  { (subindex*)ObjDict_Index1801,sizeof(ObjDict_Index1801)/sizeof(ObjDict_Index1801[0]), 0x1801},
+  { (subindex*)ObjDict_Index1802,sizeof(ObjDict_Index1802)/sizeof(ObjDict_Index1802[0]), 0x1802},
+  { (subindex*)ObjDict_Index1803,sizeof(ObjDict_Index1803)/sizeof(ObjDict_Index1803[0]), 0x1803},
+  { (subindex*)ObjDict_Index1A00,sizeof(ObjDict_Index1A00)/sizeof(ObjDict_Index1A00[0]), 0x1A00},
+  { (subindex*)ObjDict_Index1A01,sizeof(ObjDict_Index1A01)/sizeof(ObjDict_Index1A01[0]), 0x1A01},
+  { (subindex*)ObjDict_Index1A02,sizeof(ObjDict_Index1A02)/sizeof(ObjDict_Index1A02[0]), 0x1A02},
+  { (subindex*)ObjDict_Index1F50,sizeof(ObjDict_Index1F50)/sizeof(ObjDict_Index1F50[0]), 0x1F50},
+  { (subindex*)ObjDict_Index6000,sizeof(ObjDict_Index6000)/sizeof(ObjDict_Index6000[0]), 0x6000},
+  { (subindex*)ObjDict_Index6002,sizeof(ObjDict_Index6002)/sizeof(ObjDict_Index6002[0]), 0x6002},
+  { (subindex*)ObjDict_Index6200,sizeof(ObjDict_Index6200)/sizeof(ObjDict_Index6200[0]), 0x6200},
+  { (subindex*)ObjDict_Index6202,sizeof(ObjDict_Index6202)/sizeof(ObjDict_Index6202[0]), 0x6202},
+  { (subindex*)ObjDict_Index6206,sizeof(ObjDict_Index6206)/sizeof(ObjDict_Index6206[0]), 0x6206},
+  { (subindex*)ObjDict_Index6207,sizeof(ObjDict_Index6207)/sizeof(ObjDict_Index6207[0]), 0x6207},
+  { (subindex*)ObjDict_Index6401,sizeof(ObjDict_Index6401)/sizeof(ObjDict_Index6401[0]), 0x6401},
+  { (subindex*)ObjDict_Index6411,sizeof(ObjDict_Index6411)/sizeof(ObjDict_Index6411[0]), 0x6411},
+  { (subindex*)ObjDict_Index6423,sizeof(ObjDict_Index6423)/sizeof(ObjDict_Index6423[0]), 0x6423},
+  { (subindex*)ObjDict_Index6426,sizeof(ObjDict_Index6426)/sizeof(ObjDict_Index6426[0]), 0x6426},
+  { (subindex*)ObjDict_Index6443,sizeof(ObjDict_Index6443)/sizeof(ObjDict_Index6443[0]), 0x6443},
+  { (subindex*)ObjDict_Index6444,sizeof(ObjDict_Index6444)/sizeof(ObjDict_Index6444[0]), 0x6444},
+};
+
+const indextable * ObjDict_scanIndexOD (UNS16 wIndex, UNS32 * errorCode, ODCallback_t **callbacks)
+{
+	int i;
+	*callbacks = NULL;
+	switch(wIndex){
+		case 0x1000: i = 0;break;
+		case 0x1001: i = 1;break;
+		case 0x1002: i = 2;break;
+		case 0x1005: i = 3;*callbacks = ObjDict_Index1005_callbacks; break;
+		case 0x1008: i = 4;break;
+		case 0x1009: i = 5;break;
+		case 0x100A: i = 6;break;
+		case 0x100C: i = 7;break;
+		case 0x100D: i = 8;break;
+		case 0x1010: i = 9;break;
+		case 0x1011: i = 10;break;
+		case 0x1016: i = 11;break;
+		case 0x1017: i = 12;*callbacks = ObjDict_Index1017_callbacks; break;
+		case 0x1018: i = 13;break;
+		case 0x1020: i = 14;break;
+		case 0x1200: i = 15;break;
+		case 0x1400: i = 16;break;
+		case 0x1401: i = 17;break;
+		case 0x1402: i = 18;break;
+		case 0x1403: i = 19;break;
+		case 0x1600: i = 20;break;
+		case 0x1601: i = 21;break;
+		case 0x1800: i = 22;break;
+		case 0x1801: i = 23;break;
+		case 0x1802: i = 24;break;
+		case 0x1803: i = 25;break;
+		case 0x1A00: i = 26;break;
+		case 0x1A01: i = 27;break;
+		case 0x1A02: i = 28;break;
+		case 0x1F50: i = 29;break;
+		case 0x6000: i = 30;break;
+		case 0x6002: i = 31;break;
+		case 0x6200: i = 32;break;
+		case 0x6202: i = 33;break;
+		case 0x6206: i = 34;break;
+		case 0x6207: i = 35;break;
+		case 0x6401: i = 36;break;
+		case 0x6411: i = 37;break;
+		case 0x6423: i = 38;break;
+		case 0x6426: i = 39;break;
+		case 0x6443: i = 40;break;
+		case 0x6444: i = 41;break;
+		default:
+			*errorCode = OD_NO_SUCH_OBJECT;
+			return NULL;
+	}
+	*errorCode = OD_SUCCESSFUL;
+	return &ObjDict_objdict[i];
+}
+
+/* 
+ * To count at which received SYNC a PDO must be sent.
+ * Even if no pdoTransmit are defined, at least one entry is computed
+ * for compilations issues.
+ */
+s_PDO_status ObjDict_PDO_status[4] = {s_PDO_staus_Initializer,s_PDO_staus_Initializer,s_PDO_staus_Initializer,s_PDO_staus_Initializer};
+
+quick_index ObjDict_firstIndex = {
+  15, /* SDO_SVR */
+  0, /* SDO_CLT */
+  16, /* PDO_RCV */
+  20, /* PDO_RCV_MAP */
+  22, /* PDO_TRS */
+  26 /* PDO_TRS_MAP */
+};
+
+quick_index ObjDict_lastIndex = {
+  15, /* SDO_SVR */
+  0, /* SDO_CLT */
+  19, /* PDO_RCV */
+  21, /* PDO_RCV_MAP */
+  25, /* PDO_TRS */
+  28 /* PDO_TRS_MAP */
+};
+
+UNS16 ObjDict_ObjdictSize = sizeof(ObjDict_objdict)/sizeof(ObjDict_objdict[0]); 
+
+CO_Data ObjDict_Data = CANOPEN_NODE_DATA_INITIALIZER(ObjDict);
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Slave_Gui/ObjDict.h	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,28 @@
+
+/* File generated by gen_cfile.py. Should not be modified. */
+
+#ifndef OBJDICT_H
+#define OBJDICT_H
+
+#include "data.h"
+
+/* Prototypes of function provided by object dictionnary */
+UNS32 ObjDict_valueRangeTest (UNS8 typeValue, void * value);
+const indextable * ObjDict_scanIndexOD (UNS16 wIndex, UNS32 * errorCode, ODCallback_t **callbacks);
+
+/* Master node data struct */
+extern CO_Data ObjDict_Data;
+extern UNS8 Read_Inputs_8_Bit[1];		/* Mapped at index 0x6000, subindex 0x01 - 0x01 */
+extern UNS8 Polarity_Input_8_Bit[1];		/* Mapped at index 0x6002, subindex 0x01 - 0x01 */
+extern UNS8 Write_Outputs_8_Bit[1];		/* Mapped at index 0x6200, subindex 0x01 - 0x01 */
+extern UNS8 Change_Polarity_Outputs_8_Bit[1];		/* Mapped at index 0x6202, subindex 0x01 - 0x01 */
+extern UNS8 Error_Mode_Outputs_8_Bit[1];		/* Mapped at index 0x6206, subindex 0x01 - 0x01 */
+extern UNS8 Error_Value_Outputs_8_Bit[1];		/* Mapped at index 0x6207, subindex 0x01 - 0x01 */
+extern INTEGER16 Read_Analogue_Input_16_Bit[8];		/* Mapped at index 0x6401, subindex 0x01 - 0x08 */
+extern INTEGER16 Write_Analogue_Output_16_Bit[4];		/* Mapped at index 0x6411, subindex 0x01 - 0x04 */
+extern UNS8 Analogue_Input_Global_Interrupt_Enable;		/* Mapped at index 0x6423, subindex 0x00*/
+extern UNS32 Analogue_Input_Interrupt_Delta_Unsigned[8];		/* Mapped at index 0x6426, subindex 0x01 - 0x08 */
+extern UNS8 Analogue_Output_Error_Mode[4];		/* Mapped at index 0x6443, subindex 0x01 - 0x04 */
+extern INTEGER32 Analogue_Output_Error_Value_Integer[4];		/* Mapped at index 0x6444, subindex 0x01 - 0x04 */
+
+#endif // OBJDICT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Slave_Gui/ObjDict.od	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,5430 @@
+<?xml version="1.0"?>
+<!DOCTYPE PyObject SYSTEM "PyObjects.dtd">
+<PyObject module="node" class="Node" id="159620140">
+<attr name="Profile" type="dict" id="160667820" >
+  <entry>
+    <key type="numeric" value="24576" />
+    <val type="dict" id="159779940" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159633388" >
+          <item type="dict" id="160570740" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Input 8 bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160597236" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Read Inputs 0x%X to 0x%X[(sub*8-7,sub*8)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Read Inputs 8 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="24832" />
+    <val type="dict" id="160569244" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159631948" >
+          <item type="dict" id="160668500" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Input 16 bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160617852" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="6" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Read Inputs 0x%X to 0x%X[(sub*16-15,sub*16)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Read Inputs 16 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="24578" />
+    <val type="dict" id="159743076" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159633196" >
+          <item type="dict" id="160560236" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Input 8 bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160668636" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Polarity Input 0x%X to 0x%X[(sub*8-7,sub*8)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Polarity Input 8 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="24579" />
+    <val type="dict" id="159747308" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159631532" >
+          <item type="dict" id="160677932" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Input 8 bit" />
+            </entry>
+          </item>
+          <item type="dict" id="159717548" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Filter Constant Input 0x%X to 0x%X[(sub*8-7,sub*8)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Filter Constant Input 8 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25604" />
+    <val type="dict" id="160576756" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159630252" >
+          <item type="dict" id="159748820" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Input" />
+            </entry>
+          </item>
+          <item type="dict" id="160555188" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="17" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Input %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Read Manufacturer specific Analogue Input" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="24581" />
+    <val type="dict" id="160620164" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160601004" >
+          <item type="dict" id="160620028" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="1" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Global Interrupt Enable Digital" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Global Interrupt Enable Digital" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="1" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="24582" />
+    <val type="dict" id="160619756" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159633004" >
+          <item type="dict" id="160618260" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Input 8 bit" />
+            </entry>
+          </item>
+          <item type="dict" id="159666628" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Interrupt Any Change 0x%X to 0x%X[(sub*8-7,sub*8)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Interrupt Mask Any Change 8 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="24583" />
+    <val type="dict" id="159667852" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159739756" >
+          <item type="dict" id="159666356" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Input 8 bit" />
+            </entry>
+          </item>
+          <item type="dict" id="159666492" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Interrupt Low to High 0x%X to 0x%X[(sub*8-7,sub*8)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Interrupt Mask Low to High 8 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="24584" />
+    <val type="dict" id="159665932" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160701836" >
+          <item type="dict" id="159666220" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Input 8 bit" />
+            </entry>
+          </item>
+          <item type="dict" id="159665660" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Interrupt High to Low 0x%X to 0x%X[(sub*8-7,sub*8)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Interrupt Mask High to Low 8 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="24834" />
+    <val type="dict" id="159665796" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160701580" >
+          <item type="dict" id="159665388" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Input 16 bit" />
+            </entry>
+          </item>
+          <item type="dict" id="159665524" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="6" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Polarity Input 0x%X to 0x%X[(sub*16-15,sub*16)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Polarity Input 16 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25616" />
+    <val type="dict" id="159665116" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160564620" >
+          <item type="dict" id="159665252" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Input 8 Bit" />
+            </entry>
+          </item>
+          <item type="dict" id="159664844" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="2" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Input %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Write Analogue Output 8 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25617" />
+    <val type="dict" id="159664980" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160563884" >
+          <item type="dict" id="159664572" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Input 16 Bit" />
+            </entry>
+          </item>
+          <item type="dict" id="159664708" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="3" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Output %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Write Analogue Output 16 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25618" />
+    <val type="dict" id="159664300" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160563532" >
+          <item type="dict" id="159664164" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Outputs 32 Bit" />
+            </entry>
+          </item>
+          <item type="dict" id="159664028" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="4" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Output %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Write Analogue Output 32 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="24835" />
+    <val type="dict" id="160533876" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160564300" >
+          <item type="dict" id="148728660" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Input 16 bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160577980" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="6" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Filter Constant Input 0x%X to 0x%X[(sub*16-15,sub*16)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Filter Constant Input 16 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25620" />
+    <val type="dict" id="160578116" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160565356" >
+          <item type="dict" id="160577436" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Outputs" />
+            </entry>
+          </item>
+          <item type="dict" id="160577572" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="17" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Output %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Write Manufacturer specific Analogue Output" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25088" />
+    <val type="dict" id="159763556" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160566956" >
+          <item type="dict" id="160533196" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Output 8 Bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160616764" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Write Outputs 0x%X to 0x%X[(sub*8-7,sub*8)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Write Outputs 8 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25603" />
+    <val type="dict" id="160569380" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160572780" >
+          <item type="dict" id="160540300" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Input Float" />
+            </entry>
+          </item>
+          <item type="dict" id="160528284" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="8" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Input %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Read Analogue Input Float" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25344" />
+    <val type="dict" id="160550668" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159617900" >
+          <item type="dict" id="160568156" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Output 16 Bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160539076" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="6" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Write Outputs 0x%X to 0x%X[(sub*16-15,sub*16)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Write Outputs 16 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="24608" />
+    <val type="dict" id="160571012" >
+      <entry>
+        <key type="string" value="incr" />
+        <val type="numeric" value="1" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="15" />
+      </entry>
+      <entry>
+        <key type="string" value="nbmax" />
+        <val type="numeric" value="8" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159618796" >
+          <item type="dict" id="160570196" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Input 1 bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160598188" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="1" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Read Single Input 0x%X[((idx-1)*128+sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="128" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Read Input Bit 0x%X to 0x%X[(idx*128-127,idx*128)]" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25633" />
+    <val type="dict" id="160548900" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159630444" >
+          <item type="dict" id="160570604" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Inputs" />
+            </entry>
+          </item>
+          <item type="dict" id="160529508" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analog Inputs 0x%X[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Interrupt Trigger Selection" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="24866" />
+    <val type="dict" id="160550396" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159619468" >
+          <item type="dict" id="160571148" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Input 32 bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160568020" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="7" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Polarity Input 0x%X to 0x%X[(sub*32-31,sub*32)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Polarity Input 32 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="24867" />
+    <val type="dict" id="160598596" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159617740" >
+          <item type="dict" id="159747852" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Input 32 bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160598324" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="7" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Polarity Input  0x%X to 0x%X[(sub*32-31,sub*32)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Filter Constant Input 32 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25636" />
+    <val type="dict" id="159749500" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159620684" >
+          <item type="dict" id="160569108" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Inputs" />
+            </entry>
+          </item>
+          <item type="dict" id="160596692" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="4" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Input %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Analogue Input Interrupt Upper Limit Interger" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="24838" />
+    <val type="dict" id="160599140" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159618380" >
+          <item type="dict" id="148738772" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Input 16 bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160532244" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="6" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Interrupt High to Low 0x%X to 0x%X[(sub*16-15,sub*16)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Interrupt Mask High to Low 16 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25638" />
+    <val type="dict" id="148741900" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159617228" >
+          <item type="dict" id="160578524" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Inputs" />
+            </entry>
+          </item>
+          <item type="dict" id="160555052" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="7" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Input %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Analogue Input Interrupt Delta Unsigned" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25383" />
+    <val type="dict" id="160555324" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159609388" >
+          <item type="dict" id="159659388" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Output 32 Bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160608436" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="7" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Error Value Outputs 0x%X to 0x%X[(sub*32-31,sub*32)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Error Value Outputs 32 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25640" />
+    <val type="dict" id="160608572" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159620300" >
+          <item type="dict" id="160608300" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Inputs" />
+            </entry>
+          </item>
+          <item type="dict" id="159673988" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="7" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Input %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Analogue Input Interrupt Positive Delta Unsigned" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25641" />
+    <val type="dict" id="159648052" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="148732204" >
+          <item type="dict" id="159741988" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Inputs" />
+            </entry>
+          </item>
+          <item type="dict" id="160533740" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="8" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Input %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Analogue Input Interrupt Upper Limit Float" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25642" />
+    <val type="dict" id="159715644" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159630764" >
+          <item type="dict" id="159717820" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Inputs" />
+            </entry>
+          </item>
+          <item type="dict" id="159716596" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="8" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Input %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Analogue Input Interrupt Lower Limit Float" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25643" />
+    <val type="dict" id="159716052" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159592076" >
+          <item type="dict" id="160586716" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Inputs" />
+            </entry>
+          </item>
+          <item type="dict" id="160586988" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="8" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Input %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Analogue Input Interrupt Delta Float" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25644" />
+    <val type="dict" id="160586852" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159633132" >
+          <item type="dict" id="160583996" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Inputs" />
+            </entry>
+          </item>
+          <item type="dict" id="160583724" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="8" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Input %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Analogue Input Interrupt Negative Delta Float" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25645" />
+    <val type="dict" id="160583860" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159589644" >
+          <item type="dict" id="160587396" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Inputs" />
+            </entry>
+          </item>
+          <item type="dict" id="160587532" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="8" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Input %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Analogue Input Interrupt Positive Delta Float" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25646" />
+    <val type="dict" id="160586444" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159590092" >
+          <item type="dict" id="160586580" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Inputs" />
+            </entry>
+          </item>
+          <item type="dict" id="160587124" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="8" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Input %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Analogue Input Offset Float" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25647" />
+    <val type="dict" id="160586172" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159597644" >
+          <item type="dict" id="160586308" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Inputs" />
+            </entry>
+          </item>
+          <item type="dict" id="160586036" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="8" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Input %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Analogue Input Scaling Float" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="24624" />
+    <val type="dict" id="160585900" >
+      <entry>
+        <key type="string" value="incr" />
+        <val type="numeric" value="1" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="15" />
+      </entry>
+      <entry>
+        <key type="string" value="nbmax" />
+        <val type="numeric" value="8" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160545356" >
+          <item type="dict" id="160585764" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Input 1 bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160587260" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="1" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Polarity Input bit 0x%X[((idx-1)*128+sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="128" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Polarity Input Bit 0x%X to 0x%X[(idx*128-127,idx*128)]" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25352" />
+    <val type="dict" id="159778716" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159596748" >
+          <item type="dict" id="160639556" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Output 16 Bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160596556" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="6" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Filter Mask Outputs 0x%X to 0x%X[(sub*16-15,sub*16)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Filter Mask Outputs 16 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25650" />
+    <val type="dict" id="160713964" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160552108" >
+          <item type="dict" id="160713148" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Inputs" />
+            </entry>
+          </item>
+          <item type="dict" id="160713284" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="4" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Input %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Analogue Input Scaling Integer" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25350" />
+    <val type="dict" id="160721340" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160553356" >
+          <item type="dict" id="160721476" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Output 16 Bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160721612" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="6" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Error Mode Outputs 0x%X to 0x%X[(sub*16-15,sub*16)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Error Mode Outputs 16 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25200" />
+    <val type="dict" id="160688572" >
+      <entry>
+        <key type="string" value="incr" />
+        <val type="numeric" value="1" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="15" />
+      </entry>
+      <entry>
+        <key type="string" value="nbmax" />
+        <val type="numeric" value="8" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159598988" >
+          <item type="dict" id="160688708" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Output 1 Bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160688844" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="1" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Filter Constant Outputs 0x%X[((idx-1)*128+sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="128" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Filter Constant Outputs Lines %d to %d[(idx*128-127,idx*128)]" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25096" />
+    <val type="dict" id="160713828" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160634508" >
+          <item type="dict" id="160713012" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Output 8 Bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160712876" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Filter Mask Outputs 0x%X to 0x%X[(sub*8-7,sub*8)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Filter Mask Outputs 8 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="24632" />
+    <val type="dict" id="160712468" >
+      <entry>
+        <key type="string" value="incr" />
+        <val type="numeric" value="1" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="15" />
+      </entry>
+      <entry>
+        <key type="string" value="nbmax" />
+        <val type="numeric" value="8" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160700300" >
+          <item type="dict" id="160712604" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Input 1 bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160712740" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="1" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Filter Constant Input bit 0x%X[((idx-1)*128+sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="128" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Filter Constant Input Bit 0x%X to 0x%X[(idx*128-127,idx*128)]" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25639" />
+    <val type="dict" id="160688164" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160565100" >
+          <item type="dict" id="160688300" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Inputs" />
+            </entry>
+          </item>
+          <item type="dict" id="160689660" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="7" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Input %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Analogue Input Interrupt Negative Delta Unsigned" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="24872" />
+    <val type="dict" id="160688980" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160564076" >
+          <item type="dict" id="160689116" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Input 32 bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160687620" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="7" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Interrupt High to Low Input 0x%X to 0x%X[(sub*32-31,sub*32)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Interrupt Mask Input High to Low 32 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25152" />
+    <val type="dict" id="160711652" >
+      <entry>
+        <key type="string" value="incr" />
+        <val type="numeric" value="1" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="15" />
+      </entry>
+      <entry>
+        <key type="string" value="nbmax" />
+        <val type="numeric" value="8" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160634092" >
+          <item type="dict" id="160711788" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Output 1 Bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160711924" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="1" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Write Outputs 0x%X[((idx-1)*128+sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="128" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Change Polarity Outputs Bit %d to %d[(idx*128-127,idx*128)]" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="24864" />
+    <val type="dict" id="160711244" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160633036" >
+          <item type="dict" id="160711380" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Input 32 bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160711516" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="7" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Read Input 0x%X to 0x%X[(sub*32-31,sub*32)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="128" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Read Input 4 Byte" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25666" />
+    <val type="dict" id="160710836" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160633260" >
+          <item type="dict" id="160710972" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Outputs" />
+            </entry>
+          </item>
+          <item type="dict" id="160711108" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="8" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Output %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Analogue Output Scaling Float" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25667" />
+    <val type="dict" id="160710700" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160632972" >
+          <item type="dict" id="160665916" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Outputs" />
+            </entry>
+          </item>
+          <item type="dict" id="160666052" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Error Mode Analogue Output %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Analogue Output Error Mode" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25668" />
+    <val type="dict" id="160666188" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160632908" >
+          <item type="dict" id="160681604" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Outputs" />
+            </entry>
+          </item>
+          <item type="dict" id="160681740" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="4" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Output %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Analogue Output Error Value Integer" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25669" />
+    <val type="dict" id="160681196" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160602156" >
+          <item type="dict" id="160681332" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Outputs" />
+            </entry>
+          </item>
+          <item type="dict" id="160681468" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="8" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Output %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Analogue Output Error Value Float" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25665" />
+    <val type="dict" id="160680788" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160602380" >
+          <item type="dict" id="160680924" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Outputs" />
+            </entry>
+          </item>
+          <item type="dict" id="160681060" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="8" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Output %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Analogue Output Offset Float" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25648" />
+    <val type="dict" id="160680380" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160552044" >
+          <item type="dict" id="160680516" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Inputs" />
+            </entry>
+          </item>
+          <item type="dict" id="160680652" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="7" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Input %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Analogue Input SI unit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25634" />
+    <val type="dict" id="160679156" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160552204" >
+          <item type="dict" id="160679292" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Interrupt Source Bank" />
+            </entry>
+          </item>
+          <item type="dict" id="160679428" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="7" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Interrupt Source Bank 0x%X[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Analogue Input Interrupt Source" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25094" />
+    <val type="dict" id="160679564" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160601164" >
+          <item type="dict" id="160679700" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Output 8 Bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160679836" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Error Mode Outputs 0x%X to 0x%X[(sub*8-7,sub*8)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Error Mode Outputs 8 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25378" />
+    <val type="dict" id="159758236" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159707948" >
+          <item type="dict" id="160539484" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Output 32 Bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160528420" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="7" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Polarity Outputs 0x%X to 0x%X[(sub*32-31,sub*32)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Change Polarity Outputs 32 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25680" />
+    <val type="dict" id="160678340" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160554572" >
+          <item type="dict" id="160678476" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Outputs" />
+            </entry>
+          </item>
+          <item type="dict" id="160721204" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="7" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Output %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Analogue Output SI Unit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25090" />
+    <val type="dict" id="160713420" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159597004" >
+          <item type="dict" id="160713556" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Output 8 Bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160713692" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Change Polarity Outputs 0x%X to 0x%X[(sub*8-7,sub*8)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Change Polarity Outputs 8 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25635" />
+    <val type="dict" id="160721748" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160553164" >
+          <item type="dict" id="160721884" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="1" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Input Global Interrupt Enable" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Analogue Input Global Interrupt Enable" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="1" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25601" />
+    <val type="dict" id="160689796" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159598924" >
+          <item type="dict" id="160689932" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Input 16 Bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160688436" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="3" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Input %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Read Analogue Input 16 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25120" />
+    <val type="dict" id="160722428" >
+      <entry>
+        <key type="string" value="incr" />
+        <val type="numeric" value="1" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="15" />
+      </entry>
+      <entry>
+        <key type="string" value="nbmax" />
+        <val type="numeric" value="8" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160554028" >
+          <item type="dict" id="160722564" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Output 1 Bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160722700" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="1" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Write Outputs 0x%X[((idx-1)*128+sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="128" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Write Outputs Bit %d to %d[(idx*128-127,idx*128)]" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25600" />
+    <val type="dict" id="160706604" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160552012" >
+          <item type="dict" id="160706740" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Input 8 Bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160706876" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="2" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Input %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Read Analogue Input 8 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25184" />
+    <val type="dict" id="160708644" >
+      <entry>
+        <key type="string" value="incr" />
+        <val type="numeric" value="1" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="15" />
+      </entry>
+      <entry>
+        <key type="string" value="nbmax" />
+        <val type="numeric" value="8" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159712204" >
+          <item type="dict" id="160708780" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Output 1 Bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160708916" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="1" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Error Value Outputs 0x%X[((idx-1)*128+sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="128" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Error Value Outputs Lines %d to %d[(idx*128-127,idx*128)]" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25346" />
+    <val type="dict" id="160707420" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160554828" >
+          <item type="dict" id="160707556" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Output 16 Bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160707692" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="6" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Change Polarity Outputs 0x%X to 0x%X[(sub*16-15,sub*16)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Change Polarity Outputs 16 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25670" />
+    <val type="dict" id="160707828" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160544588" >
+          <item type="dict" id="160707964" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Outputs" />
+            </entry>
+          </item>
+          <item type="dict" id="160708100" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="4" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Output %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Analogue Output Offset Integer" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25376" />
+    <val type="dict" id="160708236" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160551692" >
+          <item type="dict" id="160708372" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Output 32 Bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160708508" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="7" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Write Outputs 0x%X to 0x%X[(sub*32-31,sub*32)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Write Output 32 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="24672" />
+    <val type="dict" id="160679972" >
+      <entry>
+        <key type="string" value="incr" />
+        <val type="numeric" value="1" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="15" />
+      </entry>
+      <entry>
+        <key type="string" value="nbmax" />
+        <val type="numeric" value="8" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159739372" >
+          <item type="dict" id="160680108" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Input 1 bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160680244" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="1" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Interrupt Mask Any Change Input bit 0x%X[((idx-1)*128+sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="128" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Interrupt Mask Input Low to High Bit 0x%X to 0x%X[(idx*128-127,idx*128)]" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="24656" />
+    <val type="dict" id="160709052" >
+      <entry>
+        <key type="string" value="incr" />
+        <val type="numeric" value="1" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="15" />
+      </entry>
+      <entry>
+        <key type="string" value="nbmax" />
+        <val type="numeric" value="8" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160551340" >
+          <item type="dict" id="160709188" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Input 1 bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160709324" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="1" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Interrupt Mask Any Change Input bit 0x%X[((idx-1)*128+sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="128" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Interrupt Mask Input Any Change Bit 0x%X to 0x%X[(idx*128-127,idx*128)]" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25602" />
+    <val type="dict" id="160709460" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160572204" >
+          <item type="dict" id="160709596" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Input 32 Bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160709732" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="4" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Input %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Read Analogue Input 32 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25382" />
+    <val type="dict" id="160707012" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160553324" >
+          <item type="dict" id="160707148" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Output 32 Bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160707284" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="7" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Error Mode Outputs 0x%X to 0x%X[(sub*32-31,sub*32)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Error Mode Outputs 32 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25649" />
+    <val type="dict" id="160710276" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160573996" >
+          <item type="dict" id="160710412" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Inputs" />
+            </entry>
+          </item>
+          <item type="dict" id="160689252" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="4" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Input %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Analogue Input Offset Integer" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25095" />
+    <val type="dict" id="160689388" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160593100" >
+          <item type="dict" id="160689524" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Output 8 Bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160688028" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Error Value Outputs 0x%X to 0x%X[(sub*8-7,sub*8)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Error Value Outputs 8 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="24871" />
+    <val type="dict" id="160712060" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160691884" >
+          <item type="dict" id="160712196" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Input 32 bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160712332" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="7" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Interrupt Low to High Input  0x%X to 0x%X[(sub*32-31,sub*32)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Interrupt Mask Input Low to High 32 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="24870" />
+    <val type="dict" id="160709868" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160575116" >
+          <item type="dict" id="160710004" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Input 32 bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160710140" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="7" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Interrupt Any Change Input 0x%X to 0x%X[(sub*32-31,sub*32)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Interrupt Mask Input Any Change 32 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25351" />
+    <val type="dict" id="160722020" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159599820" >
+          <item type="dict" id="160722156" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Output 16 Bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160722292" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="6" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Error Value Outputs 0x%X to 0x%X[(sub*16-15,sub*16)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Error Value Outputs 16 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25384" />
+    <val type="dict" id="160678748" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160552588" >
+          <item type="dict" id="160678884" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Output 32 Bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160679020" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="7" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Filter Mask Outputs 0x%X to 0x%X[(sub*32-31,sub*32)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Filter Mask Outputs 32 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25619" />
+    <val type="dict" id="160687756" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160566828" >
+          <item type="dict" id="160687892" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Outputs Float" />
+            </entry>
+          </item>
+          <item type="dict" id="160687212" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="8" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Output %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Write Analogue Output Float" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25168" />
+    <val type="dict" id="160687348" >
+      <entry>
+        <key type="string" value="incr" />
+        <val type="numeric" value="1" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="15" />
+      </entry>
+      <entry>
+        <key type="string" value="nbmax" />
+        <val type="numeric" value="8" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160566028" >
+          <item type="dict" id="160687484" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Output 1 Bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160686804" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="1" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Error Mode Outputs 0x%X[((idx-1)*128+sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="128" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Error Mode Outputs Lines %d to %d[(idx*128-127,idx*128)]" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="24839" />
+    <val type="dict" id="160686940" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160563948" >
+          <item type="dict" id="160687076" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Input 16 bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160686396" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="6" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Interrupt Low to High 0x%X to 0x%X[(sub*16-15,sub*16)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Interrupt Mask Low to High 16 Bit" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25671" />
+    <val type="dict" id="160686532" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159715084" >
+          <item type="dict" id="160686668" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Outputs" />
+            </entry>
+          </item>
+          <item type="dict" id="160686124" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="4" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Output %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Analogue Output Scaling Integer" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25637" />
+    <val type="dict" id="160686260" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="159708108" >
+          <item type="dict" id="160694996" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Analogue Inputs" />
+            </entry>
+          </item>
+          <item type="dict" id="160695132" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="4" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Analogue Input %d[(sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="254" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Analogue Input Interrupt Lower Limit Interger" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="7" />
+      </entry>
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="24688" />
+    <val type="dict" id="160695268" >
+      <entry>
+        <key type="string" value="incr" />
+        <val type="numeric" value="1" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="15" />
+      </entry>
+      <entry>
+        <key type="string" value="nbmax" />
+        <val type="numeric" value="8" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160717676" >
+          <item type="dict" id="160696220" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Input 1 bit" />
+            </entry>
+          </item>
+          <item type="dict" id="160696356" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="True" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="1" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Interrupt Mask Any Change Input bit 0x%X[((idx-1)*128+sub)]" />
+            </entry>
+            <entry>
+              <key type="string" value="nbmax" />
+              <val type="numeric" value="128" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Interrupt Mask Input High  to Low Bit 0x%X to 0x%X[(idx*128-127,idx*128)]" />
+      </entry>
+    </val>
+  </entry>
+</attr>
+<attr name="Description" type="string" value="" />
+<attr name="Dictionary" type="dict" id="160696492" >
+  <entry>
+    <key type="numeric" value="4096" />
+    <val type="numeric" value="983441" />
+  </entry>
+  <entry>
+    <key type="numeric" value="4097" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="4098" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="5123" />
+    <val type="list" id="160634796" >
+      <item type="string" value="self.ID+0x80000500" />
+      <item type="numeric" value="1" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="4101" />
+    <val type="numeric" value="128" />
+  </entry>
+  <entry>
+    <key type="numeric" value="24576" />
+    <val type="list" id="160635052" >
+      <item type="numeric" value="0" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="5121" />
+    <val type="list" id="160636876" >
+      <item type="string" value="self.ID+0x300" />
+      <item type="numeric" value="1" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="4104" />
+    <val type="string" value="" />
+  </entry>
+  <entry>
+    <key type="numeric" value="4105" />
+    <val type="string" value="" />
+  </entry>
+  <entry>
+    <key type="numeric" value="4106" />
+    <val type="string" value="" />
+  </entry>
+  <entry>
+    <key type="numeric" value="4108" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="4109" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="4112" />
+    <val type="list" id="160636620" >
+      <item type="numeric" value="0" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="4113" />
+    <val type="list" id="160636844" >
+      <item type="numeric" value="0" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="6658" />
+    <val type="list" id="160636748" >
+      <item type="numeric" value="1677788432" />
+      <item type="numeric" value="1677788688" />
+      <item type="numeric" value="1677788944" />
+      <item type="numeric" value="1677789200" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="6147" />
+    <val type="list" id="160718284" >
+      <item type="string" value="self.ID+0x80000480" />
+      <item type="numeric" value="1" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25088" />
+    <val type="list" id="160718060" >
+      <item type="numeric" value="0" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="4119" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="4120" />
+    <val type="list" id="160717356" >
+      <item type="numeric" value="373" />
+      <item type="numeric" value="1048576" />
+      <item type="numeric" value="65537" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="4118" />
+    <val type="list" id="160717196" >
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="4128" />
+    <val type="list" id="160717036" >
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25635" />
+    <val type="numeric" value="0" />
+  </entry>
+  <entry>
+    <key type="numeric" value="25094" />
+    <val type="list" id="160716908" >
+      <item type="numeric" value="0" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="5120" />
+    <val type="list" id="160716780" >
+      <item type="string" value="self.ID+0x200" />
+      <item type="numeric" value="1" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25095" />
+    <val type="list" id="160715884" >
+      <item type="numeric" value="0" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="6146" />
+    <val type="list" id="160715020" >
+      <item type="string" value="self.ID+0x380" />
+      <item type="numeric" value="1" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="5632" />
+    <val type="list" id="160716204" >
+      <item type="numeric" value="1644167432" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="24578" />
+    <val type="list" id="160716076" >
+      <item type="numeric" value="0" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25667" />
+    <val type="list" id="160715948" >
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25668" />
+    <val type="list" id="160715820" >
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="6144" />
+    <val type="list" id="160715660" >
+      <item type="string" value="self.ID+0x180" />
+      <item type="numeric" value="1" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="8016" />
+    <val type="list" id="160715468" >
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="string" value="" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25090" />
+    <val type="list" id="160715308" >
+      <item type="numeric" value="0" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="5633" />
+    <val type="list" id="160715180" >
+      <item type="numeric" value="1678835984" />
+      <item type="numeric" value="1678836240" />
+      <item type="numeric" value="1678836496" />
+      <item type="numeric" value="1678836752" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="6656" />
+    <val type="list" id="160716364" >
+      <item type="numeric" value="1610613000" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="5122" />
+    <val type="list" id="160718092" >
+      <item type="string" value="self.ID+0x80000400" />
+      <item type="numeric" value="1" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="6145" />
+    <val type="list" id="160716748" >
+      <item type="string" value="self.ID+0x280" />
+      <item type="numeric" value="1" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25638" />
+    <val type="list" id="160718028" >
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25617" />
+    <val type="list" id="160717868" >
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="25601" />
+    <val type="list" id="160717804" >
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+      <item type="numeric" value="0" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="4608" />
+    <val type="list" id="160716460" >
+      <item type="numeric" value="1600" />
+      <item type="numeric" value="1472" />
+    </val>
+  </entry>
+  <entry>
+    <key type="numeric" value="6657" />
+    <val type="list" id="160714860" >
+      <item type="numeric" value="1677787408" />
+      <item type="numeric" value="1677787664" />
+      <item type="numeric" value="1677787920" />
+      <item type="numeric" value="1677788176" />
+    </val>
+  </entry>
+</attr>
+<attr name="SpecificMenu" type="list" id="160714924" >
+  <item type="tuple" id="159587468" >
+    <item type="string" value="Read Input Bit" />
+    <item type="list" id="160714828" >
+      <item type="numeric" value="24608" />
+      <item type="numeric" value="24624" />
+      <item type="numeric" value="24632" />
+      <item type="numeric" value="24656" />
+      <item type="numeric" value="24672" />
+      <item type="numeric" value="24688" />
+    </item>
+  </item>
+  <item type="tuple" id="159587596" >
+    <item type="string" value="Write Output Bit" />
+    <item type="list" id="160715052" >
+      <item type="numeric" value="25120" />
+      <item type="numeric" value="25152" />
+      <item type="numeric" value="25168" />
+      <item type="numeric" value="25184" />
+      <item type="numeric" value="25200" />
+    </item>
+  </item>
+</attr>
+<attr name="ParamsDictionary" type="dict" id="160697444" >
+</attr>
+<attr name="UserMapping" type="dict" id="160697580" >
+  <entry>
+    <key type="numeric" value="8016" />
+    <val type="dict" id="160697716" >
+      <entry>
+        <key type="string" value="need" />
+        <val type="False" value="" />
+      </entry>
+      <entry>
+        <key type="string" value="values" />
+        <val type="list" id="160716236" >
+          <item type="dict" id="160697036" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="ro" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Number of Entries" />
+            </entry>
+          </item>
+          <item type="dict" id="160697172" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Compatibility Entry" />
+            </entry>
+          </item>
+          <item type="dict" id="160697308" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="5" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string">Compatibility</val>
+            </entry>
+          </item>
+          <item type="dict" id="160696628" >
+            <entry>
+              <key type="string" value="access" />
+              <val type="string" value="rw" />
+            </entry>
+            <entry>
+              <key type="string" value="pdo" />
+              <val type="False" value="" />
+            </entry>
+            <entry>
+              <key type="string" value="type" />
+              <val type="numeric" value="15" />
+            </entry>
+            <entry>
+              <key type="string" value="name" />
+              <val type="string" value="Download Program Data - HW Settings" />
+            </entry>
+          </item>
+        </val>
+      </entry>
+      <entry>
+        <key type="string" value="name" />
+        <val type="string" value="Download Program Data" />
+      </entry>
+      <entry>
+        <key type="string" value="struct" />
+        <val type="numeric" value="3" />
+      </entry>
+    </val>
+  </entry>
+</attr>
+<attr name="DS302" type="dict" id="160696764" >
+</attr>
+<attr name="ProfileName" type="string" value="DS-401" />
+<attr name="Type" type="string">slave</attr>
+<attr name="ID" type="numeric" value="64" />
+<attr name="Name" type="string">ObjDict</attr>
+</PyObject>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Slave_Gui/TestSlaveGui.cpp	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,133 @@
+/*
+This file is part of CanFestival, a library implementing CanOpen Stack. 
+
+Copyright (C): Edouard TISSERANT and Francis DUPIN
+
+See COPYING file for copyrights details.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+
+
+#include <wx/wxprec.h>
+#include <wx/wx.h>
+#include <wx/textctrl.h>
+#include <iostream>
+
+#if defined(WIN32) && !defined(__CYGWIN__)
+	#include <windows.h>
+
+	extern "C" {
+		#include "getopt.h"
+	}
+
+	void pause(void)
+	{
+		system("PAUSE");
+	}
+#else
+	#include <stdio.h>
+	#include <string.h>
+	#include <unistd.h>
+	#include <stdlib.h>
+	#include <signal.h>
+#endif
+
+//#include <can_driver.h>
+//#include <timers_driver.h>
+extern "C" 
+  {
+	#include "canfestival.h"
+  }
+#include "CallBack.h"
+#include "TestSlaveGui.h"
+#include "main.h"
+
+extern wxTextCtrl 	*textLog;
+extern int			node_id_ext;
+
+UNS32 OnMasterMap1Update(CO_Data* d, const indextable * unsused_indextable, UNS8 unsused_bSubindex)
+{
+	return 0;
+}
+
+s_BOARD MasterBoard = {"1", "125K"};
+
+#if !defined(WIN32) || defined(__CYGWIN__)
+void catch_signal(int sig)
+{
+  signal(SIGTERM, catch_signal);
+  signal(SIGINT, catch_signal);
+  printf("Got Signal %d\n",sig);
+}
+#endif
+
+//***************************  INIT  *****************************************
+void InitNodes(CO_Data* d, UNS32 id)
+{
+	//****************************** INITIALISATION SLAVE *******************************
+		/* Defining the node Id */
+		setNodeId(&ObjDict_Data, node_id_ext);
+		/* init */
+		setState(&ObjDict_Data, Initialisation);
+}
+
+//****************************************************************************
+//***************************  MAIN  *****************************************
+//****************************************************************************
+int main_can(s_BOARD SlaveBoard, char* LibraryPath)
+{
+  printf("Bus name: %s        Freq: %s       Driver: %s\n", SlaveBoard.busname, SlaveBoard.baudrate, LibraryPath);
+
+  #if !defined(WIN32) || defined(__CYGWIN__)
+	signal(SIGTERM, catch_signal);
+	signal(SIGINT, catch_signal);
+  #endif
+
+  #ifndef NOT_USE_DYNAMIC_LOADING
+	LoadCanDriver(LibraryPath);
+  #endif		
+	// Open CAN devices
+
+	ObjDict_Data.heartbeatError = Call_heartbeatError;
+	ObjDict_Data.initialisation = Call_initialisation;
+	ObjDict_Data.preOperational = Call_preOperational;
+	ObjDict_Data.operational = Call_operational;
+	ObjDict_Data.stopped = Call_stopped;
+	ObjDict_Data.post_sync = Call_post_sync;
+	ObjDict_Data.post_TPDO = Call_post_TPDO;
+	ObjDict_Data.storeODSubIndex = Call_storeODSubIndex;		
+
+	if(!canOpen(&SlaveBoard,&ObjDict_Data))
+	  {
+		printf("Cannot open Slave Board (%s,%s)\n",SlaveBoard.busname, SlaveBoard.baudrate);
+		return (1);
+	  }
+	// Start timer thread
+	//printf("nodeid slave=%x\n",node_id_ext);
+	StartTimerLoop(&InitNodes);
+	return 0;
+}
+
+void stop_slave()
+{	
+	StopTimerLoop();
+	// Close CAN devices (and can threads)
+	// Stop master
+	setState(&ObjDict_Data, Stopped);
+	//canClose(&ObjDict_Data);
+	//canClose(&TestMaster_Data);
+	return;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Slave_Gui/TestSlaveGui.h	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,9 @@
+#ifndef TESTSLAVEGUI_H_
+#define TESTSLAVEGUI_H_
+
+	#include "canfestival.h"
+
+	int 	main_can(s_BOARD SlaveBoard, char* LibraryPath);
+	void	stop_slave();
+
+#endif /*TESTSLAVEGUI_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Slave_Gui/TestSlaveGui.vcproj	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,252 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8,00"
+	Name="TestSlaveGui"
+	ProjectGUID="{B51A176D-5320-4534-913B-3025CED5B27E}"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="../../Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="../../include;../../include/win32"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="CanFestival-3.lib"
+				OutputFile="$(OutDir)/TestSlaveGui.exe"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="../../Debug UNICODE"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/TestSlaveGui.pdb"
+				SubSystem="1"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="../../Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="../../include;../../include/win32"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="CanFestival-3.lib"
+				OutputFile="$(OutDir)/TestSlaveGui.exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="../../Release"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath=".\getopt.c"
+				>
+			</File>
+			<File
+				RelativePath=".\Master.c"
+				>
+			</File>
+			<File
+				RelativePath=".\Slave.c"
+				>
+			</File>
+			<File
+				RelativePath=".\TestMaster.c"
+				>
+			</File>
+			<File
+				RelativePath=".\TestMasterSlave.c"
+				>
+			</File>
+			<File
+				RelativePath=".\TestSlave.c"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath=".\getopt.h"
+				>
+			</File>
+			<File
+				RelativePath=".\Master.h"
+				>
+			</File>
+			<File
+				RelativePath=".\Slave.h"
+				>
+			</File>
+			<File
+				RelativePath=".\TestMaster.h"
+				>
+			</File>
+			<File
+				RelativePath=".\TestSlaveGui.h"
+				>
+			</File>
+			<File
+				RelativePath=".\TestSlave.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Slave_Gui/getopt.c	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,1260 @@
+/* from http://www.pwilson.net/getopt.html */
+
+/* Getopt for GNU.
+   NOTE: getopt is now part of the C library, so if you don't know what
+   "Keep this file name-space clean" means, talk to drepper@gnu.org
+   before changing it!
+   Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001
+        Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
+   Ditto for AIX 3.2 and <stdlib.h>.  */
+#ifndef _NO_PROTO
+# define _NO_PROTO
+#endif
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#if !defined __STDC__ || !__STDC__
+/* This is a separate conditional since some stdc systems
+   reject `defined (const)'.  */
+# ifndef const
+#  define const
+# endif
+#endif
+
+#include <stdio.h>
+
+/* Comment out all this code if we are using the GNU C Library, and are not
+   actually compiling the library itself.  This code is part of the GNU C
+   Library, but also included in many other GNU distributions.  Compiling
+   and linking in this code is a waste when using the GNU C library
+   (especially if it is a shared library).  Rather than having every GNU
+   program understand `configure --with-gnu-libc' and omit the object files,
+   it is simpler to just do this in the source for each such file.  */
+
+#define GETOPT_INTERFACE_VERSION 2
+#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
+# include <gnu-versions.h>
+# if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
+#  define ELIDE_CODE
+# endif
+#endif
+
+#ifndef ELIDE_CODE
+
+
+/* This needs to come after some library #include
+   to get __GNU_LIBRARY__ defined.  */
+#ifdef  __GNU_LIBRARY__
+/* Don't include stdlib.h for non-GNU C libraries because some of them
+   contain conflicting prototypes for getopt.  */
+# include <stdlib.h>
+# include <unistd.h>
+#endif  /* GNU C library.  */
+
+#ifdef VMS
+# include <unixlib.h>
+# if HAVE_STRING_H - 0
+#  include <string.h>
+# endif
+#endif
+
+#ifndef _
+/* This is for other GNU distributions with internationalized messages.  */
+# if (HAVE_LIBINTL_H && ENABLE_NLS) || defined _LIBC
+#  include <libintl.h>
+#  ifndef _
+#   define _(msgid)     gettext (msgid)
+#  endif
+# else
+#  define _(msgid)      (msgid)
+# endif
+# if defined _LIBC && defined USE_IN_LIBIO
+#  include <wchar.h>
+# endif
+#endif
+
+/* This version of `getopt' appears to the caller like standard Unix `getopt'
+   but it behaves differently for the user, since it allows the user
+   to intersperse the options with the other arguments.
+
+   As `getopt' works, it permutes the elements of ARGV so that,
+   when it is done, all the options precede everything else.  Thus
+   all application programs are extended to handle flexible argument order.
+
+   Setting the environment variable POSIXLY_CORRECT disables permutation.
+   Then the behavior is completely standard.
+
+   GNU application programs can use a third alternative mode in which
+   they can distinguish the relative order of options and other arguments.  */
+
+#include "getopt.h"
+
+/* For communication from `getopt' to the caller.
+   When `getopt' finds an option that takes an argument,
+   the argument value is returned here.
+   Also, when `ordering' is RETURN_IN_ORDER,
+   each non-option ARGV-element is returned here.  */
+
+char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+   This is used for communication to and from the caller
+   and for communication between successive calls to `getopt'.
+
+   On entry to `getopt', zero means this is the first call; initialize.
+
+   When `getopt' returns -1, this is the index of the first of the
+   non-option elements that the caller should itself scan.
+
+   Otherwise, `optind' communicates from one call to the next
+   how much of ARGV has been scanned so far.  */
+
+/* 1003.2 says this must be 1 before any call.  */
+int optind = 1;
+
+/* Formerly, initialization of getopt depended on optind==0, which
+   causes problems with re-calling getopt as programs generally don't
+   know that. */
+
+int __getopt_initialized;
+
+/* The next char to be scanned in the option-element
+   in which the last option character we returned was found.
+   This allows us to pick up the scan where we left off.
+
+   If this is zero, or a null string, it means resume the scan
+   by advancing to the next ARGV-element.  */
+
+static char *nextchar;
+
+/* Callers store zero here to inhibit the error message
+   for unrecognized options.  */
+
+int opterr = 1;
+
+/* Set to an option character which was unrecognized.
+   This must be initialized on some systems to avoid linking in the
+   system's own getopt implementation.  */
+
+int optopt = '?';
+
+/* Describe how to deal with options that follow non-option ARGV-elements.
+
+   If the caller did not specify anything,
+   the default is REQUIRE_ORDER if the environment variable
+   POSIXLY_CORRECT is defined, PERMUTE otherwise.
+
+   REQUIRE_ORDER means don't recognize them as options;
+   stop option processing when the first non-option is seen.
+   This is what Unix does.
+   This mode of operation is selected by either setting the environment
+   variable POSIXLY_CORRECT, or using `+' as the first character
+   of the list of option characters.
+
+   PERMUTE is the default.  We permute the contents of ARGV as we scan,
+   so that eventually all the non-options are at the end.  This allows options
+   to be given in any order, even with programs that were not written to
+   expect this.
+
+   RETURN_IN_ORDER is an option available to programs that were written
+   to expect options and other ARGV-elements in any order and that care about
+   the ordering of the two.  We describe each non-option ARGV-element
+   as if it were the argument of an option with character code 1.
+   Using `-' as the first character of the list of option characters
+   selects this mode of operation.
+
+   The special argument `--' forces an end of option-scanning regardless
+   of the value of `ordering'.  In the case of RETURN_IN_ORDER, only
+   `--' can cause `getopt' to return -1 with `optind' != ARGC.  */
+
+static enum
+{
+  REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
+} ordering;
+
+/* Value of POSIXLY_CORRECT environment variable.  */
+static char *posixly_correct;
+
+#ifdef  __GNU_LIBRARY__
+/* We want to avoid inclusion of string.h with non-GNU libraries
+   because there are many ways it can cause trouble.
+   On some systems, it contains special magic macros that don't work
+   in GCC.  */
+# include <string.h>
+# define my_index       strchr
+#else
+
+# if HAVE_STRING_H || WIN32 /* Pete Wilson mod 7/28/02 */
+#  include <string.h>
+# else
+#  include <strings.h>
+# endif
+
+/* Avoid depending on library functions or files
+   whose names are inconsistent.  */
+
+#ifndef getenv
+extern char *getenv ();
+#endif
+
+static char *
+my_index (str, chr)
+     const char *str;
+     int chr;
+{
+  while (*str)
+    {
+      if (*str == chr)
+        return (char *) str;
+      str++;
+    }
+  return 0;
+}
+
+/* If using GCC, we can safely declare strlen this way.
+   If not using GCC, it is ok not to declare it.  */
+#ifdef __GNUC__
+/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h.
+   That was relevant to code that was here before.  */
+# if (!defined __STDC__ || !__STDC__) && !defined strlen
+/* gcc with -traditional declares the built-in strlen to return int,
+   and has done so at least since version 2.4.5. -- rms.  */
+extern int strlen (const char *);
+# endif /* not __STDC__ */
+#endif /* __GNUC__ */
+
+#endif /* not __GNU_LIBRARY__ */
+
+/* Handle permutation of arguments.  */
+
+/* Describe the part of ARGV that contains non-options that have
+   been skipped.  `first_nonopt' is the index in ARGV of the first of them;
+   `last_nonopt' is the index after the last of them.  */
+
+static int first_nonopt;
+static int last_nonopt;
+
+#ifdef _LIBC
+/* Stored original parameters.
+   XXX This is no good solution.  We should rather copy the args so
+   that we can compare them later.  But we must not use malloc(3).  */
+extern int __libc_argc;
+extern char **__libc_argv;
+
+/* Bash 2.0 gives us an environment variable containing flags
+   indicating ARGV elements that should not be considered arguments.  */
+
+# ifdef USE_NONOPTION_FLAGS
+/* Defined in getopt_init.c  */
+extern char *__getopt_nonoption_flags;
+
+static int nonoption_flags_max_len;
+static int nonoption_flags_len;
+# endif
+
+# ifdef USE_NONOPTION_FLAGS
+#  define SWAP_FLAGS(ch1, ch2) \
+  if (nonoption_flags_len > 0)                                                \
+    {                                                                         \
+      char __tmp = __getopt_nonoption_flags[ch1];                             \
+      __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2];          \
+      __getopt_nonoption_flags[ch2] = __tmp;                                  \
+    }
+# else
+#  define SWAP_FLAGS(ch1, ch2)
+# endif
+#else   /* !_LIBC */
+# define SWAP_FLAGS(ch1, ch2)
+#endif  /* _LIBC */
+
+/* Exchange two adjacent subsequences of ARGV.
+   One subsequence is elements [first_nonopt,last_nonopt)
+   which contains all the non-options that have been skipped so far.
+   The other is elements [last_nonopt,optind), which contains all
+   the options processed since those non-options were skipped.
+
+   `first_nonopt' and `last_nonopt' are relocated so that they describe
+   the new indices of the non-options in ARGV after they are moved.  */
+
+#if defined __STDC__ && __STDC__
+static void exchange (char **);
+#endif
+
+static void
+exchange (argv)
+     char **argv;
+{
+  int bottom = first_nonopt;
+  int middle = last_nonopt;
+  int top = optind;
+  char *tem;
+
+  /* Exchange the shorter segment with the far end of the longer segment.
+     That puts the shorter segment into the right place.
+     It leaves the longer segment in the right place overall,
+     but it consists of two parts that need to be swapped next.  */
+
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+  /* First make sure the handling of the `__getopt_nonoption_flags'
+     string can work normally.  Our top argument must be in the range
+     of the string.  */
+  if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len)
+    {
+      /* We must extend the array.  The user plays games with us and
+         presents new arguments.  */
+      char *new_str = malloc (top + 1);
+      if (new_str == NULL)
+        nonoption_flags_len = nonoption_flags_max_len = 0;
+      else
+        {
+          memset (__mempcpy (new_str, __getopt_nonoption_flags,
+                             nonoption_flags_max_len),
+                  '\0', top + 1 - nonoption_flags_max_len);
+          nonoption_flags_max_len = top + 1;
+          __getopt_nonoption_flags = new_str;
+        }
+    }
+#endif
+
+  while (top > middle && middle > bottom)
+    {
+      if (top - middle > middle - bottom)
+        {
+          /* Bottom segment is the short one.  */
+          int len = middle - bottom;
+          register int i;
+
+          /* Swap it with the top part of the top segment.  */
+          for (i = 0; i < len; i++)
+            {
+              tem = argv[bottom + i];
+              argv[bottom + i] = argv[top - (middle - bottom) + i];
+              argv[top - (middle - bottom) + i] = tem;
+              SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
+            }
+          /* Exclude the moved bottom segment from further swapping.  */
+          top -= len;
+        }
+      else
+        {
+          /* Top segment is the short one.  */
+          int len = top - middle;
+          register int i;
+
+          /* Swap it with the bottom part of the bottom segment.  */
+          for (i = 0; i < len; i++)
+            {
+              tem = argv[bottom + i];
+              argv[bottom + i] = argv[middle + i];
+              argv[middle + i] = tem;
+              SWAP_FLAGS (bottom + i, middle + i);
+            }
+          /* Exclude the moved top segment from further swapping.  */
+          bottom += len;
+        }
+    }
+
+  /* Update records for the slots the non-options now occupy.  */
+
+  first_nonopt += (optind - last_nonopt);
+  last_nonopt = optind;
+}
+
+/* Initialize the internal data when the first call is made.  */
+
+#if defined __STDC__ && __STDC__
+static const char *_getopt_initialize (int, char *const *, const char *);
+#endif
+static const char *
+_getopt_initialize (argc, argv, optstring)
+     int argc;
+     char *const *argv;
+     const char *optstring;
+{
+  /* Start processing options with ARGV-element 1 (since ARGV-element 0
+     is the program name); the sequence of previously skipped
+     non-option ARGV-elements is empty.  */
+
+  first_nonopt = last_nonopt = optind;
+
+  nextchar = NULL;
+
+  posixly_correct = getenv ("POSIXLY_CORRECT");
+
+  /* Determine how to handle the ordering of options and nonoptions.  */
+
+  if (optstring[0] == '-')
+    {
+      ordering = RETURN_IN_ORDER;
+      ++optstring;
+    }
+  else if (optstring[0] == '+')
+    {
+      ordering = REQUIRE_ORDER;
+      ++optstring;
+    }
+  else if (posixly_correct != NULL)
+    ordering = REQUIRE_ORDER;
+  else
+    ordering = PERMUTE;
+
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+  if (posixly_correct == NULL
+      && argc == __libc_argc && argv == __libc_argv)
+    {
+      if (nonoption_flags_max_len == 0)
+        {
+          if (__getopt_nonoption_flags == NULL
+              || __getopt_nonoption_flags[0] == '\0')
+            nonoption_flags_max_len = -1;
+          else
+            {
+              const char *orig_str = __getopt_nonoption_flags;
+              int len = nonoption_flags_max_len = strlen (orig_str);
+              if (nonoption_flags_max_len < argc)
+                nonoption_flags_max_len = argc;
+              __getopt_nonoption_flags =
+                (char *) malloc (nonoption_flags_max_len);
+              if (__getopt_nonoption_flags == NULL)
+                nonoption_flags_max_len = -1;
+              else
+                memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
+                        '\0', nonoption_flags_max_len - len);
+            }
+        }
+      nonoption_flags_len = nonoption_flags_max_len;
+    }
+  else
+    nonoption_flags_len = 0;
+#endif
+
+  return optstring;
+}
+
+/* Scan elements of ARGV (whose length is ARGC) for option characters
+   given in OPTSTRING.
+
+   If an element of ARGV starts with '-', and is not exactly "-" or "--",
+   then it is an option element.  The characters of this element
+   (aside from the initial '-') are option characters.  If `getopt'
+   is called repeatedly, it returns successively each of the option characters
+   from each of the option elements.
+
+   If `getopt' finds another option character, it returns that character,
+   updating `optind' and `nextchar' so that the next call to `getopt' can
+   resume the scan with the following option character or ARGV-element.
+
+   If there are no more option characters, `getopt' returns -1.
+   Then `optind' is the index in ARGV of the first ARGV-element
+   that is not an option.  (The ARGV-elements have been permuted
+   so that those that are not options now come last.)
+
+   OPTSTRING is a string containing the legitimate option characters.
+   If an option character is seen that is not listed in OPTSTRING,
+   return '?' after printing an error message.  If you set `opterr' to
+   zero, the error message is suppressed but we still return '?'.
+
+   If a char in OPTSTRING is followed by a colon, that means it wants an arg,
+   so the following text in the same ARGV-element, or the text of the following
+   ARGV-element, is returned in `optarg'.  Two colons mean an option that
+   wants an optional arg; if there is text in the current ARGV-element,
+   it is returned in `optarg', otherwise `optarg' is set to zero.
+
+   If OPTSTRING starts with `-' or `+', it requests different methods of
+   handling the non-option ARGV-elements.
+   See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
+
+   Long-named options begin with `--' instead of `-'.
+   Their names may be abbreviated as long as the abbreviation is unique
+   or is an exact match for some defined option.  If they have an
+   argument, it follows the option name in the same ARGV-element, separated
+   from the option name by a `=', or else the in next ARGV-element.
+   When `getopt' finds a long-named option, it returns 0 if that option's
+   `flag' field is nonzero, the value of the option's `val' field
+   if the `flag' field is zero.
+
+   The elements of ARGV aren't really const, because we permute them.
+   But we pretend they're const in the prototype to be compatible
+   with other systems.
+
+   LONGOPTS is a vector of `struct option' terminated by an
+   element containing a name which is zero.
+
+   LONGIND returns the index in LONGOPT of the long-named option found.
+   It is only valid when a long-named option has been found by the most
+   recent call.
+
+   If LONG_ONLY is nonzero, '-' as well as '--' can introduce
+   long-named options.  */
+
+int
+_getopt_internal (argc, argv, optstring, longopts, longind, long_only)
+     int argc;
+     char *const *argv;
+     const char *optstring;
+     const struct option *longopts;
+     int *longind;
+     int long_only;
+{
+  int print_errors = opterr;
+  if (optstring[0] == ':')
+    print_errors = 0;
+
+  if (argc < 1)
+    return -1;
+
+  optarg = NULL;
+
+  if (optind == 0 || !__getopt_initialized)
+    {
+      if (optind == 0)
+        optind = 1;     /* Don't scan ARGV[0], the program name.  */
+      optstring = _getopt_initialize (argc, argv, optstring);
+      __getopt_initialized = 1;
+    }
+
+  /* Test whether ARGV[optind] points to a non-option argument.
+     Either it does not have option syntax, or there is an environment flag
+     from the shell indicating it is not an option.  The later information
+     is only used when the used in the GNU libc.  */
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0'       \
+                      || (optind < nonoption_flags_len                        \
+                          && __getopt_nonoption_flags[optind] == '1'))
+#else
+# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0')
+#endif
+
+  if (nextchar == NULL || *nextchar == '\0')
+    {
+      /* Advance to the next ARGV-element.  */
+
+      /* Give FIRST_NONOPT and LAST_NONOPT rational values if OPTIND has been
+         moved back by the user (who may also have changed the arguments).  */
+      if (last_nonopt > optind)
+        last_nonopt = optind;
+      if (first_nonopt > optind)
+        first_nonopt = optind;
+
+      if (ordering == PERMUTE)
+        {
+          /* If we have just processed some options following some non-options,
+             exchange them so that the options come first.  */
+
+          if (first_nonopt != last_nonopt && last_nonopt != optind)
+            exchange ((char **) argv);
+          else if (last_nonopt != optind)
+            first_nonopt = optind;
+
+          /* Skip any additional non-options
+             and extend the range of non-options previously skipped.  */
+
+          while (optind < argc && NONOPTION_P)
+            optind++;
+          last_nonopt = optind;
+        }
+
+      /* The special ARGV-element `--' means premature end of options.
+         Skip it like a null option,
+         then exchange with previous non-options as if it were an option,
+         then skip everything else like a non-option.  */
+
+      if (optind != argc && !strcmp (argv[optind], "--"))
+        {
+          optind++;
+
+          if (first_nonopt != last_nonopt && last_nonopt != optind)
+            exchange ((char **) argv);
+          else if (first_nonopt == last_nonopt)
+            first_nonopt = optind;
+          last_nonopt = argc;
+
+          optind = argc;
+        }
+
+      /* If we have done all the ARGV-elements, stop the scan
+         and back over any non-options that we skipped and permuted.  */
+
+      if (optind == argc)
+        {
+          /* Set the next-arg-index to point at the non-options
+             that we previously skipped, so the caller will digest them.  */
+          if (first_nonopt != last_nonopt)
+            optind = first_nonopt;
+          return -1;
+        }
+
+      /* If we have come to a non-option and did not permute it,
+         either stop the scan or describe it to the caller and pass it by.  */
+
+      if (NONOPTION_P)
+        {
+          if (ordering == REQUIRE_ORDER)
+            return -1;
+          optarg = argv[optind++];
+          return 1;
+        }
+
+      /* We have found another option-ARGV-element.
+         Skip the initial punctuation.  */
+
+      nextchar = (argv[optind] + 1
+                  + (longopts != NULL && argv[optind][1] == '-'));
+    }
+
+  /* Decode the current option-ARGV-element.  */
+
+  /* Check whether the ARGV-element is a long option.
+
+     If long_only and the ARGV-element has the form "-f", where f is
+     a valid short option, don't consider it an abbreviated form of
+     a long option that starts with f.  Otherwise there would be no
+     way to give the -f short option.
+
+     On the other hand, if there's a long option "fubar" and
+     the ARGV-element is "-fu", do consider that an abbreviation of
+     the long option, just like "--fu", and not "-f" with arg "u".
+
+     This distinction seems to be the most useful approach.  */
+
+  if (longopts != NULL
+      && (argv[optind][1] == '-'
+          || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1])))))
+    {
+      char *nameend;
+      const struct option *p;
+      const struct option *pfound = NULL;
+      int exact = 0;
+      int ambig = 0;
+      int indfound = -1;
+      int option_index;
+
+      for (nameend = nextchar; *nameend && *nameend != '='; nameend++)
+        /* Do nothing.  */ ;
+
+      /* Test all long options for either exact match
+         or abbreviated matches.  */
+      for (p = longopts, option_index = 0; p->name; p++, option_index++)
+        if (!strncmp (p->name, nextchar, nameend - nextchar))
+          {
+            if ((unsigned int) (nameend - nextchar)
+                == (unsigned int) strlen (p->name))
+              {
+                /* Exact match found.  */
+                pfound = p;
+                indfound = option_index;
+                exact = 1;
+                break;
+              }
+            else if (pfound == NULL)
+              {
+                /* First nonexact match found.  */
+                pfound = p;
+                indfound = option_index;
+              }
+            else if (long_only
+                     || pfound->has_arg != p->has_arg
+                     || pfound->flag != p->flag
+                     || pfound->val != p->val)
+              /* Second or later nonexact match found.  */
+              ambig = 1;
+          }
+
+      if (ambig && !exact)
+        {
+          if (print_errors)
+            {
+#if defined _LIBC && defined USE_IN_LIBIO
+              char *buf;
+
+              __asprintf (&buf, _("%s: option `%s' is ambiguous\n"),
+                          argv[0], argv[optind]);
+
+              if (_IO_fwide (stderr, 0) > 0)
+                __fwprintf (stderr, L"%s", buf);
+              else
+                fputs (buf, stderr);
+
+              free (buf);
+#else
+              fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
+                       argv[0], argv[optind]);
+#endif
+            }
+          nextchar += strlen (nextchar);
+          optind++;
+          optopt = 0;
+          return '?';
+        }
+
+      if (pfound != NULL)
+        {
+          option_index = indfound;
+          optind++;
+          if (*nameend)
+            {
+              /* Don't test has_arg with >, because some C compilers don't
+                 allow it to be used on enums.  */
+              if (pfound->has_arg)
+                optarg = nameend + 1;
+              else
+                {
+                  if (print_errors)
+                    {
+#if defined _LIBC && defined USE_IN_LIBIO
+                      char *buf;
+#endif
+
+                      if (argv[optind - 1][1] == '-')
+                        {
+                          /* --option */
+#if defined _LIBC && defined USE_IN_LIBIO
+                          __asprintf (&buf, _("\
+%s: option `--%s' doesn't allow an argument\n"),
+                                      argv[0], pfound->name);
+#else
+                          fprintf (stderr, _("\
+%s: option `--%s' doesn't allow an argument\n"),
+                                   argv[0], pfound->name);
+#endif
+                        }
+                      else
+                        {
+                          /* +option or -option */
+#if defined _LIBC && defined USE_IN_LIBIO
+                          __asprintf (&buf, _("\
+%s: option `%c%s' doesn't allow an argument\n"),
+                                      argv[0], argv[optind - 1][0],
+                                      pfound->name);
+#else
+                          fprintf (stderr, _("\
+%s: option `%c%s' doesn't allow an argument\n"),
+                                   argv[0], argv[optind - 1][0], pfound->name);
+#endif
+                        }
+
+#if defined _LIBC && defined USE_IN_LIBIO
+                      if (_IO_fwide (stderr, 0) > 0)
+                        __fwprintf (stderr, L"%s", buf);
+                      else
+                        fputs (buf, stderr);
+
+                      free (buf);
+#endif
+                    }
+
+                  nextchar += strlen (nextchar);
+
+                  optopt = pfound->val;
+                  return '?';
+                }
+            }
+          else if (pfound->has_arg == 1)
+            {
+              if (optind < argc)
+                optarg = argv[optind++];
+              else
+                {
+                  if (print_errors)
+                    {
+#if defined _LIBC && defined USE_IN_LIBIO
+                      char *buf;
+
+                      __asprintf (&buf,
+                                  _("%s: option `%s' requires an argument\n"),
+                                  argv[0], argv[optind - 1]);
+
+                      if (_IO_fwide (stderr, 0) > 0)
+                        __fwprintf (stderr, L"%s", buf);
+                      else
+                        fputs (buf, stderr);
+
+                      free (buf);
+#else
+                      fprintf (stderr,
+                               _("%s: option `%s' requires an argument\n"),
+                               argv[0], argv[optind - 1]);
+#endif
+                    }
+                  nextchar += strlen (nextchar);
+                  optopt = pfound->val;
+                  return optstring[0] == ':' ? ':' : '?';
+                }
+            }
+          nextchar += strlen (nextchar);
+          if (longind != NULL)
+            *longind = option_index;
+          if (pfound->flag)
+            {
+              *(pfound->flag) = pfound->val;
+              return 0;
+            }
+          return pfound->val;
+        }
+
+      /* Can't find it as a long option.  If this is not getopt_long_only,
+         or the option starts with '--' or is not a valid short
+         option, then it's an error.
+         Otherwise interpret it as a short option.  */
+      if (!long_only || argv[optind][1] == '-'
+          || my_index (optstring, *nextchar) == NULL)
+        {
+          if (print_errors)
+            {
+#if defined _LIBC && defined USE_IN_LIBIO
+              char *buf;
+#endif
+
+              if (argv[optind][1] == '-')
+                {
+                  /* --option */
+#if defined _LIBC && defined USE_IN_LIBIO
+                  __asprintf (&buf, _("%s: unrecognized option `--%s'\n"),
+                              argv[0], nextchar);
+#else
+                  fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
+                           argv[0], nextchar);
+#endif
+                }
+              else
+                {
+                  /* +option or -option */
+#if defined _LIBC && defined USE_IN_LIBIO
+                  __asprintf (&buf, _("%s: unrecognized option `%c%s'\n"),
+                              argv[0], argv[optind][0], nextchar);
+#else
+                  fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
+                           argv[0], argv[optind][0], nextchar);
+#endif
+                }
+
+#if defined _LIBC && defined USE_IN_LIBIO
+              if (_IO_fwide (stderr, 0) > 0)
+                __fwprintf (stderr, L"%s", buf);
+              else
+                fputs (buf, stderr);
+
+              free (buf);
+#endif
+            }
+          nextchar = (char *) "";
+          optind++;
+          optopt = 0;
+          return '?';
+        }
+    }
+
+  /* Look at and handle the next short option-character.  */
+
+  {
+    char c = *nextchar++;
+    char *temp = my_index (optstring, c);
+
+    /* Increment `optind' when we start to process its last character.  */
+    if (*nextchar == '\0')
+      ++optind;
+
+    if (temp == NULL || c == ':')
+      {
+        if (print_errors)
+          {
+#if defined _LIBC && defined USE_IN_LIBIO
+              char *buf;
+#endif
+
+            if (posixly_correct)
+              {
+                /* 1003.2 specifies the format of this message.  */
+#if defined _LIBC && defined USE_IN_LIBIO
+                __asprintf (&buf, _("%s: illegal option -- %c\n"),
+                            argv[0], c);
+#else
+                fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c);
+#endif
+              }
+            else
+              {
+#if defined _LIBC && defined USE_IN_LIBIO
+                __asprintf (&buf, _("%s: invalid option -- %c\n"),
+                            argv[0], c);
+#else
+                fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c);
+#endif
+              }
+
+#if defined _LIBC && defined USE_IN_LIBIO
+            if (_IO_fwide (stderr, 0) > 0)
+              __fwprintf (stderr, L"%s", buf);
+            else
+              fputs (buf, stderr);
+
+            free (buf);
+#endif
+          }
+        optopt = c;
+        return '?';
+      }
+    /* Convenience. Treat POSIX -W foo same as long option --foo */
+    if (temp[0] == 'W' && temp[1] == ';')
+      {
+        char *nameend;
+        const struct option *p;
+        const struct option *pfound = NULL;
+        int exact = 0;
+        int ambig = 0;
+        int indfound = 0;
+        int option_index;
+
+        /* This is an option that requires an argument.  */
+        if (*nextchar != '\0')
+          {
+            optarg = nextchar;
+            /* If we end this ARGV-element by taking the rest as an arg,
+               we must advance to the next element now.  */
+            optind++;
+          }
+        else if (optind == argc)
+          {
+            if (print_errors)
+              {
+                /* 1003.2 specifies the format of this message.  */
+#if defined _LIBC && defined USE_IN_LIBIO
+                char *buf;
+
+                __asprintf (&buf, _("%s: option requires an argument -- %c\n"),
+                            argv[0], c);
+
+                if (_IO_fwide (stderr, 0) > 0)
+                  __fwprintf (stderr, L"%s", buf);
+                else
+                  fputs (buf, stderr);
+
+                free (buf);
+#else
+                fprintf (stderr, _("%s: option requires an argument -- %c\n"),
+                         argv[0], c);
+#endif
+              }
+            optopt = c;
+            if (optstring[0] == ':')
+              c = ':';
+            else
+              c = '?';
+            return c;
+          }
+        else
+          /* We already incremented `optind' once;
+             increment it again when taking next ARGV-elt as argument.  */
+          optarg = argv[optind++];
+
+        /* optarg is now the argument, see if it's in the
+           table of longopts.  */
+
+        for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++)
+          /* Do nothing.  */ ;
+
+        /* Test all long options for either exact match
+           or abbreviated matches.  */
+        for (p = longopts, option_index = 0; p->name; p++, option_index++)
+          if (!strncmp (p->name, nextchar, nameend - nextchar))
+            {
+              if ((unsigned int) (nameend - nextchar) == strlen (p->name))
+                {
+                  /* Exact match found.  */
+                  pfound = p;
+                  indfound = option_index;
+                  exact = 1;
+                  break;
+                }
+              else if (pfound == NULL)
+                {
+                  /* First nonexact match found.  */
+                  pfound = p;
+                  indfound = option_index;
+                }
+              else
+                /* Second or later nonexact match found.  */
+                ambig = 1;
+            }
+        if (ambig && !exact)
+          {
+            if (print_errors)
+              {
+#if defined _LIBC && defined USE_IN_LIBIO
+                char *buf;
+
+                __asprintf (&buf, _("%s: option `-W %s' is ambiguous\n"),
+                            argv[0], argv[optind]);
+
+                if (_IO_fwide (stderr, 0) > 0)
+                  __fwprintf (stderr, L"%s", buf);
+                else
+                  fputs (buf, stderr);
+
+                free (buf);
+#else
+                fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
+                         argv[0], argv[optind]);
+#endif
+              }
+            nextchar += strlen (nextchar);
+            optind++;
+            return '?';
+          }
+        if (pfound != NULL)
+          {
+            option_index = indfound;
+            if (*nameend)
+              {
+                /* Don't test has_arg with >, because some C compilers don't
+                   allow it to be used on enums.  */
+                if (pfound->has_arg)
+                  optarg = nameend + 1;
+                else
+                  {
+                    if (print_errors)
+                      {
+#if defined _LIBC && defined USE_IN_LIBIO
+                        char *buf;
+
+                        __asprintf (&buf, _("\
+%s: option `-W %s' doesn't allow an argument\n"),
+                                    argv[0], pfound->name);
+
+                        if (_IO_fwide (stderr, 0) > 0)
+                          __fwprintf (stderr, L"%s", buf);
+                        else
+                          fputs (buf, stderr);
+
+                        free (buf);
+#else
+                        fprintf (stderr, _("\
+%s: option `-W %s' doesn't allow an argument\n"),
+                                 argv[0], pfound->name);
+#endif
+                      }
+
+                    nextchar += strlen (nextchar);
+                    return '?';
+                  }
+              }
+            else if (pfound->has_arg == 1)
+              {
+                if (optind < argc)
+                  optarg = argv[optind++];
+                else
+                  {
+                    if (print_errors)
+                      {
+#if defined _LIBC && defined USE_IN_LIBIO
+                        char *buf;
+
+                        __asprintf (&buf, _("\
+%s: option `%s' requires an argument\n"),
+                                    argv[0], argv[optind - 1]);
+
+                        if (_IO_fwide (stderr, 0) > 0)
+                          __fwprintf (stderr, L"%s", buf);
+                        else
+                          fputs (buf, stderr);
+
+                        free (buf);
+#else
+                        fprintf (stderr,
+                                 _("%s: option `%s' requires an argument\n"),
+                                 argv[0], argv[optind - 1]);
+#endif
+                      }
+                    nextchar += strlen (nextchar);
+                    return optstring[0] == ':' ? ':' : '?';
+                  }
+              }
+            nextchar += strlen (nextchar);
+            if (longind != NULL)
+              *longind = option_index;
+            if (pfound->flag)
+              {
+                *(pfound->flag) = pfound->val;
+                return 0;
+              }
+            return pfound->val;
+          }
+          nextchar = NULL;
+          return 'W';   /* Let the application handle it.   */
+      }
+    if (temp[1] == ':')
+      {
+        if (temp[2] == ':')
+          {
+            /* This is an option that accepts an argument optionally.  */
+            if (*nextchar != '\0')
+              {
+                optarg = nextchar;
+                optind++;
+              }
+            else
+              optarg = NULL;
+            nextchar = NULL;
+          }
+        else
+          {
+            /* This is an option that requires an argument.  */
+            if (*nextchar != '\0')
+              {
+                optarg = nextchar;
+                /* If we end this ARGV-element by taking the rest as an arg,
+                   we must advance to the next element now.  */
+                optind++;
+              }
+            else if (optind == argc)
+              {
+                if (print_errors)
+                  {
+                    /* 1003.2 specifies the format of this message.  */
+#if defined _LIBC && defined USE_IN_LIBIO
+                    char *buf;
+
+                    __asprintf (&buf,
+                                _("%s: option requires an argument -- %c\n"),
+                                argv[0], c);
+
+                    if (_IO_fwide (stderr, 0) > 0)
+                      __fwprintf (stderr, L"%s", buf);
+                    else
+                      fputs (buf, stderr);
+
+                    free (buf);
+#else
+                    fprintf (stderr,
+                             _("%s: option requires an argument -- %c\n"),
+                             argv[0], c);
+#endif
+                  }
+                optopt = c;
+                if (optstring[0] == ':')
+                  c = ':';
+                else
+                  c = '?';
+              }
+            else
+              /* We already incremented `optind' once;
+                 increment it again when taking next ARGV-elt as argument.  */
+              optarg = argv[optind++];
+            nextchar = NULL;
+          }
+      }
+    return c;
+  }
+}
+
+int
+getopt (argc, argv, optstring)
+     int argc;
+     char *const *argv;
+     const char *optstring;
+{
+  return _getopt_internal (argc, argv, optstring,
+                           (const struct option *) 0,
+                           (int *) 0,
+                           0);
+}
+
+#endif  /* Not ELIDE_CODE.  */
+
+
+/* Compile with -DTEST to make an executable for use in testing
+   the above definition of `getopt'.  */
+
+/* #define TEST */        /* Pete Wilson mod 7/28/02 */
+#ifdef TEST
+
+#ifndef exit         /* Pete Wilson mod 7/28/02 */
+  int exit(int);     /* Pete Wilson mod 7/28/02 */
+#endif               /* Pete Wilson mod 7/28/02 */
+
+int
+main (argc, argv)
+     int argc;
+     char **argv;
+{
+  int c;
+  int digit_optind = 0;
+
+  while (1)
+    {
+      int this_option_optind = optind ? optind : 1;
+
+      c = getopt (argc, argv, "abc:d:0123456789");
+      if (c == -1)
+        break;
+
+      switch (c)
+        {
+        case '0':
+        case '1':
+        case '2':
+        case '3':
+        case '4':
+        case '5':
+        case '6':
+        case '7':
+        case '8':
+        case '9':
+          if (digit_optind != 0 && digit_optind != this_option_optind)
+            printf ("digits occur in two different argv-elements.\n");
+          digit_optind = this_option_optind;
+          printf ("option %c\n", c);
+          break;
+
+        case 'a':
+          printf ("option a\n");
+          break;
+
+        case 'b':
+          printf ("option b\n");
+          break;
+
+        case 'c':
+          printf ("option c with value `%s'\n", optarg);
+          break;
+
+        case '?':
+          break;
+
+        default:
+          printf ("?? getopt returned character code 0%o ??\n", c);
+        }
+    }
+
+  if (optind < argc)
+    {
+      printf ("non-option ARGV-elements: ");
+      while (optind < argc)
+        printf ("%s ", argv[optind++]);
+      printf ("\n");
+    }
+
+  exit (0);
+}
+
+#endif /* TEST */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Slave_Gui/getopt.h	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,191 @@
+/* from http://www.pwilson.net/getopt.html */
+
+/* getopt.h */
+/* Declarations for getopt.
+   Copyright (C) 1989-1994, 1996-1999, 2001 Free Software 
+   Foundation, Inc. This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute 
+   it and/or modify it under the terms of the GNU Lesser 
+   General Public License as published by the Free Software 
+   Foundation; either version 2.1 of the License, or 
+   (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will 
+   be useful, but WITHOUT ANY WARRANTY; without even the 
+   implied warranty of MERCHANTABILITY or FITNESS FOR A 
+   PARTICULAR PURPOSE.  See the GNU Lesser General Public 
+   License for more details.
+
+   You should have received a copy of the GNU Lesser General 
+   Public License along with the GNU C Library; if not, write 
+   to the Free Software Foundation, Inc., 59 Temple Place,
+   Suite 330, Boston, MA 02111-1307 USA.  */
+
+  
+
+  
+
+#ifndef _GETOPT_H
+
+#ifndef __need_getopt
+# define _GETOPT_H 1
+#endif
+
+/* If __GNU_LIBRARY__ is not already defined, either we are being used
+   standalone, or this is the first header included in the source file.
+   If we are being used with glibc, we need to include <features.h>, but
+   that does not exist if we are standalone.  So: if __GNU_LIBRARY__ is
+   not defined, include <ctype.h>, which will pull in <features.h> for us
+   if it's from glibc.  (Why ctype.h?  It's guaranteed to exist and it
+   doesn't flood the namespace with stuff the way some other headers do.)  */
+#if !defined __GNU_LIBRARY__
+# include <ctype.h>
+#endif
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+/* For communication from `getopt' to the caller.
+   When `getopt' finds an option that takes an argument,
+   the argument value is returned here.
+   Also, when `ordering' is RETURN_IN_ORDER,
+   each non-option ARGV-element is returned here.  */
+
+extern char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+   This is used for communication to and from the caller
+   and for communication between successive calls to `getopt'.
+
+   On entry to `getopt', zero means this is the first call; initialize.
+
+   When `getopt' returns -1, this is the index of the first of the
+   non-option elements that the caller should itself scan.
+
+   Otherwise, `optind' communicates from one call to the next
+   how much of ARGV has been scanned so far.  */
+
+extern int optind;
+
+/* Callers store zero here to inhibit the error message `getopt' prints
+   for unrecognized options.  */
+
+extern int opterr;
+
+/* Set to an option character which was unrecognized.  */
+
+extern int optopt;
+
+#ifndef __need_getopt
+/* Describe the long-named options requested by the application.
+   The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
+   of `struct option' terminated by an element containing a name which is
+   zero.
+
+   The field `has_arg' is:
+   no_argument          (or 0) if the option does not take an argument,
+   required_argument    (or 1) if the option requires an argument,
+   optional_argument    (or 2) if the option takes an optional argument.
+
+   If the field `flag' is not NULL, it points to a variable that is set
+   to the value given in the field `val' when the option is found, but
+   left unchanged if the option is not found.
+
+   To have a long-named option do something other than set an `int' to
+   a compiled-in constant, such as set a value from `optarg', set the
+   option's `flag' field to zero and its `val' field to a nonzero
+   value (the equivalent single-letter option character, if there is
+   one).  For long options that have a zero `flag' field, `getopt'
+   returns the contents of the `val' field.  */
+
+struct option
+{
+# if (defined __STDC__ && __STDC__) || defined __cplusplus
+  const char *name;
+# else
+  char *name;
+# endif
+  /* has_arg can't be an enum because some compilers complain about
+     type mismatches in all the code that assumes it is an int.  */
+  int has_arg;
+  int *flag;
+  int val;
+};
+
+/* Names for the values of the `has_arg' field of `struct option'.  */
+
+# define no_argument            0
+# define required_argument      1
+# define optional_argument      2
+#endif  /* need getopt */
+
+
+/* Get definitions and prototypes for functions to process the
+   arguments in ARGV (ARGC of them, minus the program name) for
+   options given in OPTS.
+
+   Return the option character from OPTS just read.  Return -1 when
+   there are no more options.  For unrecognized options, or options
+   missing arguments, `optopt' is set to the option letter, and '?' is
+   returned.
+
+   The OPTS string is a list of characters which are recognized option
+   letters, optionally followed by colons, specifying that that letter
+   takes an argument, to be placed in `optarg'.
+
+   If a letter in OPTS is followed by two colons, its argument is
+   optional.  This behavior is specific to the GNU `getopt'.
+
+   The argument `--' causes premature termination of argument
+   scanning, explicitly telling `getopt' that there are no more
+   options.
+
+   If OPTS begins with `--', then non-option arguments are treated as
+   arguments to the option '\0'.  This behavior is specific to the GNU
+   `getopt'.  */
+
+#if (defined __STDC__ && __STDC__) || defined __cplusplus
+# ifdef __GNU_LIBRARY__
+/* Many other libraries have conflicting prototypes for getopt, with
+   differences in the consts, in stdlib.h.  To avoid compilation
+   errors, only prototype getopt for the GNU C library.  */
+extern int getopt (int ___argc, char *const *___argv, const char *__shortopts);
+# else /* not __GNU_LIBRARY__ */
+extern int getopt ();
+# endif /* __GNU_LIBRARY__ */
+
+# ifndef __need_getopt
+extern int getopt_long (int ___argc, char *const *___argv,
+                        const char *__shortopts,
+                        const struct option *__longopts, int *__longind);
+extern int getopt_long_only (int ___argc, char *const *___argv,
+                             const char *__shortopts,
+                             const struct option *__longopts, int *__longind);
+
+/* Internal only.  Users should not call this directly.  */
+extern int _getopt_internal (int ___argc, char *const *___argv,
+                             const char *__shortopts,
+                             const struct option *__longopts, int *__longind,
+                             int __long_only);
+# endif
+#else /* not __STDC__ */
+extern int getopt ();
+# ifndef __need_getopt
+extern int getopt_long ();
+extern int getopt_long_only ();
+
+extern int _getopt_internal ();
+# endif
+#endif /* __STDC__ */
+
+#ifdef  __cplusplus
+}
+#endif
+
+/* Make sure we later can get all the definitions and declarations.  */
+#undef __need_getopt
+
+#endif /* getopt.h */
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Slave_Gui/main.cpp	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,777 @@
+#include <wx/wxprec.h>
+#include <wx/wx.h>
+#include <wx/textctrl.h>
+#include <wx/spinctrl.h>
+#include <wx/tglbtn.h>
+#include <wx/slider.h>
+#include <iostream>
+#include <wx/brush.h>
+#include <sstream>
+#include <wx/listbox.h>
+#include <wx/dynarray.h>
+#include <wx/dcclient.h>
+#include <wx/gauge.h>
+#include <wx/spinctrl.h>
+
+#include "monicone.xpm"
+
+#include "main.h"
+#include "tools.h"
+#include "TestSlaveGui.h"
+extern "C" {
+	#include "canfestival.h"
+	#include "ObjDict.h"
+}
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+    #include "wx/wx.h"
+#endif
+
+
+wxTextCtrl		*textLog;
+int				node_id_ext;
+MyFrame 		*frame; 
+s_BOARD			SlaveBoard = {NULL, NULL};
+char* 			LibraryPath = NULL;
+double			Gtime = 0;
+double			y[28][45];
+double			hdelta = 0;
+double			old_max = 5;
+double			old_min = -5;
+
+// Declare some IDs. These are arbitrary.
+const int BOOKCTRL = 100;
+const int FILE_QUIT = wxID_EXIT;
+const int HELP_ABOUT = wxID_ABOUT;
+const int ADD = 105;
+const int REMOVE = 108;
+const int QUIT = 109;
+const int FREQBOX = 110;
+const int START = 112;
+const int TEXTBOX1 = 113;
+const int STOP = 114;
+const int LOAD = 115;
+const int INBT1 = 118;
+const int INBT2 = 119;
+const int INBT3 = 120;
+const int INBT4 = 121;
+const int INBT5 = 122;
+const int INBT6 = 123;
+const int INBT7 = 124;
+const int INBT8 = 125;
+const int INS1 = 126;
+const int INS2 = 127;
+const int INS3 = 128;
+const int INS4 = 129;
+const int INS5 = 135;
+const int INS6 = 136;
+const int INS7 = 137;
+const int INS8 = 138;
+const int TIMER_ID = 130;
+const int INST1 = 131;
+const int INST2 = 132;
+const int INST3 = 133;
+const int INST4 = 134;
+const int INST5 = 135;
+const int INST6 = 136;
+const int INST7 = 137;
+const int INST8 = 138;
+
+// Attach the event handlers. Put this after MyFrame declaration.
+BEGIN_EVENT_TABLE(MyFrame, wxFrame)
+ EVT_BUTTON(STOP, MyFrame::OnStop)
+ EVT_BUTTON(LOAD, MyFrame::OnLoad)
+ EVT_BUTTON(START, MyFrame::OnStart)
+ EVT_TOGGLEBUTTON(INBT1, MyFrame::OnInbt1)
+ EVT_TOGGLEBUTTON(INBT2, MyFrame::OnInbt2)
+ EVT_TOGGLEBUTTON(INBT3, MyFrame::OnInbt3)
+ EVT_TOGGLEBUTTON(INBT4, MyFrame::OnInbt4)
+ EVT_TOGGLEBUTTON(INBT5, MyFrame::OnInbt5)
+ EVT_TOGGLEBUTTON(INBT6, MyFrame::OnInbt6)
+ EVT_TOGGLEBUTTON(INBT7, MyFrame::OnInbt7)
+ EVT_TOGGLEBUTTON(INBT8, MyFrame::OnInbt8)
+ EVT_COMMAND_SCROLL(INS1, MyFrame::OnIns1)
+ EVT_COMMAND_SCROLL(INS2, MyFrame::OnIns2)
+ EVT_COMMAND_SCROLL(INS3, MyFrame::OnIns3)
+ EVT_COMMAND_SCROLL(INS4, MyFrame::OnIns4)
+ EVT_COMMAND_SCROLL(INS5, MyFrame::OnIns5)
+ EVT_COMMAND_SCROLL(INS6, MyFrame::OnIns6)
+ EVT_COMMAND_SCROLL(INS7, MyFrame::OnIns7)
+ EVT_COMMAND_SCROLL(INS8, MyFrame::OnIns8)
+ EVT_SPINCTRL(INST1, MyFrame::OnInst1)
+ EVT_SPINCTRL(INST2, MyFrame::OnInst2)
+ EVT_SPINCTRL(INST3, MyFrame::OnInst3)
+ EVT_SPINCTRL(INST4, MyFrame::OnInst4)
+ EVT_SPINCTRL(INST5, MyFrame::OnInst5)
+ EVT_SPINCTRL(INST6, MyFrame::OnInst6)
+ EVT_SPINCTRL(INST7, MyFrame::OnInst7)
+ EVT_SPINCTRL(INST8, MyFrame::OnInst8)
+ 
+ EVT_LISTBOX(FREQBOX, MyFrame::OnFreqBoxClick)
+ EVT_MENU(FILE_QUIT, MyFrame::OnQuit)
+ EVT_BUTTON(QUIT, MyFrame::OnQuit)
+ EVT_MENU(HELP_ABOUT, MyFrame::OnAbout)
+ EVT_PAINT(MyFrame::OnPaint)
+ 
+ EVT_TIMER(TIMER_ID, MyFrame::OnTimer)
+END_EVENT_TABLE()
+
+IMPLEMENT_APP(MyApp)
+
+bool MyApp::OnInit()
+{
+ 	frame = new MyFrame( _T("I-O simulator"));
+ 	frame->Show(true);
+ return true;
+}
+
+MyFrame::MyFrame(const wxString& title)
+  : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(800, 740), wxDEFAULT_FRAME_STYLE, wxT("frame"))
+  ,m_timer(this, TIMER_ID)
+{
+ wxMenu			*fileMenu = new wxMenu;
+ wxMenu			*helpMenu = new wxMenu;
+ wxPanel		*panel;
+ wxButton		*quit;
+ wxButton		*load;
+ wxBoxSizer		*mysizer;
+ wxBoxSizer		*mysssizer;
+ wxBoxSizer		*myhsizer;
+ wxBoxSizer		*mybsizer;
+ wxBoxSizer		*myentrysizer;
+ wxListBox		*freqlist;
+ wxStaticBox	*namebox;
+ wxStaticBox	*freqbox;
+
+ SetIcon(wxICON(monicone));
+ SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE));
+ helpMenu->Append(HELP_ABOUT, _T("&About...\tF1"),
+ _T("Show about dialog"));
+ fileMenu->Append(FILE_QUIT, _T("E&xit\tAlt-X"),
+ _T("Quit this program"));
+ wxMenuBar *menuBar = new wxMenuBar();
+ menuBar->Append(fileMenu, _T("&File"));
+ menuBar->Append(helpMenu, _T("&Help"));
+ SetMenuBar(menuBar);
+ CreateStatusBar(2);
+ SetStatusText(_T("Lolitech."), 0);
+ SetStatusText(_T("Welcome."), 1);
+
+ book = new wxNotebook(this, BOOKCTRL);
+  
+ panel = new wxPanel(book);
+ book->AddPage(panel, _T("Configuration"), true);
+ mysizer = new wxBoxSizer( wxVERTICAL );
+ panel->SetSizer(mysizer);
+ wxString choices[] =
+ {
+  _T("10K"), _T("20K"), _T("50K"), _T("100K"), 
+  _T("125K"), _T("250K"), _T("500K"), _T("1M")
+ };
+ 
+ myhsizer = new wxStaticBoxSizer( new wxStaticBox(panel, wxID_ANY, _T("Bus driver")), wxHORIZONTAL );
+ mysizer->Add(myhsizer, 0, wxEXPAND | wxALL, 5);
+ load = new wxButton( panel, LOAD, _T("Load can driver"));
+ myhsizer->Add(load, 0, wxLEFT, 5);
+ drivername = new wxTextCtrl(panel, wxID_ANY, _T("No driver loaded!!"));
+ myhsizer->Add(drivername, 1, wxEXPAND | wxALL, 5);
+ myentrysizer = new wxBoxSizer( wxHORIZONTAL );
+ mysizer->Add(myentrysizer, 0, wxEXPAND | wxALL, 5);
+ myhsizer = new wxStaticBoxSizer( new wxStaticBox(panel, wxID_ANY, _T("Bus name")), wxHORIZONTAL );
+ myentrysizer->Add(myhsizer, 0, wxEXPAND | wxALL, 5);
+ busname = new wxTextCtrl(panel, wxID_ANY, _T("0"));
+ myhsizer->Add(busname, 0, wxLEFT, 5);
+ myhsizer = new wxStaticBoxSizer( new wxStaticBox(panel, wxID_ANY, _T("Node ID (Hexa)")), wxHORIZONTAL );
+ myentrysizer->Add(myhsizer, 0, wxEXPAND | wxALL, 5);
+ node_id = new wxSpinCtrl(panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 1, 127, 1, _T("wxSpinCtrl"));
+ myhsizer->Add(node_id, 0, wxRIGHT, 5);
+ myhsizer = new wxStaticBoxSizer( new wxStaticBox(panel, wxID_ANY, _T("Baudrate")), wxHORIZONTAL );
+ mysizer->Add(myhsizer, wxEXPAND | wxALL, wxEXPAND | wxALL, 5);
+ freqlist = new wxListBox( panel, FREQBOX, wxDefaultPosition, wxDefaultSize, 8, choices, wxLB_SINGLE | wxLB_HSCROLL);
+ myhsizer->Add(freqlist, wxEXPAND | wxALL, wxEXPAND | wxALL, 5);
+ quit = new wxButton( panel, QUIT, _T("QUIT"));
+ mysizer->Add(quit, 0, wxALL, 5);
+ 
+ 
+ panel = new wxPanel(book);
+ book->AddPage(panel, wxT("Inputs"), true);
+ mysizer = new wxBoxSizer( wxVERTICAL );
+ panel->SetSizer(mysizer);
+ myhsizer = new wxStaticBoxSizer( new wxStaticBox(panel, wxID_ANY, _T("Read Inputs UNSIGNED8")), wxHORIZONTAL );
+ mysizer->Add(myhsizer, 0, wxEXPAND | wxALL, 30);
+ inbt1 = new wxToggleButton(panel, INBT1, wxT("1"));
+ inbt2 = new wxToggleButton(panel, INBT2, wxT("2"));
+ inbt3 = new wxToggleButton(panel, INBT3, wxT("3"));
+ inbt4 = new wxToggleButton(panel, INBT4, wxT("4"));
+ inbt5 = new wxToggleButton(panel, INBT5, wxT("5"));
+ inbt6 = new wxToggleButton(panel, INBT6, wxT("6"));
+ inbt7 = new wxToggleButton(panel, INBT7, wxT("7"));
+ inbt8 = new wxToggleButton(panel, INBT8, wxT("8"));
+ myhsizer->Add(inbt1, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add(inbt2, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add(inbt3, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add(inbt4, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add(inbt5, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add(inbt6, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add(inbt7, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add(inbt8, wxEXPAND | wxALL, 0, 5);
+ myhsizer = new wxStaticBoxSizer( new wxStaticBox(panel, wxID_ANY, _T("Analogue Inputs INTEGER16")), wxVERTICAL );
+ mysizer->Add(myhsizer, wxEXPAND | wxALL, wxEXPAND | wxALL, 30);
+ mysssizer = new wxBoxSizer( wxHORIZONTAL );
+ myhsizer->Add(mysssizer, 0, wxEXPAND | wxALL, 0); 
+ inst1 = new wxSpinCtrl(panel, INST1, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -32768, 32767, 0, _T("0"));
+ inst2 = new wxSpinCtrl(panel, INST2, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -32768, 32767, 0, _T("0"));
+ inst3 = new wxSpinCtrl(panel, INST3, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -32768, 32767, 0, _T("0"));
+ inst4 = new wxSpinCtrl(panel, INST4, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -32768, 32767, 0, _T("0"));
+ inst5 = new wxSpinCtrl(panel, INST5, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -32768, 32767, 0, _T("0"));
+ inst6 = new wxSpinCtrl(panel, INST6, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -32768, 32767, 0, _T("0"));
+ inst7 = new wxSpinCtrl(panel, INST7, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -32768, 32767, 0, _T("0"));
+ inst8 = new wxSpinCtrl(panel, INST8, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -32768, 32767, 0, _T("0"));
+ mysssizer->Add(inst1, wxALL, 0, 5);
+ mysssizer->Add(inst2, wxALL, 0, 5);
+ mysssizer->Add(inst3, wxALL, 0, 5);
+ mysssizer->Add(inst4, wxALL, 0, 5);
+ mysssizer->Add(inst5, wxALL, 0, 5);
+ mysssizer->Add(inst6, wxALL, 0, 5);
+ mysssizer->Add(inst7, wxALL, 0, 5);
+ mysssizer->Add(inst8, wxALL, 0, 5);
+ mysssizer = new wxBoxSizer( wxHORIZONTAL );
+ myhsizer->Add(mysssizer, wxEXPAND | wxALL, wxEXPAND | wxALL, 0);
+ ins1 = new wxSlider(panel, INS1, 0, -32768, 32767, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator, wxT("slider"));
+ ins2 = new wxSlider(panel, INS2, 0, -32768, 32767, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator, wxT("slider"));
+ ins3 = new wxSlider(panel, INS3, 0, -32768, 32767, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator, wxT("slider"));
+ ins4 = new wxSlider(panel, INS4, 0, -32768, 32767, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator, wxT("slider"));
+ ins5 = new wxSlider(panel, INS5, 0, -32768, 32767, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator, wxT("slider"));
+ ins6 = new wxSlider(panel, INS6, 0, -32768, 32767, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator, wxT("slider"));
+ ins7 = new wxSlider(panel, INS7, 0, -32768, 32767, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator, wxT("slider"));
+ ins8 = new wxSlider(panel, INS8, 0, -32768, 32767, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator, wxT("slider"));
+ mysssizer->Add(ins1, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
+ mysssizer->Add(ins2, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
+ mysssizer->Add(ins3, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
+ mysssizer->Add(ins4, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
+ mysssizer->Add(ins5, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
+ mysssizer->Add(ins6, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
+ mysssizer->Add(ins7, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
+ mysssizer->Add(ins8, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
+ quit = new wxButton( panel, QUIT, _T("QUIT"));
+ mysizer->Add(quit, 0, wxALL, 5);
+ 
+ panel = new wxPanel(book);
+ book->AddPage(panel, wxT("Outputs"), true);
+ mysizer = new wxBoxSizer( wxVERTICAL );
+ panel->SetSizer(mysizer);
+ myhsizer = new wxStaticBoxSizer( new wxStaticBox(panel, wxID_ANY, _T("Write Outputs UNSIGNED8")), wxHORIZONTAL );
+ mysizer->Add(myhsizer, 0, wxEXPAND | wxALL, 30);
+ outbt1 = new wxToggleButton(panel, wxID_ANY, wxT("1"));
+ outbt2 = new wxToggleButton(panel, wxID_ANY, wxT("2"));
+ outbt3 = new wxToggleButton(panel, wxID_ANY, wxT("3"));
+ outbt4 = new wxToggleButton(panel, wxID_ANY, wxT("4"));
+ outbt5 = new wxToggleButton(panel, wxID_ANY, wxT("5"));
+ outbt6 = new wxToggleButton(panel, wxID_ANY, wxT("6"));
+ outbt7 = new wxToggleButton(panel, wxID_ANY, wxT("7"));
+ outbt8 = new wxToggleButton(panel, wxID_ANY, wxT("8"));
+ myhsizer->Add(outbt1, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add(outbt2, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add(outbt3, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add(outbt4, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add(outbt5, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add(outbt6, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add(outbt7, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add(outbt8, wxEXPAND | wxALL, 0, 5);
+ myhsizer = new wxStaticBoxSizer( new wxStaticBox(panel, wxID_ANY, _T("Analogue Output INTEGER16")), wxVERTICAL );
+ mysizer->Add(myhsizer, wxEXPAND | wxALL, wxEXPAND | wxALL, 30);
+ mysssizer = new wxBoxSizer( wxHORIZONTAL );
+ myhsizer->Add(mysssizer, 0, wxEXPAND | wxALL, 0);
+ outst1 = new wxStaticText(panel, wxID_ANY, wxT("label"), wxDefaultPosition, wxDefaultSize, 0, wxT("staticText"));
+ outst2 = new wxStaticText(panel, wxID_ANY, wxT("label"), wxDefaultPosition, wxDefaultSize, 0, wxT("staticText"));
+ outst3 = new wxStaticText(panel, wxID_ANY, wxT("label"), wxDefaultPosition, wxDefaultSize, 0, wxT("staticText"));
+ outst4 = new wxStaticText(panel, wxID_ANY, wxT("label"), wxDefaultPosition, wxDefaultSize, 0, wxT("staticText"));
+ mysssizer->Add(outst1, wxEXPAND | wxALL, wxEXPAND | wxALL, 5);
+ mysssizer->Add(outst2, wxEXPAND | wxALL, wxEXPAND | wxALL, 5);
+ mysssizer->Add(outst3, wxEXPAND | wxALL, wxEXPAND | wxALL, 5);
+ mysssizer->Add(outst4, wxEXPAND | wxALL, wxEXPAND | wxALL, 5);
+ mysssizer = new wxBoxSizer( wxHORIZONTAL );
+ myhsizer->Add(mysssizer, wxEXPAND | wxALL, wxEXPAND | wxALL, 0);
+ outs1 = new wxGauge(panel, wxID_ANY, 65535, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator, wxT("gauge"));
+ outs2 = new wxGauge(panel, wxID_ANY, 65535, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator, wxT("gauge"));
+ outs3 = new wxGauge(panel, wxID_ANY, 65535, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator, wxT("gauge"));
+ outs4 = new wxGauge(panel, wxID_ANY, 65535, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator, wxT("gauge"));
+ mysssizer->Add(outs1, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
+ mysssizer->Add(outs2, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
+ mysssizer->Add(outs3, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
+ mysssizer->Add(outs4, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
+ quit = new wxButton( panel, QUIT, _T("QUIT"));
+ mysizer->Add(quit, 0, wxALL, 5); 
+ 
+  wxString choice[] =
+ {
+  _T("Analogue Out 1"), _T("Analogue Out 2"),
+  _T("Analogue Out 3"), _T("Analogue Out 4"),
+  _T("Bool Out 1"), _T("Bool Out 2"), 
+  _T("Bool Out 3"), _T("Bool Out 4"), 
+  _T("Bool Out 5"), _T("Bool Out 6"), 
+  _T("Bool Out 7"), _T("Bool Out 8"), 
+  _T("Analogue Input 1"), _T("Analogue Input 2"),
+  _T("Analogue Input 3"), _T("Analogue Input 4"),
+  _T("Analogue Input 5"), _T("Analogue Input 6"),
+  _T("Analogue Input 7"), _T("Analogue Input 8"),
+  _T("Bool Input 1"), _T("Bool Input 2"), 
+  _T("Bool Input 3"), _T("Bool Input 4"), 
+  _T("Bool Input 5"), _T("Bool Input 6"), 
+  _T("Bool Input 7"), _T("Bool Input 8"), };
+ panel = new wxPanel(book); 
+ book->AddPage(panel, wxT("Graphic"), true); 
+ mysizer = new wxBoxSizer( wxVERTICAL ); 
+ panel->SetSizer(mysizer); 
+ myhsizer = new wxStaticBoxSizer( new wxStaticBox(panel, wxID_ANY, _T("Graphic")), wxVERTICAL ); 
+ mysizer->Add(myhsizer, 0, wxEXPAND | wxALL, 10); 
+ mygraphpan = new wxPanel(panel, wxID_ANY, wxDefaultPosition, wxSize(0, 350), wxTAB_TRAVERSAL, wxT("Graphic")); 
+ myhsizer->Add(mygraphpan, wxEXPAND | wxALL, wxEXPAND | wxALL, 15); 
+ echelle = new wxSlider(panel, wxID_ANY, 44, 44, 1000, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL , wxDefaultValidator, wxT("slider")); 
+ myhsizer->Add(echelle, 0, wxEXPAND | wxALL, 0); 
+ mybsizer = new wxBoxSizer( wxHORIZONTAL ); 
+ mysizer->Add(mybsizer, wxEXPAND | wxALL, wxEXPAND | wxALL, 5); 
+ myhsizer = new wxStaticBoxSizer( new wxStaticBox(panel, wxID_ANY, _T("Select viewable Inputs")), wxHORIZONTAL ); 
+ mybsizer->Add(myhsizer, wxEXPAND | wxALL, wxEXPAND | wxALL, 10); 
+ inlist = new wxListBox( panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, 28, choice, wxLB_EXTENDED | wxLB_HSCROLL); 
+ myhsizer->Add(inlist, wxEXPAND | wxALL, wxEXPAND | wxALL, 5); 
+ myhsizer = new wxStaticBoxSizer( new wxStaticBox(panel, wxID_ANY, _T("Legende")), wxHORIZONTAL ); 
+ mybsizer->Add(myhsizer, wxEXPAND | wxALL, wxEXPAND | wxALL, 10); 
+ mylegpan = new wxPanel(panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, wxT("Legende")); 
+ myhsizer->Add(mylegpan, wxEXPAND | wxALL, wxEXPAND | wxALL, 15); 
+ quit = new wxButton( panel, QUIT, _T("QUIT")); 
+ mysizer->Add(quit, 0, wxALL, 5);
+ 
+ panel = new wxPanel(book);
+ book->InsertPage(0, panel, wxT("Control"), true);
+ mysizer = new wxBoxSizer( wxVERTICAL );
+ panel->SetSizer(mysizer);
+ myhsizer = new wxBoxSizer( wxHORIZONTAL );
+ myhsizer = new wxStaticBoxSizer( new wxStaticBox(panel, wxID_ANY, _T("Control your node")), wxHORIZONTAL );
+ mysizer->Add(myhsizer, 0, wxALL, 5);
+ start = new wxButton( panel, START, _T("START")); 
+ stop = new wxButton( panel, STOP, _T("STOP")); 
+ stop->Enable(false);
+ myhsizer->Add(start, 0, wxRIGHT, 5);
+ myhsizer->Add(stop, 0, wxLEFT, 5);
+ myhsizer = new wxStaticBoxSizer( new wxStaticBox(panel, wxID_ANY, _T("Operation log")), wxHORIZONTAL );
+ mysizer->Add(myhsizer, wxALL, wxEXPAND | wxALL, 5);
+ textLog = new wxTextCtrl( panel, TEXTBOX1, _T(""), wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE, wxDefaultValidator, wxTextCtrlNameStr);
+ myhsizer->Add(textLog, wxALL, wxEXPAND | wxALL, 5);
+ quit = new wxButton( panel, QUIT, _T("QUIT"));
+ mysizer->Add(quit, 0, wxALL, 5);
+ 
+ for (int i= 0; i < 28; i++)
+	for (int j = 0; j < 44; j++)					
+		y[i][j] = 0;
+ m_timer.Start(100);
+}
+
+void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
+{
+ Close(true);
+}
+
+void MyFrame::OnStart(wxCommandEvent& WXUNUSED(event))
+{	
+ wxString	s;
+	
+ if (LibraryPath == NULL)
+ 	{
+ 		*textLog << wxT("No driver found!! ----------------------------------Initialization [KO]\n");
+ 		return;
+ 	}
+ if (SlaveBoard.baudrate == NULL)
+ 	{
+ 		*textLog << wxT("No baudrate found!! ----------------------------------Initialization [KO]\n");
+ 		return;
+ 	}	
+ 	
+ node_id_ext = node_id->GetValue();
+ s = busname->GetValue();
+ SlaveBoard.busname = wxstr_to_charbuf(s);
+ *textLog << wxT("-- Bus name: ------> ") << s << wxT("\n");
+ *textLog << wxT("-- Node ID: -------> ") << node_id->GetValue() << wxT("\n");
+ 
+ if (main_can(SlaveBoard, LibraryPath))
+  {
+ 	printf("[KO]\n");
+ 	*textLog << wxT("----------------------------------------------------Initialization [KO]\n");
+  }
+ else
+  {
+ 	printf("[OK]\n");
+ 	*textLog << wxT("----------------------------------------------------Initialization [OK]\n");
+ 	stop->Enable(true);
+ 	start->Enable(false);
+  }
+}
+
+void MyFrame::OnStop(wxCommandEvent& WXUNUSED(event))
+{
+	
+ 	*textLog << wxT("----------------------------------------------------Slave [STOPPED]") << wxT("\n");
+	stop_slave();
+	stop->Enable(false);
+	start->Enable(true);
+	charbuf_free(SlaveBoard.busname);
+}
+
+void MyFrame::OnLoad(wxCommandEvent& WXUNUSED(event))
+{
+    wxFileDialog fd(this, wxT("Choose a node configuration file"), wxT(""), wxT("Slave.od"), wxT("*.so"));
+
+    if(fd.ShowModal() == wxID_OK)
+    {
+    	drivername->Clear();
+        drivername->AppendText(fd.GetPath()); 
+        *textLog << wxT("LibraryPath: ") << fd.GetPath() << wxT("\n");
+        if (LibraryPath != NULL)
+        	charbuf_free(LibraryPath);
+        LibraryPath = wxstr_to_charbuf(fd.GetPath());
+        printf("path=%s",LibraryPath);
+    }
+}
+
+void MyFrame::OnInbt1(wxCommandEvent& WXUNUSED(event))
+{	
+ Read_Inputs_8_Bit[0] = Read_Inputs_8_Bit[0] ^ 0x1;
+}
+void MyFrame::OnInbt2(wxCommandEvent& WXUNUSED(event))
+{	
+ Read_Inputs_8_Bit[0] = Read_Inputs_8_Bit[0] ^ 0x2;
+}
+void MyFrame::OnInbt3(wxCommandEvent& WXUNUSED(event))
+{	
+ Read_Inputs_8_Bit[0] = Read_Inputs_8_Bit[0] ^ 0x4;
+}
+void MyFrame::OnInbt4(wxCommandEvent& WXUNUSED(event))
+{	
+ Read_Inputs_8_Bit[0] = Read_Inputs_8_Bit[0] ^ 0x8;
+}
+void MyFrame::OnInbt5(wxCommandEvent& WXUNUSED(event))
+{	
+ Read_Inputs_8_Bit[0] = Read_Inputs_8_Bit[0] ^ 0x10;
+}
+void MyFrame::OnInbt6(wxCommandEvent& WXUNUSED(event))
+{	
+ Read_Inputs_8_Bit[0] = Read_Inputs_8_Bit[0] ^ 0x20;
+}
+void MyFrame::OnInbt7(wxCommandEvent& WXUNUSED(event))
+{	
+ Read_Inputs_8_Bit[0] = Read_Inputs_8_Bit[0] ^ 0x40;
+}
+void MyFrame::OnInbt8(wxCommandEvent& WXUNUSED(event))
+{	
+ Read_Inputs_8_Bit[0] = Read_Inputs_8_Bit[0] ^ 0x80;
+}
+
+
+
+void MyFrame::OnIns1(wxScrollEvent &event)
+{
+	Read_Analogue_Input_16_Bit[0] = ins1->GetValue();
+	inst1->SetValue(ins1->GetValue());
+}
+void MyFrame::OnIns2(wxScrollEvent &event)
+{
+	Read_Analogue_Input_16_Bit[1] = ins2->GetValue();
+	inst2->SetValue(ins2->GetValue());
+}
+void MyFrame::OnIns3(wxScrollEvent &event)
+{
+	Read_Analogue_Input_16_Bit[2] = ins3->GetValue();
+	inst3->SetValue(ins3->GetValue());
+}
+void MyFrame::OnIns4(wxScrollEvent &event)
+{
+	Read_Analogue_Input_16_Bit[3] = ins4->GetValue();
+	inst4->SetValue(ins4->GetValue());
+}
+void MyFrame::OnIns5(wxScrollEvent &event)
+{
+	Read_Analogue_Input_16_Bit[4] = ins5->GetValue();
+	inst5->SetValue(ins5->GetValue());
+}
+void MyFrame::OnIns6(wxScrollEvent &event)
+{
+	Read_Analogue_Input_16_Bit[5] = ins6->GetValue();
+	inst6->SetValue(ins6->GetValue());
+}
+void MyFrame::OnIns7(wxScrollEvent &event)
+{
+	Read_Analogue_Input_16_Bit[6] = ins7->GetValue();
+	inst7->SetValue(ins7->GetValue());
+}
+void MyFrame::OnIns8(wxScrollEvent &event)
+{
+	Read_Analogue_Input_16_Bit[7] = ins8->GetValue();
+	inst8->SetValue(ins8->GetValue());
+}
+
+
+void MyFrame::OnInst1 ( wxSpinEvent &ev )
+{
+	Read_Analogue_Input_16_Bit[0] = inst1->GetValue();
+	ins1->SetValue(inst1->GetValue());	
+}
+void MyFrame::OnInst2 ( wxSpinEvent &ev )
+{
+	Read_Analogue_Input_16_Bit[1] = inst2->GetValue();
+	ins2->SetValue(inst2->GetValue());	
+}
+void MyFrame::OnInst3 ( wxSpinEvent &ev )
+{
+	Read_Analogue_Input_16_Bit[2] = inst3->GetValue();
+	ins3->SetValue(inst3->GetValue());	
+}
+void MyFrame::OnInst4 ( wxSpinEvent &ev )
+{
+	Read_Analogue_Input_16_Bit[3] = inst4->GetValue();
+	ins4->SetValue(inst4->GetValue());	
+}
+void MyFrame::OnInst5 ( wxSpinEvent &ev )
+{
+	Read_Analogue_Input_16_Bit[4] = inst5->GetValue();
+	ins5->SetValue(inst5->GetValue());	
+}
+void MyFrame::OnInst6 ( wxSpinEvent &ev )
+{
+	Read_Analogue_Input_16_Bit[5] = inst6->GetValue();
+	ins6->SetValue(inst6->GetValue());	
+}
+void MyFrame::OnInst7 ( wxSpinEvent &ev )
+{
+	Read_Analogue_Input_16_Bit[6] = inst7->GetValue();
+	ins7->SetValue(inst7->GetValue());	
+}
+void MyFrame::OnInst8 ( wxSpinEvent &ev )
+{
+	Read_Analogue_Input_16_Bit[7] = inst8->GetValue();
+	ins8->SetValue(inst8->GetValue());	
+}
+
+
+void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
+{
+ wxString msg;
+ msg.Printf( _T("About.\n\n")
+    _T("Input-Output simulation by GRANDEMANGE Nicolas for CanFestival!!"));
+
+ wxMessageBox(msg, _T("About !!!"), wxOK | wxICON_INFORMATION, this);
+}
+
+
+void MyFrame::OnFreqBoxClick( wxCommandEvent &event )
+{
+	wxString	wxstr;
+	
+ 	wxstr = event.GetString();
+ 	if (SlaveBoard.baudrate != NULL)
+ 		charbuf_free(SlaveBoard.baudrate);
+ 	SlaveBoard.baudrate = wxstr_to_charbuf(wxstr);
+ 	*textLog << wxT("Baudrate:") << event.GetString() << wxT("\n");
+}
+
+static int	is_set(int			i,
+					wxListBox	*inlist,
+					wxArrayInt	in)
+{
+	inlist->GetSelections(in);
+	for (int j = 0; j < in.GetCount(); j++)
+		{
+			if (i == (in[j] + 1))
+			{
+				return (i);
+			}
+		}
+	return (0);
+}
+
+static int	get_bit(UNS8	input, int bit)
+{
+	if (bit == 1)
+		return ((input & 0x1) ? 1 : 0);
+	if (bit == 2)
+		return ((input & 0x2) ? 1 : 0);
+	if (bit == 3)
+		return ((input & 0x4) ? 1 : 0);
+	if (bit == 4)
+		return ((input & 0x8) ? 1 : 0);
+	if (bit == 5)
+		return ((input & 0x10) ? 1 : 0);
+	if (bit == 6)
+		return ((input & 0x20) ? 1 : 0);
+	if (bit == 7)
+		return ((input & 0x40) ? 1 : 0);
+	if (bit == 8)
+		return ((input & 0x80) ? 1 : 0);
+	return 0;
+}
+
+void MyFrame::Paint()
+{
+	double		vmax = old_max;
+	double		vmin = old_min;
+	double		vdelta = vmax - vmin;
+	double		vech = ((float)vdelta) / 10.0;
+	
+	double		hmax = frame->echelle->GetValue();
+	double		hech = hdelta / 11;
+	
+	double 		d = 300 / vdelta;
+	double		g = 0;
+	double		top = 5;
+	double		left = 50;
+
+	double		tmpi = 0;
+	wxString	tmps;
+	double		p = 0;
+	double		q = 0;
+	int			i = 0;
+	int			j = 0;
+	wxColor		col[8] = {wxColor("BLUE"), wxColor("RED"), wxColor("GREEN"), wxColor("GREY"),
+						wxColor("ORANGE"), wxColor("YELLOW"), wxColor("PINK"), wxColor("BLACK")};
+	hdelta = hmax - 0;
+	g = (Gtime / hdelta) * 44.00;
+						
+	wxClientDC MonDc(mygraphpan);	
+	MonDc.Clear();
+	
+    MonDc.SetPen(wxPen(wxColour(200,200,200), 5, wxSOLID));
+    MonDc.DrawRectangle((int) left, (int)top, 660, 300);
+
+    MonDc.SetPen(wxPen(wxColor(150,200,150), 2, wxSOLID));
+    MonDc.SetFont(wxFont(9, wxSWISS , wxNORMAL, wxNORMAL, false, wxT("Arial Black")));
+    for (i=0; i < 11; i++)    
+    	{
+			tmpi = (vmin + (vech * i));
+			tmps.Printf(wxT("%d"), (int)tmpi);
+    		MonDc.DrawRotatedText(tmps, 0, (int)(293 - (30 * i) + top), 0);
+    	}
+        for (i=0; i < 12; i++)    
+    	{
+    		tmpi = (hech * i * 100);
+    		if (tmpi < 1000)
+				tmps.Printf(wxT("%ims"), (int)tmpi);
+    		if (tmpi > 1000)
+				tmps.Printf(wxT("%is"), (int)(tmpi / 1000));
+    		MonDc.DrawRotatedText(tmps, (int)((60 * i) + left) - 10, (int)(317 + top), 0);
+    	}
+    for (j=1; j < 10; j++)    
+		MonDc.DrawLine((int)left, (int)(300 - (30 * j) + top), (int)(left + 660), (int)(300 - (30 * j) + top));
+    MonDc.SetPen(wxPen(wxColor(150,200,150), 2, wxSOLID));
+    for (j=1; j < 22; j++)    
+    		MonDc.DrawLine((int)(30 * j + left), (int)(300 + top), (int)(30 * j + left), (int)(top));
+	  MonDc.SetPen(wxPen(wxColor(150,170,150), 1, wxSOLID));
+   	for (j=1; j < 22; j++)    
+    	MonDc.DrawLine((int)(30 * j + left - 15), (int)(300 + top), (int)(30 * j + left - 15), (int)(top));
+    MonDc.DrawLine((int)(30 * 22 + left - 15), (int)(300 + top), (int)(30 * 22 + left - 15), (int)(top));
+    
+    double m = (- vmin) * d;
+	MonDc.SetPen(wxPen(wxColor(170,170,150), 3, wxSOLID));
+	MonDc.DrawLine((int)(left), (int)(300 + top - m), (int)(left + 660), (int)(300 + top - m));
+
+	wxClientDC MaLeg(mylegpan);
+	MaLeg.Clear();
+	
+    MaLeg.SetPen(wxPen(wxColour(150,200,100), 2, wxSOLID));
+    MaLeg.SetFont(wxFont(7, wxSWISS , wxNORMAL, wxNORMAL, false, wxT("Arial Black")));
+    for (int	k=1, tmpi = 0; k < 30; k++)  
+    {
+    	if ((tmpi < 8) && is_set(k, inlist, in))
+			{
+				if (k <= 4)
+					tmps.Printf(wxT("Analogue Output %d"), k);
+				if ((k > 4) && (k <= 12))
+					tmps.Printf(wxT("Bool Output %d"), k - 4);
+				if ((k > 12) && (k <= 20))
+					tmps.Printf(wxT("Analogue Input %d"), k - 12);
+				if ((k > 20) && (k <= 28))
+					tmps.Printf(wxT("Bool Input %d"), k - 20);
+				
+				MaLeg.DrawRotatedText(tmps, 0, 10 * tmpi , 0);
+				MaLeg.SetPen(wxPen(col[tmpi], 4, wxSOLID));
+				MaLeg.DrawLine(100, 10 * tmpi + 6, 115, 10 * tmpi + 6);
+	//////////////////////////////////////////DAW////////////////////////////////////////
+				MonDc.SetPen(wxPen(col[tmpi], 4, wxSOLID));
+				if (k <= 4)
+					y[k - 1][(int)g] = Write_Analogue_Output_16_Bit[k - 1];
+				if ((k > 4) && (k <= 12))
+					y[k - 1][(int)g] = get_bit(Write_Outputs_8_Bit[0] ,k - 4);
+				if ((k > 12) && (k <= 20))
+					y[k - 1][(int)g] = Read_Analogue_Input_16_Bit[k - 1 -12];
+				if ((k > 20) && (k <= 28))
+					y[k - 1][(int)g] = get_bit(Read_Inputs_8_Bit[0] ,k - 20);
+					
+				if (y[k - 1][(int)g] > old_max)
+					old_max = y[k - 1][(int)g];
+				if (y[k - 1][(int)g] < old_min)
+					old_min = y[k - 1][(int)g];
+			    for (j=1; j < (g + 1) ; j++)    
+    			{    				
+					p = (y[k - 1][j - 1] - vmin) * d;
+					q = (y[k - 1][j    ] - vmin) * d;
+    				MonDc.DrawLine((int)(15 * (j - 1) + left), (int)(300 + top - p), (int)(15 * j + left), (int)(300 + top - q));
+    			}	
+	/////////////////////////////////////////////////////////////////////////////////////
+				tmpi++;
+			}
+    }
+}
+
+void actu_output(void)
+{
+	wxString	tmp;
+	
+	frame->outbt1->SetValue(get_bit(Write_Outputs_8_Bit[0], 1));
+	frame->outbt2->SetValue(get_bit(Write_Outputs_8_Bit[0], 2));
+	frame->outbt3->SetValue(get_bit(Write_Outputs_8_Bit[0], 3));
+	frame->outbt4->SetValue(get_bit(Write_Outputs_8_Bit[0], 4));
+	frame->outbt5->SetValue(get_bit(Write_Outputs_8_Bit[0], 5));
+	frame->outbt6->SetValue(get_bit(Write_Outputs_8_Bit[0], 6));
+	frame->outbt7->SetValue(get_bit(Write_Outputs_8_Bit[0], 7));
+	frame->outbt8->SetValue(get_bit(Write_Outputs_8_Bit[0], 8));
+
+	frame->outs1->SetValue(Write_Analogue_Output_16_Bit[0] + 32768);
+	frame->outs2->SetValue(Write_Analogue_Output_16_Bit[1] + 32768);
+	frame->outs3->SetValue(Write_Analogue_Output_16_Bit[2] + 32768);
+	frame->outs4->SetValue(Write_Analogue_Output_16_Bit[3] + 32768);
+	tmp.Printf(wxT("       %i"), Write_Analogue_Output_16_Bit[0]);
+	frame->outst1->SetLabel(tmp);
+	tmp.Printf(wxT("       %i"), Write_Analogue_Output_16_Bit[1]);
+	frame->outst2->SetLabel(tmp);
+	tmp.Printf(wxT("       %i"), Write_Analogue_Output_16_Bit[2]);
+	frame->outst3->SetLabel(tmp);
+	tmp.Printf(wxT("       %i"), Write_Analogue_Output_16_Bit[3]);
+	frame->outst4->SetLabel(tmp);
+}
+
+void actu(void)
+{
+	actu_output();
+	
+	Gtime++;
+	if (Gtime > hdelta)
+	{
+		old_max = 5;
+		old_min = -5;
+		Gtime = 0;
+	}
+	frame->Paint();
+}
+
+void MyFrame::OnTimer(wxTimerEvent& event)
+{
+    actu();// do whatever you want to do every second here
+}
+
+void MyFrame::OnPaint( wxPaintEvent &event )
+{
+	//Paint();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Slave_Gui/main.h	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,119 @@
+#ifndef MAIN_H_
+#define MAIN_H_
+
+#include <wx/tglbtn.h>
+#include <wx/slider.h>
+#include <wx/brush.h>
+#include <wx/dynarray.h>
+#include <wx/listbox.h>
+#include <wx/gauge.h>
+#include <wx/spinctrl.h>
+
+class MyApp : public wxApp {
+public:
+ virtual bool OnInit();
+};
+
+class MyFrame : public wxFrame {
+public:
+
+ wxNotebook 	*book;
+ wxButton		*stop;
+ wxButton		*start;
+ wxTextCtrl		*busname;
+ wxSpinCtrl		*inst1;
+ wxSpinCtrl		*inst2;
+ wxSpinCtrl		*inst3;
+ wxSpinCtrl		*inst4;
+ wxSpinCtrl		*inst5;
+ wxSpinCtrl		*inst6;
+ wxSpinCtrl		*inst7;
+ wxSpinCtrl		*inst8;
+ wxTextCtrl		*drivername;
+ wxSpinCtrl		*node_id;
+ wxToggleButton	*inbt1;
+ wxToggleButton	*inbt2;
+ wxToggleButton	*inbt3;
+ wxToggleButton	*inbt4;
+ wxToggleButton	*inbt5;
+ wxToggleButton	*inbt6;
+ wxToggleButton	*inbt7;
+ wxToggleButton	*inbt8;
+ wxSlider		*ins1;
+ wxSlider		*ins2;
+ wxSlider		*ins3;
+ wxSlider		*ins4;
+ wxSlider		*ins5;
+ wxSlider		*ins6;
+ wxSlider		*ins7;
+ wxSlider		*ins8;
+ wxToggleButton	*outbt1;
+ wxToggleButton	*outbt2;
+ wxToggleButton	*outbt3;
+ wxToggleButton	*outbt4;
+ wxToggleButton	*outbt5;
+ wxToggleButton	*outbt6;
+ wxToggleButton	*outbt7;
+ wxToggleButton	*outbt8;
+ wxGauge		*outs1;
+ wxGauge		*outs2;
+ wxGauge		*outs3;
+ wxGauge		*outs4;
+ wxStaticText	*outst1;
+ wxStaticText	*outst2;
+ wxStaticText	*outst3;
+ wxStaticText	*outst4;
+ wxSlider		*echelle;
+ wxPanel		*mygraphpan;
+ wxPanel		*mylegpan;
+ wxListBox		*inlist;
+ wxArrayInt		in;
+ wxTimer		m_timer;
+ 
+ MyFrame(const wxString& title);
+ 
+ void OnListBoxDoubleClick( wxCommandEvent &event );
+ void OnInbt1(wxCommandEvent& event);
+ void OnInbt2(wxCommandEvent& event);
+ void OnInbt3(wxCommandEvent& event);
+ void OnInbt4(wxCommandEvent& event);
+ void OnInbt5(wxCommandEvent& event);
+ void OnInbt6(wxCommandEvent& event);
+ void OnInbt7(wxCommandEvent& event);
+ void OnInbt8(wxCommandEvent& event);
+ void OnQuit(wxCommandEvent& event);
+ void OnAdd(wxCommandEvent& event);
+ void OnRemove(wxCommandEvent& event);
+ void OnAbout(wxCommandEvent& event);
+ void OnStart(wxCommandEvent& WXUNUSED(event));
+ void OnStop(wxCommandEvent& WXUNUSED(event));
+ void OnFreqBoxClick(wxCommandEvent& WXUNUSED(event));
+ void OnLoad(wxCommandEvent& WXUNUSED(event));
+ void OnPaint(wxPaintEvent& WXUNUSED(event));
+ void OnIns1(wxScrollEvent &event);
+ void OnIns2(wxScrollEvent &event);
+ void OnIns3(wxScrollEvent &event);
+ void OnIns4(wxScrollEvent &event);
+ void OnIns5(wxScrollEvent &event);
+ void OnIns6(wxScrollEvent &event);
+ void OnIns7(wxScrollEvent &event);
+ void OnIns8(wxScrollEvent &event);
+ void OnInst1( wxSpinEvent &ev );
+ void OnInst2( wxSpinEvent &ev );
+ void OnInst3( wxSpinEvent &ev );
+ void OnInst4( wxSpinEvent &ev );
+ void OnInst5( wxSpinEvent &ev );
+ void OnInst6( wxSpinEvent &ev );
+ void OnInst7( wxSpinEvent &ev );
+ void OnInst8( wxSpinEvent &ev );
+ void Paint();
+ void OnTimer(wxTimerEvent& event);
+private:
+ DECLARE_EVENT_TABLE()
+};
+
+void actu(void);
+void actu_output(void);
+
+
+#endif /*MAIN_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Slave_Gui/monicone.xpm	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,6339 @@
+/* XPM */
+static char * monicone_xpm[] = {
+"127 126 6210 2",
+"  	c None",
+". 	c #020200",
+"+ 	c #020500",
+"@ 	c #000201",
+"# 	c #000503",
+"$ 	c #000102",
+"% 	c #00080A",
+"& 	c #000103",
+"* 	c #000002",
+"= 	c #000000",
+"- 	c #000105",
+"; 	c #000004",
+"> 	c #020005",
+", 	c #020003",
+"' 	c #070005",
+") 	c #000008",
+"! 	c #00000A",
+"~ 	c #000009",
+"{ 	c #010007",
+"] 	c #050007",
+"^ 	c #060008",
+"/ 	c #000016",
+"( 	c #00000E",
+"_ 	c #000010",
+": 	c #000113",
+"< 	c #010012",
+"[ 	c #010010",
+"} 	c #030011",
+"| 	c #04000F",
+"1 	c #04000E",
+"2 	c #03000C",
+"3 	c #04000B",
+"4 	c #02000C",
+"5 	c #0B0C00",
+"6 	c #000117",
+"7 	c #000015",
+"8 	c #000724",
+"9 	c #000627",
+"0 	c #000525",
+"a 	c #000524",
+"b 	c #000421",
+"c 	c #00011E",
+"d 	c #00001D",
+"e 	c #03001B",
+"f 	c #020018",
+"g 	c #000212",
+"h 	c #000211",
+"i 	c #000210",
+"j 	c #00000F",
+"k 	c #101300",
+"l 	c #000200",
+"m 	c #040500",
+"n 	c #00011C",
+"o 	c #000019",
+"p 	c #000625",
+"q 	c #000C36",
+"r 	c #001045",
+"s 	c #00124A",
+"t 	c #000F43",
+"u 	c #000C3C",
+"v 	c #000D39",
+"w 	c #000A37",
+"x 	c #000632",
+"y 	c #00032F",
+"z 	c #00042A",
+"A 	c #000523",
+"B 	c #000420",
+"C 	c #00041E",
+"D 	c #000115",
+"E 	c #000316",
+"F 	c #000313",
+"G 	c #000616",
+"H 	c #080900",
+"I 	c #080800",
+"J 	c #010100",
+"K 	c #000230",
+"L 	c #000526",
+"M 	c #000022",
+"N 	c #00082F",
+"O 	c #00113E",
+"P 	c #00164E",
+"Q 	c #001D67",
+"R 	c #001B60",
+"S 	c #001D5F",
+"T 	c #001A5D",
+"U 	c #001860",
+"V 	c #001861",
+"W 	c #001258",
+"X 	c #000F4E",
+"Y 	c #000D43",
+"Z 	c #000935",
+"` 	c #00082E",
+" .	c #000020",
+"..	c #000827",
+"+.	c #000622",
+"@.	c #00051B",
+"#.	c #000617",
+"$.	c #000315",
+"%.	c #010000",
+"&.	c #060500",
+"*.	c #030000",
+"=.	c #030300",
+"-.	c #00030E",
+";.	c #000933",
+">.	c #000D3B",
+",.	c #001249",
+"'.	c #001958",
+").	c #001C58",
+"!.	c #002676",
+"~.	c #002678",
+"{.	c #00277A",
+"].	c #002780",
+"^.	c #002680",
+"/.	c #002179",
+"(.	c #001D71",
+"_.	c #00186B",
+":.	c #001665",
+"<.	c #000939",
+"[.	c #000B3A",
+"}.	c #000027",
+"|.	c #000024",
+"1.	c #000629",
+"2.	c #000621",
+"3.	c #000013",
+"4.	c #00000D",
+"5.	c #010006",
+"6.	c #010002",
+"7.	c #000411",
+"8.	c #000E34",
+"9.	c #001654",
+"0.	c #001A5F",
+"a.	c #00226B",
+"b.	c #00246B",
+"c.	c #002572",
+"d.	c #002E8A",
+"e.	c #003398",
+"f.	c #003090",
+"g.	c #002D8E",
+"h.	c #002C8B",
+"i.	c #00298A",
+"j.	c #002888",
+"k.	c #002385",
+"l.	c #001D7C",
+"m.	c #001973",
+"n.	c #001156",
+"o.	c #000E53",
+"p.	c #000C40",
+"q.	c #000C3F",
+"r.	c #000936",
+"s.	c #000423",
+"t.	c #000018",
+"u.	c #00000B",
+"v.	c #030004",
+"w.	c #060004",
+"x.	c #040001",
+"y.	c #020001",
+"z.	c #000100",
+"A.	c #050800",
+"B.	c #030002",
+"C.	c #060007",
+"D.	c #020006",
+"E.	c #010005",
+"F.	c #000405",
+"G.	c #000403",
+"H.	c #00010E",
+"I.	c #000B35",
+"J.	c #001862",
+"K.	c #001E6F",
+"L.	c #00216F",
+"M.	c #002976",
+"N.	c #00307D",
+"O.	c #003684",
+"P.	c #004197",
+"Q.	c #00469F",
+"R.	c #004191",
+"S.	c #003A87",
+"T.	c #003F92",
+"U.	c #0044A2",
+"V.	c #0043A4",
+"W.	c #003894",
+"X.	c #002C7C",
+"Y.	c #00195C",
+"Z.	c #001C63",
+"`.	c #001F68",
+" +	c #001F64",
+".+	c #001B56",
+"++	c #00184C",
+"@+	c #001645",
+"#+	c #000D32",
+"$+	c #000017",
+"%+	c #01000E",
+"&+	c #000007",
+"*+	c #010004",
+"=+	c #050004",
+"-+	c #010700",
+";+	c #030500",
+">+	c #040400",
+",+	c #060000",
+"'+	c #000300",
+")+	c #0C1700",
+"!+	c #0E0200",
+"~+	c #080000",
+"{+	c #0C000A",
+"]+	c #0C000F",
+"^+	c #06000C",
+"/+	c #06000E",
+"(+	c #090013",
+"_+	c #04000D",
+":+	c #00030A",
+"<+	c #000A0B",
+"[+	c #000C09",
+"}+	c #000B16",
+"|+	c #000E3F",
+"1+	c #001264",
+"2+	c #001A6D",
+"3+	c #00216C",
+"4+	c #00317C",
+"5+	c #00428D",
+"6+	c #004E92",
+"7+	c #005998",
+"8+	c #00619A",
+"9+	c #00679D",
+"0+	c #0069A2",
+"a+	c #0069A5",
+"b+	c #0067A7",
+"c+	c #005CA0",
+"d+	c #004F91",
+"e+	c #003F7A",
+"f+	c #002654",
+"g+	c #002851",
+"h+	c #002C58",
+"i+	c #003161",
+"j+	c #003B72",
+"k+	c #003C75",
+"l+	c #003974",
+"m+	c #003774",
+"n+	c #002A5F",
+"o+	c #001237",
+"p+	c #000322",
+"q+	c #000920",
+"r+	c #000213",
+"s+	c #040005",
+"t+	c #000501",
+"u+	c #000400",
+"v+	c #000D00",
+"w+	c #011600",
+"x+	c #000500",
+"y+	c #020D00",
+"z+	c #020800",
+"A+	c #070A00",
+"B+	c #010300",
+"C+	c #010C00",
+"D+	c #140900",
+"E+	c #040000",
+"F+	c #01000B",
+"G+	c #030010",
+"H+	c #040012",
+"I+	c #0D001A",
+"J+	c #0A0018",
+"K+	c #050016",
+"L+	c #000314",
+"M+	c #000511",
+"N+	c #00131A",
+"O+	c #001B31",
+"P+	c #001E58",
+"Q+	c #001F60",
+"R+	c #002362",
+"S+	c #00327E",
+"T+	c #004B9F",
+"U+	c #0058A7",
+"V+	c #0070B8",
+"W+	c #009BE8",
+"X+	c #00B7FF",
+"Y+	c #00B5F5",
+"Z+	c #00AAE3",
+"`+	c #00A1DA",
+" @	c #009FDD",
+".@	c #009FE5",
+"+@	c #0093E4",
+"@@	c #0085D4",
+"#@	c #0061A9",
+"$@	c #005595",
+"%@	c #004C83",
+"&@	c #004576",
+"*@	c #004573",
+"=@	c #003967",
+"-@	c #003461",
+";@	c #003765",
+">@	c #002D5D",
+",@	c #002149",
+"'@	c #00163A",
+")@	c #000C27",
+"!@	c #000012",
+"~@	c #000005",
+"{@	c #050009",
+"]@	c #06000A",
+"^@	c #030009",
+"/@	c #000308",
+"(@	c #00080B",
+"_@	c #000404",
+":@	c #000502",
+"<@	c #00130F",
+"[@	c #000903",
+"}@	c #000600",
+"|@	c #000B03",
+"1@	c #040700",
+"2@	c #10000D",
+"3@	c #000205",
+"4@	c #000302",
+"5@	c #000604",
+"6@	c #00140F",
+"7@	c #000E0A",
+"8@	c #000609",
+"9@	c #000D15",
+"0@	c #010011",
+"a@	c #0B001A",
+"b@	c #10001E",
+"c@	c #0C0022",
+"d@	c #010021",
+"e@	c #000726",
+"f@	c #001633",
+"g@	c #00274E",
+"h@	c #004076",
+"i@	c #004F8E",
+"j@	c #005CA9",
+"k@	c #0070C9",
+"l@	c #007CDC",
+"m@	c #008BED",
+"n@	c #00A7F7",
+"o@	c #00B8FB",
+"p@	c #00B9F5",
+"q@	c #00B1EB",
+"r@	c #00AEE1",
+"s@	c #00AFE3",
+"t@	c #0092FF",
+"u@	c #0081E0",
+"v@	c #007ED4",
+"w@	c #007ED0",
+"x@	c #0067A8",
+"y@	c #00487B",
+"z@	c #002F5E",
+"A@	c #002352",
+"B@	c #00143D",
+"C@	c #00072F",
+"D@	c #040020",
+"E@	c #040013",
+"F@	c #06000D",
+"G@	c #02000A",
+"H@	c #02000E",
+"I@	c #000B20",
+"J@	c #00071D",
+"K@	c #00031B",
+"L@	c #000319",
+"M@	c #00081C",
+"N@	c #000B1B",
+"O@	c #00020C",
+"P@	c #000107",
+"Q@	c #000A17",
+"R@	c #00050F",
+"S@	c #00040E",
+"T@	c #00141D",
+"U@	c #00101C",
+"V@	c #000112",
+"W@	c #000D1D",
+"X@	c #000D16",
+"Y@	c #001A1A",
+"Z@	c #000F0B",
+"`@	c #00130D",
+" #	c #001A1B",
+".#	c #000615",
+"+#	c #050018",
+"@#	c #0C0023",
+"##	c #07002A",
+"$#	c #001541",
+"%#	c #002D5B",
+"&#	c #004775",
+"*#	c #006E9F",
+"=#	c #006D99",
+"-#	c #007AB0",
+";#	c #009BE3",
+">#	c #008FD9",
+",#	c #007DC0",
+"'#	c #008BD4",
+")#	c #00A4F3",
+"!#	c #00ACFF",
+"~#	c #00A9FF",
+"{#	c #00A7FF",
+"]#	c #00B4FF",
+"^#	c #00C3FF",
+"/#	c #009DF7",
+"(#	c #006BAC",
+"_#	c #004C84",
+":#	c #003568",
+"<#	c #001B44",
+"[#	c #000F31",
+"}#	c #000118",
+"|#	c #02000F",
+"1#	c #00050A",
+"2#	c #000413",
+"3#	c #00162B",
+"4#	c #001C37",
+"5#	c #002044",
+"6#	c #00254E",
+"7#	c #002B5E",
+"8#	c #002F66",
+"9#	c #002B5D",
+"0#	c #002C5E",
+"a#	c #002652",
+"b#	c #001D3A",
+"c#	c #001023",
+"d#	c #000612",
+"e#	c #001E2C",
+"f#	c #002132",
+"g#	c #000C1E",
+"h#	c #001326",
+"i#	c #002137",
+"j#	c #001932",
+"k#	c #001E3F",
+"l#	c #002242",
+"m#	c #00162A",
+"n#	c #00232E",
+"o#	c #002524",
+"p#	c #00342F",
+"q#	c #001713",
+"r#	c #00090B",
+"s#	c #00021A",
+"t#	c #010026",
+"u#	c #000A39",
+"v#	c #001C4B",
+"w#	c #003C6E",
+"x#	c #0065A2",
+"y#	c #008BC3",
+"z#	c #00AAD1",
+"A#	c #00859F",
+"B#	c #007490",
+"C#	c #0089AF",
+"D#	c #0097CD",
+"E#	c #00A2E8",
+"F#	c #00A1F1",
+"G#	c #008CDD",
+"H#	c #00B1FF",
+"I#	c #00D5FF",
+"J#	c #00CFFF",
+"K#	c #00A6F1",
+"L#	c #008ACA",
+"M#	c #0081BE",
+"N#	c #008ED4",
+"O#	c #00A3FF",
+"P#	c #0067A9",
+"Q#	c #003C65",
+"R#	c #00132E",
+"S#	c #000619",
+"T#	c #00121E",
+"U#	c #00020B",
+"V#	c #00050C",
+"W#	c #00222A",
+"X#	c #003543",
+"Y#	c #004A65",
+"Z#	c #005E8D",
+"`#	c #005D94",
+" $	c #005791",
+".$	c #005A9E",
+"+$	c #0064B0",
+"@$	c #005CA4",
+"#$	c #0060AB",
+"$$	c #005FA3",
+"%$	c #004E7F",
+"&$	c #004363",
+"*$	c #003649",
+"=$	c #003C4B",
+"-$	c #00394F",
+";$	c #001124",
+">$	c #00142C",
+",$	c #003D5A",
+"'$	c #004066",
+")$	c #00436F",
+"!$	c #003B6A",
+"~$	c #003B64",
+"{$	c #003858",
+"]$	c #004D64",
+"^$	c #005563",
+"/$	c #005259",
+"($	c #003E45",
+"_$	c #002B35",
+":$	c #00172B",
+"<$	c #00102A",
+"[$	c #001438",
+"}$	c #002856",
+"|$	c #004D7E",
+"1$	c #0082BB",
+"2$	c #00BDFF",
+"3$	c #00CCFE",
+"4$	c #00D9F8",
+"5$	c #00EAFF",
+"6$	c #00CDE7",
+"7$	c #008FA9",
+"8$	c #00607D",
+"9$	c #00779A",
+"0$	c #009AD4",
+"a$	c #00B6FF",
+"b$	c #009FF6",
+"c$	c #00A5FF",
+"d$	c #00B0DD",
+"e$	c #00A6CB",
+"f$	c #0093B7",
+"g$	c #0095C2",
+"h$	c #00B4F0",
+"i$	c #00CAFF",
+"j$	c #00AFF7",
+"k$	c #00ADF3",
+"l$	c #00A4E5",
+"m$	c #008ABF",
+"n$	c #005B79",
+"o$	c #00374C",
+"p$	c #001F2D",
+"q$	c #00202A",
+"r$	c #00333D",
+"s$	c #005564",
+"t$	c #00697D",
+"u$	c #007492",
+"v$	c #007EA8",
+"w$	c #0081B4",
+"x$	c #007AB6",
+"y$	c #007BBE",
+"z$	c #007FC8",
+"A$	c #0092E7",
+"B$	c #0090DF",
+"C$	c #0081C7",
+"D$	c #0070A6",
+"E$	c #006F9C",
+"F$	c #006384",
+"G$	c #005369",
+"H$	c #00495A",
+"I$	c #003A50",
+"J$	c #003147",
+"K$	c #003544",
+"L$	c #001F32",
+"M$	c #004C63",
+"N$	c #006A8D",
+"O$	c #0074A4",
+"P$	c #006291",
+"Q$	c #005F92",
+"R$	c #00619B",
+"S$	c #005686",
+"T$	c #00507A",
+"U$	c #004B71",
+"V$	c #004A69",
+"W$	c #00405D",
+"X$	c #003654",
+"Y$	c #00304F",
+"Z$	c #002C51",
+"`$	c #002747",
+" %	c #003756",
+".%	c #006289",
+"+%	c #00A0C8",
+"@%	c #00DBFF",
+"#%	c #00F9FF",
+"$%	c #00E6FF",
+"%%	c #00EDFF",
+"&%	c #00D2E5",
+"*%	c #00C7DA",
+"=%	c #00CCE8",
+"-%	c #00BCD9",
+";%	c #0090AA",
+">%	c #00718D",
+",%	c #007191",
+"'%	c #0080A9",
+")%	c #0080AE",
+"!%	c #0085B7",
+"~%	c #0089BD",
+"{%	c #0090C4",
+"]%	c #0097C5",
+"^%	c #0098C6",
+"/%	c #009BB5",
+"(%	c #008484",
+"_%	c #00A19C",
+":%	c #00BCC2",
+"<%	c #00CCE4",
+"[%	c #00D8FF",
+"}%	c #00D4FF",
+"|%	c #00CEFF",
+"1%	c #00D2FF",
+"2%	c #00BBF1",
+"3%	c #00C3F6",
+"4%	c #00D9FF",
+"5%	c #00BFE8",
+"6%	c #0087A3",
+"7%	c #005567",
+"8%	c #003B4A",
+"9%	c #005B6E",
+"0%	c #007D95",
+"a%	c #008AA5",
+"b%	c #0082A1",
+"c%	c #0083A6",
+"d%	c #0092BF",
+"e%	c #009BCE",
+"f%	c #009CD7",
+"g%	c #00A9EB",
+"h%	c #00B0F7",
+"i%	c #00B0F8",
+"j%	c #00A5E6",
+"k%	c #008DC4",
+"l%	c #007AA6",
+"m%	c #007399",
+"n%	c #006F92",
+"o%	c #006788",
+"p%	c #004F71",
+"q%	c #002F46",
+"r%	c #003752",
+"s%	c #002643",
+"t%	c #002940",
+"u%	c #006C85",
+"v%	c #00829F",
+"w%	c #0090B7",
+"x%	c #008AB9",
+"y%	c #007DB1",
+"z%	c #007CB6",
+"A%	c #0083BF",
+"B%	c #0072AC",
+"C%	c #005E92",
+"D%	c #005489",
+"E%	c #004678",
+"F%	c #003F72",
+"G%	c #003760",
+"H%	c #00426D",
+"I%	c #003A5A",
+"J%	c #00627E",
+"K%	c #00AFCE",
+"L%	c #00DEF4",
+"M%	c #00E1F0",
+"N%	c #00F2FB",
+"O%	c #00F2FE",
+"P%	c #00F1FF",
+"Q%	c #00D6EE",
+"R%	c #00CCE3",
+"S%	c #00DDF2",
+"T%	c #00D3EA",
+"U%	c #00BDD4",
+"V%	c #00BFD5",
+"W%	c #009CB4",
+"X%	c #0095AC",
+"Y%	c #008BA1",
+"Z%	c #00859B",
+"`%	c #00899D",
+" &	c #0092A3",
+".&	c #009CAB",
+"+&	c #00A1A7",
+"@&	c #00DCCA",
+"#&	c #00FBE1",
+"$&	c #00FBF2",
+"%&	c #00E7ED",
+"&&	c #00E2F7",
+"*&	c #00DDFE",
+"=&	c #00DAFF",
+"-&	c #00E2FF",
+";&	c #00DCFF",
+">&	c #00CFF8",
+",&	c #00C6E9",
+"'&	c #00C1E3",
+")&	c #00CAF0",
+"!&	c #00A3C1",
+"~&	c #006C7F",
+"{&	c #005A70",
+"]&	c #007E9F",
+"^&	c #0088AC",
+"/&	c #008BAF",
+"(&	c #009EC8",
+"_&	c #00C4F7",
+":&	c #00BFF0",
+"<&	c #00B1E3",
+"[&	c #00CBFF",
+"}&	c #00E8FF",
+"|&	c #00BDF7",
+"1&	c #00A5DD",
+"2&	c #00A4DE",
+"3&	c #0087BA",
+"4&	c #0077A4",
+"5&	c #0073A2",
+"6&	c #006793",
+"7&	c #005A84",
+"8&	c #004466",
+"9&	c #003854",
+"0&	c #003A59",
+"a&	c #001E41",
+"b&	c #005C7D",
+"c&	c #007C99",
+"d&	c #009DBD",
+"e&	c #00AECF",
+"f&	c #00ABD3",
+"g&	c #00A3D4",
+"h&	c #009AD1",
+"i&	c #0097CE",
+"j&	c #009ED1",
+"k&	c #008BBC",
+"l&	c #0086C0",
+"m&	c #0076BB",
+"n&	c #005FA9",
+"o&	c #00529A",
+"p&	c #004B8B",
+"q&	c #005188",
+"r&	c #003B65",
+"s&	c #007FA1",
+"t&	c #00B4CE",
+"u&	c #00D0DC",
+"v&	c #00E6E9",
+"w&	c #00E2DB",
+"x&	c #00D4CC",
+"y&	c #00D4D5",
+"z&	c #00D6F7",
+"A&	c #00DEFF",
+"B&	c #00CDE5",
+"C&	c #00D7E7",
+"D&	c #00E9F2",
+"E&	c #00E4EA",
+"F&	c #00F3F4",
+"G&	c #00F5F4",
+"H&	c #00E4E0",
+"I&	c #00DED9",
+"J&	c #00EAE0",
+"K&	c #00F8EB",
+"L&	c #00F1DF",
+"M&	c #00DECC",
+"N&	c #00CEC2",
+"O&	c #00D6CE",
+"P&	c #00DFDD",
+"Q&	c #00CACB",
+"R&	c #00D4D6",
+"S&	c #00E1E8",
+"T&	c #00DBE7",
+"U&	c #00DDED",
+"V&	c #00D4EB",
+"W&	c #00CBE8",
+"X&	c #00C8E8",
+"Y&	c #00CDF2",
+"Z&	c #00C7EE",
+"`&	c #00C2E7",
+" *	c #00E1FF",
+".*	c #008FB0",
+"+*	c #006C96",
+"@*	c #0095CA",
+"#*	c #00C7FF",
+"$*	c #00F3FF",
+"%*	c #00C6F3",
+"&*	c #00D2F9",
+"**	c #00EBFF",
+"=*	c #00BFEA",
+"-*	c #00B0E1",
+";*	c #0087C3",
+">*	c #0079B7",
+",*	c #0075B8",
+"'*	c #006DAE",
+")*	c #006397",
+"!*	c #005C87",
+"~*	c #004D73",
+"{*	c #004160",
+"]*	c #00364E",
+"^*	c #002753",
+"/*	c #005D8B",
+"(*	c #0099CB",
+"_*	c #009EC3",
+":*	c #00A3C0",
+"<*	c #00B3D2",
+"[*	c #00C8F0",
+"}*	c #00B8F1",
+"|*	c #00A4D6",
+"1*	c #00A7D1",
+"2*	c #00A4D1",
+"3*	c #009CDA",
+"4*	c #0082CB",
+"5*	c #0074C8",
+"6*	c #006DC7",
+"7*	c #0061A5",
+"8*	c #005389",
+"9*	c #0092BE",
+"0*	c #00CFF1",
+"a*	c #00D7E6",
+"b*	c #00E6E7",
+"c*	c #00D1CC",
+"d*	c #00D9CC",
+"e*	c #00A298",
+"f*	c #009396",
+"g*	c #00A7CB",
+"h*	c #00B5E9",
+"i*	c #00C0E7",
+"j*	c #00D5F1",
+"k*	c #00F2FF",
+"l*	c #00F7FF",
+"m*	c #00F2F6",
+"n*	c #00E9EF",
+"o*	c #00F2FC",
+"p*	c #00F6FF",
+"q*	c #00E5F5",
+"r*	c #00C6D2",
+"s*	c #00B6C1",
+"t*	c #00BDC6",
+"u*	c #00C6DD",
+"v*	c #00BBE5",
+"w*	c #00F0FF",
+"x*	c #00F8FF",
+"y*	c #00E6F8",
+"z*	c #00D6DD",
+"A*	c #00D6D5",
+"B*	c #00D1CE",
+"C*	c #00A9AA",
+"D*	c #0095A0",
+"E*	c #007688",
+"F*	c #007691",
+"G*	c #00C0E5",
+"H*	c #00C8F1",
+"I*	c #007DAE",
+"J*	c #0079B3",
+"K*	c #00AAEB",
+"L*	c #00E7F9",
+"M*	c #00E0EE",
+"N*	c #00EBFB",
+"O*	c #00C5D9",
+"P*	c #00BFE5",
+"Q*	c #00B0F9",
+"R*	c #008FDC",
+"S*	c #007FCA",
+"T*	c #0071B8",
+"U*	c #006DA7",
+"V*	c #00618E",
+"W*	c #005C86",
+"X*	c #00567D",
+"Y*	c #003D58",
+"Z*	c #00405C",
+"`*	c #00356A",
+" =	c #00355F",
+".=	c #005787",
+"+=	c #0075A6",
+"@=	c #00ADDD",
+"#=	c #00B8DC",
+"$=	c #00C2DF",
+"%=	c #00CDEC",
+"&=	c #00E5FF",
+"*=	c #00DDFF",
+"==	c #00D3FF",
+"-=	c #00C6F0",
+";=	c #00B8E6",
+">=	c #00ADE7",
+",=	c #009CE9",
+"'=	c #0090EB",
+")=	c #007BCA",
+"!=	c #006CA7",
+"~=	c #0081B0",
+"{=	c #00EEFF",
+"]=	c #00EFF4",
+"^=	c #00E7E5",
+"/=	c #00B1AB",
+"(=	c #00726E",
+"_=	c #002B2C",
+":=	c #001621",
+"<=	c #005670",
+"[=	c #0080A6",
+"}=	c #00A4C7",
+"|=	c #00DBFC",
+"1=	c #00E1F5",
+"2=	c #00FDFF",
+"3=	c #00D0FF",
+"4=	c #00ABEE",
+"5=	c #0090D4",
+"6=	c #0081C4",
+"7=	c #0076B9",
+"8=	c #0075BB",
+"9=	c #0078C4",
+"0=	c #0072CE",
+"a=	c #0082DF",
+"b=	c #00ACF5",
+"c=	c #00FFFF",
+"d=	c #00F7F0",
+"e=	c #00D6C3",
+"f=	c #008D7D",
+"g=	c #003635",
+"h=	c #000C15",
+"i=	c #00091C",
+"j=	c #00364F",
+"k=	c #008EBB",
+"l=	c #00D0FC",
+"m=	c #00D2F2",
+"n=	c #00C6EB",
+"o=	c #00ACE8",
+"p=	c #0081BA",
+"q=	c #00D7CE",
+"r=	c #00CDFF",
+"s=	c #00AFF8",
+"t=	c #0099E7",
+"u=	c #0088CE",
+"v=	c #0076AD",
+"w=	c #0073A5",
+"x=	c #006591",
+"y=	c #00628C",
+"z=	c #004F70",
+"A=	c #003D55",
+"B=	c #003259",
+"C=	c #006EA8",
+"D=	c #0084BB",
+"E=	c #0089B5",
+"F=	c #00A7CD",
+"G=	c #00C5E7",
+"H=	c #00E9FF",
+"I=	c #00ECFF",
+"J=	c #00DFFF",
+"K=	c #00B4F1",
+"L=	c #009BE2",
+"M=	c #0089D5",
+"N=	c #0075B2",
+"O=	c #0077A9",
+"P=	c #00B4E2",
+"Q=	c #00D3F0",
+"R=	c #00D4E1",
+"S=	c #00FBFF",
+"T=	c #00E4E1",
+"U=	c #00B8BA",
+"V=	c #003B3F",
+"W=	c #00142A",
+"X=	c #00647F",
+"Y=	c #0089A5",
+"Z=	c #00C1E0",
+"`=	c #00D5F6",
+" -	c #00C4E5",
+".-	c #00E0FF",
+"+-	c #00D1FF",
+"@-	c #0090E6",
+"#-	c #0075D3",
+"$-	c #006ED7",
+"%-	c #0072EA",
+"&-	c #0074F7",
+"*-	c #0074F4",
+"=-	c #006DED",
+"--	c #005EDE",
+";-	c #005AC7",
+">-	c #0077C8",
+",-	c #00B0F0",
+"'-	c #00C8B8",
+")-	c #00655A",
+"!-	c #00100E",
+"~-	c #000E15",
+"{-	c #00081A",
+"]-	c #000520",
+"^-	c #005174",
+"/-	c #00AAD3",
+"(-	c #00D0EC",
+"_-	c #009ACE",
+":-	c #008AB0",
+"<-	c #00BEFF",
+"[-	c #008DC5",
+"}-	c #0087BE",
+"|-	c #007CB1",
+"1-	c #006E9C",
+"2-	c #006995",
+"3-	c #005D83",
+"4-	c #004361",
+"5-	c #003E61",
+"6-	c #005B83",
+"7-	c #0092C6",
+"8-	c #00B8F2",
+"9-	c #00D4FD",
+"0-	c #00E4FF",
+"a-	c #00A6DF",
+"b-	c #0076A9",
+"c-	c #006A9F",
+"d-	c #006D9F",
+"e-	c #00B9DC",
+"f-	c #00E9FE",
+"g-	c #00D8E1",
+"h-	c #00EEEF",
+"i-	c #00C8CA",
+"j-	c #009CA9",
+"k-	c #002C3C",
+"l-	c #000723",
+"m-	c #00213F",
+"n-	c #00132B",
+"o-	c #006278",
+"p-	c #007B91",
+"q-	c #00C2EA",
+"r-	c #00BBEA",
+"s-	c #00B7F8",
+"t-	c #008AD1",
+"u-	c #0066B9",
+"v-	c #005CC3",
+"w-	c #0054D4",
+"x-	c #0054F0",
+"y-	c #0059FF",
+"z-	c #005DFF",
+"A-	c #0061FF",
+"B-	c #0063FF",
+"C-	c #0061EE",
+"D-	c #006ED0",
+"E-	c #007ABD",
+"F-	c #0099C6",
+"G-	c #00DCFA",
+"H-	c #00CFDE",
+"I-	c #006266",
+"J-	c #000B1A",
+"K-	c #000E26",
+"L-	c #005273",
+"M-	c #009EC5",
+"N-	c #00C1DA",
+"O-	c #00D2EB",
+"P-	c #00B2D1",
+"Q-	c #00C5EB",
+"R-	c #009CB0",
+"S-	c #00989F",
+"T-	c #009476",
+"U-	c #00D1F8",
+"V-	c #00ADD9",
+"W-	c #009ED5",
+"X-	c #0080B3",
+"Y-	c #007BAD",
+"Z-	c #0076A4",
+"`-	c #00658F",
+" ;	c #00658E",
+".;	c #005479",
+"+;	c #005880",
+"@;	c #003355",
+"#;	c #004B6B",
+"$;	c #007FAA",
+"%;	c #009FCC",
+"&;	c #00BDEA",
+"*;	c #00A7DC",
+"=;	c #007FB1",
+"-;	c #005C8A",
+";;	c #00618C",
+">;	c #00718F",
+",;	c #009AB3",
+"';	c #00B9C5",
+");	c #00DDE0",
+"!;	c #00D9DC",
+"~;	c #00D1DA",
+"{;	c #0096AD",
+"];	c #005975",
+"^;	c #000F34",
+"/;	c #002B49",
+"(;	c #00748E",
+"_;	c #008DA7",
+":;	c #00A5C6",
+"<;	c #00B3DB",
+"[;	c #00A5D5",
+"};	c #0090CD",
+"|;	c #006BAE",
+"1;	c #005CBC",
+"2;	c #004AC1",
+"3;	c #003AC5",
+"4;	c #0035CD",
+"5;	c #0038CD",
+"6;	c #003CCE",
+"7;	c #0046D5",
+"8;	c #004BDD",
+"9;	c #0044D3",
+"0;	c #0054DF",
+"a;	c #0063CE",
+"b;	c #006DBA",
+"c;	c #007BB2",
+"d;	c #009FD1",
+"e;	c #00C8FD",
+"f;	c #009FC9",
+"g;	c #003E56",
+"h;	c #000F29",
+"i;	c #000D2B",
+"j;	c #003856",
+"k;	c #00B0D6",
+"l;	c #00C2DB",
+"m;	c #00C6DC",
+"n;	c #00B0C2",
+"o;	c #0096A1",
+"p;	c #007178",
+"q;	c #004748",
+"r;	c #003330",
+"s;	c #002925",
+"t;	c #000E07",
+"u;	c #002019",
+"v;	c #003631",
+"w;	c #004943",
+"x;	c #007C7C",
+"y;	c #00DDEF",
+"z;	c #00A3D3",
+"A;	c #00A1DE",
+"B;	c #008CC1",
+"C;	c #0076A3",
+"D;	c #007CAD",
+"E;	c #006189",
+"F;	c #00628D",
+"G;	c #004E6F",
+"H;	c #002E44",
+"I;	c #00617D",
+"J;	c #008CAE",
+"K;	c #00B3DA",
+"L;	c #00BBDD",
+"M;	c #00C8E6",
+"N;	c #00C7E9",
+"O;	c #00B2DA",
+"P;	c #007397",
+"Q;	c #00557C",
+"R;	c #00436A",
+"S;	c #003E62",
+"T;	c #003555",
+"U;	c #002944",
+"V;	c #002335",
+"W;	c #00444E",
+"X;	c #005F65",
+"Y;	c #008C8E",
+"Z;	c #00A9AE",
+"`;	c #00DEF1",
+" >	c #00D0F1",
+".>	c #00B7E8",
+"+>	c #00709F",
+"@>	c #006690",
+"#>	c #00779D",
+"$>	c #009AC2",
+"%>	c #00B7E2",
+"&>	c #00AACF",
+"*>	c #008AAD",
+"=>	c #006B92",
+"->	c #005481",
+";>	c #003C76",
+">>	c #002663",
+",>	c #001754",
+"'>	c #001450",
+")>	c #001A51",
+"!>	c #002155",
+"~>	c #002D5C",
+"{>	c #00346A",
+"]>	c #003587",
+"^>	c #003994",
+"/>	c #004698",
+"(>	c #005AA8",
+"_>	c #0064A9",
+":>	c #006EAB",
+"<>	c #0097DE",
+"[>	c #00CCFF",
+"}>	c #00B8FC",
+"|>	c #0091C2",
+"1>	c #0089B3",
+"2>	c #0091B6",
+"3>	c #00A4C9",
+"4>	c #00A8C5",
+"5>	c #00DDFC",
+"6>	c #00DCF2",
+"7>	c #00656A",
+"8>	c #003837",
+"9>	c #001313",
+"0>	c #000A0C",
+"a>	c #001218",
+"b>	c #000E16",
+"c>	c #00010B",
+"d>	c #000912",
+"e>	c #000E19",
+"f>	c #000A15",
+"g>	c #002630",
+"h>	c #00505B",
+"i>	c #00919F",
+"j>	c #00D4EC",
+"k>	c #00B5E7",
+"l>	c #00C9FF",
+"m>	c #0077A6",
+"n>	c #0088C0",
+"o>	c #006790",
+"p>	c #005981",
+"q>	c #006999",
+"r>	c #002A42",
+"s>	c #003D54",
+"t>	c #006482",
+"u>	c #008EB3",
+"v>	c #00A3C7",
+"w>	c #00FAFF",
+"x>	c #007184",
+"y>	c #00516E",
+"z>	c #004A6B",
+"A>	c #004668",
+"B>	c #003653",
+"C>	c #00263A",
+"D>	c #001D2D",
+"E>	c #001520",
+"F>	c #001017",
+"G>	c #00363D",
+"H>	c #005E68",
+"I>	c #008494",
+"J>	c #00BCDB",
+"K>	c #00D1F7",
+"L>	c #00CBF7",
+"M>	c #00C3F9",
+"N>	c #00BFF4",
+"O>	c #009BC1",
+"P>	c #006C88",
+"Q>	c #003953",
+"R>	c #002743",
+"S>	c #001935",
+"T>	c #000E2C",
+"U>	c #000823",
+"V>	c #000821",
+"W>	c #000C1D",
+"X>	c #000F1B",
+"Y>	c #001821",
+"Z>	c #002032",
+"`>	c #001F4C",
+" ,	c #00215D",
+".,	c #001C57",
+"+,	c #003069",
+"@,	c #00437E",
+"#,	c #005590",
+"$,	c #0080C7",
+"%,	c #00B3FF",
+"&,	c #00CBEF",
+"*,	c #00C2D9",
+"=,	c #00BECF",
+"-,	c #00CADD",
+";,	c #006D72",
+">,	c #00120E",
+",,	c #000D06",
+"',	c #000805",
+"),	c #001214",
+"!,	c #000207",
+"~,	c #03000A",
+"{,	c #010009",
+"],	c #00000C",
+"^,	c #000F19",
+"/,	c #001E27",
+"(,	c #002229",
+"_,	c #004A53",
+":,	c #008F9C",
+"<,	c #00DAFA",
+"[,	c #00F4FF",
+"},	c #00B5F3",
+"|,	c #00B1EA",
+"1,	c #0093C2",
+"2,	c #007DA7",
+"3,	c #0079A7",
+"4,	c #006C99",
+"5,	c #006795",
+"6,	c #00476A",
+"7,	c #00567B",
+"8,	c #005671",
+"9,	c #005469",
+"0,	c #003C4E",
+"a,	c #00597A",
+"b,	c #0078A6",
+"c,	c #0092C8",
+"d,	c #00A4DB",
+"e,	c #00D7FF",
+"f,	c #00FCFF",
+"g,	c #00535A",
+"h,	c #00394C",
+"i,	c #003241",
+"j,	c #003340",
+"k,	c #00313F",
+"l,	c #002C3A",
+"m,	c #002E3F",
+"n,	c #001F2F",
+"o,	c #001B2D",
+"p,	c #000F23",
+"q,	c #000719",
+"r,	c #003E4D",
+"s,	c #008A98",
+"t,	c #00BAC2",
+"u,	c #00EDF3",
+"v,	c #00D2FC",
+"w,	c #00BFF7",
+"x,	c #0096C6",
+"y,	c #006283",
+"z,	c #003F58",
+"A,	c #001A31",
+"B,	c #001629",
+"C,	c #001627",
+"D,	c #000E1E",
+"E,	c #00030F",
+"F,	c #00040D",
+"G,	c #00040C",
+"H,	c #00070E",
+"I,	c #001117",
+"J,	c #000415",
+"K,	c #000023",
+"L,	c #000330",
+"M,	c #000C37",
+"N,	c #001439",
+"O,	c #001536",
+"P,	c #002645",
+"Q,	c #004F73",
+"R,	c #0074A8",
+"S,	c #00B9FF",
+"T,	c #00CEF7",
+"U,	c #00EEF3",
+"V,	c #00E3D9",
+"W,	c #007B77",
+"X,	c #00211B",
+"Y,	c #000A00",
+"Z,	c #001005",
+"`,	c #000800",
+" '	c #000F09",
+".'	c #00100F",
+"+'	c #00100D",
+"@'	c #00302E",
+"#'	c #003038",
+"$'	c #005262",
+"%'	c #00BCED",
+"&'	c #00E3FF",
+"*'	c #00C6F4",
+"='	c #00B5DE",
+"-'	c #009AC0",
+";'	c #0082AB",
+">'	c #0075A7",
+",'	c #0076B0",
+"''	c #006090",
+")'	c #005F89",
+"!'	c #007EA6",
+"~'	c #007995",
+"{'	c #007086",
+"]'	c #005E6E",
+"^'	c #00495C",
+"/'	c #006C93",
+"('	c #0084BC",
+"_'	c #009ADC",
+":'	c #00A9ED",
+"<'	c #00635D",
+"['	c #003034",
+"}'	c #00111E",
+"|'	c #002234",
+"1'	c #00353F",
+"2'	c #002732",
+"3'	c #001D2C",
+"4'	c #000215",
+"5'	c #000218",
+"6'	c #080016",
+"7'	c #020011",
+"8'	c #000A1C",
+"9'	c #001A27",
+"0'	c #005C64",
+"a'	c #00C5C5",
+"b'	c #00EAE4",
+"c'	c #00EFF1",
+"d'	c #007599",
+"e'	c #00475F",
+"f'	c #00283E",
+"g'	c #00172E",
+"h'	c #000E23",
+"i'	c #000517",
+"j'	c #00010C",
+"k'	c #000710",
+"l'	c #000D1A",
+"m'	c #001321",
+"n'	c #001120",
+"o'	c #00041B",
+"p'	c #00001E",
+"q'	c #000721",
+"r'	c #002036",
+"s'	c #003750",
+"t'	c #004769",
+"u'	c #005A89",
+"v'	c #009DD9",
+"w'	c #00FFFB",
+"x'	c #00AF9F",
+"y'	c #004039",
+"z'	c #00130B",
+"A'	c #000C08",
+"B'	c #00110F",
+"C'	c #00180D",
+"D'	c #00333C",
+"E'	c #002A3F",
+"F'	c #00648F",
+"G'	c #00B6FB",
+"H'	c #00D3FB",
+"I'	c #00C1E4",
+"J'	c #00ABD0",
+"K'	c #0097C1",
+"L'	c #007CB2",
+"M'	c #0071AB",
+"N'	c #006093",
+"O'	c #006594",
+"P'	c #0094C1",
+"Q'	c #0099BF",
+"R'	c #0087A2",
+"S'	c #00708A",
+"T'	c #006A8A",
+"U'	c #008694",
+"V'	c #007582",
+"W'	c #005C69",
+"X'	c #003E51",
+"Y'	c #006991",
+"Z'	c #007EB3",
+"`'	c #0096DA",
+" )	c #00AAEF",
+".)	c #00C0FF",
+"+)	c #003D3B",
+"@)	c #001114",
+"#)	c #001422",
+"$)	c #002A45",
+"%)	c #001C30",
+"&)	c #001325",
+"*)	c #00071A",
+"=)	c #00020E",
+"-)	c #00131E",
+";)	c #000B13",
+">)	c #002C33",
+",)	c #00919C",
+"')	c #00DAE7",
+"))	c #00C7D1",
+"!)	c #006D78",
+"~)	c #00424C",
+"{)	c #000F1D",
+"])	c #000919",
+"^)	c #000A1E",
+"/)	c #00091E",
+"()	c #00031A",
+"_)	c #00061D",
+":)	c #000C23",
+"<)	c #00112C",
+"[)	c #001632",
+"})	c #001838",
+"|)	c #001537",
+"1)	c #000A30",
+"2)	c #000D3E",
+"3)	c #000E44",
+"4)	c #00093D",
+"5)	c #000F30",
+"6)	c #00112E",
+"7)	c #002544",
+"8)	c #003659",
+"9)	c #003961",
+"0)	c #00527A",
+"a)	c #009BC0",
+"b)	c #00DCF7",
+"c)	c #00B5B5",
+"d)	c #007771",
+"e)	c #001B19",
+"f)	c #000505",
+"g)	c #110002",
+"h)	c #00040F",
+"i)	c #000109",
+"j)	c #00202F",
+"k)	c #003B5D",
+"l)	c #0092D0",
+"m)	c #00D9FC",
+"n)	c #00C9E8",
+"o)	c #00BADF",
+"p)	c #00A4D2",
+"q)	c #006396",
+"r)	c #004D7A",
+"s)	c #007FA4",
+"t)	c #008CAC",
+"u)	c #0089A6",
+"v)	c #008AAA",
+"w)	c #006889",
+"x)	c #006385",
+"y)	c #007979",
+"z)	c #007474",
+"A)	c #009494",
+"B)	c #007D80",
+"C)	c #004C55",
+"D)	c #003142",
+"E)	c #005E80",
+"F)	c #006D9C",
+"G)	c #0085C2",
+"H)	c #0099D7",
+"I)	c #00ABE7",
+"J)	c #00C1F8",
+"K)	c #006564",
+"L)	c #001415",
+"M)	c #00151B",
+"N)	c #001322",
+"O)	c #000B1E",
+"P)	c #000E17",
+"Q)	c #00161B",
+"R)	c #001E22",
+"S)	c #001D23",
+"T)	c #001B22",
+"U)	c #00505D",
+"V)	c #008AA4",
+"W)	c #006374",
+"X)	c #001D1E",
+"Y)	c #000E0E",
+"Z)	c #000A10",
+"`)	c #000E1B",
+" !	c #000A24",
+".!	c #000927",
+"+!	c #00092C",
+"@!	c #000E32",
+"#!	c #00143E",
+"$!	c #001B4B",
+"%!	c #002150",
+"&!	c #002055",
+"*!	c #002059",
+"=!	c #001E55",
+"-!	c #000B4A",
+";!	c #001C62",
+">!	c #001565",
+",!	c #00195A",
+"'!	c #001E4A",
+")!	c #000A2F",
+"!!	c #00153C",
+"~!	c #001D48",
+"{!	c #001A41",
+"]!	c #005573",
+"^!	c #00777F",
+"/!	c #005252",
+"(!	c #000D12",
+"_!	c #0C0009",
+":!	c #010016",
+"<!	c #02001A",
+"[!	c #001930",
+"}!	c #001D34",
+"|!	c #002947",
+"1!	c #006B99",
+"2!	c #00E2FB",
+"3!	c #00DFFA",
+"4!	c #00D7F5",
+"5!	c #00C1EA",
+"6!	c #009FCE",
+"7!	c #0072A3",
+"8!	c #00507F",
+"9!	c #00527C",
+"0!	c #008DB8",
+"a!	c #0099BA",
+"b!	c #00AAD2",
+"c!	c #007EA3",
+"d!	c #0083AE",
+"e!	c #00687F",
+"f!	c #006769",
+"g!	c #007072",
+"h!	c #00A3A2",
+"i!	c #009694",
+"j!	c #009497",
+"k!	c #004F59",
+"l!	c #00394B",
+"m!	c #005676",
+"n!	c #008CC5",
+"o!	c #009AD2",
+"p!	c #00B5EA",
+"q!	c #00C2E3",
+"r!	c #004043",
+"s!	c #000C12",
+"t!	c #001921",
+"u!	c #000A16",
+"v!	c #000418",
+"w!	c #000F16",
+"x!	c #001818",
+"y!	c #001C1A",
+"z!	c #001311",
+"A!	c #002929",
+"B!	c #002F40",
+"C!	c #00395A",
+"D!	c #002436",
+"E!	c #000A05",
+"F!	c #00070A",
+"G!	c #000813",
+"H!	c #00081E",
+"I!	c #000828",
+"J!	c #000A34",
+"K!	c #000E3B",
+"L!	c #001245",
+"M!	c #001D57",
+"N!	c #002466",
+"O!	c #00286E",
+"P!	c #002977",
+"Q!	c #002C7E",
+"R!	c #00297E",
+"S!	c #00287D",
+"T!	c #002E81",
+"U!	c #002E88",
+"V!	c #002684",
+"W!	c #002579",
+"X!	c #002968",
+"Y!	c #00295B",
+"Z!	c #001E4B",
+"`!	c #000A38",
+" ~	c #00204B",
+".~	c #001030",
+"+~	c #005064",
+"@~	c #00606B",
+"#~	c #003941",
+"$~	c #000410",
+"%~	c #100014",
+"&~	c #000030",
+"*~	c #00021C",
+"=~	c #00021D",
+"-~	c #000518",
+";~	c #001228",
+">~	c #005370",
+",~	c #00EFFF",
+"'~	c #00C8F5",
+")~	c #006FA0",
+"!~	c #005B8A",
+"~~	c #005581",
+"{~	c #00486D",
+"]~	c #008EB6",
+"^~	c #0095B6",
+"/~	c #00BFF9",
+"(~	c #009ECB",
+"_~	c #00697F",
+":~	c #00525B",
+"<~	c #00646C",
+"[~	c #008C98",
+"}~	c #00818A",
+"|~	c #009CA5",
+"1~	c #008E97",
+"2~	c #004A58",
+"3~	c #003C4F",
+"4~	c #00506F",
+"5~	c #00658D",
+"6~	c #008BC4",
+"7~	c #0096CF",
+"8~	c #00AEE6",
+"9~	c #00B1DF",
+"0~	c #00AFD4",
+"a~	c #00222C",
+"b~	c #00121A",
+"c~	c #00020F",
+"d~	c #00181D",
+"e~	c #002F28",
+"f~	c #002820",
+"g~	c #001E18",
+"h~	c #001414",
+"i~	c #002035",
+"j~	c #001E3D",
+"k~	c #00110B",
+"l~	c #000B0F",
+"m~	c #000717",
+"n~	c #000E48",
+"o~	c #001E62",
+"p~	c #003081",
+"q~	c #003487",
+"r~	c #003692",
+"s~	c #003696",
+"t~	c #003397",
+"u~	c #003BA3",
+"v~	c #0049BB",
+"w~	c #0043B1",
+"x~	c #00379E",
+"y~	c #003193",
+"z~	c #00388C",
+"A~	c #00347C",
+"B~	c #002A66",
+"C~	c #002259",
+"D~	c #00154B",
+"E~	c #001E50",
+"F~	c #000E30",
+"G~	c #00455C",
+"H~	c #004D5F",
+"I~	c #002A38",
+"J~	c #070011",
+"K~	c #000A2B",
+"L~	c #000C2C",
+"M~	c #000C2B",
+"N~	c #002133",
+"O~	c #002A41",
+"P~	c #004857",
+"Q~	c #00C5F7",
+"R~	c #0093C4",
+"S~	c #0072A4",
+"T~	c #006194",
+"U~	c #00557F",
+"V~	c #003B5C",
+"W~	c #00799C",
+"X~	c #008BA8",
+"Y~	c #00A5D2",
+"Z~	c #00819C",
+"`~	c #00374E",
+" {	c #005872",
+".{	c #0085A4",
+"+{	c #00718E",
+"@{	c #004052",
+"#{	c #003B4F",
+"${	c #004D6D",
+"%{	c #006188",
+"&{	c #0075A8",
+"*{	c #009CD8",
+"={	c #00AAE6",
+"-{	c #00B7EC",
+";{	c #00B2E4",
+">{	c #0089A9",
+",{	c #002431",
+"'{	c #001B26",
+"){	c #000A14",
+"!{	c #05000B",
+"~{	c #100010",
+"{{	c #020016",
+"]{	c #001F1A",
+"^{	c #001213",
+"/{	c #001722",
+"({	c #001E30",
+"_{	c #00223F",
+":{	c #00051D",
+"<{	c #00040B",
+"[{	c #00090E",
+"}{	c #000816",
+"|{	c #000836",
+"1{	c #000D4D",
+"2{	c #001967",
+"3{	c #002378",
+"4{	c #003192",
+"5{	c #003CA2",
+"6{	c #003FA2",
+"7{	c #0042A2",
+"8{	c #0040A5",
+"9{	c #003C9E",
+"0{	c #003B9A",
+"a{	c #0043AD",
+"b{	c #0056CA",
+"c{	c #0053C4",
+"d{	c #0046B9",
+"e{	c #0044B2",
+"f{	c #0045A4",
+"g{	c #003D8A",
+"h{	c #003074",
+"i{	c #002365",
+"j{	c #001456",
+"k{	c #00184F",
+"l{	c #002C4F",
+"m{	c #00425E",
+"n{	c #004659",
+"o{	c #003244",
+"p{	c #000A23",
+"q{	c #00070D",
+"r{	c #000414",
+"s{	c #00162C",
+"t{	c #001A35",
+"u{	c #001E3E",
+"v{	c #001F41",
+"w{	c #001C36",
+"x{	c #002038",
+"y{	c #00233A",
+"z{	c #002639",
+"A{	c #002535",
+"B{	c #002938",
+"C{	c #001927",
+"D{	c #005A62",
+"E{	c #00BBEE",
+"F{	c #0096CC",
+"G{	c #0076AC",
+"H{	c #006495",
+"I{	c #005178",
+"J{	c #00445F",
+"K{	c #006F90",
+"L{	c #00839F",
+"M{	c #009BBB",
+"N{	c #00A2C6",
+"O{	c #00A1CB",
+"P{	c #00B1DA",
+"Q{	c #0092AD",
+"R{	c #00747E",
+"S{	c #003A54",
+"T{	c #00445E",
+"U{	c #005C89",
+"V{	c #003A56",
+"W{	c #003B55",
+"X{	c #004D70",
+"Y{	c #006D9B",
+"Z{	c #008BC2",
+"`{	c #00A4DD",
+" ]	c #009DCD",
+".]	c #008FBA",
+"+]	c #005974",
+"@]	c #000613",
+"#]	c #09000C",
+"$]	c #000A13",
+"%]	c #000C13",
+"&]	c #00090D",
+"*]	c #001C27",
+"=]	c #003E5D",
+"-]	c #001D33",
+";]	c #001122",
+">]	c #000516",
+",]	c #000320",
+"']	c #000D37",
+")]	c #001051",
+"!]	c #001971",
+"~]	c #00278E",
+"{]	c #0034A5",
+"]]	c #0041B6",
+"^]	c #004DC1",
+"/]	c #004CB9",
+"(]	c #004CB2",
+"_]	c #004AAE",
+":]	c #00419A",
+"<]	c #003A92",
+"[]	c #0047A8",
+"}]	c #0061D3",
+"|]	c #005FD2",
+"1]	c #005AD5",
+"2]	c #005FE3",
+"3]	c #0061D4",
+"4]	c #004CA5",
+"5]	c #003781",
+"6]	c #00276B",
+"7]	c #001A60",
+"8]	c #001E5B",
+"9]	c #002E53",
+"0]	c #003C56",
+"a]	c #005165",
+"b]	c #004258",
+"c]	c #00021E",
+"d]	c #000910",
+"e]	c #001216",
+"f]	c #001521",
+"g]	c #001E37",
+"h]	c #002B4E",
+"i]	c #00345B",
+"j]	c #003A60",
+"k]	c #003957",
+"l]	c #003C55",
+"m]	c #003F55",
+"n]	c #003442",
+"o]	c #00B7EE",
+"p]	c #009CD6",
+"q]	c #007EB4",
+"r]	c #006493",
+"s]	c #002039",
+"t]	c #004256",
+"u]	c #006780",
+"v]	c #00849D",
+"w]	c #00AED6",
+"x]	c #008CA2",
+"y]	c #006B77",
+"z]	c #004655",
+"A]	c #005A74",
+"B]	c #004A81",
+"C]	c #00385F",
+"D]	c #003351",
+"E]	c #004C71",
+"F]	c #005980",
+"G]	c #007AA5",
+"H]	c #0094C8",
+"I]	c #0084AF",
+"J]	c #0080AA",
+"K]	c #007EA7",
+"L]	c #00536D",
+"M]	c #002034",
+"N]	c #001625",
+"O]	c #07000B",
+"P]	c #0A0009",
+"Q]	c #010008",
+"R]	c #000D14",
+"S]	c #00171C",
+"T]	c #001A1C",
+"U]	c #000B0C",
+"V]	c #00030C",
+"W]	c #002635",
+"X]	c #006376",
+"Y]	c #005F79",
+"Z]	c #002948",
+"`]	c #001B43",
+" ^	c #001443",
+".^	c #001650",
+"+^	c #001E74",
+"@^	c #002689",
+"#^	c #002B91",
+"$^	c #003BAB",
+"%^	c #0048B7",
+"&^	c #0052C2",
+"*^	c #0057C7",
+"=^	c #005CCB",
+"-^	c #005BC6",
+";^	c #004BA7",
+">^	c #0048A1",
+",^	c #005DC8",
+"'^	c #0064CE",
+")^	c #0073EE",
+"!^	c #0073FC",
+"~^	c #006CEF",
+"{^	c #007AFF",
+"]^	c #003D85",
+"^^	c #00337E",
+"/^	c #00236A",
+"(^	c #001F52",
+"_^	c #00375E",
+":^	c #006A85",
+"<^	c #005D78",
+"[^	c #000D29",
+"}^	c #001013",
+"|^	c #000F0A",
+"1^	c #001010",
+"2^	c #00151C",
+"3^	c #001220",
+"4^	c #001429",
+"5^	c #002D50",
+"6^	c #00365E",
+"7^	c #004470",
+"8^	c #00456B",
+"9^	c #003B5B",
+"0^	c #005371",
+"a^	c #003E52",
+"b^	c #007783",
+"c^	c #00C5BF",
+"d^	c #00A8DA",
+"e^	c #008EC0",
+"f^	c #0079AB",
+"g^	c #006491",
+"h^	c #003F5E",
+"i^	c #002237",
+"j^	c #003542",
+"k^	c #00677C",
+"l^	c #0081A0",
+"m^	c #0096B8",
+"n^	c #009EBF",
+"o^	c #007285",
+"p^	c #005E66",
+"q^	c #007789",
+"r^	c #00708C",
+"s^	c #008DDC",
+"t^	c #00589A",
+"u^	c #003762",
+"v^	c #003254",
+"w^	c #00466C",
+"x^	c #006990",
+"y^	c #0081A8",
+"z^	c #006583",
+"A^	c #005472",
+"B^	c #003246",
+"C^	c #001523",
+"D^	c #000D17",
+"E^	c #030007",
+"F^	c #00060C",
+"G^	c #000F12",
+"H^	c #000D11",
+"I^	c #001E20",
+"J^	c #001A19",
+"K^	c #00211F",
+"L^	c #000E0F",
+"M^	c #16000A",
+"N^	c #0B000C",
+"O^	c #001926",
+"P^	c #003844",
+"Q^	c #00A0B0",
+"R^	c #00839E",
+"S^	c #004D7B",
+"T^	c #002E65",
+"U^	c #002865",
+"V^	c #002D79",
+"W^	c #003298",
+"X^	c #0036A2",
+"Y^	c #003CAE",
+"Z^	c #0048C0",
+"`^	c #0051C8",
+" /	c #005ACE",
+"./	c #005CC2",
+"+/	c #005DC0",
+"@/	c #0052AD",
+"#/	c #0059B7",
+"$/	c #0069D2",
+"%/	c #006FDD",
+"&/	c #0094FF",
+"*/	c #007FFF",
+"=/	c #0068D0",
+"-/	c #0065C7",
+";/	c #004D9F",
+">/	c #003B86",
+",/	c #002B70",
+"'/	c #001D51",
+")/	c #004870",
+"!/	c #004D68",
+"~/	c #007C94",
+"{/	c #0086A7",
+"]/	c #002F4D",
+"^/	c #000D26",
+"//	c #000C11",
+"(/	c #000D13",
+"_/	c #000F1C",
+":/	c #001E44",
+"</	c #003561",
+"[/	c #004170",
+"}/	c #004C7A",
+"|/	c #00547C",
+"1/	c #005B80",
+"2/	c #004763",
+"3/	c #004860",
+"4/	c #0093A8",
+"5/	c #009293",
+"6/	c #009699",
+"7/	c #00B0C7",
+"8/	c #00B0D8",
+"9/	c #0096C4",
+"0/	c #008FBF",
+"a/	c #0083B4",
+"b/	c #003F5B",
+"c/	c #001121",
+"d/	c #000715",
+"e/	c #003347",
+"f/	c #006784",
+"g/	c #008BAD",
+"h/	c #00B1D6",
+"i/	c #006578",
+"j/	c #007673",
+"k/	c #00878C",
+"l/	c #008A9A",
+"m/	c #0089AA",
+"n/	c #0075B4",
+"o/	c #002751",
+"p/	c #003E64",
+"q/	c #004F74",
+"r/	c #00597B",
+"s/	c #00708F",
+"t/	c #007D9E",
+"u/	c #00738F",
+"v/	c #006C89",
+"w/	c #0084AD",
+"x/	c #000915",
+"y/	c #000C10",
+"z/	c #00090C",
+"A/	c #00191C",
+"B/	c #00373B",
+"C/	c #002A2A",
+"D/	c #001C1B",
+"E/	c #001514",
+"F/	c #000D10",
+"G/	c #13000B",
+"H/	c #0D0005",
+"I/	c #080010",
+"J/	c #00101E",
+"K/	c #006B78",
+"L/	c #00BCC8",
+"M/	c #00ADC5",
+"N/	c #0071A9",
+"O/	c #004685",
+"P/	c #003E83",
+"Q/	c #004297",
+"R/	c #0042A5",
+"S/	c #0044AE",
+"T/	c #0049BC",
+"U/	c #004DBB",
+"V/	c #0053C1",
+"W/	c #005AC3",
+"X/	c #0061CA",
+"Y/	c #006AD8",
+"Z/	c #0069D3",
+"`/	c #0054A8",
+" (	c #004591",
+".(	c #004FA3",
+"+(	c #0064C6",
+"@(	c #0073E4",
+"#(	c #008AFF",
+"$(	c #006EE5",
+"%(	c #0062BF",
+"&(	c #0069CA",
+"*(	c #005DB9",
+"=(	c #0051AA",
+"-(	c #00367F",
+";(	c #00356B",
+">(	c #006D89",
+",(	c #00A1BC",
+"'(	c #0092AC",
+")(	c #006086",
+"!(	c #00102B",
+"~(	c #001823",
+"{(	c #00080E",
+"](	c #000B34",
+"^(	c #004290",
+"/(	c #003566",
+"((	c #004376",
+"_(	c #00578C",
+":(	c #004465",
+"<(	c #007090",
+"[(	c #00BDDE",
+"}(	c #00D4E3",
+"|(	c #00CAD7",
+"1(	c #00A0B8",
+"2(	c #008DAA",
+"3(	c #008BB2",
+"4(	c #00779B",
+"5(	c #00739A",
+"6(	c #00324A",
+"7(	c #001026",
+"8(	c #000D25",
+"9(	c #00061E",
+"0(	c #003249",
+"a(	c #007595",
+"b(	c #006781",
+"c(	c #006F8D",
+"d(	c #007773",
+"e(	c #009EA1",
+"f(	c #008996",
+"g(	c #0095B3",
+"h(	c #007AA2",
+"i(	c #00436C",
+"j(	c #004575",
+"k(	c #00224F",
+"l(	c #00375F",
+"m(	c #005C7B",
+"n(	c #006680",
+"o(	c #006177",
+"p(	c #00657A",
+"q(	c #006984",
+"r(	c #002933",
+"s(	c #001518",
+"t(	c #000F13",
+"u(	c #001014",
+"v(	c #000106",
+"w(	c #0A0007",
+"x(	c #000F1E",
+"y(	c #002735",
+"z(	c #008C9D",
+"A(	c #00B1BE",
+"B(	c #00BCD7",
+"C(	c #008FCA",
+"D(	c #0067AE",
+"E(	c #00579F",
+"F(	c #0055A6",
+"G(	c #0055B2",
+"H(	c #0056C3",
+"I(	c #0057C6",
+"J(	c #0053BB",
+"K(	c #005AC4",
+"L(	c #005AC0",
+"M(	c #005BB7",
+"N(	c #0053A6",
+"O(	c #004388",
+"P(	c #003369",
+"Q(	c #002C59",
+"R(	c #002E5F",
+"S(	c #003F80",
+"T(	c #0051A5",
+"U(	c #005FD0",
+"V(	c #0062D0",
+"W(	c #0072E1",
+"X(	c #0078E3",
+"Y(	c #0068D2",
+"Z(	c #004BA1",
+"`(	c #00417B",
+" _	c #003861",
+"._	c #00BFDA",
+"+_	c #009BB3",
+"@_	c #008EB9",
+"#_	c #003E5B",
+"$_	c #00051E",
+"%_	c #002554",
+"&_	c #00376C",
+"*_	c #00487E",
+"=_	c #004E7D",
+"-_	c #004E74",
+";_	c #005A79",
+">_	c #0081A3",
+",_	c #00E1F7",
+"'_	c #008EAE",
+")_	c #00708D",
+"!_	c #006D86",
+"~_	c #005A72",
+"{_	c #000F27",
+"]_	c #00233C",
+"^_	c #000323",
+"/_	c #000F32",
+"(_	c #000A27",
+"__	c #00435E",
+":_	c #006D92",
+"<_	c #007679",
+"[_	c #007C85",
+"}_	c #0090A4",
+"|_	c #007B9A",
+"1_	c #005678",
+"2_	c #001740",
+"3_	c #003A6A",
+"4_	c #002F63",
+"5_	c #001345",
+"6_	c #00234F",
+"7_	c #005580",
+"8_	c #005E7C",
+"9_	c #006072",
+"0_	c #006979",
+"a_	c #0091A5",
+"b_	c #004450",
+"c_	c #001315",
+"d_	c #000B0B",
+"e_	c #001617",
+"f_	c #001115",
+"g_	c #001C22",
+"h_	c #00161D",
+"i_	c #000309",
+"j_	c #02000B",
+"k_	c #00111F",
+"l_	c #000D1E",
+"m_	c #006579",
+"n_	c #0090A6",
+"o_	c #00B1C7",
+"p_	c #00B4D3",
+"q_	c #00A7E1",
+"r_	c #008CCE",
+"s_	c #006FAD",
+"t_	c #0064A8",
+"u_	c #006BC3",
+"v_	c #0065C1",
+"w_	c #0055AF",
+"x_	c #0057B7",
+"y_	c #004FA7",
+"z_	c #00458E",
+"A_	c #00366E",
+"B_	c #001847",
+"C_	c #000832",
+"D_	c #000E2F",
+"E_	c #000325",
+"F_	c #002354",
+"G_	c #003787",
+"H_	c #0059CB",
+"I_	c #006BDA",
+"J_	c #006DD3",
+"K_	c #006BD0",
+"L_	c #006AD5",
+"M_	c #003A75",
+"N_	c #0077A5",
+"O_	c #00A1C2",
+"P_	c #00B7D0",
+"Q_	c #00BDD7",
+"R_	c #0099C0",
+"S_	c #007298",
+"T_	c #002139",
+"U_	c #000E21",
+"V_	c #001C2E",
+"W_	c #000E28",
+"X_	c #001538",
+"Y_	c #002651",
+"Z_	c #004C7E",
+"`_	c #004E76",
+" :	c #005675",
+".:	c #0088AA",
+"+:	c #00ABC4",
+"@:	c #006877",
+"#:	c #000731",
+"$:	c #03002D",
+"%:	c #000334",
+"&:	c #001844",
+"*:	c #000A2E",
+"=:	c #005685",
+"-:	c #00596B",
+";:	c #006F91",
+">:	c #004666",
+",:	c #001940",
+"':	c #00447B",
+"):	c #00093E",
+"!:	c #00205B",
+"~:	c #00255B",
+"{:	c #002A59",
+"]:	c #00476C",
+"^:	c #00556E",
+"/:	c #007385",
+"(:	c #00A1AF",
+"_:	c #004445",
+"::	c #000E0C",
+"<:	c #001614",
+"[:	c #000A0E",
+"}:	c #000B11",
+"|:	c #00121F",
+"1:	c #00101B",
+"2:	c #000712",
+"3:	c #00030B",
+"4:	c #000610",
+"5:	c #000C19",
+"6:	c #004C5B",
+"7:	c #00849E",
+"8:	c #009AB7",
+"9:	c #00B3D4",
+"0:	c #00B8EB",
+"a:	c #00A5DF",
+"b:	c #0083B7",
+"c:	c #0078B4",
+"d:	c #0082D2",
+"e:	c #006CB9",
+"f:	c #00569E",
+"g:	c #005AAB",
+"h:	c #00478D",
+"i:	c #003064",
+"j:	c #001C46",
+"k:	c #001034",
+"l:	c #000222",
+"m:	c #00001C",
+"n:	c #00041D",
+"o:	c #00041F",
+"p:	c #000321",
+"q:	c #000931",
+"r:	c #001950",
+"s:	c #003079",
+"t:	c #0057B9",
+"u:	c #006AD1",
+"v:	c #0069CE",
+"w:	c #006CD7",
+"x:	c #0054A9",
+"y:	c #00599C",
+"z:	c #00A0D8",
+"A:	c #00AED0",
+"B:	c #00B0C4",
+"C:	c #00B6CE",
+"D:	c #00ACD2",
+"E:	c #0093BD",
+"F:	c #007699",
+"G:	c #00455E",
+"H:	c #001025",
+"I:	c #00192A",
+"J:	c #001C35",
+"K:	c #00213E",
+"L:	c #00345C",
+"M:	c #00416A",
+"N:	c #002A4B",
+"O:	c #004D6A",
+"P:	c #009FC1",
+"Q:	c #005C67",
+"R:	c #00073B",
+"S:	c #090043",
+"T:	c #010035",
+"U:	c #000B43",
+"V:	c #001A44",
+"W:	c #002344",
+"X:	c #003055",
+"Y:	c #00204A",
+"Z:	c #002661",
+"`:	c #002069",
+" <	c #001C64",
+".<	c #002575",
+"+<	c #00386B",
+"@<	c #004064",
+"#<	c #00A5B8",
+"$<	c #004C48",
+"%<	c #001A17",
+"&<	c #000509",
+"*<	c #030012",
+"=<	c #00080C",
+"-<	c #001B20",
+";<	c #007B8C",
+"><	c #008CA5",
+",<	c #00A9D3",
+"'<	c #00BAE4",
+")<	c #00C0EC",
+"!<	c #00A6D5",
+"~<	c #0091C3",
+"{<	c #0091D1",
+"]<	c #0088D3",
+"^<	c #006EB5",
+"/<	c #005697",
+"(<	c #002F5A",
+"_<	c #000B2F",
+":<	c #020013",
+"<<	c #0B0012",
+"[<	c #07000E",
+"}<	c #080018",
+"|<	c #000123",
+"1<	c #00002C",
+"2<	c #000740",
+"3<	c #004294",
+"4<	c #006BDC",
+"5<	c #0071E3",
+"6<	c #0065CA",
+"7<	c #0056AD",
+"8<	c #0076CA",
+"9<	c #009FDA",
+"0<	c #00B4D8",
+"a<	c #00B9CE",
+"b<	c #00A2B9",
+"c<	c #009DC6",
+"d<	c #0090B6",
+"e<	c #007E9E",
+"f<	c #00647E",
+"g<	c #004255",
+"h<	c #001C2A",
+"i<	c #001622",
+"j<	c #001727",
+"k<	c #001D2F",
+"l<	c #001E34",
+"m<	c #005E77",
+"n<	c #00A7C1",
+"o<	c #00E3E3",
+"p<	c #00C9C7",
+"q<	c #004D67",
+"r<	c #003265",
+"s<	c #000A47",
+"t<	c #00003D",
+"u<	c #070044",
+"v<	c #000443",
+"w<	c #001F54",
+"x<	c #001C45",
+"y<	c #030024",
+"z<	c #002462",
+"A<	c #001646",
+"B<	c #00175B",
+"C<	c #001892",
+"D<	c #0024A8",
+"E<	c #0040B8",
+"F<	c #003C8B",
+"G<	c #003769",
+"H<	c #00849A",
+"I<	c #005E56",
+"J<	c #00353C",
+"K<	c #001720",
+"L<	c #000515",
+"M<	c #000417",
+"N<	c #000419",
+"O<	c #001022",
+"P<	c #002935",
+"Q<	c #00515F",
+"R<	c #007D8F",
+"S<	c #00879F",
+"T<	c #00A0C4",
+"U<	c #00A1C9",
+"V<	c #00A5D7",
+"W<	c #00ADDF",
+"X<	c #00A1C6",
+"Y<	c #00BEE4",
+"Z<	c #00BDE9",
+"`<	c #0092BA",
+" [	c #0084B0",
+".[	c #00A4EB",
+"+[	c #0088D5",
+"@[	c #00467B",
+"#[	c #000C33",
+"$[	c #000528",
+"%[	c #06001D",
+"&[	c #1C0011",
+"*[	c #0B0009",
+"=[	c #090012",
+"-[	c #040024",
+";[	c #00123F",
+">[	c #00295D",
+",[	c #0065BB",
+"'[	c #009DFF",
+")[	c #0061A6",
+"![	c #0080DE",
+"~[	c #0085D8",
+"{[	c #00A6EB",
+"][	c #00A7D8",
+"^[	c #00BCDC",
+"/[	c #00B0CB",
+"([	c #00A6C4",
+"_[	c #00ABCE",
+":[	c #009DC3",
+"<[	c #0091B4",
+"[[	c #00546A",
+"}[	c #004153",
+"|[	c #002F41",
+"1[	c #002D3E",
+"2[	c #003A4B",
+"3[	c #007795",
+"4[	c #00E4E8",
+"5[	c #00D5C1",
+"6[	c #00636B",
+"7[	c #004E50",
+"8[	c #004A82",
+"9[	c #00328F",
+"0[	c #000F55",
+"a[	c #000047",
+"b[	c #000546",
+"c[	c #001C5A",
+"d[	c #001C51",
+"e[	c #001130",
+"f[	c #002157",
+"g[	c #002574",
+"h[	c #002B9B",
+"i[	c #003CC0",
+"j[	c #004AA9",
+"k[	c #004D96",
+"l[	c #0094A1",
+"m[	c #005F6C",
+"n[	c #005B6F",
+"o[	c #005972",
+"p[	c #00526B",
+"q[	c #005C7A",
+"r[	c #006B8A",
+"s[	c #007C9E",
+"t[	c #008FB1",
+"u[	c #009EC4",
+"v[	c #00A3CA",
+"w[	c #00A5CE",
+"x[	c #00A5D6",
+"y[	c #00A4CE",
+"z[	c #00B0D7",
+"A[	c #00B3DD",
+"B[	c #0076A2",
+"C[	c #002A56",
+"D[	c #000A3C",
+"E[	c #000C41",
+"F[	c #000038",
+"G[	c #0B0037",
+"H[	c #2A0012",
+"I[	c #1C0010",
+"J[	c #004457",
+"K[	c #009BE4",
+"L[	c #0096E2",
+"M[	c #0093D9",
+"N[	c #0092C5",
+"O[	c #009BBE",
+"P[	c #00A7BB",
+"Q[	c #00A5B5",
+"R[	c #00A3BB",
+"S[	c #0097B5",
+"T[	c #008AAB",
+"U[	c #007498",
+"V[	c #001A2F",
+"W[	c #000A1A",
+"X[	c #000A18",
+"Y[	c #003845",
+"Z[	c #008A9E",
+"`[	c #00E5EA",
+" }	c #00E9E5",
+".}	c #000208",
+"+}	c #006C9C",
+"@}	c #005284",
+"#}	c #003B79",
+"$}	c #00003E",
+"%}	c #001D5C",
+"&}	c #002260",
+"*}	c #001343",
+"=}	c #001A39",
+"-}	c #002567",
+";}	c #002F88",
+">}	c #0037AF",
+",}	c #0045C9",
+"'}	c #0051B7",
+")}	c #004B90",
+"!}	c #00477C",
+"~}	c #000829",
+"{}	c #003A71",
+"]}	c #00C9E0",
+"^}	c #00C1DF",
+"/}	c #007891",
+"(}	c #005D77",
+"_}	c #006D8E",
+":}	c #007295",
+"<}	c #0090BB",
+"[}	c #009AC7",
+"}}	c #0096BF",
+"|}	c #0096BE",
+"1}	c #00A2CE",
+"2}	c #00ADDC",
+"3}	c #00ACDB",
+"4}	c #00A6D6",
+"5}	c #00A4D5",
+"6}	c #00B8EC",
+"7}	c #00A4CF",
+"8}	c #00A4CA",
+"9}	c #00BBE1",
+"0}	c #00A6CC",
+"a}	c #0082A7",
+"b}	c #0072AA",
+"c}	c #001E4D",
+"d}	c #00124B",
+"e}	c #00003A",
+"f}	c #01004A",
+"g}	c #0A0041",
+"h}	c #2D0014",
+"i}	c #0F0005",
+"j}	c #070004",
+"k}	c #000D0E",
+"l}	c #002D31",
+"m}	c #007B88",
+"n}	c #00A8C6",
+"o}	c #009FE0",
+"p}	c #009BEB",
+"q}	c #0098E5",
+"r}	c #008EC9",
+"s}	c #0093BC",
+"t}	c #009FB4",
+"u}	c #009FAD",
+"v}	c #009CB8",
+"w}	c #006C8C",
+"x}	c #004764",
+"y}	c #002540",
+"z}	c #002E3B",
+"A}	c #005260",
+"B}	c #00AFC2",
+"C}	c #00E4E9",
+"D}	c #00E8EA",
+"E}	c #008F93",
+"F}	c #000810",
+"G}	c #070008",
+"H}	c #004D39",
+"I}	c #007BAA",
+"J}	c #005B93",
+"K}	c #002666",
+"L}	c #001252",
+"M}	c #001B57",
+"N}	c #002F79",
+"O}	c #00162E",
+"P}	c #001B42",
+"Q}	c #00276D",
+"R}	c #002D84",
+"S}	c #0033A5",
+"T}	c #003CB7",
+"U}	c #004EBD",
+"V}	c #004086",
+"W}	c #005AB2",
+"X}	c #00292A",
+"Y}	c #00041C",
+"Z}	c #007B8F",
+"`}	c #00C9BC",
+" |	c #00B4D4",
+".|	c #0092B5",
+"+|	c #006E8F",
+"@|	c #00577A",
+"#|	c #00678D",
+"$|	c #00678C",
+"%|	c #007A9E",
+"&|	c #009CC6",
+"*|	c #00B2DE",
+"=|	c #00A3CB",
+"-|	c #009FC7",
+";|	c #00AFDE",
+">|	c #00B4E5",
+",|	c #00A8D8",
+"'|	c #00ADE3",
+")|	c #00A4D3",
+"!|	c #00A8D1",
+"~|	c #00B3D6",
+"{|	c #00AAD4",
+"]|	c #008EC3",
+"^|	c #004879",
+"/|	c #002A64",
+"(|	c #001856",
+"_|	c #000C53",
+":|	c #000141",
+"<|	c #000028",
+"[|	c #000227",
+"}|	c #000104",
+"||	c #0C000C",
+"1|	c #000E1A",
+"2|	c #007882",
+"3|	c #00AECA",
+"4|	c #009ABA",
+"5|	c #00A3D8",
+"6|	c #00A2DE",
+"7|	c #00A4E6",
+"8|	c #00A1E3",
+"9|	c #0098CD",
+"0|	c #0097C2",
+"a|	c #009CBD",
+"b|	c #0097B7",
+"c|	c #008EBC",
+"d|	c #0074A1",
+"e|	c #004F79",
+"f|	c #00385B",
+"g|	c #002849",
+"h|	c #001532",
+"i|	c #000318",
+"j|	c #003143",
+"k|	c #006B7D",
+"l|	c #00E8F5",
+"m|	c #008B91",
+"n|	c #000807",
+"o|	c #005542",
+"p|	c #00B2EA",
+"q|	c #005A86",
+"r|	c #00023E",
+"s|	c #000E47",
+"t|	c #00205F",
+"u|	c #00216B",
+"v|	c #001F62",
+"w|	c #001C4D",
+"x|	c #000A21",
+"y|	c #00183E",
+"z|	c #001750",
+"A|	c #001C67",
+"B|	c #0033A4",
+"C|	c #0047CD",
+"D|	c #004FBE",
+"E|	c #004995",
+"F|	c #001E28",
+"G|	c #00131C",
+"H|	c #005E64",
+"I|	c #00D0CB",
+"J|	c #00A3DB",
+"K|	c #006490",
+"L|	c #004D74",
+"M|	c #007CC1",
+"N|	c #0081C0",
+"O|	c #006693",
+"P|	c #006D91",
+"Q|	c #007394",
+"R|	c #00A6CD",
+"S|	c #00ABD4",
+"T|	c #009BC2",
+"U|	c #009EC9",
+"V|	c #00B9EC",
+"W|	c #00AFDA",
+"X|	c #00A9CE",
+"Y|	c #00ADD1",
+"Z|	c #00B9E5",
+"`|	c #00A8E1",
+" 1	c #0083C1",
+".1	c #004A84",
+"+1	c #000947",
+"@1	c #001C56",
+"#1	c #000437",
+"$1	c #000216",
+"%1	c #000305",
+"&1	c #000214",
+"*1	c #000B19",
+"=1	c #001624",
+"-1	c #006774",
+";1	c #009BB1",
+">1	c #00A4C6",
+",1	c #00ACD9",
+"'1	c #00ABE0",
+")1	c #00A4DA",
+"!1	c #00A4D8",
+"~1	c #00A5D8",
+"{1	c #009ECD",
+"]1	c #009BCB",
+"^1	c #0097C4",
+"/1	c #0074AF",
+"(1	c #005893",
+"_1	c #004A80",
+":1	c #00497A",
+"<1	c #001E42",
+"[1	c #000C24",
+"}1	c #002742",
+"|1	c #004962",
+"11	c #007F9C",
+"21	c #00C2D4",
+"31	c #000B0E",
+"41	c #001817",
+"51	c #008F78",
+"61	c #0083B9",
+"71	c #003E80",
+"81	c #00083E",
+"91	c #001952",
+"01	c #001D68",
+"a1	c #002169",
+"b1	c #001B4D",
+"c1	c #00285E",
+"d1	c #000C29",
+"e1	c #001A49",
+"f1	c #00205D",
+"g1	c #002878",
+"h1	c #003EC1",
+"i1	c #0050E0",
+"j1	c #0054AC",
+"k1	c #006EC1",
+"l1	c #000C0E",
+"m1	c #001715",
+"n1	c #007572",
+"o1	c #00D3D5",
+"p1	c #0067A6",
+"q1	c #003367",
+"r1	c #004178",
+"s1	c #0060B5",
+"t1	c #0086B9",
+"u1	c #007091",
+"v1	c #006885",
+"w1	c #0087A6",
+"x1	c #00ACD5",
+"y1	c #00AAD6",
+"z1	c #00B5E8",
+"A1	c #00ABDE",
+"B1	c #00B0DA",
+"C1	c #00ACD6",
+"D1	c #00A6D3",
+"E1	c #00B8FF",
+"F1	c #0098E7",
+"G1	c #005E9D",
+"H1	c #002E5C",
+"I1	c #000C1A",
+"J1	c #00071B",
+"K1	c #001E2E",
+"L1	c #009DBA",
+"M1	c #00A6C5",
+"N1	c #0094BC",
+"O1	c #00B3E8",
+"P1	c #00A9DD",
+"Q1	c #00A5D4",
+"R1	c #00B0DB",
+"S1	c #00A9D5",
+"T1	c #009DCF",
+"U1	c #0083C0",
+"V1	c #006CB1",
+"W1	c #0062B1",
+"X1	c #0059AB",
+"Y1	c #0057A4",
+"Z1	c #00539C",
+"`1	c #00427B",
+" 2	c #002954",
+".2	c #00183C",
+"+2	c #001539",
+"@2	c #002F55",
+"#2	c #004B6C",
+"$2	c #0083A9",
+"%2	c #008992",
+"&2	c #005358",
+"*2	c #004A4D",
+"=2	c #00706E",
+"-2	c #00AADD",
+";2	c #004379",
+">2	c #002E73",
+",2	c #001B4C",
+"'2	c #001A5C",
+")2	c #001E69",
+"!2	c #00133B",
+"~2	c #000A25",
+"{2	c #001136",
+"]2	c #001C54",
+"^2	c #002772",
+"/2	c #003092",
+"(2	c #0046D2",
+"_2	c #004FC1",
+":2	c #005797",
+"<2	c #009EEA",
+"[2	c #006E68",
+"}2	c #003832",
+"|2	c #003C36",
+"12	c #00695B",
+"22	c #00A799",
+"32	c #0077C3",
+"42	c #002C66",
+"52	c #004386",
+"62	c #0054AE",
+"72	c #005ABE",
+"82	c #0058BD",
+"92	c #0097BC",
+"02	c #007C97",
+"a2	c #007E9C",
+"b2	c #009CC3",
+"c2	c #00B1E2",
+"d2	c #00AEDF",
+"e2	c #00AEDE",
+"f2	c #00AFDD",
+"g2	c #00AEDC",
+"h2	c #00A1D3",
+"i2	c #00AFEA",
+"j2	c #00AFF3",
+"k2	c #009FDF",
+"l2	c #00699B",
+"m2	c #00173B",
+"n2	c #00223C",
+"o2	c #001F30",
+"p2	c #000B18",
+"q2	c #001527",
+"r2	c #005B71",
+"s2	c #008FAC",
+"t2	c #00A5C8",
+"u2	c #00B5E1",
+"v2	c #00ADE1",
+"w2	c #00B9DE",
+"x2	c #00BEE2",
+"y2	c #008CC2",
+"z2	c #0068AE",
+"A2	c #0051A2",
+"B2	c #0059C7",
+"C2	c #0059B9",
+"D2	c #0058AF",
+"E2	c #0059A5",
+"F2	c #004A88",
+"G2	c #002B58",
+"H2	c #000C31",
+"I2	c #000429",
+"J2	c #010023",
+"K2	c #002E51",
+"L2	c #004869",
+"M2	c #00AEE0",
+"N2	c #0082A0",
+"O2	c #0065A1",
+"P2	c #003571",
+"Q2	c #001F57",
+"R2	c #001547",
+"S2	c #001E6C",
+"T2	c #001035",
+"U2	c #00133C",
+"V2	c #00194F",
+"W2	c #00256C",
+"X2	c #002F8C",
+"Y2	c #003FB8",
+"Z2	c #004EAA",
+"`2	c #006794",
+" 3	c #00BAE5",
+".3	c #00DCF3",
+"+3	c #00397D",
+"@3	c #004C9F",
+"#3	c #0071E9",
+"$3	c #0069E2",
+"%3	c #0084A7",
+"&3	c #007A9B",
+"*3	c #0085AE",
+"=3	c #00A2D3",
+"-3	c #00A2CD",
+";3	c #00B5E4",
+">3	c #00A9D6",
+",3	c #00AADA",
+"'3	c #00A7D9",
+")3	c #00B9F2",
+"!3	c #00B0E7",
+"~3	c #00A8D9",
+"{3	c #00B9EF",
+"]3	c #00C4F8",
+"^3	c #003B4E",
+"/3	c #00384F",
+"(3	c #004050",
+"_3	c #006E88",
+":3	c #0092B7",
+"<3	c #0092BB",
+"[3	c #009DCB",
+"}3	c #00A9DE",
+"|3	c #00ACE1",
+"13	c #00A9D2",
+"23	c #00AED1",
+"33	c #00BAD9",
+"43	c #00A4C2",
+"53	c #007A9F",
+"63	c #00608F",
+"73	c #004A90",
+"83	c #003E9E",
+"93	c #0048C1",
+"03	c #004CC2",
+"a3	c #0051B6",
+"b3	c #005FBB",
+"c3	c #007BDC",
+"d3	c #007AD4",
+"e3	c #00427E",
+"f3	c #000F38",
+"g3	c #000932",
+"h3	c #05002A",
+"i3	c #00052E",
+"j3	c #001C42",
+"k3	c #001D3F",
+"l3	c #00668E",
+"m3	c #00C3F5",
+"n3	c #00B4C3",
+"o3	c #004D8B",
+"p3	c #000837",
+"q3	c #001859",
+"r3	c #001A68",
+"s3	c #001753",
+"t3	c #00103C",
+"u3	c #00103D",
+"v3	c #00082C",
+"w3	c #001348",
+"x3	c #002E84",
+"y3	c #003596",
+"z3	c #003CA4",
+"A3	c #004891",
+"B3	c #0079A0",
+"C3	c #00C1D3",
+"D3	c #00B8CB",
+"E3	c #00F1FB",
+"F3	c #0048AC",
+"G3	c #003287",
+"H3	c #0076F3",
+"I3	c #0072E2",
+"J3	c #007AFA",
+"K3	c #00ADE8",
+"L3	c #0088BB",
+"M3	c #0078A3",
+"N3	c #00A1CF",
+"O3	c #0096C0",
+"P3	c #00B1E7",
+"Q3	c #00ADE0",
+"R3	c #00ACDD",
+"S3	c #00B3DF",
+"T3	c #00CBF3",
+"U3	c #00B1D5",
+"V3	c #00323B",
+"W3	c #005362",
+"X3	c #007DA4",
+"Y3	c #0090C2",
+"Z3	c #00A3DD",
+"`3	c #00A0D4",
+" 4	c #00A9CD",
+".4	c #00ABC9",
+"+4	c #00A1B8",
+"@4	c #00758E",
+"#4	c #003F5D",
+"$4	c #002854",
+"%4	c #002E72",
+"&4	c #002F9C",
+"*4	c #0039B8",
+"=4	c #0045C4",
+"-4	c #0058CB",
+";4	c #0072E5",
+">4	c #0098FF",
+",4	c #0095FC",
+"'4	c #0060AC",
+")4	c #00356E",
+"!4	c #000C3A",
+"~4	c #01002E",
+"{4	c #070029",
+"]4	c #03002B",
+"^4	c #00284A",
+"/4	c #0091BD",
+"(4	c #00AEB0",
+"_4	c #008189",
+":4	c #001F42",
+"<4	c #001241",
+"[4	c #001451",
+"}4	c #001043",
+"|4	c #000B31",
+"14	c #00012A",
+"24	c #000A3A",
+"34	c #00124D",
+"44	c #00226D",
+"54	c #002E87",
+"64	c #003691",
+"74	c #003EA2",
+"84	c #004283",
+"94	c #00B9E8",
+"04	c #00C7CE",
+"a4	c #00BBBF",
+"b4	c #002664",
+"c4	c #00378E",
+"d4	c #0062C4",
+"e4	c #006ECD",
+"f4	c #0066C1",
+"g4	c #0080F0",
+"h4	c #00A2D9",
+"i4	c #0079B8",
+"j4	c #0098D0",
+"k4	c #0097CA",
+"l4	c #00ABD1",
+"m4	c #00B5D9",
+"n4	c #00ACCD",
+"o4	c #00A2C1",
+"p4	c #00A9C6",
+"q4	c #00768D",
+"r4	c #005766",
+"s4	c #00333A",
+"t4	c #001F22",
+"u4	c #001411",
+"v4	c #002E37",
+"w4	c #004E6B",
+"x4	c #0077AE",
+"y4	c #0090CB",
+"z4	c #009CCE",
+"A4	c #009CB6",
+"B4	c #007185",
+"C4	c #001A2E",
+"D4	c #000929",
+"E4	c #000F39",
+"F4	c #00144A",
+"G4	c #001A69",
+"H4	c #002EA9",
+"I4	c #004EE3",
+"J4	c #005FD7",
+"K4	c #007AED",
+"L4	c #00A1FF",
+"M4	c #0099FF",
+"N4	c #007FDB",
+"O4	c #0056A4",
+"P4	c #00225F",
+"Q4	c #000638",
+"R4	c #070034",
+"S4	c #001D43",
+"T4	c #002146",
+"U4	c #005D84",
+"V4	c #008A8A",
+"W4	c #00BBC4",
+"X4	c #001C39",
+"Y4	c #001047",
+"Z4	c #00185E",
+"`4	c #00155C",
+" 5	c #00114D",
+".5	c #000A35",
+"+5	c #000835",
+"@5	c #00032C",
+"#5	c #00093C",
+"$5	c #001151",
+"%5	c #002276",
+"&5	c #003293",
+"*5	c #003DA3",
+"=5	c #0042A1",
+"-5	c #004C91",
+";5	c #00A7A3",
+">5	c #00518F",
+",5	c #002A63",
+"'5	c #003B88",
+")5	c #0062B7",
+"!5	c #0072C6",
+"~5	c #0072C9",
+"{5	c #0082E9",
+"]5	c #0093FF",
+"^5	c #0093CC",
+"/5	c #007DDA",
+"(5	c #005EA7",
+"_5	c #00447D",
+":5	c #004571",
+"<5	c #0095D3",
+"[5	c #0097C0",
+"}5	c #00C3E0",
+"|5	c #00B8D2",
+"15	c #009EB4",
+"25	c #0099B1",
+"35	c #006B81",
+"45	c #000702",
+"55	c #00110A",
+"65	c #000D09",
+"75	c #000B22",
+"85	c #00395D",
+"95	c #005E93",
+"05	c #0084BE",
+"a5	c #008EAD",
+"b5	c #0094AB",
+"c5	c #007487",
+"d5	c #00293B",
+"e5	c #001329",
+"f5	c #000F2F",
+"g5	c #000025",
+"h5	c #000432",
+"i5	c #000C47",
+"j5	c #002380",
+"k5	c #0040B9",
+"l5	c #0058C8",
+"m5	c #0072DE",
+"n5	c #008EFB",
+"o5	c #0092F6",
+"p5	c #0088ED",
+"q5	c #0067C3",
+"r5	c #00347F",
+"s5	c #00124E",
+"t5	c #000138",
+"u5	c #01002D",
+"v5	c #000630",
+"w5	c #001C43",
+"x5	c #002248",
+"y5	c #004A74",
+"z5	c #0075AA",
+"A5	c #0093CE",
+"B5	c #00B3EA",
+"C5	c #00A39B",
+"D5	c #009D9B",
+"E5	c #001446",
+"F5	c #00165A",
+"G5	c #00022C",
+"H5	c #000A3F",
+"I5	c #001354",
+"J5	c #00247B",
+"K5	c #0046B2",
+"L5	c #004397",
+"M5	c #005DB0",
+"N5	c #009F98",
+"O5	c #0076A8",
+"P5	c #004673",
+"Q5	c #00417A",
+"R5	c #006BB7",
+"S5	c #007ACA",
+"T5	c #0082DA",
+"U5	c #0086E0",
+"V5	c #0095FF",
+"W5	c #0096F3",
+"X5	c #003A7B",
+"Y5	c #001651",
+"Z5	c #001347",
+"`5	c #004D77",
+" 6	c #009CC8",
+".6	c #00BDCF",
+"+6	c #00ADBA",
+"@6	c #00A3B0",
+"#6	c #006876",
+"$6	c #002634",
+"%6	c #000412",
+"&6	c #001016",
+"*6	c #002018",
+"=6	c #00180F",
+"-6	c #001915",
+";6	c #001F24",
+">6	c #003255",
+",6	c #0083A7",
+"'6	c #0095B7",
+")6	c #00859E",
+"!6	c #00001B",
+"~6	c #03001C",
+"{6	c #000021",
+"]6	c #000634",
+"^6	c #00185D",
+"/6	c #003693",
+"(6	c #0055BC",
+"_6	c #006FD8",
+":6	c #0081E6",
+"<6	c #0088EF",
+"[6	c #0088F4",
+"}6	c #0070D7",
+"|6	c #004398",
+"16	c #002469",
+"26	c #000B45",
+"36	c #000434",
+"46	c #001941",
+"56	c #00284E",
+"66	c #003A69",
+"76	c #00599F",
+"86	c #0068AB",
+"96	c #0081BC",
+"06	c #00C6FF",
+"a6	c #008983",
+"b6	c #00BABC",
+"c6	c #00426E",
+"d6	c #001E43",
+"e6	c #00134F",
+"f6	c #000C48",
+"g6	c #000736",
+"h6	c #000732",
+"i6	c #030020",
+"j6	c #000130",
+"k6	c #000942",
+"l6	c #001256",
+"m6	c #002072",
+"n6	c #00328B",
+"o6	c #0046AA",
+"p6	c #00418B",
+"q6	c #009C8B",
+"r6	c #0074A3",
+"s6	c #005E94",
+"t6	c #004778",
+"u6	c #005591",
+"v6	c #0064AE",
+"w6	c #006DB6",
+"x6	c #0079C8",
+"y6	c #0082D9",
+"z6	c #008DEC",
+"A6	c #008AE5",
+"B6	c #0099F6",
+"C6	c #0098EE",
+"D6	c #0090DC",
+"E6	c #007AC4",
+"F6	c #0067C6",
+"G6	c #00306A",
+"H6	c #00154D",
+"I6	c #00144F",
+"J6	c #000044",
+"K6	c #006489",
+"L6	c #00ADCA",
+"M6	c #00ADBD",
+"N6	c #00C0CB",
+"O6	c #0098A1",
+"P6	c #003C45",
+"Q6	c #00231B",
+"R6	c #001211",
+"S6	c #001219",
+"T6	c #000720",
+"U6	c #002A40",
+"V6	c #005A71",
+"W6	c #00718A",
+"X6	c #00485C",
+"Y6	c #000F24",
+"Z6	c #060019",
+"`6	c #090019",
+" 7	c #00053B",
+".7	c #002C73",
+"+7	c #004DA7",
+"@7	c #006BD3",
+"#7	c #007AE3",
+"$7	c #0085F4",
+"%7	c #008BFF",
+"&7	c #0076E6",
+"*7	c #004595",
+"=7	c #001448",
+"-7	c #000E37",
+";7	c #001338",
+">7	c #003C91",
+",7	c #00469E",
+"'7	c #0065A9",
+")7	c #008DCD",
+"!7	c #00908A",
+"~7	c #002A52",
+"{7	c #001A48",
+"]7	c #000436",
+"^7	c #000E49",
+"/7	c #000A41",
+"(7	c #000636",
+"_7	c #00042D",
+":7	c #00062F",
+"<7	c #030021",
+"[7	c #000237",
+"}7	c #000B49",
+"|7	c #001359",
+"17	c #00206D",
+"27	c #003186",
+"37	c #0048A4",
+"47	c #009785",
+"57	c #009AF4",
+"67	c #007FC9",
+"77	c #0072BC",
+"87	c #004681",
+"97	c #005895",
+"07	c #0071BE",
+"a7	c #0063AB",
+"b7	c #0066B0",
+"c7	c #0069B9",
+"d7	c #0061AA",
+"e7	c #0074CC",
+"f7	c #007CD6",
+"g7	c #008BEB",
+"h7	c #008BE5",
+"i7	c #00A4FF",
+"j7	c #008EF0",
+"k7	c #0083EF",
+"l7	c #000D48",
+"m7	c #001C5E",
+"n7	c #070049",
+"o7	c #000652",
+"p7	c #002C65",
+"q7	c #00244F",
+"r7	c #007594",
+"s7	c #00BFDD",
+"t7	c #00BED0",
+"u7	c #00666D",
+"v7	c #110006",
+"w7	c #002529",
+"x7	c #000911",
+"y7	c #001C26",
+"z7	c #003D4C",
+"A7	c #00546D",
+"B7	c #002C44",
+"C7	c #002441",
+"D7	c #060024",
+"E7	c #010015",
+"F7	c #010013",
+"G7	c #00081F",
+"H7	c #00163E",
+"I7	c #00174C",
+"J7	c #003C84",
+"K7	c #005ABA",
+"L7	c #006DD7",
+"M7	c #007EF5",
+"N7	c #0086FF",
+"O7	c #0076F4",
+"P7	c #0051B1",
+"Q7	c #00367D",
+"R7	c #000B41",
+"S7	c #00133E",
+"T7	c #000F37",
+"U7	c #00053F",
+"V7	c #001A7F",
+"W7	c #0034A2",
+"X7	c #004D9E",
+"Y7	c #005F9B",
+"Z7	c #00D9D1",
+"`7	c #003053",
+" 8	c #001C47",
+".8	c #001146",
+"+8	c #000D4B",
+"@8	c #000940",
+"#8	c #00063B",
+"$8	c #000531",
+"%8	c #000422",
+"&8	c #040025",
+"*8	c #000A4C",
+"=8	c #00125B",
+"-8	c #001F6C",
+";8	c #00348C",
+">8	c #004585",
+",8	c #00C3A8",
+"'8	c #009484",
+")8	c #0065BD",
+"!8	c #0062B8",
+"~8	c #003F8D",
+"{8	c #00428C",
+"]8	c #00589F",
+"^8	c #005DA2",
+"/8	c #00559D",
+"(8	c #00519A",
+"_8	c #004D92",
+":8	c #005BAD",
+"<8	c #0069C0",
+"[8	c #0076D2",
+"}8	c #007BD3",
+"|8	c #009CFF",
+"18	c #004B8D",
+"28	c #001E5D",
+"38	c #001658",
+"48	c #000445",
+"58	c #010048",
+"68	c #000856",
+"78	c #002361",
+"88	c #003C70",
+"98	c #006B90",
+"08	c #000A09",
+"a8	c #0C0300",
+"b8	c #000B1C",
+"c8	c #070013",
+"d8	c #08000F",
+"e8	c #000F0F",
+"f8	c #001410",
+"g8	c #001716",
+"h8	c #001A23",
+"i8	c #002C43",
+"j8	c #001938",
+"k8	c #000C38",
+"l8	c #000831",
+"m8	c #001E46",
+"n8	c #002F6A",
+"o8	c #004AA4",
+"p8	c #006CE7",
+"q8	c #0076FA",
+"r8	c #006EEF",
+"s8	c #005ED1",
+"t8	c #003C89",
+"u8	c #000941",
+"v8	c #000242",
+"w8	c #00067A",
+"x8	c #0022B0",
+"y8	c #004BAD",
+"z8	c #004286",
+"A8	c #009AE7",
+"B8	c #00C8C3",
+"C8	c #00A9A9",
+"D8	c #002F4B",
+"E8	c #001A3F",
+"F8	c #000637",
+"G8	c #000D4A",
+"H8	c #000A46",
+"I8	c #00073F",
+"J8	c #000435",
+"K8	c #000527",
+"L8	c #050014",
+"M8	c #00094C",
+"N8	c #00145E",
+"O8	c #00216E",
+"P8	c #004AA0",
+"Q8	c #004D8D",
+"R8	c #009984",
+"S8	c #0059BE",
+"T8	c #005DCF",
+"U8	c #0051C1",
+"V8	c #002182",
+"W8	c #00399A",
+"X8	c #00479B",
+"Y8	c #00397B",
+"Z8	c #003678",
+"`8	c #003273",
+" 9	c #00397C",
+".9	c #004690",
+"+9	c #0058AE",
+"@9	c #0064B9",
+"#9	c #0074CB",
+"$9	c #008BEF",
+"%9	c #0096FF",
+"&9	c #005099",
+"*9	c #004194",
+"=9	c #002874",
+"-9	c #001D86",
+";9	c #001B7F",
+">9	c #00175C",
+",9	c #002565",
+"'9	c #001B50",
+")9	c #002E59",
+"!9	c #004877",
+"~9	c #00131F",
+"{9	c #000909",
+"]9	c #000700",
+"^9	c #000C00",
+"/9	c #080D00",
+"(9	c #0A001F",
+"_9	c #070015",
+":9	c #19001D",
+"<9	c #003A22",
+"[9	c #000B02",
+"}9	c #00070B",
+"|9	c #00093F",
+"19	c #00103E",
+"29	c #002043",
+"39	c #0045A0",
+"49	c #0056CB",
+"59	c #0064E9",
+"69	c #006CF6",
+"79	c #006DF4",
+"89	c #005BCE",
+"99	c #002961",
+"09	c #001745",
+"a9	c #000C35",
+"b9	c #000229",
+"c9	c #050029",
+"d9	c #050040",
+"e9	c #0C007E",
+"f9	c #0010C1",
+"g9	c #0047C2",
+"h9	c #0057A3",
+"i9	c #0078B8",
+"j9	c #00BEBB",
+"k9	c #00A7AC",
+"l9	c #00334C",
+"m9	c #000E36",
+"n9	c #000C49",
+"o9	c #000943",
+"p9	c #00063C",
+"q9	c #00002F",
+"r9	c #000428",
+"s9	c #030600",
+"t9	c #03000D",
+"u9	c #05001C",
+"v9	c #020029",
+"w9	c #00033A",
+"x9	c #000A4A",
+"y9	c #001358",
+"z9	c #002168",
+"A9	c #003A8F",
+"B9	c #004795",
+"C9	c #004F92",
+"D9	c #00AB96",
+"E9	c #0057C4",
+"F9	c #0052C9",
+"G9	c #0058F3",
+"H9	c #0046CA",
+"I9	c #0035AA",
+"J9	c #0037A5",
+"K9	c #003376",
+"L9	c #002F5F",
+"M9	c #001F4E",
+"N9	c #001D4D",
+"O9	c #001442",
+"P9	c #003675",
+"Q9	c #004B9A",
+"R9	c #0058B0",
+"S9	c #006CCE",
+"T9	c #0086F1",
+"U9	c #007DDE",
+"V9	c #006AC7",
+"W9	c #004B97",
+"X9	c #0046A6",
+"Y9	c #00329A",
+"Z9	c #001A5E",
+"`9	c #001A56",
+" 0	c #001C4C",
+".0	c #001426",
+"+0	c #00171A",
+"@0	c #001409",
+"#0	c #000606",
+"$0	c #0B0011",
+"%0	c #140018",
+"&0	c #290027",
+"*0	c #001C13",
+"=0	c #000E41",
+"-0	c #001543",
+";0	c #00193C",
+">0	c #001C49",
+",0	c #002760",
+"'0	c #005FDE",
+")0	c #006FF8",
+"!0	c #0077FF",
+"~0	c #0066D5",
+"{0	c #005BC1",
+"]0	c #004392",
+"^0	c #00285F",
+"/0	c #00143F",
+"(0	c #00052C",
+"_0	c #020028",
+":0	c #050079",
+"<0	c #0014C4",
+"[0	c #0047CF",
+"}0	c #005FC0",
+"|0	c #00629E",
+"10	c #00AFAC",
+"20	c #00A9B4",
+"30	c #00264D",
+"40	c #00082D",
+"50	c #001344",
+"60	c #000C4A",
+"70	c #000A4F",
+"80	c #000843",
+"90	c #00071F",
+"00	c #060800",
+"a0	c #02001B",
+"b0	c #03001E",
+"c0	c #02002B",
+"d0	c #000131",
+"e0	c #00053E",
+"f0	c #000E4D",
+"g0	c #001350",
+"h0	c #003071",
+"i0	c #00448E",
+"j0	c #004985",
+"k0	c #009D96",
+"l0	c #0047A7",
+"m0	c #0053F3",
+"n0	c #0047EC",
+"o0	c #003FD8",
+"p0	c #002197",
+"q0	c #0038A9",
+"r0	c #00274D",
+"s0	c #001B2E",
+"t0	c #000921",
+"u0	c #001C38",
+"v0	c #00306B",
+"w0	c #003A84",
+"x0	c #004CAB",
+"y0	c #006CE1",
+"z0	c #007AEA",
+"A0	c #0087FC",
+"B0	c #0060BC",
+"C0	c #004AA3",
+"D0	c #003C9C",
+"E0	c #000D44",
+"F0	c #001135",
+"G0	c #00051C",
+"H0	c #000C0C",
+"I0	c #000E09",
+"J0	c #080002",
+"K0	c #100006",
+"L0	c #200019",
+"M0	c #001652",
+"N0	c #000F46",
+"O0	c #000F3F",
+"P0	c #00092A",
+"Q0	c #00266A",
+"R0	c #006EE1",
+"S0	c #0080F5",
+"T0	c #007DE6",
+"U0	c #008BF9",
+"V0	c #007BE2",
+"W0	c #0071D6",
+"X0	c #0061BE",
+"Y0	c #004287",
+"Z0	c #002356",
+"`0	c #00163F",
+" a	c #00003B",
+".a	c #001B88",
+"+a	c #0036CF",
+"@a	c #0052E2",
+"#a	c #0060CE",
+"$a	c #005C9A",
+"%a	c #00B3A9",
+"&a	c #009EB0",
+"*a	c #00102F",
+"=a	c #001644",
+"-a	c #001857",
+";a	c #001368",
+">a	c #00105C",
+",a	c #000C52",
+"'a	c #000839",
+")a	c #000A0D",
+"!a	c #000239",
+"~a	c #000034",
+"{a	c #001A55",
+"]a	c #002F6C",
+"^a	c #004184",
+"/a	c #004581",
+"(a	c #00A0A0",
+"_a	c #00BCC6",
+":a	c #004BAE",
+"<a	c #004CE6",
+"[a	c #0044EB",
+"}a	c #003DDD",
+"|a	c #0028A1",
+"1a	c #0036A1",
+"2a	c #002042",
+"3a	c #00111B",
+"4a	c #000B1D",
+"5a	c #00224D",
+"6a	c #002E6B",
+"7a	c #0046A2",
+"8a	c #006BE6",
+"9a	c #0089FF",
+"0a	c #0091FF",
+"aa	c #005EB9",
+"ba	c #00489C",
+"ca	c #0040AC",
+"da	c #000234",
+"ea	c #000C2A",
+"fa	c #00122B",
+"ga	c #000110",
+"ha	c #000D0F",
+"ia	c #0C0500",
+"ja	c #0A0001",
+"ka	c #090008",
+"la	c #000A1F",
+"ma	c #00274F",
+"na	c #00275D",
+"oa	c #000E43",
+"pa	c #001964",
+"qa	c #002E7E",
+"ra	c #005BC4",
+"sa	c #007EEE",
+"ta	c #0091F3",
+"ua	c #009AFF",
+"va	c #0091F8",
+"wa	c #007ADC",
+"xa	c #005DB4",
+"ya	c #004C9C",
+"za	c #002C63",
+"Aa	c #000430",
+"Ba	c #00123A",
+"Ca	c #000E45",
+"Da	c #002988",
+"Ea	c #004FDB",
+"Fa	c #0059E5",
+"Ga	c #0059C0",
+"Ha	c #0075B5",
+"Ia	c #00B5AB",
+"Ja	c #002958",
+"Ka	c #00264E",
+"La	c #002348",
+"Ma	c #001D4C",
+"Na	c #00195B",
+"Oa	c #00165D",
+"Pa	c #001262",
+"Qa	c #000E54",
+"Ra	c #000A2A",
+"Sa	c #000E12",
+"Ta	c #00001A",
+"Ua	c #010022",
+"Va	c #010033",
+"Wa	c #00002E",
+"Xa	c #000944",
+"Ya	c #00114E",
+"Za	c #001C5C",
+"`a	c #00276A",
+" b	c #00387F",
+".b	c #004994",
+"+b	c #004A8C",
+"@b	c #00A2AA",
+"#b	c #00A7B1",
+"$b	c #0046C3",
+"%b	c #0046E1",
+"&b	c #003CCF",
+"*b	c #002DA3",
+"=b	c #002054",
+"-b	c #001028",
+";b	c #000620",
+">b	c #000519",
+",b	c #002249",
+"'b	c #003676",
+")b	c #0057BC",
+"!b	c #0074EB",
+"~b	c #0086F0",
+"{b	c #006CCB",
+"]b	c #0044B0",
+"^b	c #00328E",
+"/b	c #000424",
+"(b	c #000F2D",
+"_b	c #002240",
+":b	c #004F6B",
+"<b	c #002434",
+"[b	c #000F1F",
+"}b	c #000B05",
+"|b	c #0A000B",
+"1b	c #090011",
+"2b	c #00384E",
+"3b	c #00597C",
+"4b	c #00466A",
+"5b	c #000937",
+"6b	c #070022",
+"7b	c #0061C2",
+"8b	c #0077D9",
+"9b	c #008AED",
+"0b	c #0088E4",
+"ab	c #008AEA",
+"bb	c #0073CB",
+"cb	c #005FB0",
+"db	c #004B96",
+"eb	c #004CA6",
+"fb	c #003174",
+"gb	c #000D3F",
+"hb	c #001747",
+"ib	c #001A54",
+"jb	c #00318B",
+"kb	c #0059DA",
+"lb	c #005FD9",
+"mb	c #0056B1",
+"nb	c #009CE4",
+"ob	c #00D9CA",
+"pb	c #008894",
+"qb	c #002B64",
+"rb	c #002B5C",
+"sb	c #002657",
+"tb	c #001042",
+"ub	c #001B59",
+"vb	c #001966",
+"wb	c #001257",
+"xb	c #001053",
+"yb	c #000D38",
+"zb	c #000122",
+"Ab	c #00033D",
+"Bb	c #000C4C",
+"Cb	c #001E63",
+"Db	c #0046A3",
+"Eb	c #0053B4",
+"Fb	c #004D9D",
+"Gb	c #009FA9",
+"Hb	c #00A6B5",
+"Ib	c #00519F",
+"Jb	c #0047AD",
+"Kb	c #004BD3",
+"Lb	c #003FC1",
+"Mb	c #00329F",
+"Nb	c #0032A3",
+"Ob	c #00206B",
+"Pb	c #000A33",
+"Qb	c #00081D",
+"Rb	c #002853",
+"Sb	c #004797",
+"Tb	c #0070EB",
+"Ub	c #007FFA",
+"Vb	c #0073D3",
+"Wb	c #004A95",
+"Xb	c #0042A0",
+"Yb	c #00358F",
+"Zb	c #000042",
+"`b	c #00062C",
+" c	c #001F38",
+".c	c #004A61",
+"+c	c #00697C",
+"@c	c #00525D",
+"#c	c #000E1C",
+"$c	c #000F20",
+"%c	c #002619",
+"&c	c #00050B",
+"*c	c #00132C",
+"=c	c #001931",
+"-c	c #005F76",
+";c	c #007296",
+">c	c #003A62",
+",c	c #080031",
+"'c	c #00152E",
+")c	c #00142F",
+"!c	c #001B4F",
+"~c	c #00296A",
+"{c	c #0064BD",
+"]c	c #0087E7",
+"^c	c #008AE9",
+"/c	c #0086E9",
+"(c	c #004A96",
+"_c	c #00438C",
+":c	c #004599",
+"<c	c #00337B",
+"[c	c #00225D",
+"}c	c #001B54",
+"|c	c #00449A",
+"1c	c #0063D1",
+"2c	c #0065CC",
+"3c	c #00E2FD",
+"4c	c #008C91",
+"5c	c #002358",
+"6c	c #001147",
+"7c	c #001148",
+"8c	c #00113F",
+"9c	c #000121",
+"0c	c #00042C",
+"ac	c #000F4C",
+"bc	c #00104D",
+"cc	c #002166",
+"dc	c #004EBA",
+"ec	c #00B8C8",
+"fc	c #0075CB",
+"gc	c #0045B4",
+"hc	c #0039A0",
+"ic	c #00329E",
+"jc	c #001A74",
+"kc	c #000233",
+"lc	c #002A57",
+"mc	c #004E9F",
+"nc	c #0078F3",
+"oc	c #0082F9",
+"pc	c #0090F4",
+"qc	c #0093F6",
+"rc	c #008AF3",
+"sc	c #0056A7",
+"tc	c #004096",
+"uc	c #003179",
+"vc	c #001033",
+"wc	c #03002F",
+"xc	c #000930",
+"yc	c #001D3D",
+"zc	c #007F93",
+"Ac	c #008591",
+"Bc	c #007E87",
+"Cc	c #004756",
+"Dc	c #00182B",
+"Ec	c #10001B",
+"Fc	c #002118",
+"Gc	c #000A0F",
+"Hc	c #000A29",
+"Ic	c #001D3B",
+"Jc	c #0086A3",
+"Kc	c #00A5CA",
+"Lc	c #006E96",
+"Mc	c #000E3C",
+"Nc	c #000338",
+"Oc	c #00163C",
+"Pc	c #002047",
+"Qc	c #00387A",
+"Rc	c #005FAD",
+"Sc	c #006DBF",
+"Tc	c #0082E0",
+"Uc	c #0087EF",
+"Vc	c #0085EF",
+"Wc	c #0075DE",
+"Xc	c #0056AB",
+"Yc	c #00499E",
+"Zc	c #003B89",
+"`c	c #00327A",
+" d	c #002E7A",
+".d	c #001A53",
+"+d	c #005AB0",
+"@d	c #006CC2",
+"#d	c #0071C5",
+"$d	c #009DF3",
+"%d	c #00E7F6",
+"&d	c #00FFEE",
+"*d	c #00F7E0",
+"=d	c #00A3A5",
+"-d	c #00A9B6",
+";d	c #00519D",
+">d	c #002C6B",
+",d	c #002867",
+"'d	c #001D56",
+")d	c #001F63",
+"!d	c #00083F",
+"~d	c #000F4D",
+"{d	c #003A9E",
+"]d	c #0056C5",
+"^d	c #0052B2",
+"/d	c #00909D",
+"(d	c #005898",
+"_d	c #004F99",
+":d	c #004DA5",
+"<d	c #00379F",
+"[d	c #00207D",
+"}d	c #000B53",
+"|d	c #00013B",
+"1d	c #000331",
+"2d	c #000522",
+"3d	c #002B5B",
+"4d	c #0052AB",
+"5d	c #006EE6",
+"6d	c #0077E4",
+"7d	c #008BE9",
+"8d	c #0093EF",
+"9d	c #003E8B",
+"0d	c #003177",
+"ad	c #00214E",
+"bd	c #020035",
+"cd	c #001332",
+"dd	c #006E85",
+"ed	c #00C2D5",
+"fd	c #008C95",
+"gd	c #007A85",
+"hd	c #005B6C",
+"id	c #000E22",
+"jd	c #001718",
+"kd	c #000904",
+"ld	c #000925",
+"md	c #003353",
+"nd	c #00789E",
+"od	c #00AFD3",
+"pd	c #00B5D5",
+"qd	c #00B5DA",
+"rd	c #004672",
+"sd	c #004185",
+"td	c #004D98",
+"ud	c #00549D",
+"vd	c #0062AF",
+"wd	c #006EC5",
+"xd	c #0071CD",
+"yd	c #006FD3",
+"zd	c #006CD5",
+"Ad	c #0054B1",
+"Bd	c #004FB1",
+"Cd	c #003D8F",
+"Dd	c #003A8A",
+"Ed	c #003F9A",
+"Fd	c #002D6C",
+"Gd	c #0069B1",
+"Hd	c #0074B4",
+"Id	c #00EFF5",
+"Jd	c #00FFE7",
+"Kd	c #00BFBA",
+"Ld	c #00858B",
+"Md	c #003C7D",
+"Nd	c #002D6F",
+"Od	c #002061",
+"Pd	c #002268",
+"Qd	c #001E60",
+"Rd	c #001850",
+"Sd	c #00113D",
+"Td	c #00062A",
+"Ud	c #001452",
+"Vd	c #001E67",
+"Wd	c #002D88",
+"Xd	c #003695",
+"Yd	c #0043A5",
+"Zd	c #0058CE",
+"`d	c #0052BA",
+" e	c #009AA2",
+".e	c #0068A3",
+"+e	c #005799",
+"@e	c #00468D",
+"#e	c #0041A3",
+"$e	c #002994",
+"%e	c #001269",
+"&e	c #000147",
+"*e	c #000426",
+"=e	c #00265B",
+"-e	c #004BA8",
+";e	c #0064D6",
+">e	c #0077E2",
+",e	c #007ED1",
+"'e	c #0090EA",
+")e	c #007DEC",
+"!e	c #004CAA",
+"~e	c #003075",
+"{e	c #000033",
+"]e	c #006989",
+"^e	c #0098AA",
+"/e	c #0096A2",
+"(e	c #008C99",
+"_e	c #00808F",
+":e	c #00677B",
+"<e	c #00566E",
+"[e	c #002336",
+"}e	c #00192B",
+"|e	c #000713",
+"1e	c #001217",
+"2e	c #000B0D",
+"3e	c #001015",
+"4e	c #001021",
+"5e	c #006C8D",
+"6e	c #00A2CA",
+"7e	c #00B4D9",
+"8e	c #00C3EA",
+"9e	c #00B5D8",
+"0e	c #009FC5",
+"ae	c #00749E",
+"be	c #004A73",
+"ce	c #003971",
+"de	c #003880",
+"ee	c #003985",
+"fe	c #00347B",
+"ge	c #003881",
+"he	c #004697",
+"ie	c #004998",
+"je	c #004F9E",
+"ke	c #005CB3",
+"le	c #005EB6",
+"me	c #005DB6",
+"ne	c #004DAD",
+"oe	c #0050B5",
+"pe	c #0049AB",
+"qe	c #0050B1",
+"re	c #004AA1",
+"se	c #003872",
+"te	c #003165",
+"ue	c #0075AC",
+"ve	c #008BC1",
+"we	c #00E7FF",
+"xe	c #00F6F1",
+"ye	c #00F6DE",
+"ze	c #00FFE5",
+"Ae	c #00E7DD",
+"Be	c #00A1A4",
+"Ce	c #00B9C9",
+"De	c #003878",
+"Ee	c #002B73",
+"Fe	c #002471",
+"Ge	c #00226C",
+"He	c #001E5F",
+"Ie	c #001943",
+"Je	c #001049",
+"Ke	c #002B7B",
+"Le	c #002D7B",
+"Me	c #003992",
+"Ne	c #005DDB",
+"Oe	c #0054C2",
+"Pe	c #005EC5",
+"Qe	c #009DA4",
+"Re	c #00A4A7",
+"Se	c #00ABDF",
+"Te	c #00618D",
+"Ue	c #002860",
+"Ve	c #004CA1",
+"We	c #0037A9",
+"Xe	c #001877",
+"Ye	c #00034B",
+"Ze	c #00052A",
+"`e	c #00184B",
+" f	c #00398B",
+".f	c #0057C0",
+"+f	c #0081FF",
+"@f	c #008FF5",
+"#f	c #0096F1",
+"$f	c #009BFF",
+"%f	c #003F94",
+"&f	c #002D5F",
+"*f	c #000E40",
+"=f	c #002252",
+"-f	c #005278",
+";f	c #0084A2",
+">f	c #00A8BB",
+",f	c #009EAC",
+"'f	c #0095A6",
+")f	c #0090A5",
+"!f	c #007D97",
+"~f	c #006074",
+"{f	c #005C6F",
+"]f	c #004552",
+"^f	c #00303A",
+"/f	c #000F14",
+"(f	c #00384B",
+"_f	c #007A9D",
+":f	c #00A1CC",
+"<f	c #00BCE8",
+"[f	c #00CFFE",
+"}f	c #00CAF3",
+"|f	c #0074A2",
+"1f	c #003364",
+"2f	c #003E7E",
+"3f	c #003D8B",
+"4f	c #004097",
+"5f	c #003785",
+"6f	c #003D91",
+"7f	c #00408F",
+"8f	c #004699",
+"9f	c #0051AC",
+"0f	c #004CA8",
+"af	c #004FBB",
+"bf	c #004DB5",
+"cf	c #0057C1",
+"df	c #005DC1",
+"ef	c #004A8D",
+"ff	c #004473",
+"gf	c #0087B4",
+"hf	c #00B9EA",
+"if	c #00EFE3",
+"jf	c #00F3DA",
+"kf	c #00ECDC",
+"lf	c #007F8B",
+"mf	c #002F6B",
+"nf	c #002477",
+"of	c #002066",
+"pf	c #00163D",
+"qf	c #002063",
+"rf	c #00286F",
+"sf	c #00388F",
+"tf	c #0049B5",
+"uf	c #0052C5",
+"vf	c #0053B0",
+"wf	c #007E7C",
+"xf	c #00B9E4",
+"yf	c #007AB1",
+"zf	c #000959",
+"Af	c #00052D",
+"Bf	c #001758",
+"Cf	c #00439E",
+"Df	c #0075F3",
+"Ef	c #0080DD",
+"Ff	c #0083D9",
+"Gf	c #0085E5",
+"Hf	c #008EFF",
+"If	c #0078FF",
+"Jf	c #004687",
+"Kf	c #002B53",
+"Lf	c #007DA3",
+"Mf	c #0096B4",
+"Nf	c #00A3B9",
+"Of	c #0099B2",
+"Pf	c #007F95",
+"Qf	c #008698",
+"Rf	c #00707D",
+"Sf	c #005763",
+"Tf	c #00303B",
+"Uf	c #0099C5",
+"Vf	c #00B3E6",
+"Wf	c #00BFE4",
+"Xf	c #00BFDE",
+"Yf	c #00AECD",
+"Zf	c #008BBB",
+"`f	c #006EA9",
+" g	c #00579C",
+".g	c #0055BF",
+"+g	c #00358B",
+"@g	c #003A91",
+"#g	c #003C92",
+"$g	c #00429E",
+"%g	c #0044A9",
+"&g	c #0041A4",
+"*g	c #003F9D",
+"=g	c #003892",
+"-g	c #003FA3",
+";g	c #00429C",
+">g	c #005088",
+",g	c #002C5C",
+"'g	c #00E5D9",
+")g	c #00D5C9",
+"!g	c #00F1E0",
+"~g	c #00FDEA",
+"{g	c #00EFEB",
+"]g	c #00488C",
+"^g	c #002D6E",
+"/g	c #00246C",
+"(g	c #002271",
+"_g	c #002483",
+":g	c #002478",
+"<g	c #001C59",
+"[g	c #001B4A",
+"}g	c #000730",
+"|g	c #000E35",
+"1g	c #002468",
+"2g	c #0045AE",
+"3g	c #0048B5",
+"4g	c #00479A",
+"5g	c #008289",
+"6g	c #00A9A5",
+"7g	c #005AB8",
+"8g	c #00074F",
+"9g	c #00043A",
+"0g	c #002364",
+"ag	c #003E9F",
+"bg	c #0055BA",
+"cg	c #007FE1",
+"dg	c #0087E3",
+"eg	c #0090F7",
+"fg	c #0083FF",
+"gg	c #005FA4",
+"hg	c #00527E",
+"ig	c #00A7C9",
+"jg	c #00ADCC",
+"kg	c #00ACC7",
+"lg	c #00A0BB",
+"mg	c #0093AA",
+"ng	c #0090A3",
+"og	c #007282",
+"pg	c #00424D",
+"qg	c #002530",
+"rg	c #00172D",
+"sg	c #001B29",
+"tg	c #00465E",
+"ug	c #008CB8",
+"vg	c #00C0F2",
+"wg	c #00B8DD",
+"xg	c #00CDF1",
+"yg	c #00C8E5",
+"zg	c #00BBD8",
+"Ag	c #0092C3",
+"Bg	c #007EC0",
+"Cg	c #006FB8",
+"Dg	c #0066B4",
+"Eg	c #0048A2",
+"Fg	c #003482",
+"Gg	c #003481",
+"Hg	c #003E9A",
+"Ig	c #0043AC",
+"Jg	c #003792",
+"Kg	c #003087",
+"Lg	c #003191",
+"Mg	c #002B80",
+"Ng	c #003E95",
+"Og	c #004C99",
+"Pg	c #0066AD",
+"Qg	c #004574",
+"Rg	c #00C2FD",
+"Sg	c #00E8E0",
+"Tg	c #00E7E0",
+"Ug	c #00F7EA",
+"Vg	c #00D2CE",
+"Wg	c #0084AB",
+"Xg	c #0076C7",
+"Yg	c #00326C",
+"Zg	c #002C71",
+"`g	c #002473",
+" h	c #00227D",
+".h	c #002484",
+"+h	c #002175",
+"@h	c #001A50",
+"#h	c #000926",
+"$h	c #00113C",
+"%h	c #001F5C",
+"&h	c #002B77",
+"*h	c #003A99",
+"=h	c #0041A8",
+"-h	c #007ED2",
+";h	c #00A2AF",
+">h	c #00BAF5",
+",h	c #006AB2",
+"'h	c #00418C",
+")h	c #001D64",
+"!h	c #001055",
+"~h	c #00154C",
+"{h	c #000137",
+"]h	c #001F5F",
+"^h	c #0052BD",
+"/h	c #0073CA",
+"(h	c #0080CD",
+"_h	c #0081EA",
+":h	c #006FC7",
+"<h	c #006499",
+"[h	c #00698D",
+"}h	c #008BAA",
+"|h	c #009EBE",
+"1h	c #00A1C8",
+"2h	c #0097B9",
+"3h	c #0096B3",
+"4h	c #008BA6",
+"5h	c #0098B1",
+"6h	c #009AB4",
+"7h	c #004D62",
+"8h	c #001A2B",
+"9h	c #001420",
+"0h	c #001D19",
+"ah	c #001B1A",
+"bh	c #000822",
+"ch	c #00385A",
+"dh	c #0091C0",
+"eh	c #00CEF5",
+"fh	c #00C3DD",
+"gh	c #00BED4",
+"hh	c #00A3CC",
+"ih	c #008EC5",
+"jh	c #0087CD",
+"kh	c #0088D9",
+"lh	c #0084CB",
+"mh	c #004A8F",
+"nh	c #003579",
+"oh	c #00357A",
+"ph	c #003182",
+"qh	c #00297B",
+"rh	c #00287C",
+"sh	c #00297C",
+"th	c #003A89",
+"uh	c #0056A0",
+"vh	c #0066A0",
+"wh	c #00557A",
+"xh	c #0093BB",
+"yh	c #00E0E2",
+"zh	c #00D7D4",
+"Ah	c #00D7F1",
+"Bh	c #009CD1",
+"Ch	c #004984",
+"Dh	c #002E6F",
+"Eh	c #00296F",
+"Fh	c #002479",
+"Gh	c #00237F",
+"Hh	c #001A52",
+"Ih	c #001A4D",
+"Jh	c #002B78",
+"Kh	c #003896",
+"Lh	c #006BB6",
+"Mh	c #0092C7",
+"Nh	c #00286A",
+"Oh	c #001E5C",
+"Ph	c #002050",
+"Qh	c #000337",
+"Rh	c #002160",
+"Sh	c #005ED3",
+"Th	c #006BBF",
+"Uh	c #0073B6",
+"Vh	c #0076C0",
+"Wh	c #0070BE",
+"Xh	c #006DAF",
+"Yh	c #00729D",
+"Zh	c #00A9C0",
+"`h	c #00B3CF",
+" i	c #0098C0",
+".i	c #008DB4",
+"+i	c #008DB3",
+"@i	c #0097B8",
+"#i	c #009AB9",
+"$i	c #0093B1",
+"%i	c #007C9C",
+"&i	c #001530",
+"*i	c #000C25",
+"=i	c #001B2C",
+"-i	c #00100B",
+";i	c #000725",
+">i	c #003A57",
+",i	c #009BB8",
+"'i	c #00BBD1",
+")i	c #00B7CA",
+"!i	c #00AAD8",
+"~i	c #0093CB",
+"{i	c #008ACD",
+"]i	c #0095DF",
+"^i	c #00A0DF",
+"/i	c #0090C9",
+"(i	c #005E95",
+"_i	c #003A74",
+":i	c #00468B",
+"<i	c #00489A",
+"[i	c #003884",
+"}i	c #002974",
+"|i	c #002873",
+"1i	c #003E86",
+"2i	c #005BA0",
+"3i	c #004B70",
+"4i	c #00D0F6",
+"5i	c #009C89",
+"6i	c #00D5F5",
+"7i	c #0092CB",
+"8i	c #00316E",
+"9i	c #002876",
+"0i	c #00237E",
+"ai	c #001D73",
+"bi	c #001D70",
+"ci	c #000D2F",
+"di	c #002D80",
+"ei	c #0049A6",
+"fi	c #0067BE",
+"gi	c #0097E3",
+"hi	c #00B5D0",
+"ii	c #004161",
+"ji	c #002C47",
+"ki	c #004157",
+"li	c #006DA6",
+"mi	c #00346F",
+"ni	c #002E56",
+"oi	c #001337",
+"pi	c #000535",
+"qi	c #002C72",
+"ri	c #0042AD",
+"si	c #005E8E",
+"ti	c #006293",
+"ui	c #006AA1",
+"vi	c #0074B2",
+"wi	c #0081B8",
+"xi	c #0094B9",
+"yi	c #00AEC6",
+"zi	c #00B4C9",
+"Ai	c #00B4CA",
+"Bi	c #0098BE",
+"Ci	c #0091B8",
+"Di	c #0091BA",
+"Ei	c #007DA9",
+"Fi	c #00456D",
+"Gi	c #001435",
+"Hi	c #000A20",
+"Ii	c #000D07",
+"Ji	c #001210",
+"Ki	c #060013",
+"Li	c #000A22",
+"Mi	c #00586B",
+"Ni	c #00B3C9",
+"Oi	c #00BFD8",
+"Pi	c #00C2E4",
+"Qi	c #00B3E4",
+"Ri	c #00A2DD",
+"Si	c #0096D4",
+"Ti	c #0099D2",
+"Ui	c #00A8D6",
+"Vi	c #00A7D4",
+"Wi	c #0085B6",
+"Xi	c #00608D",
+"Yi	c #003B69",
+"Zi	c #003E6F",
+"`i	c #00477E",
+" j	c #003D76",
+".j	c #002C69",
+"+j	c #002766",
+"@j	c #00225E",
+"#j	c #002B6D",
+"$j	c #004181",
+"%j	c #004873",
+"&j	c #0091AC",
+"*j	c #00241C",
+"=j	c #002A1F",
+"-j	c #006465",
+";j	c #006492",
+">j	c #003080",
+",j	c #002A84",
+"'j	c #00207E",
+")j	c #000119",
+"!j	c #00164C",
+"~j	c #002776",
+"{j	c #0049AD",
+"]j	c #0069C8",
+"^j	c #004151",
+"/j	c #00474D",
+"(j	c #0081AD",
+"_j	c #005391",
+":j	c #00427C",
+"<j	c #002C4D",
+"[j	c #003479",
+"}j	c #003887",
+"|j	c #003C7A",
+"1j	c #005B86",
+"2j	c #008BC6",
+"3j	c #009DD2",
+"4j	c #00A5C3",
+"5j	c #00ACBB",
+"6j	c #00A8BD",
+"7j	c #00A2B8",
+"8j	c #009BB7",
+"9j	c #00A1C1",
+"0j	c #00ACD4",
+"aj	c #00AAD9",
+"bj	c #0094C6",
+"cj	c #007BAF",
+"dj	c #005387",
+"ej	c #002456",
+"fj	c #001E51",
+"gj	c #000F3A",
+"hj	c #00202D",
+"ij	c #002326",
+"jj	c #001E1C",
+"kj	c #000504",
+"lj	c #0B0007",
+"mj	c #04000C",
+"nj	c #001324",
+"oj	c #00BDDB",
+"pj	c #00B3EE",
+"qj	c #00AFE6",
+"rj	c #00ACD1",
+"sj	c #00ADCF",
+"tj	c #004B72",
+"uj	c #00345E",
+"vj	c #003C67",
+"wj	c #003464",
+"xj	c #002859",
+"yj	c #002457",
+"zj	c #003767",
+"Aj	c #002140",
+"Bj	c #006580",
+"Cj	c #00CBE7",
+"Dj	c #00EBF7",
+"Ej	c #00657D",
+"Fj	c #00212B",
+"Gj	c #00150F",
+"Hj	c #001A0F",
+"Ij	c #00252B",
+"Jj	c #00448C",
+"Kj	c #003591",
+"Lj	c #002683",
+"Mj	c #001C74",
+"Nj	c #00124C",
+"Oj	c #04001C",
+"Pj	c #00011A",
+"Qj	c #000F41",
+"Rj	c #002067",
+"Sj	c #0042A3",
+"Tj	c #006BD5",
+"Uj	c #0077C5",
+"Vj	c #00B7E3",
+"Wj	c #00212F",
+"Xj	c #000830",
+"Yj	c #000223",
+"Zj	c #00222E",
+"`j	c #008BDB",
+" k	c #005B9B",
+".k	c #004263",
+"+k	c #00336B",
+"@k	c #003471",
+"#k	c #003E7B",
+"$k	c #004C74",
+"%k	c #005E82",
+"&k	c #00B0C6",
+"*k	c #00A3AF",
+"=k	c #0098B4",
+"-k	c #00CFF5",
+";k	c #00C8FA",
+">k	c #009DDE",
+",k	c #0070BC",
+"'k	c #002E6E",
+")k	c #000C58",
+"!k	c #00053C",
+"~k	c #001A40",
+"{k	c #070000",
+"]k	c #0A0002",
+"^k	c #00030D",
+"/k	c #004F66",
+"(k	c #00ACD8",
+"_k	c #00B8E9",
+":k	c #00C1F3",
+"<k	c #00BFEF",
+"[k	c #00B9E1",
+"}k	c #00B4D5",
+"|k	c #00B7D3",
+"1k	c #00A6C1",
+"2k	c #00A8C4",
+"3k	c #0098BC",
+"4k	c #007196",
+"5k	c #00133D",
+"6k	c #002551",
+"7k	c #002650",
+"8k	c #002F52",
+"9k	c #00425F",
+"0k	c #00EDF1",
+"ak	c #00485E",
+"bk	c #000817",
+"ck	c #000F07",
+"dk	c #000F05",
+"ek	c #005473",
+"fk	c #00CED7",
+"gk	c #004270",
+"hk	c #004594",
+"ik	c #003CAB",
+"jk	c #001B72",
+"kk	c #00186A",
+"lk	c #01001F",
+"mk	c #000733",
+"nk	c #001243",
+"ok	c #003687",
+"pk	c #002B3C",
+"qk	c #000E25",
+"rk	c #00192D",
+"sk	c #002E35",
+"tk	c #0090D0",
+"uk	c #005A7C",
+"vk	c #004963",
+"wk	c #002C50",
+"xk	c #003A66",
+"yk	c #003D6F",
+"zk	c #005085",
+"Ak	c #006488",
+"Bk	c #007798",
+"Ck	c #0089AE",
+"Dk	c #0095BE",
+"Ek	c #00A0D1",
+"Fk	c #00AFCC",
+"Gk	c #00A3BD",
+"Hk	c #00C0DC",
+"Ik	c #00C4E4",
+"Jk	c #00B1DD",
+"Kk	c #008CCC",
+"Lk	c #0066BD",
+"Mk	c #00399F",
+"Nk	c #001A6E",
+"Ok	c #00145F",
+"Pk	c #001559",
+"Qk	c #001A4C",
+"Rk	c #07000C",
+"Sk	c #02000D",
+"Tk	c #006590",
+"Uk	c #007EAD",
+"Vk	c #00B8ED",
+"Wk	c #00C2F0",
+"Xk	c #00C0E0",
+"Yk	c #00BDD9",
+"Zk	c #00BCD8",
+"`k	c #00C5DE",
+" l	c #00C4DC",
+".l	c #00B1CD",
+"+l	c #004768",
+"@l	c #002D4D",
+"#l	c #001334",
+"$l	c #00334F",
+"%l	c #004B5A",
+"&l	c #001A24",
+"*l	c #00120C",
+"=l	c #00A1B7",
+"-l	c #005F7F",
+";l	c #0047A1",
+">l	c #003699",
+",l	c #002C93",
+"'l	c #00237C",
+")l	c #001642",
+"!l	c #1C0014",
+"~l	c #02002D",
+"{l	c #005BBD",
+"]l	c #006ACB",
+"^l	c #005FA2",
+"/l	c #008EE0",
+"(l	c #00494A",
+"_l	c #003F38",
+":l	c #004F45",
+"<l	c #00B0D5",
+"[l	c #0082A2",
+"}l	c #00556F",
+"|l	c #005376",
+"1l	c #00557B",
+"2l	c #005C83",
+"3l	c #005F7E",
+"4l	c #00788E",
+"5l	c #009AB2",
+"6l	c #00AACA",
+"7l	c #00AAE1",
+"8l	c #00A9E3",
+"9l	c #00A3D9",
+"0l	c #00B3E7",
+"al	c #00BEE5",
+"bl	c #00C9F2",
+"cl	c #0070AB",
+"dl	c #0073D7",
+"el	c #004BB0",
+"fl	c #003383",
+"gl	c #003886",
+"hl	c #00408D",
+"il	c #003470",
+"jl	c #00388B",
+"kl	c #001637",
+"ll	c #0086C7",
+"ml	c #007AB7",
+"nl	c #007EB5",
+"ol	c #009DD5",
+"pl	c #00BCE6",
+"ql	c #00D1E3",
+"rl	c #00C6E0",
+"sl	c #00BEDB",
+"tl	c #00C1D8",
+"ul	c #00E2F9",
+"vl	c #00C9DB",
+"wl	c #00C2D7",
+"xl	c #00A1BA",
+"yl	c #005569",
+"zl	c #003F57",
+"Al	c #00425B",
+"Bl	c #006581",
+"Cl	c #00A7C7",
+"Dl	c #00A5A7",
+"El	c #005354",
+"Fl	c #003A39",
+"Gl	c #007D86",
+"Hl	c #0085A6",
+"Il	c #005C7E",
+"Jl	c #005081",
+"Kl	c #00396E",
+"Ll	c #003C8F",
+"Ml	c #002D81",
+"Nl	c #000E2A",
+"Ol	c #0C0018",
+"Pl	c #000738",
+"Ql	c #000841",
+"Rl	c #003C8C",
+"Sl	c #009BB0",
+"Tl	c #006E84",
+"Ul	c #006481",
+"Vl	c #00536F",
+"Wl	c #005775",
+"Xl	c #00546B",
+"Yl	c #00667C",
+"Zl	c #007585",
+"`l	c #0097A4",
+" m	c #009DAE",
+".m	c #009EB5",
+"+m	c #00A2C5",
+"@m	c #009FCD",
+"#m	c #00A6E7",
+"$m	c #00A8E4",
+"%m	c #00B6EC",
+"&m	c #00C3F4",
+"*m	c #00C6F2",
+"=m	c #00A2C8",
+"-m	c #0083AD",
+";m	c #0086F8",
+">m	c #0057BD",
+",m	c #00448F",
+"'m	c #004992",
+")m	c #004589",
+"!m	c #001C68",
+"~m	c #090046",
+"{m	c #002550",
+"]m	c #004272",
+"^m	c #0065A0",
+"/m	c #0080CE",
+"(m	c #006FBE",
+"_m	c #006FB4",
+":m	c #00BCEB",
+"<m	c #00CCE1",
+"[m	c #00C8D4",
+"}m	c #00C5DC",
+"|m	c #00C0DA",
+"1m	c #00AEC4",
+"2m	c #006875",
+"3m	c #002C38",
+"4m	c #00404A",
+"5m	c #002937",
+"6m	c #002A3B",
+"7m	c #003445",
+"8m	c #005367",
+"9m	c #00B5B7",
+"0m	c #00B6BD",
+"am	c #00BDE0",
+"bm	c #00B0DC",
+"cm	c #005C80",
+"dm	c #003E65",
+"em	c #002871",
+"fm	c #00329B",
+"gm	c #002981",
+"hm	c #002A71",
+"im	c #002641",
+"jm	c #001134",
+"km	c #002162",
+"lm	c #004A98",
+"mm	c #0050A4",
+"nm	c #003982",
+"om	c #003474",
+"pm	c #008A99",
+"qm	c #004D5A",
+"rm	c #001D30",
+"sm	c #00364C",
+"tm	c #003346",
+"um	c #003A49",
+"vm	c #004651",
+"wm	c #00636C",
+"xm	c #007D8A",
+"ym	c #008FA1",
+"zm	c #00A0BC",
+"Am	c #009CC9",
+"Bm	c #00A6DA",
+"Cm	c #00ABE2",
+"Dm	c #00BCF2",
+"Em	c #0085AD",
+"Fm	c #0081B2",
+"Gm	c #009CF5",
+"Hm	c #006FE2",
+"Im	c #00498C",
+"Jm	c #004380",
+"Km	c #003D79",
+"Lm	c #00295E",
+"Mm	c #001945",
+"Nm	c #00153B",
+"Om	c #001C41",
+"Pm	c #002E5A",
+"Qm	c #005FB4",
+"Rm	c #0088F0",
+"Sm	c #008CFC",
+"Tm	c #006CD3",
+"Um	c #0066BC",
+"Vm	c #0077B9",
+"Wm	c #00C2FE",
+"Xm	c #00C3DA",
+"Ym	c #00C9D6",
+"Zm	c #00B0CE",
+"`m	c #002B3D",
+" n	c #001725",
+".n	c #001B2B",
+"+n	c #003744",
+"@n	c #006B7A",
+"#n	c #002B4B",
+"$n	c #000A31",
+"%n	c #001854",
+"&n	c #001E72",
+"*n	c #000825",
+"=n	c #002757",
+"-n	c #00256E",
+";n	c #003181",
+">n	c #004898",
+",n	c #004489",
+"'n	c #001F56",
+")n	c #003868",
+"!n	c #006663",
+"~n	c #002328",
+"{n	c #000F1A",
+"]n	c #00303F",
+"^n	c #002F43",
+"/n	c #002636",
+"(n	c #00121D",
+"_n	c #00141C",
+":n	c #004E57",
+"<n	c #007382",
+"[n	c #00A6C6",
+"}n	c #009BBC",
+"|n	c #00AFDF",
+"1n	c #00C4FB",
+"2n	c #009CCA",
+"3n	c #007DAB",
+"4n	c #0085C0",
+"5n	c #00A0FF",
+"6n	c #0085EE",
+"7n	c #0078F0",
+"8n	c #0073E6",
+"9n	c #0072DC",
+"0n	c #005197",
+"an	c #003C6B",
+"bn	c #002D55",
+"cn	c #003660",
+"dn	c #004C7B",
+"en	c #005A99",
+"fn	c #0066C4",
+"gn	c #0082FF",
+"hn	c #0090FF",
+"in	c #0077EF",
+"jn	c #005FCE",
+"kn	c #004EA3",
+"ln	c #005398",
+"mn	c #00A1DF",
+"nn	c #00C9E4",
+"on	c #00D5E4",
+"pn	c #00CDE6",
+"qn	c #0085A0",
+"rn	c #00415A",
+"sn	c #00071C",
+"tn	c #030016",
+"un	c #000510",
+"vn	c #000B15",
+"wn	c #002A33",
+"xn	c #005F85",
+"yn	c #003453",
+"zn	c #001235",
+"An	c #001D46",
+"Bn	c #00174A",
+"Cn	c #00165B",
+"Dn	c #001657",
+"En	c #002062",
+"Fn	c #002A76",
+"Gn	c #001E35",
+"Hn	c #003258",
+"In	c #002273",
+"Jn	c #004082",
+"Kn	c #001346",
+"Ln	c #001449",
+"Mn	c #004739",
+"Nn	c #000B09",
+"On	c #001C28",
+"Pn	c #001824",
+"Qn	c #001923",
+"Rn	c #001D26",
+"Sn	c #003E4A",
+"Tn	c #006D7D",
+"Un	c #0098AE",
+"Vn	c #00A2BA",
+"Wn	c #00ADCD",
+"Xn	c #00B7E4",
+"Yn	c #00A5DC",
+"Zn	c #0081B1",
+"`n	c #0079B4",
+" o	c #0082CE",
+".o	c #008BE8",
+"+o	c #0079D6",
+"@o	c #0070D4",
+"#o	c #0075E2",
+"$o	c #0078E8",
+"%o	c #0080D3",
+"&o	c #0079BE",
+"*o	c #0082C7",
+"=o	c #0080D4",
+"-o	c #0076E4",
+";o	c #0076F8",
+">o	c #007CFF",
+",o	c #006BEB",
+"'o	c #004DC3",
+")o	c #002B84",
+"!o	c #00266F",
+"~o	c #0075AD",
+"{o	c #00CBEB",
+"]o	c #00D1E1",
+"^o	c #00A3B7",
+"/o	c #005266",
+"(o	c #03000E",
+"_o	c #070009",
+":o	c #002528",
+"<o	c #003F5F",
+"[o	c #003558",
+"}o	c #001B45",
+"|o	c #001B51",
+"1o	c #007583",
+"2o	c #006A83",
+"3o	c #000F2E",
+"4o	c #000938",
+"5o	c #002857",
+"6o	c #002750",
+"7o	c #003257",
+"8o	c #00344D",
+"9o	c #007384",
+"0o	c #00CCE5",
+"ao	c #001C12",
+"bo	c #001A25",
+"co	c #000B14",
+"do	c #000811",
+"eo	c #003846",
+"fo	c #007E8E",
+"go	c #00A2B5",
+"ho	c #00A6BF",
+"io	c #00BAE3",
+"jo	c #00B7ED",
+"ko	c #007DB0",
+"lo	c #006498",
+"mo	c #0067AF",
+"no	c #006ABB",
+"oo	c #0068B8",
+"po	c #0065B6",
+"qo	c #006BC5",
+"ro	c #0068CA",
+"so	c #0062C3",
+"to	c #0074D6",
+"uo	c #00ACE3",
+"vo	c #00ABFD",
+"wo	c #009FEA",
+"xo	c #0092E8",
+"yo	c #0071D8",
+"zo	c #0061D1",
+"Ao	c #0063DB",
+"Bo	c #005CDE",
+"Co	c #0046CC",
+"Do	c #00338D",
+"Eo	c #003077",
+"Fo	c #005C8F",
+"Go	c #00B5C5",
+"Ho	c #006C7D",
+"Io	c #00192C",
+"Jo	c #00061A",
+"Ko	c #0D0012",
+"Lo	c #0A000D",
+"Mo	c #11000A",
+"No	c #080300",
+"Oo	c #002C2F",
+"Po	c #005E7D",
+"Qo	c #004D6B",
+"Ro	c #004A70",
+"So	c #002448",
+"To	c #001137",
+"Uo	c #00265A",
+"Vo	c #002756",
+"Wo	c #002B54",
+"Xo	c #001F47",
+"Yo	c #004F7F",
+"Zo	c #007F8D",
+"`o	c #009BA7",
+" p	c #009EB6",
+".p	c #001C3D",
+"+p	c #00183D",
+"@p	c #004C69",
+"#p	c #004D66",
+"$p	c #00B6E3",
+"%p	c #002C24",
+"&p	c #0D0002",
+"*p	c #000A11",
+"=p	c #060009",
+"-p	c #000E1D",
+";p	c #001D2B",
+">p	c #005868",
+",p	c #0093A5",
+"'p	c #00A7BC",
+")p	c #00B8E1",
+"!p	c #005E91",
+"~p	c #005592",
+"{p	c #004D9C",
+"]p	c #004495",
+"^p	c #004D97",
+"/p	c #004D93",
+"(p	c #004F98",
+"_p	c #00509E",
+":p	c #005DC4",
+"<p	c #00A5ED",
+"[p	c #009AE9",
+"}p	c #00A8FF",
+"|p	c #006DD4",
+"1p	c #004FAD",
+"2p	c #00479E",
+"3p	c #003B97",
+"4p	c #0032A7",
+"5p	c #003377",
+"6p	c #008CA7",
+"7p	c #008E9F",
+"8p	c #003A51",
+"9p	c #001C32",
+"0p	c #000312",
+"ap	c #070007",
+"bp	c #0B0500",
+"cp	c #0C0800",
+"dp	c #060900",
+"ep	c #030B00",
+"fp	c #00160E",
+"gp	c #008CA1",
+"hp	c #006684",
+"ip	c #006184",
+"jp	c #005578",
+"kp	c #004166",
+"lp	c #001B3E",
+"mp	c #003559",
+"np	c #003F60",
+"op	c #005D7C",
+"pp	c #007EA0",
+"qp	c #009BAC",
+"rp	c #00C8D5",
+"sp	c #00A9BE",
+"tp	c #006E8C",
+"up	c #001339",
+"vp	c #000B33",
+"wp	c #001535",
+"xp	c #001029",
+"yp	c #002E4F",
+"zp	c #004163",
+"Ap	c #006087",
+"Bp	c #005878",
+"Cp	c #006786",
+"Dp	c #001917",
+"Ep	c #000B07",
+"Fp	c #0A0000",
+"Gp	c #100003",
+"Hp	c #0D000F",
+"Ip	c #150011",
+"Jp	c #150013",
+"Kp	c #090016",
+"Lp	c #001428",
+"Mp	c #008094",
+"Np	c #00B8D5",
+"Op	c #00B8E3",
+"Pp	c #007CA6",
+"Qp	c #005488",
+"Rp	c #004F9A",
+"Sp	c #002F80",
+"Tp	c #003A85",
+"Up	c #003C7E",
+"Vp	c #004188",
+"Wp	c #003F90",
+"Xp	c #0096EA",
+"Yp	c #0075C2",
+"Zp	c #00488D",
+"`p	c #003574",
+" q	c #00326F",
+".q	c #002C6C",
+"+q	c #001762",
+"@q	c #006678",
+"#q	c #006F80",
+"$q	c #001B37",
+"%q	c #001133",
+"&q	c #000203",
+"*q	c #000908",
+"=q	c #000900",
+"-q	c #000E0D",
+";q	c #004851",
+">q	c #008493",
+",q	c #007180",
+"'q	c #006C80",
+")q	c #00829E",
+"!q	c #007B9E",
+"~q	c #006E93",
+"{q	c #005985",
+"]q	c #004972",
+"^q	c #001437",
+"/q	c #002040",
+"(q	c #006886",
+"_q	c #0088A0",
+":q	c #008397",
+"<q	c #005462",
+"[q	c #007CA7",
+"}q	c #00AEC2",
+"|q	c #00B9C8",
+"1q	c #00B5C7",
+"2q	c #004479",
+"3q	c #001238",
+"4q	c #000A26",
+"5q	c #003652",
+"6q	c #004663",
+"7q	c #003E60",
+"8q	c #00638C",
+"9q	c #0072A1",
+"0q	c #007DAA",
+"aq	c #008BB5",
+"bq	c #007591",
+"cq	c #006C87",
+"dq	c #00070C",
+"eq	c #000408",
+"fq	c #000E10",
+"gq	c #001519",
+"hq	c #0C0013",
+"iq	c #21001D",
+"jq	c #00253F",
+"kq	c #00647B",
+"lq	c #00B4DC",
+"mq	c #0077A3",
+"nq	c #00558F",
+"oq	c #00257C",
+"pq	c #002176",
+"qq	c #002E74",
+"rq	c #003271",
+"sq	c #00A4EE",
+"tq	c #00A6EE",
+"uq	c #0095F8",
+"vq	c #007BCE",
+"wq	c #005089",
+"xq	c #003267",
+"yq	c #00244C",
+"zq	c #001733",
+"Aq	c #001129",
+"Bq	c #004F58",
+"Cq	c #00404F",
+"Dq	c #001239",
+"Eq	c #040027",
+"Fq	c #000906",
+"Gq	c #001314",
+"Hq	c #001413",
+"Iq	c #000602",
+"Jq	c #030E00",
+"Kq	c #006F83",
+"Lq	c #008AA7",
+"Mq	c #0085A7",
+"Nq	c #006B9A",
+"Oq	c #005482",
+"Pq	c #003458",
+"Qq	c #007C9A",
+"Rq	c #0093AF",
+"Sq	c #0094AA",
+"Tq	c #0099AC",
+"Uq	c #00666F",
+"Vq	c #00668B",
+"Wq	c #00AAC5",
+"Xq	c #00C4DB",
+"Yq	c #005486",
+"Zq	c #001D41",
+"`q	c #001735",
+" r	c #004F6A",
+".r	c #0075A9",
+"+r	c #0092CF",
+"@r	c #0091B2",
+"#r	c #007592",
+"$r	c #00566D",
+"%r	c #003E55",
+"&r	c #000512",
+"*r	c #001317",
+"=r	c #000C16",
+"-r	c #090017",
+";r	c #002445",
+">r	c #003755",
+",r	c #004865",
+"'r	c #008AB1",
+")r	c #0078A7",
+"!r	c #005AA0",
+"~r	c #003589",
+"{r	c #001D72",
+"]r	c #00166D",
+"^r	c #001E6E",
+"/r	c #002367",
+"(r	c #002B6C",
+"_r	c #002D6D",
+":r	c #002C6F",
+"<r	c #0046AE",
+"[r	c #0062D1",
+"}r	c #0074D5",
+"|r	c #0083CF",
+"1r	c #008EDF",
+"2r	c #0075D5",
+"3r	c #006ACC",
+"4r	c #0059A3",
+"5r	c #003B6F",
+"6r	c #00214A",
+"7r	c #001431",
+"8r	c #00191E",
+"9r	c #003D40",
+"0r	c #003342",
+"ar	c #000329",
+"br	c #100024",
+"cr	c #00181C",
+"dr	c #000B01",
+"er	c #050C00",
+"fr	c #080A00",
+"gr	c #003851",
+"hr	c #009BC4",
+"ir	c #00A9D7",
+"jr	c #00A1D6",
+"kr	c #0083BD",
+"lr	c #0072AD",
+"mr	c #0067A0",
+"nr	c #005A91",
+"or	c #00507E",
+"pr	c #005C8C",
+"qr	c #00709A",
+"rr	c #0086A0",
+"sr	c #00A1B4",
+"tr	c #007780",
+"ur	c #007775",
+"vr	c #00B3D7",
+"wr	c #00AAC3",
+"xr	c #00CEF9",
+"yr	c #00548D",
+"zr	c #003768",
+"Ar	c #003B5E",
+"Br	c #008CAA",
+"Cr	c #007B9C",
+"Dr	c #00769E",
+"Er	c #007BB4",
+"Fr	c #00A3E4",
+"Gr	c #00BCEE",
+"Hr	c #00C6EF",
+"Ir	c #00ACCE",
+"Jr	c #005D73",
+"Kr	c #00080F",
+"Lr	c #000304",
+"Mr	c #00060B",
+"Nr	c #00091D",
+"Or	c #003052",
+"Pr	c #004C6E",
+"Qr	c #0074A0",
+"Rr	c #005673",
+"Sr	c #00658B",
+"Tr	c #005191",
+"Ur	c #00347E",
+"Vr	c #001B6A",
+"Wr	c #001561",
+"Xr	c #00135B",
+"Yr	c #001458",
+"Zr	c #002262",
+"`r	c #002965",
+" s	c #0048A3",
+".s	c #005FB9",
+"+s	c #0067BA",
+"@s	c #006BC2",
+"#s	c #0057B6",
+"$s	c #003E82",
+"%s	c #000B23",
+"&s	c #040026",
+"*s	c #210036",
+"=s	c #000D19",
+"-s	c #01000F",
+";s	c #001333",
+">s	c #00C1FF",
+",s	c #00B6F9",
+"'s	c #00B3FC",
+")s	c #00A0ED",
+"!s	c #0089D2",
+"~s	c #0077C1",
+"{s	c #0072BF",
+"]s	c #00599D",
+"^s	c #00578E",
+"/s	c #006799",
+"(s	c #008FC2",
+"_s	c #009CC5",
+":s	c #009EBD",
+"<s	c #008BA0",
+"[s	c #008490",
+"}s	c #00716F",
+"|s	c #006996",
+"1s	c #0088AB",
+"2s	c #008EAA",
+"3s	c #004A7B",
+"4s	c #00C8F6",
+"5s	c #00D2F7",
+"6s	c #00C0E9",
+"7s	c #00B6F7",
+"8s	c #009DBB",
+"9s	c #00354B",
+"0s	c #000D21",
+"as	c #000818",
+"bs	c #000D0D",
+"cs	c #000922",
+"ds	c #002343",
+"es	c #003E63",
+"fs	c #00385C",
+"gs	c #005F7C",
+"hs	c #005777",
+"is	c #00416E",
+"js	c #00336E",
+"ks	c #002675",
+"ls	c #00145A",
+"ms	c #001255",
+"ns	c #001D5B",
+"os	c #00265E",
+"ps	c #002D68",
+"qs	c #004492",
+"rs	c #0057B1",
+"ss	c #0053A8",
+"ts	c #0052A5",
+"us	c #004CA0",
+"vs	c #003C8A",
+"ws	c #00326E",
+"xs	c #002353",
+"ys	c #000714",
+"zs	c #000E0B",
+"As	c #003D39",
+"Bs	c #000326",
+"Cs	c #1A002C",
+"Ds	c #000C1C",
+"Es	c #000B25",
+"Fs	c #000D28",
+"Gs	c #00457F",
+"Hs	c #00AEF6",
+"Is	c #00A4EF",
+"Js	c #0097E2",
+"Ks	c #0084D0",
+"Ls	c #0079C5",
+"Ms	c #0072C1",
+"Ns	c #0062AB",
+"Os	c #004C85",
+"Ps	c #008DA5",
+"Qs	c #007E8F",
+"Rs	c #008488",
+"Ss	c #0072A7",
+"Ts	c #0085AB",
+"Us	c #008DAF",
+"Vs	c #007193",
+"Ws	c #00577D",
+"Xs	c #005364",
+"Ys	c #001626",
+"Zs	c #000809",
+"`s	c #001223",
+" t	c #001F34",
+".t	c #002E48",
+"+t	c #00263C",
+"@t	c #003853",
+"#t	c #004262",
+"$t	c #00466D",
+"%t	c #0071A0",
+"&t	c #002E85",
+"*t	c #001F5D",
+"=t	c #002458",
+"-t	c #002D5E",
+";t	c #00437D",
+">t	c #00519C",
+",t	c #004199",
+"'t	c #003789",
+")t	c #002762",
+"!t	c #00031E",
+"~t	c #001526",
+"{t	c #002C2E",
+"]t	c #006D68",
+"^t	c #002A2D",
+"/t	c #00122D",
+"(t	c #0A0019",
+"_t	c #0070B6",
+":t	c #00B2F7",
+"<t	c #0097D7",
+"[t	c #0088C7",
+"}t	c #007FC0",
+"|t	c #0073B7",
+"1t	c #0067AA",
+"2t	c #005D9F",
+"3t	c #00538C",
+"4t	c #005587",
+"5t	c #0080BF",
+"6t	c #00B4F9",
+"7t	c #00C7F7",
+"8t	c #0098B8",
+"9t	c #006C82",
+"0t	c #007BA9",
+"at	c #007B90",
+"bt	c #0085A1",
+"ct	c #006F9B",
+"dt	c #006088",
+"et	c #00B7E5",
+"ft	c #002E3C",
+"gt	c #001B30",
+"ht	c #004C68",
+"it	c #004467",
+"jt	c #00709B",
+"kt	c #004E79",
+"lt	c #00347D",
+"mt	c #001F58",
+"nt	c #003866",
+"ot	c #004E85",
+"pt	c #0061B1",
+"qt	c #0050A7",
+"rt	c #002C83",
+"st	c #002459",
+"tt	c #001E5A",
+"ut	c #00073E",
+"vt	c #001946",
+"wt	c #002349",
+"xt	c #002946",
+"yt	c #003648",
+"zt	c #00656F",
+"At	c #00B3B0",
+"Bt	c #004849",
+"Ct	c #001E31",
+"Dt	c #0E0500",
+"Et	c #00081B",
+"Ft	c #00161F",
+"Gt	c #008ECA",
+"Ht	c #0093C6",
+"It	c #0080B7",
+"Jt	c #0078B1",
+"Kt	c #006BA3",
+"Lt	c #006299",
+"Mt	c #005D8D",
+"Nt	c #005B87",
+"Ot	c #0080B5",
+"Pt	c #0080A8",
+"Qt	c #0093B2",
+"Rt	c #006987",
+"St	c #007AA3",
+"Tt	c #008AAE",
+"Ut	c #0095B1",
+"Vt	c #00779E",
+"Wt	c #005078",
+"Xt	c #0086AC",
+"Yt	c #00CBEE",
+"Zt	c #00CFDD",
+"`t	c #00E2E2",
+" u	c #00142D",
+".u	c #000219",
+"+u	c #002236",
+"@u	c #002F35",
+"#u	c #003339",
+"$u	c #005466",
+"%u	c #004960",
+"&u	c #006390",
+"*u	c #007CB0",
+"=u	c #004F85",
+"-u	c #003C78",
+";u	c #001F55",
+">u	c #003162",
+",u	c #004B7A",
+"'u	c #0066A2",
+")u	c #007DD8",
+"!u	c #003DB0",
+"~u	c #002884",
+"{u	c #002561",
+"]u	c #001F5B",
+"^u	c #001054",
+"/u	c #00125D",
+"(u	c #00256B",
+"_u	c #003175",
+":u	c #00336D",
+"<u	c #006B97",
+"[u	c #007B78",
+"}u	c #001E29",
+"|u	c #0A0700",
+"1u	c #0F0800",
+"2u	c #000D1F",
+"3u	c #001E10",
+"4u	c #002627",
+"5u	c #00C6ED",
+"6u	c #00ABD5",
+"7u	c #0099C1",
+"8u	c #0091B9",
+"9u	c #008BB8",
+"0u	c #0086B5",
+"au	c #006993",
+"bu	c #00698F",
+"cu	c #0090B8",
+"du	c #008CA9",
+"eu	c #00A4C0",
+"fu	c #005984",
+"gu	c #00658C",
+"hu	c #007B9B",
+"iu	c #008498",
+"ju	c #008EA5",
+"ku	c #0088B1",
+"lu	c #005378",
+"mu	c #0099B5",
+"nu	c #00959F",
+"ou	c #00A3A4",
+"pu	c #00293F",
+"qu	c #001225",
+"ru	c #001011",
+"su	c #002A32",
+"tu	c #003438",
+"uu	c #004446",
+"vu	c #005054",
+"wu	c #003F4A",
+"xu	c #00576E",
+"yu	c #0097CB",
+"zu	c #008FCF",
+"Au	c #00609F",
+"Bu	c #00407C",
+"Cu	c #00215C",
+"Du	c #00346D",
+"Eu	c #003F76",
+"Fu	c #0067AD",
+"Gu	c #0072D1",
+"Hu	c #003AA9",
+"Iu	c #002887",
+"Ju	c #00215B",
+"Ku	c #00296D",
+"Lu	c #002C7B",
+"Mu	c #002584",
+"Nu	c #002F8F",
+"Ou	c #003E8E",
+"Pu	c #004B8E",
+"Qu	c #005DA1",
+"Ru	c #0082C6",
+"Su	c #00DDDD",
+"Tu	c #00E2D8",
+"Uu	c #005357",
+"Vu	c #000F11",
+"Wu	c #020300",
+"Xu	c #000913",
+"Yu	c #001B18",
+"Zu	c #001C20",
+"`u	c #00505E",
+" v	c #00AAD5",
+".v	c #00BCDA",
+"+v	c #00ABCB",
+"@v	c #00A3C6",
+"#v	c #008CB7",
+"$v	c #0086B6",
+"%v	c #0078A4",
+"&v	c #00668A",
+"*v	c #009FBC",
+"=v	c #009FB1",
+"-v	c #008CA4",
+";v	c #005F7B",
+">v	c #005668",
+",v	c #006B83",
+"'v	c #006B87",
+")v	c #006983",
+"!v	c #0098B7",
+"~v	c #00B1CC",
+"{v	c #00D5E9",
+"]v	c #002A30",
+"^v	c #002F31",
+"/v	c #00202E",
+"(v	c #00373C",
+"_v	c #00292B",
+":v	c #001E21",
+"<v	c #003A41",
+"[v	c #008096",
+"}v	c #007EBB",
+"|v	c #003775",
+"1v	c #0054B0",
+"2v	c #0065E3",
+"3v	c #0051CF",
+"4v	c #003DAF",
+"5v	c #0032A2",
+"6v	c #00289B",
+"7v	c #00279C",
+"8v	c #0034AF",
+"9v	c #0041AF",
+"0v	c #00439D",
+"av	c #004B95",
+"bv	c #006AAC",
+"cv	c #0093D3",
+"dv	c #00F6FD",
+"ev	c #00FDF5",
+"fv	c #00EFDE",
+"gv	c #00C0B4",
+"hv	c #003933",
+"iv	c #000C0B",
+"jv	c #000011",
+"kv	c #0B000E",
+"lv	c #080009",
+"mv	c #004460",
+"nv	c #00C2EC",
+"ov	c #00D0F5",
+"pv	c #00B4D7",
+"qv	c #0091BF",
+"rv	c #0083BA",
+"sv	c #0074A7",
+"tv	c #006688",
+"uv	c #008EAB",
+"vv	c #009CAE",
+"wv	c #00919A",
+"xv	c #008A8C",
+"yv	c #006E74",
+"zv	c #005269",
+"Av	c #00657C",
+"Bv	c #00809B",
+"Cv	c #006478",
+"Dv	c #00B9E0",
+"Ev	c #00BBD7",
+"Fv	c #008080",
+"Gv	c #002D2A",
+"Hv	c #002045",
+"Iv	c #000842",
+"Jv	c #000F28",
+"Kv	c #001928",
+"Lv	c #001920",
+"Mv	c #004D4D",
+"Nv	c #00D0F9",
+"Ov	c #00C5FC",
+"Pv	c #0087BB",
+"Qv	c #007EC9",
+"Rv	c #0063B1",
+"Sv	c #004999",
+"Tv	c #003A9D",
+"Uv	c #0039A9",
+"Vv	c #0031A0",
+"Wv	c #002A91",
+"Xv	c #001F86",
+"Yv	c #002691",
+"Zv	c #004694",
+"`v	c #0092DA",
+" w	c #00BCFC",
+".w	c #00BEEB",
+"+w	c #00D8FC",
+"@w	c #00CAE0",
+"#w	c #00D8E7",
+"$w	c #00FBFD",
+"%w	c #00E0DD",
+"&w	c #00F0E7",
+"*w	c #00AFAB",
+"=w	c #00161C",
+"-w	c #000310",
+";w	c #001E2F",
+">w	c #00445D",
+",w	c #008DBA",
+"'w	c #00CFFB",
+")w	c #00C3ED",
+"!w	c #00A9D1",
+"~w	c #0096C3",
+"{w	c #007CB4",
+"]w	c #006BA4",
+"^w	c #006898",
+"/w	c #006589",
+"(w	c #007B97",
+"_w	c #008293",
+":w	c #00687D",
+"<w	c #006880",
+"[w	c #00A5CB",
+"}w	c #008BAC",
+"|w	c #009EC1",
+"1w	c #00AACC",
+"2w	c #00B8D7",
+"3w	c #00746F",
+"4w	c #004143",
+"5w	c #00061B",
+"6w	c #001E26",
+"7w	c #004D4E",
+"8w	c #00827F",
+"9w	c #009563",
+"0w	c #00B785",
+"aw	c #00D3D6",
+"bw	c #00DCFD",
+"cw	c #0099C7",
+"dw	c #0071AA",
+"ew	c #0075CA",
+"fw	c #0069DC",
+"gw	c #004FC7",
+"hw	c #003BB8",
+"iw	c #0037BF",
+"jw	c #0036D2",
+"kw	c #0035D3",
+"lw	c #0034C7",
+"mw	c #0039A2",
+"nw	c #003C8E",
+"ow	c #006AAA",
+"pw	c #009AAC",
+"qw	c #006273",
+"rw	c #004E64",
+"sw	c #00A0C2",
+"tw	c #00E1FA",
+"uw	c #00C7CD",
+"vw	c #007273",
+"ww	c #005659",
+"xw	c #003D42",
+"yw	c #002125",
+"zw	c #002829",
+"Aw	c #003C39",
+"Bw	c #004E4A",
+"Cw	c #007F79",
+"Dw	c #00D4E7",
+"Ew	c #00DFF7",
+"Fw	c #0099CD",
+"Gw	c #004353",
+"Hw	c #007597",
+"Iw	c #0092BD",
+"Jw	c #006D82",
+"Kw	c #004364",
+"Lw	c #002749",
+"Mw	c #00294C",
+"Nw	c #003757",
+"Ow	c #006E7C",
+"Pw	c #009A9E",
+"Qw	c #004222",
+"Rw	c #003813",
+"Sw	c #004925",
+"Tw	c #00A26F",
+"Uw	c #0087BD",
+"Vw	c #0074BA",
+"Ww	c #0065C2",
+"Xw	c #0060DC",
+"Yw	c #0059F2",
+"Zw	c #004CF2",
+"`w	c #0043EA",
+" x	c #003FDB",
+".x	c #0048D0",
+"+x	c #00579D",
+"@x	c #00CCCD",
+"#x	c #00A7AA",
+"$x	c #00414A",
+"%x	c #001424",
+"&x	c #001230",
+"*x	c #004D71",
+"=x	c #00D5FA",
+"-x	c #00E6EE",
+";x	c #00AAB2",
+">x	c #00848C",
+",x	c #007C83",
+"'x	c #008F95",
+")x	c #00E5DF",
+"!x	c #00EEEE",
+"~x	c #00DEF6",
+"{x	c #00B0EB",
+"]x	c #0090CC",
+"^x	c #007EB6",
+"/x	c #0073A9",
+"(x	c #00719A",
+"_x	c #006288",
+":x	c #005572",
+"<x	c #0085B9",
+"[x	c #009DDB",
+"}x	c #00A4E2",
+"|x	c #0069A7",
+"1x	c #00635C",
+"2x	c #000B00",
+"3x	c #001000",
+"4x	c #005F4C",
+"5x	c #008FCC",
+"6x	c #005CA8",
+"7x	c #0063BE",
+"8x	c #006AE2",
+"9x	c #0062E8",
+"0x	c #0055E6",
+"ax	c #0057DE",
+"bx	c #0069B7",
+"cx	c #009BDB",
+"dx	c #00C2BF",
+"ex	c #007476",
+"fx	c #00152D",
+"gx	c #000125",
+"hx	c #00C5E1",
+"ix	c #0098AC",
+"jx	c #00ABBF",
+"kx	c #00C6DA",
+"lx	c #00C2CD",
+"mx	c #00F2FD",
+"nx	c #00D6FF",
+"ox	c #00AFFB",
+"px	c #0085C3",
+"qx	c #0070A4",
+"rx	c #006F9F",
+"sx	c #00739E",
+"tx	c #006E94",
+"ux	c #0071A6",
+"vx	c #00415C",
+"wx	c #0093D2",
+"xx	c #00A1E5",
+"yx	c #00ACEF",
+"zx	c #00BCFB",
+"Ax	c #00A9D9",
+"Bx	c #00A0E1",
+"Cx	c #0090C8",
+"Dx	c #00A8D3",
+"Ex	c #005552",
+"Fx	c #000E13",
+"Gx	c #00151A",
+"Hx	c #00494E",
+"Ix	c #00BAC0",
+"Jx	c #00DDE6",
+"Kx	c #00E0F2",
+"Lx	c #0086CF",
+"Mx	c #005FAC",
+"Nx	c #00469A",
+"Ox	c #0062B6",
+"Px	c #007FD2",
+"Qx	c #00C2C9",
+"Rx	c #00717F",
+"Sx	c #001132",
+"Tx	c #004866",
+"Ux	c #00C1E6",
+"Vx	c #00EBFC",
+"Wx	c #009CC2",
+"Xx	c #0098BA",
+"Yx	c #00C9F4",
+"Zx	c #00C7E3",
+"`x	c #00C9D8",
+" y	c #00CCFB",
+".y	c #00C8FF",
+"+y	c #00AAFF",
+"@y	c #007DBA",
+"#y	c #00729E",
+"$y	c #007094",
+"%y	c #006282",
+"&y	c #005271",
+"*y	c #00507D",
+"=y	c #0087C2",
+"-y	c #0098DC",
+";y	c #009BD9",
+">y	c #00B2F1",
+",y	c #00D5E1",
+"'y	c #00AEF5",
+")y	c #00B0F2",
+"!y	c #008EB4",
+"~y	c #00B5D4",
+"{y	c #007D82",
+"]y	c #00132D",
+"^y	c #00092D",
+"/y	c #001B39",
+"(y	c #005774",
+"_y	c #00BFE7",
+":y	c #00C2FA",
+"<y	c #00B9F4",
+"[y	c #00BFFD",
+"}y	c #00C5E9",
+"|y	c #009CC7",
+"1y	c #003047",
+"2y	c #008496",
+"3y	c #00FCEA",
+"4y	c #00F7F7",
+"5y	c #00B9F7",
+"6y	c #00BEF9",
+"7y	c #00C0F6",
+"8y	c #00B6E7",
+"9y	c #0092C0",
+"0y	c #0081B7",
+"ay	c #0096E9",
+"by	c #007BA8",
+"cy	c #00506E",
+"dy	c #005784",
+"ey	c #0089CB",
+"fy	c #008FD3",
+"gy	c #0093CF",
+"hy	c #00ADEB",
+"iy	c #00ACF1",
+"jy	c #009DD8",
+"ky	c #005D82",
+"ly	c #004971",
+"my	c #005477",
+"ny	c #00E1FC",
+"oy	c #00ACE2",
+"py	c #0089B7",
+"qy	c #0096A9",
+"ry	c #00E5E9",
+"sy	c #00F2E6",
+"ty	c #00FAE0",
+"uy	c #00BCF3",
+"vy	c #007DB5",
+"wy	c #0085C4",
+"xy	c #00B2FD",
+"yy	c #00B6F6",
+"zy	c #00B4E7",
+"Ay	c #00ABE5",
+"By	c #009AD7",
+"Cy	c #006CAB",
+"Dy	c #0087CE",
+"Ey	c #008CC7",
+"Fy	c #005772",
+"Gy	c #00415D",
+"Hy	c #005F93",
+"Iy	c #004A6E",
+"Jy	c #0073A7",
+"Ky	c #007EB0",
+"Ly	c #0089B9",
+"My	c #00B6E1",
+"Ny	c #00C4EE",
+"Oy	c #00D6FA",
+"Py	c #00AEF2",
+"Qy	c #0097D0",
+"Ry	c #0087A9",
+"Sy	c #00E1FB",
+"Ty	c #00E4F8",
+"Uy	c #00CBF0",
+"Vy	c #00F3FD",
+"Wy	c #00E6E5",
+"Xy	c #00FFF6",
+"Yy	c #00BEC1",
+"Zy	c #007899",
+"`y	c #0083BB",
+" z	c #008AC3",
+".z	c #0090C7",
+"+z	c #00A2DB",
+"@z	c #00A7D7",
+"#z	c #00B3E0",
+"$z	c #009DDA",
+"%z	c #0088C5",
+"&z	c #0095DA",
+"*z	c #0079B0",
+"=z	c #007EA9",
+"-z	c #005272",
+";z	c #00759C",
+">z	c #0090BE",
+",z	c #009BC9",
+"'z	c #00C7FC",
+")z	c #00C9FD",
+"!z	c #00A5DB",
+"~z	c #0099D3",
+"{z	c #009AD8",
+"]z	c #0091C9",
+"^z	c #0087B7",
+"/z	c #007FA5",
+"(z	c #007794",
+"_z	c #00839C",
+":z	c #00B1CB",
+"<z	c #00CBDB",
+"[z	c #00CDD0",
+"}z	c #00FDFA",
+"|z	c #00F3F5",
+"1z	c #00F6FB",
+"2z	c #00EDFA",
+"3z	c #00D4E9",
+"4z	c #00AFC6",
+"5z	c #009CB1",
+"6z	c #009CAF",
+"7z	c #00A4B4",
+"8z	c #00B2BF",
+"9z	c #00B9B9",
+"0z	c #00D7E4",
+"az	c #00EEF9",
+"bz	c #00E8ED",
+"cz	c #00CCD7",
+"dz	c #007B8B",
+"ez	c #006D8D",
+"fz	c #007EAE",
+"gz	c #008DBF",
+"hz	c #00A9E1",
+"iz	c #00ABDD",
+"jz	c #00B0DF",
+"kz	c #00C6F8",
+"lz	c #00C4FF",
+"mz	c #00B9FB",
+"nz	c #0092CC",
+"oz	c #007FB9",
+"pz	c #008AC6",
+"qz	c #006F98",
+"rz	c #004760",
+"sz	c #006B91",
+"tz	c #007199",
+"uz	c #0091C5",
+"vz	c #00B2ED",
+"wz	c #00B2E2",
+"xz	c #00B2DD",
+"yz	c #0094C0",
+"zz	c #0082B0",
+"Az	c #0085BB",
+"Bz	c #0080B9",
+"Cz	c #0077AD",
+"Dz	c #007AAD",
+"Ez	c #00709E",
+"Fz	c #006D96",
+"Gz	c #005C75",
+"Hz	c #006B84",
+"Iz	c #009ABE",
+"Jz	c #00FFF0",
+"Kz	c #00F7EB",
+"Lz	c #00D0D2",
+"Mz	c #00AEBA",
+"Nz	c #00A3B3",
+"Oz	c #007C91",
+"Pz	c #008DA9",
+"Qz	c #00C4CB",
+"Rz	c #00A3AC",
+"Sz	c #009598",
+"Tz	c #00D0CC",
+"Uz	c #00EDE2",
+"Vz	c #00E0E5",
+"Wz	c #0076A5",
+"Xz	c #004164",
+"Yz	c #00648A",
+"Zz	c #00688D",
+"`z	c #0083AF",
+" A	c #0089B6",
+".A	c #008FB9",
+"+A	c #009DC8",
+"@A	c #00B3E9",
+"#A	c #005287",
+"$A	c #007BAB",
+"%A	c #00667F",
+"&A	c #005275",
+"*A	c #004159",
+"=A	c #003C52",
+"-A	c #004863",
+";A	c #00587D",
+">A	c #00648D",
+",A	c #007092",
+"'A	c #006C94",
+")A	c #006E9E",
+"!A	c #006393",
+"~A	c #005C88",
+"{A	c #004D72",
+"]A	c #00496C",
+"^A	c #004664",
+"/A	c #004660",
+"(A	c #00B8DF",
+"_A	c #00E0EB",
+":A	c #00F6F6",
+"<A	c #00C7CC",
+"[A	c #009099",
+"}A	c #009AAD",
+"|A	c #009AA5",
+"1A	c #008384",
+"2A	c #00C8BE",
+"3A	c #00F7E3",
+"4A	c #00E8D2",
+"5A	c #00EEE0",
+"6A	c #00EBE9",
+"7A	c #0089C0",
+"8A	c #003B6C",
+"9A	c #002C4C",
+"0A	c #004F6F",
+"aA	c #0077A2",
+"bA	c #007BA4",
+"cA	c #0086AE",
+"dA	c #0083AA",
+"eA	c #007290",
+"fA	c #006A87",
+"gA	c #007BA3",
+"hA	c #0096C9",
+"iA	c #00677D",
+"jA	c #005A6D",
+"kA	c #005B85",
+"lA	c #00354E",
+"mA	c #003B56",
+"nA	c #00486B",
+"oA	c #004362",
+"pA	c #004661",
+"qA	c #004965",
+"rA	c #005476",
+"sA	c #005478",
+"tA	c #004B6D",
+"uA	c #00486C",
+"vA	c #002943",
+"wA	c #001A34",
+"xA	c #00213B",
+"yA	c #002D4A",
+"zA	c #003452",
+"AA	c #004165",
+"BA	c #005173",
+"CA	c #007495",
+"DA	c #009CC0",
+"EA	c #00AFD7",
+"FA	c #0093B0",
+"GA	c #00819A",
+"HA	c #0091AD",
+"IA	c #009A9A",
+"JA	c #00B5AF",
+"KA	c #00EFEC",
+"LA	c #009BCF",
+"MA	c #005785",
+"NA	c #003867",
+"OA	c #002E62",
+"PA	c #00285C",
+"QA	c #00102C",
+"RA	c #00233D",
+"SA	c #003554",
+"TA	c #004469",
+"UA	c #00496E",
+"VA	c #004E71",
+"WA	c #005576",
+"XA	c #004F68",
+"YA	c #004358",
+"ZA	c #004C66",
+"`A	c #005577",
+" B	c #00486A",
+".B	c #00304C",
+"+B	c #00273B",
+"@B	c #00192E",
+"#B	c #00274A",
+"$B	c #002F57",
+"%B	c #003860",
+"&B	c #00456E",
+"*B	c #00557E",
+"=B	c #00B7CE",
+"-B	c #00A0BA",
+";B	c #005F8E",
+">B	c #003D6B",
+",B	c #002C64",
+"'B	c #002D72",
+")B	c #002770",
+"!B	c #00112B",
+"~B	c #001C34",
+"{B	c #002736",
+"]B	c #002532",
+"^B	c #001620",
+"/B	c #000D18",
+"(B	c #000514",
+"_B	c #08000B",
+":B	c #0E000F",
+"<B	c #08000D",
+"[B	c #000826",
+"}B	c #001C44",
+"|B	c #002B5A",
+"1B	c #001041",
+"2B	c #000B3B",
+"3B	c #00153E",
+"4B	c #003051",
+"5B	c #006AAD",
+"6B	c #00487D",
+"7B	c #00316C",
+"8B	c #002F6D",
+"9B	c #003478",
+"0B	c #003278",
+"aB	c #002B61",
+"bB	c #000C1B",
+"cB	c #00050E",
+"dB	c #000718",
+"eB	c #0B0002",
+"fB	c #0B0005",
+"gB	c #00011B",
+"hB	c #001234",
+"iB	c #001B41",
+"jB	c #00133A",
+"kB	c #02002E",
+"lB	c #09002F",
+"mB	c #000D31",
+"nB	c #00233F",
+"oB	c #002B47",
+"pB	c #003C62",
+"qB	c #002855",
+"rB	c #002452",
+"sB	c #00245C",
+"tB	c #002B71",
+"uB	c #002A7E",
+"vB	c #001F50",
+"wB	c #001126",
+"xB	c #00060D",
+"yB	c #050900",
+"zB	c #111100",
+"AB	c #131100",
+"BB	c #030100",
+"CB	c #0E0C00",
+"DB	c #130900",
+"EB	c #000B29",
+"FB	c #00102E",
+"GB	c #001E36",
+"HB	c #060002",
+"IB	c #050006",
+"JB	c #001123",
+"KB	c #001845",
+"LB	c #001843",
+"MB	c #001742",
+"NB	c #001C4F",
+"OB	c #001D52",
+"PB	c #001A47",
+"QB	c #001A4B",
+"RB	c #001948",
+"SB	c #001C5B",
+"TB	c #001865",
+"UB	c #000D36",
+"VB	c #000C2D",
+"WB	c #000722",
+"XB	c #050100",
+"YB	c #000301",
+"ZB	c #0A0800",
+"`B	c #070600",
+" C	c #090400",
+".C	c #001830",
+"+C	c #000407",
+"@C	c #000307",
+"#C	c #000317",
+"$C	c #000934",
+"%C	c #000F45",
+"&C	c #001752",
+"*C	c #00184D",
+"=C	c #001649",
+"-C	c #001957",
+";C	c #001155",
+">C	c #00104F",
+",C	c #000A45",
+"'C	c #002443",
+")C	c #000E18",
+"!C	c #000508",
+"~C	c #00072E",
+"{C	c #001342",
+"]C	c #00103B",
+"^C	c #000B2D",
+"/C	c #001C31",
+"(C	c #00172A",
+"_C	c #000209",
+":C	c #00051A",
+"<C	c #00072C",
+"[C	c #00092F",
+"}C	c #000F36",
+"|C	c #00122F",
+"1C	c #000E2B",
+"2C	c #000B28",
+"3C	c #001C33",
+"4C	c #000614",
+"5C	c #000B27",
+"6C	c #00203A",
+"7C	c #000A12",
+"8C	c #000916",
+"9C	c #00041A",
+"0C	c #00071E",
+"aC	c #00080D",
+"bC	c #000709",
+"cC	c #040300",
+"dC	c #000003",
+"eC	c #080200",
+"fC	c #040009",
+"gC	c #02001C",
+"                                                                                                                                                                                                                                                              ",
+"                                                                                                                                                                                                                                                              ",
+"                                                                                                                        .                                                                                                                                     ",
+"                                                                                                                      + @                                                                                                                                     ",
+"                                                                                                                      # $ %                                                                                                                                   ",
+"                                                                                                                    % $ $ &                                                                                                                                   ",
+"                                                                                                                    * & & * =                                                                                                                                 ",
+"                                                                                                                  - ; - ; > , '                                                                                                                               ",
+"                                                                                                                ) ! ~ ~ { { ] ] ^                                                                                                                             ",
+"                                                                                                            / ( _ _ : < [ } | 1 2 3 4                         5 . = = = = = = =                                                                               ",
+"                                                                    = = = = = =                           6 7 8 9 0 a b c d e f _ g h i j                 k l l m = = = = = = = = =                                                                           ",
+"                                                                = = = = = = = = = =                   n o p q r s t u v w x y z A B C D E F G           H l I J = = = = = = = = = = =                                                                         ",
+"                                                            = = = = = = = =   = = = = =           K L M N O P Q R S T U V W X Y Z ` M  ...+.@.#.$.    = %.&.*.&.=.  = = = = = = = = = =                                                                       ",
+"                                                            = = = = = = =       = = = = =     -.A ;.>.,.'.).S !.~.{.].^./.(._.:.X <.[.u }.|.1.2.3.g 4.5.6.%.*.*.    = = = =         = = =                                                                     ",
+"                                                          = = =     = = = =     = = = = = = = 7.8.9.0.S a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.X p.q.r. .s.t.< u.{ v.w.x.y.= = = = =         = = =                                                                     ",
+"                                                        y.. z.A.      *.x.B.C.D.E.E.> ; * F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.S Y.Z.`. +.+++@+#+p $+E %+&+*+=+6., = = @ l         -+z.;+>+                                                                  ",
+"                                                        ,+m '+)+      !+~+{+]+^+/+(+_+u.:+<+[+}+|+1+2+3+4+5+6+7+8+9+0+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+u.&+E.s+v.6.= t+u+v+    w+x+y+z+A+                                                                  ",
+"                                                        ,+B+u+C+    D+E+6.&+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+`+ @.@+@@@#@$@%@&@*@=@-@;@>@,@'@)@!@7.:+~@{@]@^@/@(@_@:@<@[@}@x+|@'+1@                                                                  ",
+"                                                      2@E.3@_@4@, , 4@5@6@7@8@9@0@a@b@c@d@e@f@g@h@i@j@k@l@m@  n@o@p@q@r@s@        t@u@v@w@x@y@z@A@B@C@D@E@F@*+*+G@H@( !@7 I@J@K@L@M@N@O@P@-                                                                   ",
+"                                                      Q@R@S@T@U@V@W@X@Y@Z@`@[+ #.#+#@###Z $#%#&#*#=#-#;#>#,#'#  )#              !#~#{#]#^#/#(#_#:#<#[#+.}#|#{ 1#-.2#3#4#5#6#7#8#9#0#a#b#c#d#e#                                                                ",
+"                                                      f#g#h#i#j#k#l#m#n#o#p#q#r#i s#t#u#v#w#x#y#z#A#B#C#D#E#F#G#                H#I#J#K#L#M#N#!#O#P#Q#R#S#T#U#V#W#X#Y#Z#`# $.$+$@$#$$$%$&$*$=$                                                                ",
+"                                                    -$;$>$,$'$)$!$~${$]$^$/$($_$:$<$[$}$|$1$2$3$4$5$6$7$8$9$0$a$b$c$          ^#d$e$f$g$h$i$2$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z$A$B$C$D$E$F$G$H$I$                                                            ",
+"                                                J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$`$ %.%+%@%#%$%%%&%*%=%-%;%>%,%'%)%!%~%{%]%^%/%(%_%:%<%[%}%|%1%2%3%4%5%6%7%8%9%0%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%                                                        ",
+"                                              s%t%]$u%v%w%x%y%z%A%-#B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%P%Q%R%S%T%U%V%W%X%Y%Z%`% &.&+&@&#&$&%&&&*&=&-&;&>&,&'&)&!&~&{&]&^&/&(&_&:&<&[&}&|&1&2&3&4&5&6&7&8&9&0&                                                      ",
+"                                            a&`$b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&A&-&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&`&,& *.*+*k%@*#*$*%*&***4%=*-*`+;*>*,*'*)*!*~*{*]*                                                    ",
+"                                          ^*G%/*(*_*:*<*[*|%}*|*1*2*3*4*5*6*7*8*9*0*a*b*c*d*e*f*g*h*i*j*k*l*N%m*n*o*p*q*r*s*t*u*v*w*x*y*z*A*B*C*D*E*F*f$=*G*A&H*I*J*K*i$    L*M*N*O*P*i$Q*R*S*T*U*V*W*X*Y*Z*                                                  ",
+"                                        `* =.=+=@=#=$=%=@%&=*===-=;=>=,='=)=!=~=Z&{=]=^=/=(=_=:=<=[=}=|=w*1=l*2=k*3=4=5=6=7=8=9=0=a=b=}&c=d=e=f=g=h=i=j=k=l=m=n=o=p=Y+            q=    r=s=t=u=v=w=x=y=z=A=                                                  ",
+"                                        B=C=D=E=F=G=H=I=J==& ***w*}%K=L=M=N=O=P=Q=R=S=T=U=V=Q@i=W=X=Y=Z=`= -.-+-H#@-#-$-%-&-*-=---;->-,-H=c='-)-!-~-{-]-^-/-(-J=A&_-:-                  }&I=<-[-}-|-1-2-3-^-4-                                                ",
+"                                      5-6-7-8-+-9-.-5$$%J=A&4%}%0-=&a-b-c-d-'%e-f-g-h-i-j-k-l-m-n-o-p-!&q-r-s-t-u-v-w-x-y-z-A-B-y-C-D-E-F-G-H-I-9@J-K-l-L-M-N-O-P-Q-R-S-        T-        I=U-V-W-X-Y-Z-`- ;.;+;                                              ",
+"                                    @;#;$;%;&;*=c=          $*0-|%*;=;P$-;;;>;,;';);!;~;{;];^;#+/;(;_;:;<;[;};|;1;2;3;4;5;6;7;8;9;0;a;b;c;d;e;f;g;h;i;j;[=k;l;m;n;o;p;q;r;s;t;u;v;w;x;    y;1=0-z;A;B;C;D;E;F;G;                                              ",
+"                                    H;I;J;K;L;M;w*          N;O;P;Q;R;S;T;U;V;W;X;Y;Z;`; >.>+>@>#>$>%>v*&>*>=>->;>>>,>'>)>!>~>{>]>^>/>(>_>:><>[>}>|>1>2>3>4>5>6>7>8>9>0>a>b>c>d>e>f>g>h>i>    j>k>l>f%m>n>o>`-p>q>                                            ",
+"                                  r>s>t>u>v>[*w>{=          x>{&y>z>A>B>r>C>D>E>F>G>H>I>J>K>L>==M>N>#*r-O>P>Q>R>S>T>U>V>W>X>Y>Z>`> ,.,+,@,#,$,%,3=3=I#&,*,=,-,;,>,,,',),!,~ ~,{,],^,/,(,_,:,  <,[,},|,1,2,3,4,5,6,7,8,9,                                      ",
+"                                  0,a,b,c,d,e,f,[,%&      g,=$h,i,j,k,l,m,n,o,p,E p,q,r,s,t,u,$*v,w,x,y,z,A,B,C,D,E,O@F,G,H,I,J,K,L,M,N,O,P,Q,R,S,  T,w>U,V,W,X,Y,Z,`, '.'+'u+        @'#'$'%'&'&'I#*'='-';'>',''')'!'~'{']'                                  ",
+"                                  ^'/'('_':'[>A&l*      <'['}'|'      1'2'3'4'5'6'7'8'9'0'a'b'c'  d'e'f'g'h'i'_ ( j'k'e>l'm'n'o'` }.M p'q'r's't'u'v'U-#%w'x'y'z'u+z.l A'B'.'C'          D'E'F'G'@%*=H'I'J'K'L'M'N'O'P'Q'R'S'T'                                ",
+"                            U'V'W'X'Y'Z'`' ).)r=J=      +)@)#)$)        %)&)p,*)F =)-);)>),)')))!)~){)])^)/)()s#_):)<)[)f@})|)1)2)3)4)v 5)6)7)8)9)0)a)b)c)d)e)f)y.g)    h)i)            j)W=k)l)|%.-m)n)o)p)-#q).=r)s)t)u)v)w)x)                              ",
+"                        y)z)A)B)C)D)E)F)G)H)I)J)%%    K)L)M)N)            O)^)l'P)Q)R)S)T)U)V)W)X)Y)Z)`);$ !.!+!@!#!$!%!&!*!=!)>-!;!>!,!'!)!1)!!~!{!]!Z%^!/!(!~ _!      :!D <!          [!}!|!1!  2!3!4!5!6!7!u'8!9!0!J;a!b!c!d!e!                            ",
+"                      f!g!h!i!j!k!l!m!x=Z'n!o!p![>q!  r!s!t!u!            v!])w!x!y!z!A!/,B!C!D!<+E!F!G!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!V!W!X!Y!Z!`!u# ~.~+~@~#~$~| %~      &~*~=~          n--~;~>~    ,~I='~]%)~!~~~{~]~^~c=  /~(~_~                            ",
+"                    :~<~[~}~|~1~2~3~4~5~-#6~7~8~9~0~  a~t!b~c~            i G!d~e~f~g~h~T@i~j~@.<+k~l~m~A Z n~'>o~M.p~q~r~s~t~u~v~w~x~y~z~A~B~C~D~E~F~G~H~I~: (+J~      ..K~L~M~      [!W@N~O~P~      $*Q~R~S~T~U~V~W~X~    [%Y~Z~                            ",
+"                  `~G~ {    .{+{@{#{${%{&{[-*{={-{;{>{,{'{){!{~{        {{h)        ]{^{/{({_{:{<{[{}{+.|{1{2{3{4{5{6{7{8{9{0{a{b{c{d{e{f{g{h{i{j{k{l{m{n{o{p{< ~ q{}+r{s{t{u{v{w{x{y{z{A{B{C{D{      &=E{F{G{H{I{J{K{L{M{N{O{P{Q{R{                          ",
+"                  S{T{        U{V{W{X{3-Y{Z{`+`{ ].]+]C,}'@]#]' #]|#  J-$]%]        Y)&]*]o,=]-];]>],]'])]!]~]{]]]^]/](]_]:]<][]}]|]1]2]3]4]5]6]7]8]9]0]a]b]c]s#d]Y)e]f]C,g]h]9]i]j]k]l]m]^'n]^!      A&o]p]q]r]U$s]t]u]v]a!a)w]x]y]                          ",
+"                  z]A]        B]C]D]E]F]Z-G]H]I]J]K]L]M]N]j'O]P]Q]q{R]S]T]U]        D.V]U@W]X]Y]Z]`] ^.^+^@^#^$^%^&^*^=^-^;^>^,^'^)^!^~^  {^]^^^/^(^_^Q>:^<^[^V>}^|^1^2^3^4^h]5^6^7^8^9^0^G$a^b^c^    I#d^e^f^g^h^i^])j^k^l^m^n^o^                            ",
+"                  p^q^r^  s^t^d+u^v^w^X*Y'x^I]c!y^z^A^B^C^D^) E^F^G^H^I^J^K^L^    M^N^u!O^P^Q^R^S^T^U^V^W^X^Y^Z^`^ /-^./a;+/@/#/$/%/&/*/=/-/;/>/,/'/)/!/~/{/]/^///+'L^(/_/:/    </[/}/|/1/2/3/4/5/6/7/8/9/0/a/.%b/i=c/d/e/f/g/h/i/                            ",
+"                  j/k/l/m//'n/*@o/g@p/q/r/s/t/u/J%v/w/e'x/%]y/z/l~A/B/C/D/E/F/E.G/H/I/m'J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/`/ (.(+(@(#($(%(&(*(=(-(;(p/>(,('()(!(~(H^{(h)F ](    ^(/(((_(U$:(<([(}(|(1(2(3([=4(5(6(M@7(8(9(0(a(b(c(                            ",
+"                  d(e(f(g(h(i(j(}$k(l(0)m(n(o(p(v)    q(r({(s(r#t(      Y)I^u(v(w(]+F x(y(z(A(B(C(D(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(+(Y(Z(`( _v)._+_@_#_N@:=X>Q@_ $_    %_&_*_=_-_;_>_    ,_    '_)_!_~_{_]_b ^_/_(___:_                              ",
+"                  <_[_}_|_1_2_3_4_5_6_7_8_9_0_a_        b_c_d_e_f_d~    g_h_i_~ j_@]k_l_m_n_o_p_q_r_s_t_u_v_w_x_y_z_A_B_C_o+D_E_B@F_G_H_I_J_K_L_1;M_N_O_P_Q_R_S_T_g#U_V_c/D W_X_Y_3_Z_`_ :.:              +:@:B!}!l##:$:%:&:*:=:                              ",
+"                    -:;:>:,:':):!:~:{:]:^:/:(:            _:::<:[:}:|:1:X@O@c>2:3:4:5:6:7:8:9:k;0:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:A:B:C:D:E:F:G:H:g#I:V_J:K:L:M:N:O:P:                  ';Q:j=)!R:S:T:U:V:W:                              ",
+"                      X:Y:Z:`: <.<S++<@<~_#<                $<%<&<S@],[ *<|#=)3:=<-<#~;<><e$,<d$'<)<!<~<{<]<^</<(<_<s.C t.:<<<[<}<|<1<2<3<4<5<6<7<8<9<0<a<b<o)c<d<e<f<g<h<i<j<k<l<]*m<n<  o<    p<              q<r<s<t<u<v<w<x<y<                            ",
+"                      z<A<B<C<D<E<F<G<t'H<                    I<J<K<X>L<M<N<O<N)P<Q<R<S<T<U<V<W<X<Y<Z<`< [.[+[@[#[8.$[m:%[    &[*[=[-[;[>[,['[)[![~[{[][^[/[([_[}=:[<[+{[[}[|[1[2[3[    4[    5[  6[7[            8[9[0[a[b[c[d[z                             ",
+"                      e[f[g[h[i[j[k[l(Y'                          l[m[n[o[p[q[r[s[t[u[v[w[!<x[g&y[z[A[A[/&B[  C[D[E[F[G[        H[I[P]_ c/J[>;d%l$K[L[M[N[O[P[Q[R[S[T[U[b/V[W[2#X[Y[Z[  `[ }w'  #~U#.}%<          +}@}#}$}b[%}&}T *}                          ",
+"                      =}-};}>},}'})}!}          ~}C@{}            ]}^}/}(}_}:}<}[}}}|}1}2}3}4}5}6}7}8}9}0}a}b}c}d}e}f}g}        h}i}j}y/k}l}m}n}5}o}p}q}r}s}t}u}v}T[w}x}y}{_5'q,J,z}A}B}  C}D}E}F}G}' .'H}          I}J}K}L}M}&}/^M!N}                        ",
+"                    O}P}Q}R}S}T}U}V}W}        X}$.Y}3#Z}  `}     |.|+|n$A>@|#|$|%|&|*|=|-|;|>|,|'|)|!|h/~|{|]|^|/|(|_|:|<|[|{(}|||2 1|R]T)2|3|4|5|6|7|8|9|0|a|b|c|d|e|f|g|h|+._)i|Z>j|k|  %%l|m|(/(/H,n|o|          p|q|h{r|s|t|u|v|w|                        ",
+"                    x|y|z|A|B|C|D|E|          Y)F|m'G|H|I|      J|K|L|s_  M|N|O|P|Q|.:R|S|T|U|V|d;)|W|X|Y|Z|`| 1.1+1@1#1K,$1(/%1],&1*1=1-1;1>1,1'1)1!1~1{1]1^1~%/1(1_1:1-@<1(_l- ![1}1|111  %%21G>31=<4151            61718]819101a1b1c1                      ",
+"                  L~d1e1f1g1h1i1j1k1          g=l1X}m1n1  o1    p1q1r1d+s1      t1u1v1w10}x1y1z1A1Y~y1B1C1D1j&E1F1G1D~H19 M<<{s!I1J1K1X]L1M1N1O1P1Q1S|R1S1T1U1V1W1X1Y1Z1`1 2.2D_A m:+2@2#2$2    %2&2*2=2              -2;2>2,2D~'2)2r:!2                      ",
+"                  ~2{2]2^2/2(2_2:2<2          [2}2|21222      324252627282          9202a2b2c2d2e2f2y1g2,12}h2i2j2k2l2m2n2o2    p2q2r2s2t2u2v2z;[;,<w2x2S1y2z2A2B2B2C2D2E2F2G2H2I2J2I22_K2L2M2                      V%N2O2P2Q2R2'2S2z|T2                      ",
+"                  e@U2V2W2X2Y2Z2`2 3.-m=.3                    +3@3#3$3                =|%3&3*3=3-3;3>3,3'3)3!3~3{3S=]3w}^3/3    I~(3_3:3<3[3}3|313233343536373839303a3b3c3d3e3f3g3h3M i3j3k3l3m3                    n3,(  o3!>p3q3r3s3t3u3                    ",
+"                  v3w3o~x3y3z3A3B3C3D3}(E3                  F3G3H3I3J3                  [&K3L3M3^%N3O3P3Q3R32}S3P{>1T3U37%n]    V3W3<(X3Y3Z3`3[; 4.4+4@4#4$4%4&4*4=4-4;4>4,4'4)4!4~4{4]4U2+!^4/4  {=              (4_4      :4<4[4Y.,>}4|4                    ",
+"                14243444546474849404a4                      b4c4d4e4f4g4              h4      i4)~j4k4,313l4m4n4o4p4q4r4s4t4Y)u4A!v4w45,x4y4z4{|A4X%B4C4D4E4F4G4H4I4J4K4L4M4N4O4P4Q4R4$:#:S4T4U4@_}%              V4W4      X4I.Y4Z4`4 5.5+5                  ",
+"                @5#5$5%5&5*5=5-5    ;5                    >5,5'5)5!5~5{5]5        ^5        /5(5_5:5<5[5n4}5|5152535K$h=y/::455565(/75859505^1a5b5c5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5s5t5u5v5w5x5y5z5A5B5          C5D5        N:o+E5F5j{n~4)v5                  ",
+"                G5H5I5J5s~K5L5M5    N5                  O5P5Q5-5R5S5T5U5V5W5                X5r:Y5Z5`5 6R[.6+6@6#6$6%6$~&6  *6=6-6;6S#l->6~*,6'6)6=$H!~2!6~6{6]6^6/6(6_6:6<6[6}6|6162636v 46566676869606        a6b6        c6d6 ^F4e6s|f6g6h6                ",
+"              i6j6k6l6m6n6o6p6        q6              r6s6t6u6v6w6x6y6>-z6A6B6C6D6  E6  F6G6H6I6J61{$!K6L6M6N6O6P62:^@        Q6R6S6m~M<T6U6V6W6X6Y6R#!6Z6`6$+`  7.7+7@7#7$7%7&7*7.7=7>.-7;7S4'/>7,7'7)7        !7            ~7{7]7d}^7/7(7_7:7              ",
+"              <7[7}7|717273784        47          576777E(879707a7b7c7d7e7f7g7h7i7O#j7k7V}l7m7_|n7o7p7q7r7s7t7u7(/i_v7        w7U#u.2:x72:y7z7A7B7C7K, .D7E7F7G7H7I7J7K7L7M7N7O7P7Q7R7S7f3)!T7U7V7W7X7Y7^#    Z7h!            `7 8h5.8+8@8#8$8d %8            ",
+"            H+&8[7*8=8-8;8>^>8        ,8'8        )8!8v:~8{8]8^8/8(8k[_8:8<8[8}8T5>4|818Z:28384858687888U298N2V3c_08a8        b8c8d83:e8f8g8h8i8j8[|k8l8m:9(    m8<#n8o8,^p8q8r8s8t8u8t3E4N i3v8w8x8y8z8A8    B8C8            D8E8.5F8G8H8I8J8K8_ V#          ",
+"          G}L8d@[7M8N8O8<]P8Q8          R8      */S8T8U8V8W8X8S(Y8Z8`8 9.9+9@9k@#9$9%9&9*9=9-9  ;9>9o~,9'9)9!9~9{9]9^9/9    (9_9:9      <9[9}9    |919S7(_        29>[394959697989P.9909a9b9c9d9e9f9g9h9i9    j9k9            l9:4m9J8n9o9p9q9r9E ~@s9        ",
+"        !{t9u9v9w9x9y9z9A9B9C9          D9      E9F9G9H9I9J9K9L9M9N9O97#P9Q9R9S9T9U9V9W9X9Y9      Z9`9P 91   0.0+0t;@0}@#0{ $0%0&0        *0<{      =0-0;0        >0,0F3'0)0!0*/~0{0]0^0/0(0_0u<:0<0[0}0|0    1020            85304050l6607080v590F}G.'+00    ",
+"      a0{{b0c0d0e060f0g0h0i0j0          k0      l0m0n0o0p0q0r0s0~2,]t0u0v0w0x0y0z0A0B0C0D0        E0F0E_      G0%6}:H0I0A'z.J0K0L0        31g M0  2+N0O0P0        Z4Q0y8R0S0T0U0V0W0X0Y0Z0`0|4 a.a+a@a#a$a    %a&a            56*aK8=a-a;a>a,a'aD4]))a        ",
+"    L+!@~6_0~4!a~al7M0{a]a^a/a          (a_a    :a<a[a}a|a1a2a3a7 7 }+4a5a6a7a8a9a0aaabaca        daeafa      J@M@ga3:ha    iajaka        O@lamanaoa 5p9v9        paqarasaV5tauavawaxayazaAaBaCaDaEaFaGaHa    Ia&a            JaKaLaMaNaOaPaQaU:Ra8(          ",
+"  SaV]r+TaUaVaWaXaYaZa`a b.b+b          @b#b    P8$b%b&b*bB|=b-bA ;b.#>b,b'b)b!b~b&/{bT+]b^b      t#/b(b_b  :b<bx([b<         }b3@) |b1bV@i'2b3b4b5b.8&~J26b    c[S t87b8b9b0babbbcbdbebfbgbhbibjbkblbmbnbA&  obpb            qbrbsbtbubvbwbxbybT7            ",
+"      c~3.zbG5AbBbg0CbqaDbEbFb          GbHb    IbJbKbLbMbNbObPb_7a S#QbRbSbTbUbV5%9VbWbXbYb    ZbM `b.. c.c+c@c#c$cF7        %c5@&cH@}#*c=c-c.|;c>c4)Ab,c .'c)c!c~cya{cbb]c^c/cu-(c_c:c<c[c}cM!|c1c2c!5==3c    4c            v0,55c6cZaZ4347c8c              ",
+"        L@9c0cQ4acbcccYbdc-^=(          D*ec    fcT+(]gchcicjck6kcz 75{_lcmcncocpcqcrcsctcucF_vc]4wcxcycn-zcAcBcCcDc7 Ec      Fc[+Gc^)[)HcIcJc9:KcLcMc~aNcg6OcPcH6QcIbRcScTcUcVcWcXcYcZc`c d78.d+d@d#d$d[,%d&d*d=d-d        ;d>d,d'dt|)d!dZ58c                ",
+"          =~0c|9~dq3~.{d/]]d^d          /d        (d_d:d=5<d[d}d|d1d2d(_3d4d5d6d7d8dV5M59d0dad#!bd1<!2cdddedfdgdhdidG0@.E7G!jdkd5@&]i'ldmdndodpdqd|}rdu#k{}c!c):B~sdtdudvdwdxdydzdAdBdCdDdEdFd=!GdHdu=|%[,IdJd#&KdLd        MdNdN!OdPdQdRdSd                  ",
+"          40Td5bUdVdWdXdYdZd`d#3         e        61.e+e@e#e$e%e&e a1.*e=e-e;e>e,e'e~#)e!e~e2)Pb{et ^;]e^e/e(e_e:e<e[e}e|eG|1e2e#03e4ej#5e6e7e8e9e0eaebecedeeefegeheiejekeleme}0^dneoepeqereseteueve.)weS=xeyezeAeBeCe      DeEe)dFeGeHeP+Ie                  ",
+"            A .5JeR KeLeMeNeOePe      QeRe          SeTeUeVeWeXeYeJ6;.Ze`e f.f+f@f#f$f  +f%f&fv5*f=f-f;f>f,f'f)f!f~f{f]f^f(,F,3:* /f(f_f:f<f[f}fA:4|[5|f1f2f3f4f5f6f7f8fEb9f0fBd(]afbfcfdfefP(ffgfhf  {=c=ifM&jfkf  lf      mfz<a1nf].ofpf                    ",
+"               .t (|qfrfsftfufvf      wf              xfyf/<o63{zfZb`!Afr BfCfDfEfFfGfHf  IfJfKf</=_LfMfNfP[NfOfv]PfQfRfSfTfg'      2[UfVfS|[%WfXfYf_*Zf`f gx:.gO.+g@g#g$g%g&g*g=g-g;gT+Z1>g,gZ'          'g)g!g~g{gHbs&  ]g^g/g(g_g:g<g[g                    ",
+"              }g|gz|.+1g]>2g3g4g    5g6g                  6=7g64>a8gE0#:9g0gagbgcgdgegua  fggghg;;!'R_igjgkglgQ{x]mgngogpgqgrg      sgtgugvgwgxgygzg3>AgBgCgDgF(EgFgGgHgIgJgKgLgMg64NgOgPgQgl3Rg        SgTg    UgVg  WgXgYgZg`g h.h+h@h                      ",
+"                #h$htb%h&h*h=hX8-h  ;h                    >h,h'h)h!h~h$#{h]hW8^h/h(hdg$9_h:h<h[h}h|h1hb2Q'2h3h4h5h6h!_7h8hN)9ht!0hah5:bhchdhehfhghzghhihjhkhlhx@mh bnhohFgphqhrhshqathuhvhwhxh                yh  zhAhBhChDhEhFh hGh <Hh                      ",
+"                ;b/b.5Ih0gJhKh;^LhMh                        C(i@NhOhPh`]QhRhz3ShThUhm&VhWhXhYhR'Zh`h&> i.i+i@i#i$i%i#4&i*i=if]+0-in|=):);i>i,i'i)izg!i~i{i]i^i/i(ir1_i:i<i[i}ig1|i.71i2i3i<(4iA&      5i            6i7i8iO.9i0iaibiP                         ",
+"                  K@ci$h]2Rhdieifigihi        iijiki          limi]anioipiqiriZ(97sitiuiviwixiyiziAiM1BiCiDixh]~EiFipf` GiHif>k}IiJi~ Ki9(LiMiNiOiPiQiRiSiTiUiViWiXiYiZi`i j.j+j@j#j$j%jk]&j      2~*j=j-j  9e        ;jsd>j,j'j!]>9Z5                        ",
+"                  )j2dZe!j8]~j{j]jG#U3      ^jj#p+T6/j        (j_j:jX:<jh+[j}j|jrdU$1jO52j3j4j5j6j7j8j9j0jajbjcjdjejfjgj)!{_hjijjjkj' ljmjnjn,q^oj9}Vfpjqj,|rjsjb!)|K]tjujvjwjxjyj/|zjAjBjCjDj  EjFjGjHjIjo(        3hc6JjKjLjMjjcNjBf                        ",
+"                  OjPj .Qj91RjSjTjUjVj      Wjp'XjYjZj        O_`j k.k{*</+k@k#k$k%kM37-I).>&k*kA4=kn<-%-k;k>k,k'k0.)k!k)!~k      =<{kv7]k^kN@/kR_(k_k:k<k[k}k|k1k2kM13k4k85m95k6k7k8k9k    0k  akbkckdkD^ek      fke!gkhkikLjjkkk7c                          ",
+"                    K+lkmknkibok#3bbD;      pkqkB rksk            tkukvkwkxkykzkAkBkCkDkEkV-FkGk.|92FkHkIkJkKkLkMkNkOkPkQk          Rk]@SkF O~TkUkj&VkWkXkYkZk`k l<%N-.ln^:}+l@l#lHc$l          %l&lg~*lF|P;      =l-l:1;l>l,l'lM})l                          ",
+"                    !lc8~l&~8] b{l]l^l/l      (l_l:l              <l[l}l|l1l2l3l4l;15l6lP=[;7l8l9l0lal[%bl3(cldlelflglhliljl        M~!(A kl`_llmlnlolpl0-qlrlsltlulvlwlxlk|yl.czlAlBlCl        DlEle)FlGl      HlIlJlKlLls~4{MlNl                            ",
+"                      Ol<|PlQlRly_M(dble                          SlTlUlVlWlXlYlZl`l m.m+m@m6|#m$m%m&m*m=m-m4*;mfg>m,m'm)m8i!m  ~mkcN,Oc{m]m^m/m(m_m;*:m<m[m}m._|m1m'f2m3m4mX>5m6m7m8m              9m0m    ambmcmdm>0~:emfmgmhmim                            ",
+"                      p{jmK km4+lmmmnmom                        pmqm<brmsmI$tmumvmwmxmymzmv[AmBmCmDml>*|EmFmGmHfHm  TjImJmKmLmMm!2NmOmPme3QmRmSmTmUmVmWmXmYmB&Zm}hXl`m$cn,X[ n2#G .nN@+n@n                    |l#n$n(^%n&n hm62<                              ",
+"                        *n=n-n;n>n,nN!'n)n                    !n~n{n]n1[^nd5/n(n-)_n:n<n{;[n}n{||n[&1n2n3n4n5n6nHf7n8n9n0nan6^8kbncndnenfngnhninjnknlnmnnnonpnqnrnfasnM<l_$.  tni E,unvnwn                  xnynznAnBnCnDnZ.EnFn                              ",
+"                        GnHnd[InJni:KnLn@2>~                MnNn=<G,d>i<T#OnPnX@Qn;)RnSnTnUnVnWnXn==YnZn`n o.o+o@o#o+f$oRc%o  wi6=&o*o=o-o;o>o,o'o)o!o~o{o]o^o/o9(L@{{(o_o        *+(@&6}9:o              1/<o[oT2}oE5r:|oBnn+                                ",
+"                      1o2o3o4od}5o6o$8;[7o8o9o0o            aou+* >     bocodod>d>4:f>X>eofogohoiojokolomonooopoqoro*(soto    uo  vowoxoyozoAoBoCoDoEoFoe-GoHoIoJoKoLow(Mo        Noz.u+5@n|Oo          PoQoRoQ#SoToUoVoWoXoYo                                ",
+"                    Zo`o pvk5k[.;0.po++p85@p#pTl$p        %p}@m &pv7      *p^k^@=p/+L<-p;p>p,p'p)pdh!p~p{p]p^p/p(p_phe:p        <p[p}p5n|p1p2p3p4pi.5p%j6p7p8p9p0p{+P]apw.E+bpcpJ dpepx+fp',T]      gp_~hpipjp`_kplpmpnpe[oppphp                              ",
+"                    qprpsptpupvpwpxpAjypzpApy,BpCp)|      DpEp%.FpGp      d]j_HpIpJpKpH:LpD!MpNpOpPpQpRp<]SpTpUpJnVpWpH_          {#XpYpZp`p q.qCn+qyjT;@q#q$q%q],B.* &q}|*qu+'+`,u+=q}@45-q)a;q>q,q'q)q!q~qK|{q]q^q/q_{(q!f_q:q<q                            ",
+"                  [q}q|q1qa|2q3q.~4q5q6q7q8q9q0qaqbqcq    dqk}4@E+E+eqfqgq3:%+hqiq    `bjqw{kqlq(&mqnq3foqpqJhqqrq q>2      sqtquq>4vqwqxqyqcdzq..;bAq`mBqCqDqEqu.Fqe8f)GqHqIqt;x+Jqu+|@f){(G!umKqS<LqMqK]3,NqU{OqniPqx)QqRqSqTqUq                            ",
+"                  VqWq)iXq;%Yq qZq`q r8,+l5~.r+rg&@r#r$r%r&r<{0>& * 2e*r_n=rL+-r        ;r>r,r'rs&)r!r~r{r]r^r/r(r_r:r<r[r}r|r1r2r3r4r5r6r7rJ,V]:+&+(/8r9r0rarbr      S]=<crL):@drerfrt+i_3^W=grhrC1irjr^5krlrmrnrorprqrpprr{;srtrur                          ",
+"                  U4vr15wrxr  yrzrAr*>BrCrDrErFrGrHrIrJrJ$#.%6KrLr<+G^Mrunm'Nr6         g+OrPrQrRrSrTrUrVrWrXrYrZr`r^g s{0.s+s@s#sba$s~>/_%sV]#0@ l kj08J^Pn&s*s        un=sX@        w(-s6 ;sl(  >s,s's)s!s~s{s]s%@^s/s(s_s:s<s[s}s                          ",
+"                  |s1s2s%%      3stj4s5s6sf27s        8s9s0sas$~L^bsT]    3#0scs        dsesfs`2gshsisjsksVrlsmsnsospsqsrssstsusvsh{wsxsg5!6ys[{Lr_@n|zsAsF>BsCs      #cDsl_Es          0@Fs[|Gs  2$HsIsJsKsLsMsNsOszkcl    |%PsQsRs                          ",
+"                  Ss[qTsUs    VsU{Ws3=H=**              XsYsp,0pZs            Y6`s t.t+t@t#t$t%t  _}6,!$S.&tA|Na*t=t-t;t>tlm,t'tqi)t6a5c1<g5!t>b~t*]&6{t]t^t/t(t      d#Nrx|            m~:{|)_t  i$:t<t[t}t|t1t2t3t4t5t6t  7t8t9t                            ",
+"                    F]0t0!a2atbtctdtetw*w*                ft_)O)}^            gtj)z}e#I~e'htit      jtkte+lt3+NamtZ0ntotptqt74rtNhstB~ttut9gvtwt30xtytztAtBtCt: ,+Dt*+$~Etq+            Fts0j;Gt  [>|,Htt1ItJtKtLtMtNtOtPtS3Qt2(Rt                            ",
+"                    !=D$StTt.mUtVtWtXtYtZt`t              @c u.u[{            +uwn~n@u#u$u%u&u        *u=u-u`aZa;u>u,u'u)u1;!u~u{uZ!=e]u^u/u(u_u:uZi<u    [u}uV]|u1u@ U#as2u          3u4u&l+{m35uG*6u7u8u9u0uUkm>aubucudueu4/&j                              ",
+"                      fuguhuiujukulut>munuou                puquru            V[sutuuuvuwuxuyu          zuAuBuCuDuEu#,FuGu1pHuIu1gJuKuLuMuNuOuPuQuRu    SuTuUuVux+Wu}|XuV@i'$.      ,,YuZu`u vJ#5s.v+v@vK'#v$v3&%v&vr7*v=l=v:,-v                              ",
+"                        ;v+~>v,v'vf/)v!v~v{v                  ]vx!^v          J@/v(v_v:v<v[v        H=  e,Y+}vR$yr|v841v2v3v4v5v6v7v8v9v0vavbvcv3=l*c=dvevfvgvhviv8@U#( jvE@d8kvlv/+ga.0mv]|  |%nvovpvO>qvrv/1lrsvtvuvvvwvxvyv                                ",
+"                            A7zvAvBvCvDv      Ev              FvGvc_/vHvIv140 JvKvLvT]Mv;,            P%l*NvOvPvQvRvSvMeTvUvVvWvXvYvs~Zvd7`v w.w+w@w#w  $w%w&w*wBt=w$]}+2#g _ ga],-w;w>w,w  .-|%'w)w!w~wve{wU*]w^w/w(w_w                                      ",
+"                                    :w<w[w}w1ht[|w1w2w          3w4wf]5w;i[#;sq'Ys6w7w8w          9w0w    awbwcwdwewfwgwhwiwjwkwlwmwnwowjr@%we&%pwqwrw:^sw  tw2=uwvwwwxwg_1eywzwAwBwCw    DwEww*}%>|FwvewiG{w=%t5~7i                                          ",
+"                                      GwHw%|h(c|Iw0:=&              JwKwLwlpMwNw/kOwPw          QwRwSwTw    ,~-&UwVwWwXwYwZw`w x.x39+xW-P%#%@x#x$x%x;b&x*x  =xP%  -x;x>x,x'x(4          )x!xu,~x=={x]x^x/x7!C;(x_x                                            ",
+"                                      g<:x)r<x[x}x|%0-*=                    |xTe              1x^92x3x4x    %dc=}%5x6x7x8x9x0xax0fbxcxv,c=c=dxex#cfx+!gx[o0l.-c=we  hxixjxkxlx              mx5>nxoxpxqxrxsxtxF$ux                                            ",
+"                                        vx&uzuwxxxyxzxi$              AxBx    CxDx            ExFxI,GxHxIxJxKx3!c==&b=LxMxNxy_OxPx^#  c=c=c=QxRx4^6)SxK8TxUxVxc=&'|%WxXxYx=&Zx            `xwl y.y+y@y/s#y$y%y&y                                              ",
+"                                        *y{q`n=y-y;y>yr=#%  ,y    %%    i$'yb=)y!y~y          {y]y^y/y(y_y.-c=c=&=%%I=4%:y<y[yi$@%    l*{=}&}y|y<oF~3o1y2yc'3y4y  ;y<xo!5y6y7yJ#          8y9y0yR*ay05byK]Cpcy                                                ",
+"                                          r)dyeyfygyhy-{r=  J=    $%&={=[%<-iyjy`<X~$*          kylymy[;&=$%nyc=c=x*,~p*w*&'}&                oypyu1(wqyrysytyw'uyvywyxy6tyy#*zyS1      AyBy;*,'CyDyEyx%y^FyGy                                                ",
+"                                            HyIyJyKyLy9yU|MyNy *#%Oy=&A&^#Pyl$Qy0/Ry'(]}            SyTy%%[,x*p*2=$%$%    P%{=                @%UyZx&&VyWyXy&dYyZy`y z.z+z7l@z3}#z&=#%0-r=$z%z&zJ**zC;=z-l!/                                                  ",
+"                                                h^-z/';z>z,z)|'zl=.-)z!z~z{z<5]z^z/z(z_z:z    <z[z}zc=c=|z1z2z3z4zZhVn5z6z7z8z9z          DwP%S=0zazc=f,bz  czdzezZ-fzgzhz|,izjzB1kzl>lzmznzozpzih3,qz5~Ws                                                    ",
+"                                                  *$rz-lsztzuzvzwzxzyzzzAzBzCzDzEzFzz^GzHzIz      JzKzc=w'LzMzNzOzPzCl        QzRzLdSzTz      Uzc=H&Vzk*    WzXz.%YzZz5(`z A.A&|7}b2+A@A1&%t#A$A_}%A&A!9                                                      ",
+"                                                    *A=A-A;A>AE$,A+|P|'A)A+}!A~A{A]A^AT{/A:xh((A_A:A    <A[Af(}A                    |A1A2A3A4A  5A6A    7AYq8A{79AQ>0AguB[aAbAcAdAeAfAgAhAKyO'ApiAjAkA                                                        ",
+"                                                        lAmAnAoApAqArAsAtAuAXzmdvAwA uxAyAzAAABACADAEAFAGAHA                            IAJA  KA    LAMANAOAn8PAQAI@RASATAUAVAWA!/XAtgYAZA`A B/39%                                                            ",
+"                                                        .BEt/)O~+Bc#V[q%i8l<@BH:O)7 7 .uj8#Bi]$B,@%B&B*B|f                                =B-BDvP';B>BL9,B'B>j)B(_@]r+N<cs!B~BL${B]BW#;68rt!^B/B                                                              ",
+"                                                          u!J/(B2#nji'#.])F H.],_B:B<B< [B}B|Bsb1B2B3BPc4B&$~q                            5B6BEuM_7B8B9B0B42aBF_( w.&+G!J-bB*1cBH^:@u+epepu+u+z.                                                              ",
+"                                                          7.dBm~H:    c/=)d>&+' eB&pfB$0gBhBiBjBkBlBG5mBj8nBoBD8pB                    qBrBsBtBdiuBKe/g*tvBj3=}wB> {kx.v(~ U#xB3@z.yBzBABBBBBCBDB                                                              ",
+"                                                          EBciFB      GBu!xB/@6.x.HBIB~@$~p2JBY6Taa0=~A M~To$#2_KBLBMBNBOBNBOBPBQB{7RBr:SBCb!mr3TBUd*fUBVBWB7 ( ; XB%.* - }|3@* YB      ZB`B%. C                                                              ",
+"                                                            f5Gi.C    ~tV]x7}|& = = & +C@CxBU#j'7.h #C*~K8(0$C):gb%CF4&C*C=Cib.+P+'dib(|-C38;C>C,CZ 1.2d.uV@4.V]; = = = = = = =           = =                                                                 ",
+"                                                              )c'Cid$c3^)Cd]!C    = * }|1#cocoF,u.4.$..uB 9 ~Cg3>.|+Mcnk=7E5hb)lRB`0g3S7{Cu3]CMcM,^CG73.0ph)&+}|* = =     = = = =       = = =                                                                 ",
+"                                                              .prg/C(C}'P)_Ceq    = * eq      }+~ u.],_ :Cs.9 <C[Cq ']}Cgj{2T2^q(b&x|Cc]c 1C2CgB6 M@dBI@    G.G.z.= = =   = = = = = = = = =                                                                   ",
+"                                                                  3CYsk_){P@+C& = = }|            doF,u.4C-~@.2.8 I!Hc.!D45C2C<)U_W@g L<m~g J,])N@            z+B+= = = = = = = = = = = = =                                                                   ",
+"                                                                    6CT#7C&c+C& =                       8Cd#( G !@3.3.9C9(0CM@Et){!,!,aCV#d]co                  + = = = = = = = = = = =                                                                       ",
+"                                                                                                            dBR@$~u.h)7.c~i i h)&<G.$ F.bC                          = = = = = = = = =                                                                         ",
+"                                                                                                                  i_~@~@) ~ {,5.= %.cC                                    =                                                                                   ",
+"                                                                                                                    dC* E.5.*+, *.eC                                                                                                                          ",
+"                                                                                                                      = 6.*+D.6.                                                                                                                              ",
+"                                                                                                                        ; { ~@fC                                                                                                                              ",
+"                                                                                                                        G@~ j_                                                                                                                                ",
+"                                                                                                                          i gC                                                                                                                                ",
+"                                                                                                                          o:                                                                                                                                  "};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Slave_Gui/tools.cpp	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,31 @@
+#include <iostream>
+#include <wx/wxprec.h>
+#include <wx/wx.h>
+#include <wx/textctrl.h>
+#include <iostream>
+#include "tools.h"
+
+ void 	IntToString( int i, char* in_pszbuffer )
+{
+	// permet de copier un int dans la chaƮne buffer
+	sprintf( in_pszbuffer, "%d", i);
+}
+
+char	*wxstr_to_charbuf(wxString	s)
+{
+	int		i = 0;
+	char	*str = NULL;
+	
+	str = (char*) malloc((s.Length() + 1) * sizeof(char));
+ 	for(i=0; i<s.Length(); i++)
+  	  {
+   		str[i] = s.GetChar(i);
+  	  }
+ 	str[s.Length()] = '\0';
+ 	return(str);
+}
+
+void	charbuf_free(char	*s)
+{
+	free(s);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/DS401_Slave_Gui/tools.h	Wed Aug 01 13:48:03 2007 +0200
@@ -0,0 +1,13 @@
+#ifndef TOOLS_H_
+#define TOOLS_H_
+
+	#include <wx/wxprec.h>
+	#include <wx/wx.h>
+	#include <wx/textctrl.h>
+	#include <iostream>
+
+	void	IntToString( int i, char* in_pszbuffer );
+	char	*wxstr_to_charbuf(wxString	s);
+	void	charbuf_free(char	*s);
+
+#endif /*TOOLS_H_*/
--- a/examples/Makefile.in	Wed Jul 25 18:01:14 2007 +0200
+++ b/examples/Makefile.in	Wed Aug 01 13:48:03 2007 +0200
@@ -30,6 +30,8 @@
 
 ifeq ($(TARGET),unix)
 	$(MAKE) -C TestMasterSlave $@
+	$(MAKE) -C DS401_Master $@
+	$(MAKE) -C DS401_Slave_Gui $@
 	$(MAKE) -C TestMasterMicroMod $@
 endif
 
@@ -40,6 +42,8 @@
 
 ifeq ($(TARGET),unix)
 	$(MAKE) -C TestMasterSlave $@
+	$(MAKE) -C DS401_Master $@
+	$(MAKE) -C DS401_Slave_Gui $@
 	$(MAKE) -C TestMasterMicroMod $@
 endif
 
@@ -53,11 +57,15 @@
 install:
 ifeq ($(TARGET),unix)
 	$(MAKE) -C TestMasterSlave $@
+	$(MAKE) -C DS401_Master $@
+	$(MAKE) -C DS401_Slave_Gui $@
 	$(MAKE) -C TestMasterMicroMod $@
 endif
 
 uninstall:
 ifeq ($(TARGET),unix)
 	$(MAKE) -C TestMasterSlave $@
+	$(MAKE) -C DS401_Master $@
+	$(MAKE) -C DS401_Slave_Gui $@
 	$(MAKE) -C TestMasterMicroMod $@
 endif