wie schon "angedroht"
2x digitale Eingänge (Taster)
8x Port Erweiterung als Ausgang und Eingang nutzbar (E-Blocks kompatibel)
1x LDR mit AD Wandlung von 10 bit
1x MIC mit AD Wandlung von 10 bit
3 x IR Sensoren
1 x Motorsteuerung mit zwei Motoren
2 x Servosteuerungen
1 x V24 Schnittstelle
1 x IC2 Bus
Je nach Zeit werde ich mich um die eine oder andere Funktion "kümmern". Hier jetzt das erste Projekt
Habt Spaß
Michael
Code: Alles auswählen
; "MPZ Buggy IO INTERFACE.pb"
; 
; PowerBasic Example um ein Formel Flowcode Buggy von www.matrixmultimedia.com als 
; I/O Interface anzusteuern. Das Gerät wird auch von Elektor vertrieben 
; Der PIC 18F4455 besitzt unter anderem 35x I/O´s und 13x 10bit AD´s
; Dieses Programm wird erweitert und erlaubt derzeit:
;                                         2x digitale Eingänge (Taster)
;                                         8x digitalen Ausgängen  
;                                         1x LDR mit AD Wandlung von 10 bit
;                                         1x MIC mit AD Wandlung von 10 bit
;
;
; PowerBasic Example to use a PIC Formel Flowcode Buggy from www.matrixmultimedia.com as 
; I/O interface anzusteuern. 
; The PIC 18F4455 has 35x I/O´s and 13x 10bit AD´s
; This Program will updated and has now:
;                          2x digital Inputs 
;                          8x digital Outputs  
;                          1x LDR input with 10 bit resulution
;                          1x MIC input with 10 bit resulution
;
;  
; Version 1.00 by MPZ Okt.2007
; for PB 4.10 beta3
; 
; benötigt wird die mcHID.dll von der Firma Mecanique. Die mcHID Library ist 
; Bestandteil der EasyHID Software:
; You need the mcHID.dll from the company Mecanique. The mcHID Library is included
; in the EasyHID Software:
; http://www.mecanique.co.uk/software/EasyHID.zip 
;
; Ein direkter Download der DLL ist über den folgenden Link möglich
; Direct download link 
; http://www.docpro.com.br/arquivos/mcHID.zip
;
; Definierte Übergabeparameter
;
;  Wert
;  1  2  3  4  5  6  7  8
;  a  b  c  d  e  f  g  h
;  Daten PIC -> PC
;  a = 1    Daten PIC -> PC
;  b,c      AD8(x*256+y) ; MIC - AD Wandlung (10 bit, ADC 8)
;  d,e      AD9(x*256+y) ; LDR - AD Wandlung (10 bit, ADC 9)
;  f        Taster 1 (Bit 1 of f) / Taster 2 (Bit 2 of f)
;  in Vorbereitung
;  g,h      I2C Bus (a,b); Empfangen von I2C Bus Daten
;  Daten PC -> PIC
;  a = 13   PC -> PIC
;  b        8 fach Output 
;  in Vorbereitung
;  c        Servo 1 out(x) ; Einstellwert des Servos in 0-100%
;  d        Servo 2 out(x) ; Einstellwert des Servos in 0-100%
;  e        Motor links (x) ; Geschwindigkeit in -100% bis +100%
;  f        Motor rechts (x) ; Geschwindigkeit in -100% bis +100%
;  g,h      I2C Bus (a,b); Senden von I2C Bus Daten
 
 
Enumeration
  #Window_0
  #Text_Status
  #Text_DIGI_IN
  #Listview_INPUT
  #Text_LDR
  #Analog_LDR
  #Text_MIC
  #Analog_MIC
  #Text_OUT
  #Button_OUT1
  #Button_OUT2
  #Button_OUT3
  #Button_OUT4
  #Button_OUT5
  #Button_OUT6
  #Button_OUT7
  #Button_OUT8
EndEnumeration
; Global
;{/ Globale Variablen
Global pVendorID.l, pProductID.l, DeviceHandle.l, ProductName.s
Global USB_HID.l,DIGITAL_OUT.b, Button_1.b, Button_2.b
Global Dim BufferIn.b(8),Dim BufferOut.b(8)
#WM_APP = 32768
#WM_HID_EVENT = #WM_APP + 200
#NOTIFY_PLUGGED = 1
#NOTIFY_UNPLUGGED = 2
#NOTIFY_CHANGED = 3
#NOTIFY_READ = 4
#VendorID = 6017    ; Vendor ID "MPZ USB BUGGY"
#ProductID = 2001   ; ProductID "MPZ USB BUGGY"
ProductName.s = Space(256) 
;}
Procedure Open_Window_0()
  If OpenWindow(#Window_0, 310, 185, 391, 272, "MPZ USB BUGGY Interface",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_WindowCentered )
    If CreateGadgetList(WindowID(#Window_0))
      TextGadget(#Text_Status, 135, 10, 120, 20, "No Device", #PB_Text_Center | #PB_Text_Border)
      TextGadget(#Text_DIGI_IN, 30, 40, 330, 12, "DIGITAL IN 1 - IN 2 / TIME", #PB_Text_Center)
      ListViewGadget(#Listview_INPUT, 30, 56, 330, 50)
      TextGadget(#Text_LDR, 30, 110, 330, 12, "LDR INPUT", #PB_Text_Center)
      ProgressBarGadget(#Analog_LDR, 30, 130, 330, 20, 0, 1024, #PB_ProgressBar_Smooth)
      TextGadget(#Text_MIC, 30, 153, 330, 12, "MIC INPUT", #PB_Text_Center)
      ProgressBarGadget(#Analog_MIC, 30, 170, 330, 20, 0, 1024, #PB_ProgressBar_Smooth)
      TextGadget(#Text_OUT, 20, 200, 350, 20, "DIGITAL OUT 1 - OUT8", #PB_Text_Center)
      ButtonGadget(#Button_OUT1, 20, 220, 40, 30, "OUT 1", #PB_Button_Default | #PB_Button_Toggle)
      ButtonGadget(#Button_OUT2, 65, 220, 40, 30, "OUT 2", #PB_Button_Default | #PB_Button_Toggle)
      ButtonGadget(#Button_OUT3, 110, 220, 40, 30, "OUT 3", #PB_Button_Default | #PB_Button_Toggle)
      ButtonGadget(#Button_OUT4, 155, 220, 40, 30, "OUT 4", #PB_Button_Default | #PB_Button_Toggle)
      ButtonGadget(#Button_OUT5, 200, 220, 40, 30, "OUT 5", #PB_Button_Default | #PB_Button_Toggle)
      ButtonGadget(#Button_OUT6, 245, 220, 40, 30, "OUT 6", #PB_Button_Default | #PB_Button_Toggle)
      ButtonGadget(#Button_OUT7, 290, 220, 40, 30, "OUT 7", #PB_Button_Default | #PB_Button_Toggle)
      ButtonGadget(#Button_OUT8, 335, 220, 40, 30, "OUT 8", #PB_Button_Default | #PB_Button_Toggle)
     EndIf
     ProcedureReturn 1
  EndIf
EndProcedure
;{/ DLL LIB
Prototype  hidConnect (pHostWin.l); As Boolean
Prototype  hidDisconnect (); As Boolean
Prototype  hidRead (pHandle.l, pData.b); As Boolean
Prototype  hidWrite (pHandle.l, pData.b); As Boolean
Prototype  hidReadEx (pVendorID.l, pProductID.l, pData.b); As Boolean
Prototype  hidWriteEx (pVendorID.l, pProductID.l, ByRef.b); As Boolean
Prototype  hidGetVendorName (pHandle.l, pText.s, pLen.l); As Long
Prototype  hidGetProductName (pHandle.l, pText.s, pLen.l); As Long
Prototype  hidGetSerialNumber (pHandle.l, pText.s, pLen.l); As Long
Prototype  hidGetVendorID (pHandle.l); As Long
Prototype  hidGetProductID (pHandle.l); As Long
Prototype  hidGetVersion (pHandle.l); As Long
Prototype  hidGetInputReportLength (pHandle.l); As Long
Prototype  hidGetOutputReportLength (pHandle.l); As Long
Prototype  hidGetHandle (pVendoID.l, pProductID.l); As Long
Prototype  hidGetItem (pIndex.l); As Long
Prototype  hidGetItemCount (); As Long
Prototype  hidSetReadNotify (pHandle.l, pValue.b);
Prototype  hidIsReadNotifyEnabled (pHandle.l); As Boolean
Prototype  hidIsAvailable (pVendorID.l, pProductID.l);  As Boolean
Define mcHID_DLL.l = OpenLibrary(#PB_Any, "mcHID.dll") 
If mcHID_DLL 
    Global hidConnect.hidConnect = GetFunction(mcHID_dll,"Connect") ; (ByVal pHostWin As Long) As Boolean
    Global hidDisconnect.hidDisconnect = GetFunction(mcHID_dll,"Disconnect");  () As Boolean
    Global hidRead.hidRead = GetFunction(mcHID_dll,"Read");  (ByVal pHandle As Long, ByRef pData As Byte) As Boolean
    Global hidWrite.hidWrite = GetFunction(mcHID_dll,"Write");  (ByVal pHandle As Long, ByRef pData As Byte) As Boolean
    Global hidReadEx.hidReadEx = GetFunction(mcHID_dll,"ReadEx");  (ByVal pVendorID As Long, ByVal pProductID As Long, ByRef pData As Byte) As Boolean
    Global hidWriteEx.hidWriteEx = GetFunction(mcHID_dll,"WriteEx");  (ByVal pVendorID As Long, ByVal pProductID As Long, ByRef pData As Byte) As Boolean
    Global hidGetVendorName.hidGetVendorName = GetFunction(mcHID_dll,"GetVendorName");  (ByVal pHandle As Long, ByVal pText As String, ByVal pLen As Long) As Long
    Global hidGetProductName.hidGetProductName = GetFunction(mcHID_dll,"GetProductName");  (ByVal pHandle As Long, ByVal pText As String, ByVal pLen As Long) As Long
    Global hidGetSerialNumber.hidGetSerialNumber = GetFunction(mcHID_dll,"GetSerialNumber");  (ByVal pHandle As Long, ByVal pText As String, ByVal pLen As Long) As Long
    Global hidGetVendorID.hidGetVendorID = GetFunction(mcHID_dll,"GetVendorID");  (ByVal pHandle As Long) As Long
    Global hidGetProductid.hidGetProductid = GetFunction(mcHID_dll,"GetProductID");  (ByVal pHandle As Long) As Long
    Global hidGetVersion.hidGetVersion = GetFunction(mcHID_dll,"GetVersion"); (ByVal pHandle As Long) As Long
    Global hidGetInputReportLength.hidGetInputReportLength = GetFunction(mcHID_dll,"GetInputReportLength");  (ByVal pHandle As Long) As Long
    Global hidGetOutputReportLength.hidGetOutputReportLength = GetFunction(mcHID_dll,"GetOutputReportLength");  (ByVal pHandle As Long) As Long
    Global hidGetHandle.hidGetHandle = GetFunction(mcHID_dll,"GetHandle");  (ByVal pVendoID As Long, ByVal pProductID As Long) As Long
    Global hidGetItem.hidGetItem = GetFunction(mcHID_dll,"GetItem");  (ByVal pIndex As Long) As Long
    Global hidGetItemCount.hidGetItemCount = GetFunction(mcHID_dll,"GetItemCount");  (ByVal pIndex As Long) As Long
    Global hidSetReadNotify.hidSetReadNotify = GetFunction(mcHID_dll,"SetReadNotify"); ByVal pHandle As Long, ByVal pValue As Boolean)
    Global hidIsReadNotifyEnabled.hidIsReadNotifyEnabled = GetFunction(mcHID_dll,"IsReadNotifyEnabled");  (ByVal pHandle As Long) As Boolean
    Global hidIsAvailable.hidIsAvailable = GetFunction(mcHID_dll,"IsAvailable"); (ByVal pVendorID As Long, ByVal pProductID As Long) As Boolean
Else
    MessageRequester("Fehlermeldung", "Das Programm konnte die mcHID.dll Datei nicht öffnen", #PB_MessageRequester_Ok)
    End
EndIf 
;}
ProcedureDLL mcHID_Free(); DLL FREE
  If mcHID_DLL
    CloseLibrary(#PB_Any)
  EndIf
  XLTable_DLL = 0
EndProcedure
;- Window Callback 
Procedure WinProc(hWnd,Msg,wParam,lParam) 
 result = #PB_ProcessPureBasicEvents 
 
 If Msg = #WM_HID_EVENT 
       
       Select wParam
           ; HID device has been plugged message...
        Case #NOTIFY_PLUGGED
           ;HID device has been plugged
           DeviceHandle = hidGetHandle(#VendorID, #ProductID)
           If DeviceHandle
              hidGetProductName (DeviceHandle.l,ProductName,256) 
              SetGadgetText(#Text_Status, ProductName)   
              ; Reset für PIC eingefügt
              BufferOut(0) = 0
              BufferOut(1) = 1
              hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out 
            
           EndIf
        Case #NOTIFY_UNPLUGGED
           ;HID device has unplugged
           DeviceHandle = hidGetHandle(#VendorID, #ProductID)
           If Not DeviceHandle
              SetGadgetText(#Text_Status, "No Device")
           EndIf
        Case #NOTIFY_CHANGED
           ;HID device has been changed
           If DeviceHandle 
              hidSetReadNotify (DeviceHandle, #True) ;read event...
           EndIf
          ;DeviceHandle = hidGetHandle(#VendorID, #ProductID)
          ;hidSetReadNotify (DeviceHandle, #True) ! IMPORTANT ! Read works only With this flag
        Case #NOTIFY_READ
           ; READ works only if the hidSetReadNotify flag is set 
           If hidRead(DeviceHandle, @BufferIn(0))
              ;AddGadgetItem(#Listview_INPUT,0, "Read: "+Str(BufferIn(0)) +"/"+ Str(BufferIn(1))+"/"+Str(BufferIn(2))+"/"+Str(BufferIn(3))+"/"+Str(BufferIn(4))+"/"+Str(BufferIn(5))+"/"+Str(BufferIn(6))+"/"+Str(BufferIn(7))+"/"+Str(BufferIn(8)))
              If BufferIn(1) = 1 ; Taster 1
                 If BufferIn(6) & %01 = 1   
                    If Button_1 = 0 
                        AddGadgetItem(#Listview_INPUT,0, "Button 1 at "+FormatDate("%hh:%ii:%ss", Date()))             
                       Button_1 = 1
                    EndIf
                 Else
                    Button_1 = 0     
                 EndIf                    
                 If BufferIn(6) & %10 = 2 ; Taster 2
                    If Button_2 = 0 
                       AddGadgetItem(#Listview_INPUT,0, "Button 2 at "+FormatDate("%hh:%ii:%ss", Date()))             
                       Button_2 = 1
                    EndIf
                 Else
                    Button_2 = 0     
                 EndIf
                  
                 AD_Wert = BufferIn(2)*256 ; LDR IN
                 If BufferIn(3) > 0 
                    AD_Wert = AD_Wert + BufferIn(3)
                 Else
                    AD_Wert = AD_Wert + 256 + BufferIn(3)
                 EndIf
                 SetGadgetState   (#Analog_LDR,1024-AD_Wert)
                 AD_Wert = BufferIn(4)*256 ; MIC IN
                 If BufferIn(5) > 0 
                    AD_Wert = AD_Wert + BufferIn(5)
                 Else
                    AD_Wert = AD_Wert + 256 + BufferIn(5)
                 EndIf
                 SetGadgetState   (#Analog_MIC,AD_Wert)
              EndIf  
           Else 
              AddGadgetItem(#Listview_INPUT,0, "Read Error!")
           EndIf
        EndSelect
   
   EndIf
  
  ProcedureReturn result 
EndProcedure 
;{ Mainunit
If Open_Window_0()
hidconnect (WindowID(#Window_0))
SetWindowCallback(@WinProc())
  BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
  BufferOut(2) = 0
  hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out 
  Repeat
    EventID = WaitWindowEvent()
    Select EventID
  
    Case #PB_Event_Gadget
  
      Select EventGadget()
          
      Case #Button_OUT1 ; Erweiterungsport Bit 1
          If GetGadgetState(#Button_OUT1)
             DIGITAL_OUTD = DIGITAL_OUTD | %00000001
          Else
             DIGITAL_OUTD = DIGITAL_OUTD & %11111110
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out 
      Case #Button_OUT2 ; Erweiterungsport Bit 2
          If GetGadgetState(#Button_OUT2)
             DIGITAL_OUTD = DIGITAL_OUTD | %00000010
          Else
             DIGITAL_OUTD = DIGITAL_OUTD & %11111101
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out
      Case #Button_OUT3 ; Erweiterungsport Bit 3
          If GetGadgetState(#Button_OUT3)
             DIGITAL_OUTD = DIGITAL_OUTD | %00000100
          Else
             DIGITAL_OUTD = DIGITAL_OUTD & %11111011
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out
      Case #Button_OUT4 ; Erweiterungsport Bit 4
          If GetGadgetState(#Button_OUT4)
             DIGITAL_OUTD = DIGITAL_OUTD | %00001000
          Else
             DIGITAL_OUTD = DIGITAL_OUTD & %11110111
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out
      Case #Button_OUT5 ; Erweiterungsport Bit 5
          If GetGadgetState(#Button_OUT5)
             DIGITAL_OUTD = DIGITAL_OUTD | %00010000
          Else
             DIGITAL_OUTD = DIGITAL_OUTD & %11101111
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät
      Case #Button_OUT6 ; Erweiterungsport Bit 6
          If GetGadgetState(#Button_OUT6)
             DIGITAL_OUTD = DIGITAL_OUTD | %00100000
          Else
             DIGITAL_OUTD = DIGITAL_OUTD & %11011111
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät
      Case #Button_OUT7 ; Erweiterungsport Bit 7
          If GetGadgetState(#Button_OUT7)
             DIGITAL_OUTD = DIGITAL_OUTD | %01000000
          Else
             DIGITAL_OUTD = DIGITAL_OUTD & %10111111
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät
      Case #Button_OUT8 ; Erweiterungsport Bit 8
          If GetGadgetState(#Button_OUT8)
             DIGITAL_OUTD = DIGITAL_OUTD | %10000000
          Else
             DIGITAL_OUTD = DIGITAL_OUTD & %01111111
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät
     
    EndSelect
  EndSelect
  
Until EventID = #PB_Event_CloseWindow
  hidDisconnect ()
  mcHID_Free()
EndIf
End
;}
;
Code: Alles auswählen
;PIC_BUGGY_IO.HEX File wird erstellt
;-----------------------------
If CreateFile(1, "PIC_BUGGY_IO.HEX" )
    Restore StringData
    Repeat
    Read Daten.s
        If Daten.s = "End" : Break : EndIf
        WriteStringN(1,Daten.s)
    ForEver
    CloseFile (1)
EndIf
DataSection
  StringData:
  Data.s ":020000040000FA"
  Data.s ":10080000D5EF09F0FFFFFFFFFFFFFFFFFFFFFFFF3F"
  Data.s ":10081000E9CF01F0EACF02F0E1CF03F0E2CF04F03C"
  Data.s ":10082000D9CF05F0DACF06F0D4EC08F001C0E9FF2B"
  Data.s ":1008300002C0EAFF03C0E1FF04C0E2FF05C0D9FF28"
  Data.s ":1008400006C0DAFF110004010401376B1E0E716E41"
  Data.s ":100850000401400E096F5B0E0A6F040E0B6F880EC9"
  Data.s ":10086000086F9B0E0E6F040E0F6F0D6B400E0C6F1A"
  Data.s ":100870001200040104012A6B14EE9BF024EE18F020"
  Data.s ":10088000010E2A5D04E2E6CFDEFF2A2BF9D7010E26"
  Data.s ":100890003E6F3F6B1200040104012A6B14EE20F03E"
  Data.s ":1008A00024EE18F0020E2A5D04E2E6CFDEFF2A2BCA"
  Data.s ":1008B000F9D7020E3E6F3F6B12000401800E040157"
  Data.s ":1008C00010634FD0135103082FE0135102080EE0BC"
  Data.s ":1008D0001351010801E044D0010E396F7A0E3A6FCE"
  Data.s ":1008E000140E3B6F120E3E6F3F6B3AD0010E396F04"
  Data.s ":1008F000450EE16E040EE26E1245E126000EE22284"
  Data.s ":10090000E6CF3AF4E7CF3BF4F86AF76A040E3A25EB"
  Data.s ":10091000F66E3B51F7220900F5CF3EF409000A00BC"
  Data.s ":10092000F5CF3FF40A001CD0010E396F020E12659C"
  Data.s ":1009300002D0030E126F490EE16E040EE26E1245F4"
  Data.s ":10094000E126000EE222E6CF3AF4E7CF3BF43AC4C8"
  Data.s ":10095000F6FF3BC4F7FF0800F5503E6F3F6B00D039"
  Data.s ":10096000348312000401010E0401396F716A726A46"
  Data.s ":10097000736A746A756A766A776A786A796A7A6A73"
  Data.s ":100980007B6A7C6A7D6A7E6A7F6A326B336B12C4D3"
  Data.s ":1009900031F4125103E1050E306F04D0060E306FB2"
  Data.s ":1009A00023EC04F0120004010401186B196B1051C0"
  Data.s ":1009B0001F0B020814E010511F0B01080CE010512E"
  Data.s ":1009C0001F0B000801E02CD0010E0401396F34A187"
  Data.s ":1009D00001D0188325D0010E0401396F21D0010EFA"
  Data.s ":1009E0000401396F14510F0B0800F350296B000FED"
  Data.s ":1009F000286F040E29231451800B01E0010E04001E"
  Data.s ":100A0000F35028253C6F000E29213D6F3CC4E1FFC7"
  Data.s ":100A10003DC4E2FFE750040B02E0010E186F00D066"
  Data.s ":100A2000010E0401396309E1180E3A6F040E3B6FA1"
  Data.s ":100A30003493020E3E6F3F6B00D012000401010E92"
  Data.s ":100A40000401125D0CE110511F0B000808E1010EBA"
  Data.s ":100A5000396F030E115D02E1348101D03491000E33"
  Data.s ":100A60000401125D37E110511F0B020833E11451EC"
  Data.s ":100A70000F0B00082FE0010E396F14510F0B080007"
  Data.s ":100A8000F350296B000F286F040E29231451800B9B"
  Data.s ":100A900001E0010E0400F35028253C6F000E2921CF"
  Data.s ":100AA0003D6F030E115D07E1840E3CC4E1FF3DC4C0"
  Data.s ":100AB000E2FFE76E0FD014AF07D0000E3CC4E1FF99"
  Data.s ":100AC0003DC4E2FFE76E06D0880E3CC4E1FF3DC4A2"
  Data.s ":100AD000E2FFE76E12000401010E0401135D04E061"
  Data.s ":100AE000030E135D10E01AD0000E0401125D04E045"
  Data.s ":100AF000010E125D07E012D0020E0401396F39ECCD"
  Data.s ":100B000004F00CD00BD0000E0401125D01E006D001"
  Data.s ":100B1000020E0401396F4BEC04F000D0180E0401F2"
  Data.s ":100B20003A6F040E3B6F349312000401020E04016D"
  Data.s ":100B3000135D04E0030E135D0EE01AD0000E0401F5"
  Data.s ":100B4000125D01E015D0020E0401396F5B0E3C6F9F"
  Data.s ":100B5000040E3D6F0DD0000E0401125D01E008D0BF"
  Data.s ":100B6000020E0401396F200E3C6F040E3D6F00D061"
  Data.s ":100B700012000401080E04013E5D000E3F5905E21B"
  Data.s ":100B80003EC440F43FC441F404D0080E406F000E50"
  Data.s ":100B9000416F049304914151030B041340C405F4C5"
  Data.s ":100BA00040513E5F41513F5B180E3C6F040E3D6F5C"
  Data.s ":100BB00034A31AD03AC4F6FF3BC4F7FFF86A3CC42A"
  Data.s ":100BC000E1FF3DC4E2FF04014051411105E1F6CFD0"
  Data.s ":100BD0003AF4F7CF3BF41FD00900F5CFE6FF090048"
  Data.s ":100BE000400701E24107EFD73AC4E1FF3BC4E2FF0F"
  Data.s ":100BF0003CC4D9FF3DC4DAFF04014051411105E175"
  Data.s ":100C0000E1CF3AF4E2CF3BF406D0E6CFDEFF400777"
  Data.s ":100C100001E24107F1D71200040104011051600BF9"
  Data.s ":100C2000E842E842E842E842E84200085CE111514B"
  Data.s ":100C30000C0858E01151070855E011510B0846E027"
  Data.s ":100C400011510A0834E0115103082EE01151010836"
  Data.s ":100C50002BE01151000825E01151080816E0115150"
  Data.s ":100C6000090810E0115106080AE01151050801E0D9"
  Data.s ":100C70003AD0010E0401396F040E306F34D05DECB0"
  Data.s ":100C800004F031D0B2EC04F02ED0010E0401396F23"
  Data.s ":100C9000310E3A6F040E3A6F3493010E3E6F3F6B84"
  Data.s ":100CA00022D0D3EC04F01FD01EEC05F01CD0010EB6"
  Data.s ":100CB0000401396F14513A6F3B6B320E3A27040E20"
  Data.s ":100CC0003B233493010E3E6F3F6B0DD0010E0401A8"
  Data.s ":100CD000396FE26A320E1425E16E040EE22212C46C"
  Data.s ":100CE000E7FF01D000D004011200040104011051FB"
  Data.s ":100CF0001F0B010878E11451000875E11151060835"
  Data.s ":100D000001E02AD01351210807E01351220812E014"
  Data.s ":100D1000135123081DE01DD0020E0401396F010E8E"
  Data.s ":100D2000316304D0C20E3A6F140E3B6F090E3E6F52"
  Data.s ":100D30003F6B0FD0020E0401396F010E316307D0F3"
  Data.s ":100D4000F00E3A6F140E3B6F2F0E3E6F3F6B01D0CB"
  Data.s ":100D500000D00401348300D004011051600BE8423C"
  Data.s ":100D6000E842E842E842E84201083DE111510B083F"
  Data.s ":100D700034E01151030825E011510A081CE011511B"
  Data.s ":100D800002080DE01151090807E01151010801E0C6"
  Data.s ":100D90002AD06BEC05F027D095EC05F024D0020E9C"
  Data.s ":100DA0000401396F350E3A6F040E3B6F3493010E18"
  Data.s ":100DB0003E6F3F6B18D0020E0401396F1351356F2F"
  Data.s ":100DC00012D0020E0401396F360E3A6F040E3B6FDB"
  Data.s ":100DD0003493010E3E6F3F6B06D0020E0401396F53"
  Data.s ":100DE0001251366F00D0040112000401000E0401FC"
  Data.s ":100DF00039630AD0080E016F100E026F040E036FE4"
  Data.s ":100E0000840E006F046F30D0040110AF1ED00401B7"
  Data.s ":100E10003E51165D3F51175904E216C43EF417C403"
  Data.s ":100E20003FF4B9EC05F0010E0401386F080E016FB4"
  Data.s ":100E3000100E026F040E036F800E006F180E066F07"
  Data.s ":100E4000040E076FC80E046F0FD0020E0401386F36"
  Data.s ":100E5000056BC80E046F080E016F180E026F040EAA"
  Data.s ":100E6000036FC80E006F00D06D9800D0120004010F"
  Data.s ":100E7000030E04010015436F01C442F442513E27A2"
  Data.s ":100E800043513F23180E3A6F040E3B6F3AC4E1FF03"
  Data.s ":100E90003BC4E2FF3CC4D9FF3DC4DAFF0401425128"
  Data.s ":100EA000431105E1E1CF3AF4E2CF3BF406D0E6CFBF"
  Data.s ":100EB000DEFF420701E24307F1D712000401020EF0"
  Data.s ":100EC0000401135D04E0030E135D17E020D0000E53"
  Data.s ":100ED0000401125D01E01BD004012A6B14EE5BF0EB"
  Data.s ":100EE00024EE9BF0010E2A5D04E2E6CFDEFF2A2B02"
  Data.s ":100EF000F9D7010E3E6F3F6B0AD0000E0401125D60"
  Data.s ":100F000001E005D0020E04013E6F3F6B00D01200DD"
  Data.s ":100F10000401000E0401386F080E016F100E026FFD"
  Data.s ":100F2000040E036F880E006F000E046F12000401A0"
  Data.s ":100F3000000E0401386F000E396F3E6B3F6B0CECF6"
  Data.s ":100F400006F0000E0401396302D075EC06F0F5ECF2"
  Data.s ":100F500006F012000401020E0401386311D037ECD0"
  Data.s ":100F600007F0020E0401396302D05EEC07F00401C1"
  Data.s ":100F700000BD03D0C80E006F02D0880E006F03D0F2"
  Data.s ":100F800088EC07F000D012000401040E0401306365"
  Data.s ":100F900009D012C46EFF6E5003E0050E306F02D010"
  Data.s ":100FA000030E306F010E040138630BD0B9EC05F06D"
  Data.s ":100FB000040104BD03D0C80E046F02D0880E046F74"
  Data.s ":100FC00003D088EC07F000D0120004010401376B55"
  Data.s ":100FD00008BF1BD009512C6502D009C42CF4376B13"
  Data.s ":100FE00014EE5BF02DC4D9FF2EC4DAFF2C51375D0F"
  Data.s ":100FF00004E2E6CFDEFF372BF9D7400E096F400E33"
  Data.s ":101000000817087D880E081300D00401375112001C"
  Data.s ":1010100004016D9269946894120004016A6A686A16"
  Data.s ":101020009F0E6B6E3B0E696E6E6A716A726A736AAE"
  Data.s ":10103000746A756A766A776A786A796A7A6A7B6AA4"
  Data.s ":101040007C6A7D6A7E6A7F6A160E706E68A602D020"
  Data.s ":101050006896FCD76D9888EC07F004013491316BE9"
  Data.s ":10106000030E306F12000401698468986D821200CB"
  Data.s ":101070000401689C1200040170A003D088EC07F002"
  Data.s ":101080007090689A120004016892120004017C0EAC"
  Data.s ":101090006C1404012F6F000E2F6301D005D0040ED5"
  Data.s ":1010A0002F6301D00ED010D0040100513C0BE84258"
  Data.s ":1010B000E8420D0803E197EC07F002D0AAEC07F034"
  Data.s ":1010C00003D0C4EC07F000D0120004017C0E6C14B5"
  Data.s ":1010D00004012F6F080E2F6301D005D00C0E2F6373"
  Data.s ":1010E00001D00DD00DD057C42DF458C42EF4010EEC"
  Data.s ":1010F00004012C6FE5EC07F00401446F01D000D02F"
  Data.s ":101100001200E9CF51F4EACF52F4E1CF53F4E2CF29"
  Data.s ":1011100054F4D9CF55F4DACF56F40401000E04018B"
  Data.s ":10112000306301D034D069A404D068A402D008ECA4"
  Data.s ":1011300008F06DB22CD069A004D068A002D00DECEC"
  Data.s ":1011400008F069A804D068A802D033EC08F069ACB4"
  Data.s ":1011500004D068AC02D038EC08F069AA04D068AAC0"
  Data.s ":1011600002D03BEC08F069A204D068A202D043ECA4"
  Data.s ":1011700008F0030E0401306101D009D069A607D040"
  Data.s ":1011800068A605D046EC08F065EC08F0689656C4F1"
  Data.s ":10119000DAFF55C4D9FF54C4E2FF53C4E1FF52C47F"
  Data.s ":1011A000EAFF51C4E9FF1200A0AA05D0A1AA03D00A"
  Data.s ":1011B00081EC08F0A19A12003F0E566EFF0E556E9C"
  Data.s ":1011C000562E01D003D0552EFED7FAD72B0E556ED2"
  Data.s ":1011D000552EFED70000000012001F0E576EFF0EA6"
  Data.s ":1011E000566EFF0E556E572E01D007D0562E01D0E9"
  Data.s ":1011F00003D0552EFED7FAD7F6D7980E566EFF0EAF"
  Data.s ":10120000556E562E01D003D0552EFED7FAD79D0E1F"
  Data.s ":10121000556E552EFED700000000120004016DB679"
  Data.s ":101220001200140E6F6E000E0401306F346B316BC0"
  Data.s ":101230006D6A696A6D86010E306FDCEC08F06DBA7C"
  Data.s ":1012400006D0686A696A69806988020E0401306F95"
  Data.s ":1012500012001200040104010CBFFED7400E2C65E1"
  Data.s ":1012600002D0400E2C6F2A6B2DC4E1FF2EC4E2FF8A"
  Data.s ":1012700024EE9BF02C512A5D04E2E6CFDEFF2A2B00"
  Data.s ":10128000F9D704012CC40DF4400E0C170C7D880E08"
  Data.s ":101290000C13120004016DA612006D6A696A000E3B"
  Data.s ":1012A0000401306F1200F26AF50EF16EC00EF06E9E"
  Data.s ":1012B000D09E9D6AA06A9E6AA16A0F0EC112FF0E9F"
  Data.s ":1012C000926EFF0E936EFF0E946E956A070E966EE9"
  Data.s ":1012D000896A8A6A8B6A8C6A8D6A120004EE00F051"
  Data.s ":1012E000050EEE6AEA62FDD7EDEC08F004019E0EF1"
  Data.s ":1012F0000401456F140E466F9E0E476F140E486F23"
  Data.s ":101300004E0E496F150E4A6F560E4B6F150E4C6FF1"
  Data.s ":101310009A0E4D6F150E4E6FCE0E4F6F150E506F0D"
  Data.s ":101320000BC057F40CC058F40DC059F40EC05AF459"
  Data.s ":101330000EEC09F0A19AA08AF28CF28E12000B6AD0"
  Data.s ":10134000A09A0401060E0401306101D008D06DB2EC"
  Data.s ":1013500006D0445304E044C44BF0446B04D04B6AC1"
  Data.s ":101360000401446B00D0A08A12000BC04BF01200A5"
  Data.s ":101370004C6A04010CBF4C2A4C50000A02E00E6A71"
  Data.s ":101380000CD0A09A0BC02DF40CC02EF40DC02CF480"
  Data.s ":101390002AEC09F0A08A010E0E6E0EC04BF012006E"
  Data.s ":1013A0004AEC09F0A19AA09A12000F6A106A53EC55"
  Data.s ":1013B00009F0600E0B6E000E0C6EA00E0D6E000E8E"
  Data.s ":1013C0000E6E6EEC09F0838283841F0E576EFF0E43"
  Data.s ":1013D000566EFF0E556E572E01D007D0562E01D0F7"
  Data.s ":1013E00003D0552EFED7FAD7F6D7980E566EFF0EBD"
  Data.s ":1013F000556E562E01D003D0552EFED7FAD79D0E2E"
  Data.s ":10140000556E552EFED7000000001F0E576EFF0EC2"
  Data.s ":10141000566EFF0E556E572E01D007D0562E01D0B6"
  Data.s ":1014200003D0552EFED7FAD7F6D7980E566EFF0E7C"
  Data.s ":10143000556E562E01D003D0552EFED7FAD79D0EED"
  Data.s ":10144000556E552EFED7000000009FEC09F04BC0F2"
  Data.s ":1014500000F0076A0050075C0EE260C008F0A00EC2"
  Data.s ":101460000B6E000E0C6E60C0A0F0010E0D6EB8EC9D"
  Data.s ":1014700009F0072AEFD7E9D7FFD7120001000000D3"
  Data.s ":10148000020000000000000008003400120001000B"
  Data.s ":10149000000001000000010002000000010009003E"
  Data.s ":1014A000020029000000010001000000A00032003D"
  Data.s ":1014B000090004000000000002000300000000001A"
  Data.s ":1014C00000000900210001000100000001002200CD"
  Data.s ":1014D0002F0000000700050081000300400000000D"
  Data.s ":1014E00001000700050001000300400000000100AA"
  Data.s ":1014F0000600A000FF0009000100A1000100090092"
  Data.s ":1015000003001500000026000000FF007500080021"
  Data.s ":101510009500010081000200090004001500000090"
  Data.s ":1015200026000000FF0075000800950001009100F2"
  Data.s ":101530000200090005001500000026000000FF0061"
  Data.s ":101540007500080095000200B1000200C000040010"
  Data.s ":10155000030009000400220003006D000000690080"
  Data.s ":1015600000006B000000720000006F0000004500EA"
  Data.s ":1015700000006C000000650000006B0000007400BB"
  Data.s ":101580000000720000006F0000006E0000006900A3"
  Data.s ":1015900000006B000000610000001A00030055000D"
  Data.s ":1015A000000053000000420000002000000048003E"
  Data.s ":1015B000000049000000440000002000000064001A"
  Data.s ":1015C0000000650000006D0000006F0000000200D8"
  Data.s ":1015D0000300FFFFFFFFFFFFFFFFFFFFFFFFFFFF16"
  Data.s ":020000040030CA"
  Data.s ":0E000000F032FFFEFFF99BFFFFFFFFBFFFFF87"
  Data.s ":00000001FF"
  Data.s "End"