parent
35810b1581
commit
3f902d19e3
82 changed files with 4313 additions and 21 deletions
@ -0,0 +1,7 @@ |
||||
{ |
||||
"board": "arduino:avr:nano", |
||||
"configuration": "cpu=atmega328", |
||||
"port": "COM4", |
||||
"sketch": "node1.ino", |
||||
"output": "./.vscode/bin" |
||||
} |
@ -0,0 +1,10 @@ |
||||
{ |
||||
"builtInLibrariesFolders": "C:\\Program Files (x86)\\Arduino\\libraries", |
||||
"customBuildProperties": "build.path=e:\\git\\smart-farming\\opt\\node\\node1\\.vscode\\bin,build.warn_data_percentage=75,runtime.tools.arduinoOTA.path=C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr,runtime.tools.avrdude.path=C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr,runtime.tools.avr-gcc.path=C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr", |
||||
"fqbn": "arduino:avr:nano:cpu=atmega328", |
||||
"hardwareFolders": "C:\\Program Files (x86)\\Arduino\\hardware,C:\\Users\\i\\AppData\\Local\\Arduino15\\packages", |
||||
"otherLibrariesFolders": "E:\\OneDrive\\pc\\document\\Arduino\\libraries", |
||||
"runtime.ide.version": "10805", |
||||
"sketchLocation": "e:\\git\\smart-farming\\opt\\node\\node1\\node1.ino", |
||||
"toolsFolders": "C:\\Program Files (x86)\\Arduino\\tools-builder,C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr,C:\\Users\\i\\AppData\\Local\\Arduino15\\packages" |
||||
} |
@ -0,0 +1,13 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\core\CDC.cpp.o: \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\CDC.cpp \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\USBAPI.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\binary.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\WCharacter.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\WString.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Stream.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Print.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Printable.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/../standard/pins_arduino.h |
Binary file not shown.
@ -0,0 +1,15 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\core\HardwareSerial.cpp.o: \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial.cpp \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\binary.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\WCharacter.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\WString.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Stream.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Print.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Printable.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\USBAPI.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/../standard/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial_private.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring_private.h |
Binary file not shown.
@ -0,0 +1,15 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\core\HardwareSerial0.cpp.o: \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial0.cpp \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\binary.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\WCharacter.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\WString.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Stream.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Print.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Printable.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\USBAPI.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/../standard/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial_private.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring_private.h |
Binary file not shown.
@ -0,0 +1,15 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\core\HardwareSerial1.cpp.o: \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial1.cpp \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\binary.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\WCharacter.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\WString.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Stream.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Print.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Printable.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\USBAPI.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/../standard/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial_private.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring_private.h |
Binary file not shown.
@ -0,0 +1,15 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\core\HardwareSerial2.cpp.o: \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial2.cpp \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\binary.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\WCharacter.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\WString.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Stream.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Print.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Printable.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\USBAPI.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/../standard/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial_private.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring_private.h |
Binary file not shown.
@ -0,0 +1,15 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\core\HardwareSerial3.cpp.o: \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial3.cpp \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\binary.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\WCharacter.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\WString.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Stream.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Print.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Printable.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\USBAPI.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/../standard/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial_private.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring_private.h |
Binary file not shown.
@ -0,0 +1,15 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\core\IPAddress.cpp.o: \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\IPAddress.cpp \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/binary.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/WCharacter.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/HardwareSerial.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/Printable.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/USBAPI.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/../standard/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/IPAddress.h |
Binary file not shown.
@ -0,0 +1,14 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\core\PluggableUSB.cpp.o: \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\PluggableUSB.cpp \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\USBAPI.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\binary.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\WCharacter.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\WString.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Stream.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Print.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Printable.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/../standard/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\PluggableUSB.h |
Binary file not shown.
@ -0,0 +1,13 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\core\Print.cpp.o: \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Print.cpp \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\binary.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\WCharacter.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\WString.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Stream.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Print.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Printable.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\USBAPI.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/../standard/pins_arduino.h |
Binary file not shown.
@ -0,0 +1,13 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\core\Stream.cpp.o: \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Stream.cpp \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\binary.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\WCharacter.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\WString.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Stream.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Print.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Printable.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\USBAPI.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/../standard/pins_arduino.h |
Binary file not shown.
@ -0,0 +1,13 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\core\Tone.cpp.o: \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Tone.cpp \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\binary.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\WCharacter.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\WString.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Stream.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Print.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Printable.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\USBAPI.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/../standard/pins_arduino.h |
Binary file not shown.
@ -0,0 +1,14 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\core\USBCore.cpp.o: \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\USBCore.cpp \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\USBAPI.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\binary.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\WCharacter.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\WString.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Stream.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Print.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Printable.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/../standard/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\PluggableUSB.h |
Binary file not shown.
@ -0,0 +1,7 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\core\WInterrupts.c.o: \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\WInterrupts.c \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring_private.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\binary.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/../standard/pins_arduino.h |
Binary file not shown.
@ -0,0 +1,2 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\core\WMath.cpp.o: \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\WMath.cpp |
Binary file not shown.
@ -0,0 +1,3 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\core\WString.cpp.o: \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\WString.cpp \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\WString.h |
Binary file not shown.
@ -0,0 +1,2 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\core\abi.cpp.o: \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\abi.cpp |
Binary file not shown.
Binary file not shown.
@ -0,0 +1,2 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\core\hooks.c.o: \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\hooks.c |
Binary file not shown.
@ -0,0 +1,14 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\core\main.cpp.o: \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\main.cpp \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/binary.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/WCharacter.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/HardwareSerial.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/Printable.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/USBAPI.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/../standard/pins_arduino.h |
Binary file not shown.
@ -0,0 +1,2 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\core\new.cpp.o: \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\new.cpp |
Binary file not shown.
@ -0,0 +1,7 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\core\wiring.c.o: \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring.c \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring_private.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\binary.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/../standard/pins_arduino.h |
Binary file not shown.
@ -0,0 +1,7 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\core\wiring_analog.c.o: \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring_analog.c \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring_private.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\binary.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/../standard/pins_arduino.h |
Binary file not shown.
@ -0,0 +1,7 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\core\wiring_digital.c.o: \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring_digital.c \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring_private.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\binary.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/../standard/pins_arduino.h |
Binary file not shown.
@ -0,0 +1,2 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\core\wiring_pulse.S.o: \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring_pulse.S |
Binary file not shown.
@ -0,0 +1,7 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\core\wiring_pulse.c.o: \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring_pulse.c \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring_private.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\binary.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/../standard/pins_arduino.h |
Binary file not shown.
@ -0,0 +1,7 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\core\wiring_shift.c.o: \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring_shift.c \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring_private.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino\binary.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/../standard/pins_arduino.h |
Binary file not shown.
@ -0,0 +1,37 @@ |
||||
[ |
||||
{ |
||||
"Sourcefile": "", |
||||
"Include": "", |
||||
"Includepath": "C:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" |
||||
}, |
||||
{ |
||||
"Sourcefile": "", |
||||
"Include": "", |
||||
"Includepath": "C:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\eightanaloginputs" |
||||
}, |
||||
{ |
||||
"Sourcefile": "e:\\git\\smart-farming\\opt\\node\\node1\\.vscode\\bin\\sketch\\node1.ino.cpp", |
||||
"Include": "LoRa.h", |
||||
"Includepath": "E:\\OneDrive\\pc\\document\\Arduino\\libraries\\LoRa\\src" |
||||
}, |
||||
{ |
||||
"Sourcefile": "e:\\git\\smart-farming\\opt\\node\\node1\\.vscode\\bin\\sketch\\node1.ino.cpp", |
||||
"Include": "SPI.h", |
||||
"Includepath": "C:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\SPI\\src" |
||||
}, |
||||
{ |
||||
"Sourcefile": "e:\\git\\smart-farming\\opt\\node\\node1\\.vscode\\bin\\sketch\\node1.ino.cpp", |
||||
"Include": "", |
||||
"Includepath": "" |
||||
}, |
||||
{ |
||||
"Sourcefile": "E:\\OneDrive\\pc\\document\\Arduino\\libraries\\LoRa\\src\\LoRa.cpp", |
||||
"Include": "", |
||||
"Includepath": "" |
||||
}, |
||||
{ |
||||
"Sourcefile": "C:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\SPI\\src\\SPI.cpp", |
||||
"Include": "", |
||||
"Includepath": "" |
||||
} |
||||
] |
@ -0,0 +1,16 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\libraries\LoRa\LoRa.cpp.o: \ |
||||
E:\OneDrive\pc\document\Arduino\libraries\LoRa\src\LoRa.cpp \ |
||||
E:\OneDrive\pc\document\Arduino\libraries\LoRa\src/LoRa.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/binary.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/WCharacter.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/HardwareSerial.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/Printable.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/USBAPI.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/../standard/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h |
Binary file not shown.
@ -0,0 +1,15 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\libraries\SPI\SPI.cpp.o: \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src\SPI.cpp \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src\SPI.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/binary.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/WCharacter.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/HardwareSerial.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/Printable.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/USBAPI.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/../standard/pins_arduino.h |
Binary file not shown.
@ -0,0 +1 @@ |
||||
:00000001FF |
Binary file not shown.
@ -0,0 +1,770 @@ |
||||
:100000000C945E000C94BD040C9496040C94860031 |
||||
:100010000C9486000C9486000C9486000C94860048 |
||||
:100020000C9486000C9486000C9486000C94860038 |
||||
:100030000C9486000C9486000C9486000C94860028 |
||||
:100040000C944C040C9486000C944C030C942603E2 |
||||
:100050000C9486000C9486000C9486000C94860008 |
||||
:100060000C9486000C9486000000000025002800F7 |
||||
:100070002B0000000008000201000003040700003C |
||||
:1000800000000000000000000000240027002A00FB |
||||
:10009000010204081020408001020408102001021F |
||||
:1000A00004081020040404040404040402020202EC |
||||
:1000B0000202030303030303D510310C11241FBEF6 |
||||
:1000C000CFEFD8E0DEBFCDBF11E0A0E0B1E0E2E0CD |
||||
:1000D000FFE202C005900D92AE3FB107D9F723E0D1 |
||||
:1000E000AEEFB1E001C01D92A333B207E1F710E01B |
||||
:1000F000CDE5D0E004C02197FE010E94AD12CC35C1 |
||||
:10010000D107C9F70E94650C0C9474170C94000079 |
||||
:10011000CF92DF92EF92FF920F931F93CF93DF93D3 |
||||
:100120006C017A018B01C0E0D0E0CE15DF0589F0CB |
||||
:10013000D8016D918D01D601ED91FC910190F08176 |
||||
:10014000E02DC6010995892B11F47E0102C021968C |
||||
:10015000ECCFC701DF91CF911F910F91FF90EF90EE |
||||
:10016000DF90CF900895FC01538D448D252F30E012 |
||||
:10017000842F90E0821B930B541710F0CF960895B4 |
||||
:1001800001970895FC01918D828D981761F0828D01 |
||||
:10019000DF01A80FB11D5D968C91928D9F5F9F73BB |
||||
:1001A000928F90E008958FEF9FEF0895FC01918D5D |
||||
:1001B000828D981731F0828DE80FF11D858D90E0CA |
||||
:1001C00008958FEF9FEF0895FC01918D228D892F67 |
||||
:1001D00090E0805C9F4F821B91098F73992708954F |
||||
:1001E00089E192E00E94E40021E0892B09F420E0FB |
||||
:1001F000822F0895FC01848DDF01A80FB11DA35A41 |
||||
:10020000BF4F2C91848D90E001968F739927848F36 |
||||
:10021000A689B7892C93A089B1898C9180648C932D |
||||
:10022000938D848D981306C00288F389E02D808118 |
||||
:100230008F7D80830895EF92FF920F931F93CF934A |
||||
:10024000DF93EC0181E0888F9B8D8C8D981305C026 |
||||
:10025000E889F989808185FD24C0F62E0B8D10E098 |
||||
:100260000F5F1F4F0F731127E02E8C8DE8120CC00B |
||||
:100270000FB607FCFACFE889F989808185FFF5CFB1 |
||||
:10028000CE010E94FA00F1CF8B8DFE01E80FF11D27 |
||||
:10029000E35AFF4FF0820B8FEA89FB8980818062ED |
||||
:1002A00007C0EE89FF896083E889F98980818064CD |
||||
:1002B000808381E090E0DF91CF911F910F91FF90BB |
||||
:1002C000EF900895CF93DF93EC01888D8823C9F0D8 |
||||
:1002D000EA89FB89808185FD05C0A889B9898C914F |
||||
:1002E00086FD0FC00FB607FCF5CF808185FFF2CFEA |
||||
:1002F000A889B9898C9185FFEDCFCE010E94FA00C3 |
||||
:10030000E7CFDF91CF91089580E090E0892B29F02D |
||||
:100310000E94F00081110C94000008958E3008F0C6 |
||||
:100320008E508770806480937C0080917A00806416 |
||||
:1003300080937A0080917A0086FDFCCF80917800CE |
||||
:100340002091790090E0922B08953FB7F894809126 |
||||
:10035000030290910402A0910502B091060226B515 |
||||
:10036000A89B05C02F3F19F00196A11DB11D3FBFED |
||||
:10037000BA2FA92F982F8827820F911DA11DB11D7B |
||||
:10038000BC01CD0142E0660F771F881F991F4A9577 |
||||
:10039000D1F7089508950895CF93DF931F92CDB7B5 |
||||
:1003A000DEB76983DC01ED91FC910280F381E02DE1 |
||||
:1003B00041E050E0BE016F5F7F4F09950F90DF91E4 |
||||
:1003C000CF910895089580E090E008950F931F93D2 |
||||
:1003D000CF93DF93EC0188819981009729F02A81DE |
||||
:1003E0003B812617370788F48B016F5F7F4F0E9490 |
||||
:1003F000E013009761F0998388831B830A832C8123 |
||||
:100400003D81232B11F4FC01108281E001C080E0CA |
||||
:10041000DF91CF911F910F910895EF92FF920F936B |
||||
:100420001F93CF93DF93FC01248135816115710502 |
||||
:1004300011F480E019C041155105A9F07B01EC01D0 |
||||
:100440008A01020F131FB8010E94E601882389F375 |
||||
:10045000288139818C819D81B701820F931F0E9471 |
||||
:10046000CC141D830C8381E0DF91CF911F910F91FC |
||||
:10047000FF90EF900895EF92FF920F931F93CF9309 |
||||
:10048000DF93CDB7DEB728970FB6F894DEBF0FBE67 |
||||
:10049000CDBF7C01CB014AE08E010F5F1F4FB80139 |
||||
:1004A0000E949811F80101900020E9F73197AF01FF |
||||
:1004B000401B510BB801C7010E940D0228960FB6D0 |
||||
:1004C000F894DEBF0FBECDBFDF91CF911F910F918A |
||||
:1004D000FF90EF9008956115710551F0FB010190B7 |
||||
:1004E0000020E9F73197AF01461B570B0C940D0222 |
||||
:1004F00080E00895CF93DF93EC0188819981009784 |
||||
:1005000011F00E944813198218821D821C821B82DE |
||||
:100510001A82DF91CF910895CF93DF93EC01FB0115 |
||||
:1005200044815581608171810E940D02811103C057 |
||||
:10053000CE010E947A02CE01DF91CF910895EF9211 |
||||
:10054000FF920F931F93CF93DF93EC017B018A01FE |
||||
:10055000BA010E94E601811104C0CE010E947A0214 |
||||
:1005600007C01D830C83B701888199810E94CC1438 |
||||
:10057000CE01DF91CF911F910F91FF90EF900895E1 |
||||
:10058000CF93DF93EC016115710559F0FB010190E8 |
||||
:100590000020E9F73197AF01461B570B0E949F02DD |
||||
:1005A00002C00E947A02CE01DF91CF910895CF93CD |
||||
:1005B000DF93EC01FB018617970761F06081718181 |
||||
:1005C0006115710529F0448155810E949F0202C086 |
||||
:1005D0000E947A02CE01DF91CF910895FC018081C3 |
||||
:1005E00091810C944813FC011182108213821282B3 |
||||
:1005F000158214820C94D702FC011182108213829E |
||||
:100600001282158214826115710551F0FB0101906F |
||||
:100610000020E9F73197AF01461B570B0C949F025E |
||||
:1006200008956115710579F0FB0101900020E9F74B |
||||
:100630003197AF01461B570BDC01ED91FC91028015 |
||||
:10064000F381E02D099480E090E008951F920F92CD |
||||
:100650000FB60F9211242F933F934F935F936F9395 |
||||
:100660007F938F939F93AF93BF93EF93FF9389E112 |
||||
:1006700092E00E94FA00FF91EF91BF91AF919F919C |
||||
:100680008F917F916F915F914F913F912F910F903B |
||||
:100690000FBE0F901F9018951F920F920FB60F92DA |
||||
:1006A00011242F938F939F93EF93FF93E09129024F |
||||
:1006B000F0912A028081E0912F02F091300282FDB8 |
||||
:1006C00012C09081809132028F5F8F73209133022C |
||||
:1006D000821751F0E0913202F0E0E75EFD4F958F16 |
||||
:1006E0008093320201C08081FF91EF919F918F91A1 |
||||
:1006F0002F910F900FBE0F901F90189590E0FC0166 |
||||
:10070000EE58FF4F3491FC01E057FF4F2491FC015C |
||||
:10071000EC55FF4FE491EE2309F43BC0332339F14C |
||||
:10072000333091F038F43130A9F0323001F584B52E |
||||
:100730008F7D12C0373091F03830A1F03430B9F4E9 |
||||
:10074000809180008F7D03C0809180008F7780939F |
||||
:1007500080000DC084B58F7784BD09C08091B00042 |
||||
:100760008F7703C08091B0008F7D8093B000F0E060 |
||||
:10077000EE0FFF1FE859FF4FA591B4918FB7F89482 |
||||
:10078000EC91611103C020952E2301C02E2B2C93D8 |
||||
:100790008FBF0895CF93DF9390E0FC01E057FF4FA8 |
||||
:1007A0002491FC01EC55FF4F8491882361F190E086 |
||||
:1007B000880F991FFC01EA57FF4FC591D491FC01A6 |
||||
:1007C000E859FF4FA591B491611109C09FB7F89402 |
||||
:1007D0008881209582238883EC912E230BC0623080 |
||||
:1007E00061F49FB7F8943881822F809583238883A2 |
||||
:1007F000EC912E2B2C939FBF06C08FB7F894E88105 |
||||
:100800002E2B28838FBFDF91CF9108958F929F92D7 |
||||
:10081000AF92BF92CF92DF92EF92FF926B017C0179 |
||||
:100820000E94A5014B015C01C114D104E104F10453 |
||||
:10083000F1F00E94A501DC01CB0188199909AA09F0 |
||||
:10084000BB09883E9340A105B10570F321E0C21AAF |
||||
:10085000D108E108F10888EE880E83E0981EA11CFB |
||||
:10086000B11CC114D104E104F10419F7DDCFFF90EC |
||||
:10087000EF90DF90CF90BF90AF909F908F900895B2 |
||||
:100880002FB7F8946091FF017091000280910102EE |
||||
:10089000909102022FBF08951F920F920FB60F92F0 |
||||
:1008A00011242F933F938F939F93AF93BF93809186 |
||||
:1008B000FF0190910002A0910102B09102023091DB |
||||
:1008C000FE0123E0230F2D3720F40196A11DB11D59 |
||||
:1008D00005C026E8230F0296A11DB11D2093FE013D |
||||
:1008E0008093FF0190930002A0930102B093020253 |
||||
:1008F0008091030290910402A0910502B09106023A |
||||
:100900000196A11DB11D8093030290930402A09350 |
||||
:100910000502B0930602BF91AF919F918F913F91D5 |
||||
:100920002F910F900FBE0F901F9018951F920F924E |
||||
:100930000FB60F9211242F933F934F935F936F93B2 |
||||
:100940007F938F939F93AF93BF93EF93FF93E09128 |
||||
:100950000201F09103010995FF91EF91BF91AF91D1 |
||||
:100960009F918F917F916F915F914F913F912F91C7 |
||||
:100970000F900FBE0F901F9018951F920F920FB6F9 |
||||
:100980000F9211242F933F934F935F936F937F9315 |
||||
:100990008F939F93AF93BF93EF93FF93E0910001E9 |
||||
:1009A000F09101010995FF91EF91BF91AF919F9156 |
||||
:1009B0008F917F916F915F914F913F912F910F9008 |
||||
:1009C0000FBE0F901F901895EF92FF921F93CF9339 |
||||
:1009D000DF931F92CDB7DEB77C01162F60E0FC01DC |
||||
:1009E000808949830E947E03F701948585859CBD9B |
||||
:1009F0008DBD1EBD000049810DB407FEFDCF8EB533 |
||||
:100A00004EBD00000DB407FEFDCF1EB561E0F7013D |
||||
:100A100080890E947E03812F0F90DF91CF911F91DB |
||||
:100A2000FF90EF9008956F7740E00C94E404EF920C |
||||
:100A3000FF921F93CF93DF931F92CDB7DEB77C0158 |
||||
:100A4000DC01ED91FC910084F185E02D0995892B65 |
||||
:100A500099F06DE0C7010E941305482F60E0C701BF |
||||
:100A600049830E941305182F49816DE8C7010E9430 |
||||
:100A7000E404812F90E002C08FEF9FEF0F90DF9191 |
||||
:100A8000CF911F91FF90EF900895CF93DF93EC01EA |
||||
:100A9000E881F9810084F185E02D0995892B59F0D1 |
||||
:100AA0008A8D9B8D01969B8F8A8F60E0CE010E947C |
||||
:100AB000130590E002C08FEF9FEFDF91CF91089573 |
||||
:100AC000CF93DF93EC0163E10E941305282F30E000 |
||||
:100AD0008A8D9B8DA901481B590BCA01DF91CF91CB |
||||
:100AE00008958F929F92AF92BF92CF92DF92FF9222 |
||||
:100AF0000F931F93CF93DF931F92CDB7DEB76C0197 |
||||
:100B0000B62E4A0162E279830E941305F82E90E026 |
||||
:100B10009C01280D391D79812F3F310531F028F0D6 |
||||
:100B20002FEF30E04901881A990A0B2D172F580131 |
||||
:100B3000A80CB91C0A151B0541F0F80141918F0161 |
||||
:100B400060E8C6010E94E404F5CF482D4F0D62EA2B |
||||
:100B5000C6010E94E404C4010F90DF91CF911F9160 |
||||
:100B60000F91FF90DF90CF90BF90AF909F908F90AC |
||||
:100B70000895EF92FF920F931F93CF93DF9377FD2A |
||||
:100B800026C0FC01248535856217730704F5EC0146 |
||||
:100B90008B010F5F1F4F26E0269FC001279F900DFE |
||||
:100BA00011248E0F9F1F2C853D857C01F6E0EF0EF2 |
||||
:100BB000F11C0217130738F4B7010E94D7020F5F28 |
||||
:100BC0001F4FC701F0CF215031093D872C87DF919E |
||||
:100BD000CF911F910F91FF90EF90089522E331E0A4 |
||||
:100BE000FC013183208382819381009711F00C9462 |
||||
:100BF00048130895CF93DF93EC010E94EE05CE01D8 |
||||
:100C0000DF91CF910C9448130F931F93CF93DF93F1 |
||||
:100C100000D0CDB7DEB78C01DB011496ED91FC91CD |
||||
:100C2000159720E030E08BE62E173F0781F0DB01BF |
||||
:100C30004D915C914115510529F0DA01A20FB31FC6 |
||||
:100C40009C9101C090E089272F5F3F4FEDCF6AE173 |
||||
:100C50000E949A12F8011182108213821282158268 |
||||
:100C600014829F5999831A82BE016F5F7F4FC8011A |
||||
:100C70000E94C002C8010F900F90DF91CF911F9189 |
||||
:100C80000F9108950E94CE0B45E861E886EB92E053 |
||||
:100C90000C94E404CF93DF93EC010E94C80B68EC42 |
||||
:100CA00070E080E090E00E9406040E94070CCE01F4 |
||||
:100CB0000E941A0CE091B602F091B7024C815D815E |
||||
:100CC000688179810280F381E02D86EB92E00995BD |
||||
:100CD0000E94DE0B68EC70E080E090E00E94060469 |
||||
:100CE000DF91CF910C944206EF92FF920F931F93E6 |
||||
:100CF000CF93DF938C01EB0140E050E06CE7CE0135 |
||||
:100D00000E94420BAC014F5F5F4F6CE7CE010E9427 |
||||
:100D1000420BAC014F5F5F4F6CE7CE010E94420B6C |
||||
:100D2000AC014F5F5F4F6CE7CE010E94420B019612 |
||||
:100D30007C01AC016CE7CE010E94420B9C01A70133 |
||||
:100D4000BE01C8010E94FC0AC801DF91CF911F912A |
||||
:100D50000F91FF90EF900895CF92DF92EF92FF9264 |
||||
:100D60000F931F93CF93DF9300D000D000D0CDB767 |
||||
:100D7000DEB77C018B0140E050E06CE7C8010E94C7 |
||||
:100D8000420BAC014F5F5F4F6CE7C8010E94420B02 |
||||
:100D9000AC014F5F5F4F6CE7C8010E94420B0196A8 |
||||
:100DA0006C01AC016CE7C8010E94420B9C01A601DA |
||||
:100DB000B801CE0101960E94FC0ABE016F5F7F4F11 |
||||
:100DC000C7010E94F302CE0101960E94EE02C70104 |
||||
:100DD00026960FB6F894DEBF0FBECDBFDF91CF9140 |
||||
:100DE0001F910F91FF90EF90DF90CF9008950F9398 |
||||
:100DF0001F93CF93DF93EC018B0140E050E06CE751 |
||||
:100E0000C8010E94420B9C0140E050E0B801CE01B5 |
||||
:100E10000E94FC0ACE01DF91CF911F910F9108959E |
||||
:100E2000EF92FF920F931F93CF93DF938C01EB010F |
||||
:100E300040E050E06CE7CE010E94420BAC014F5FF6 |
||||
:100E40005F4F6CE7CE010E94420B01967C01AC0122 |
||||
:100E50006CE7CE010E94420B9C01A701BE01C801B4 |
||||
:100E60000E94FC0AC801DF91CF911F910F91FF9062 |
||||
:100E7000EF900895EF92FF920F931F93CF93DF931C |
||||
:100E80008C01EB0140E050E06CE7CE010E94420B88 |
||||
:100E900001967C01AC016CE7CE010E94420B9C01E3 |
||||
:100EA000A701BE01C8010E94FC0AC801DF91CF91D1 |
||||
:100EB0001F910F91FF90EF9008950F931F93CF9381 |
||||
:100EC000DF9300D000D000D0CDB7DEB78C01CE01CB |
||||
:100ED00001960E94F3026AED71E0CE0101960E9434 |
||||
:100EE000AF0B66E371E00E94AF0B6AED71E00E9408 |
||||
:100EF000AF0BBC01C8010E94F302CE0101960E9413 |
||||
:100F0000EE02C80126960FB6F894DEBF0FBECDBF25 |
||||
:100F1000DF91CF911F910F9108958F929F92AF9281 |
||||
:100F2000BF92CF92DF92EF92FF920F931F93CF93D6 |
||||
:100F3000DF93CDB7DEB7AC970FB6F894DEBF0FBE28 |
||||
:100F4000CDBF5C016B018EE391E00E94F40B62E483 |
||||
:100F500071E0C5010E945E0B882309F444C1F601CB |
||||
:100F600080819181009709F43EC10E947111DC01DA |
||||
:100F7000CB01885C9109A109B10984369105A105CD |
||||
:100F8000B10508F030C16CEF71E0CE0181960E948E |
||||
:100F9000FC026BE471E0CE0181960E94C00280E108 |
||||
:100FA0000E948E0124E630E0DC010E94A61220E0BF |
||||
:100FB00034E040E050E00E941312CA01B9012AE077 |
||||
:100FC0008E010F5F1F4FA8010E94A311F80101902D |
||||
:100FD0000020E9F73197AF01401B510BB801CE015A |
||||
:100FE00081960E940D026DE571E0CE0181960E940E |
||||
:100FF0006B0281E10E948E0161E070E0C39714F002 |
||||
:1010000060E070E0CE0181960E943B0263E671E0F1 |
||||
:10101000CE0181960E946B028FE00E948E012DE727 |
||||
:10102000AC01249FC001259F900D1124792F770FCB |
||||
:10103000770B692FCE0181960E943B0269E671E031 |
||||
:10104000CE0181960E946B028EE00E948E01BC014F |
||||
:10105000CE0181960E943B026FE671E0CE0181963F |
||||
:101060000E946B0260E070E0CE0181960E943B021C |
||||
:1010700065E771E0CE0181960E946B02F601448122 |
||||
:10108000558160817181CE0181960E940D026BE7CE |
||||
:1010900071E0CE0181960E946B02CE0181960E9482 |
||||
:1010A0001A0C6DE771E0CE0187960E94FC02BE012A |
||||
:1010B000695D7F4FC8010E94F30266E871E0C801D4 |
||||
:1010C0000E94AF0BBE016F5D7F4F0E948C02BC017E |
||||
:1010D000CE014B960E94F302C8010E94EE0268E81E |
||||
:1010E00071E0CE0145960E94FC028F8D98A18796F3 |
||||
:1010F0000E94B3127C01BE01655E7F4FC8010E9451 |
||||
:10110000F30299808A80BE016B5E7F4FCE010F96FD |
||||
:101110000E945D078F929F9288898F938F858F930E |
||||
:1011200080E991E09F938F93FF92EF920E94D314F6 |
||||
:10113000CE010F960E94EE02C8010E94EE02B70196 |
||||
:10114000CE010F960E94FC02BE01615F7F4FC80175 |
||||
:101150000E9404068A818F9389818F93FF92EF9278 |
||||
:101160008AE991E09F938F93FF92EF920E94D314AC |
||||
:10117000C8010E94EE02CE010F960E94EE020E946C |
||||
:10118000C80B68EC70E080E090E00E9406040E94CA |
||||
:10119000070CC7010E94F40BB70186EB92E00E9496 |
||||
:1011A00011030E94DE0B68EC70E080E090E00E948A |
||||
:1011B00006040E944206C7010E944813CE014596CC |
||||
:1011C0000E94EE02CE014B960E94EE02CE0187965F |
||||
:1011D0000E94EE02CE0181960E94EE020FB6F894B4 |
||||
:1011E000DEBF0FBECDBF6FE971E0C5010E945E0B8F |
||||
:1011F0008823F1F06EE871E0C6010E945E0B88233F |
||||
:1012000041F061E084E00E947E0385EB91E00E9462 |
||||
:10121000F40B6CEB71E0C6010E945E0B882341F079 |
||||
:1012200060E084E00E947E038EEB91E00E94F40B6C |
||||
:1012300068EE73E080E090E00E940604E0E0F0E0F9 |
||||
:101240000995AC960FB6F894DEBF0FBECDBFDF9107 |
||||
:10125000CF911F910F91FF90EF90DF90CF90BF90B3 |
||||
:10126000AF909F908F9008958F929F92AF92BF9270 |
||||
:10127000CF92DF92EF92FF920F931F93CF93DF9362 |
||||
:10128000CDB7DEB768970FB6F894DEBF0FBECDBFFF |
||||
:101290008C017B016A015901BC0182E093E00E944C |
||||
:1012A000D702B7018CEF92E00E94D702B60186EF19 |
||||
:1012B00092E00E94D702B50180EF92E00E94D7022F |
||||
:1012C00080910B02811135C0809007029090080236 |
||||
:1012D000B501CE0143960E94F302B601CE010D96F0 |
||||
:1012E0000E94F302B701CE0107960E94F302B801F3 |
||||
:1012F000CE0101960E94F3029E012D5E3F4FAE018A |
||||
:10130000435F5F4FBE01695F7F4FCE010196F401DD |
||||
:101310000995CE0101960E94EE02CE0107960E9429 |
||||
:10132000EE02CE010D960E94EE02CE0143960E947F |
||||
:10133000EE0268960FB6F894DEBF0FBECDBFDF9108 |
||||
:10134000CF911F910F91FF90EF90DF90CF90BF90C2 |
||||
:10135000AF909F908F900895CF92DF92EF92FF927F |
||||
:101360000F931F93CF93DF936B01FC01E484F5840B |
||||
:10137000EC0100E010E00E151F0561F0B601CE0192 |
||||
:101380000E947D0B2696882311F0C80105C00F5FCF |
||||
:101390001F4FF1CF8FEF9FEFDF91CF911F910F91F3 |
||||
:1013A000FF90EF90DF90CF9008950F931F93CF930E |
||||
:1013B000DF93CDB7DEB768970FB6F894DEBF0FBEE8 |
||||
:1013C000CDBF8C0140E050E064E20E94420B8F3FB1 |
||||
:1013D0002FEF920709F472C09C0140E050E0B80181 |
||||
:1013E000CE0143960E94FC0A40E050E064E2C8014E |
||||
:1013F0000E94420BF80124813581AC014F5F5F4FA1 |
||||
:10140000B801CE010D960E94FC0A66EC71E0CE0197 |
||||
:1014100001960E94FC02BE016F5F7F4F82EE92E058 |
||||
:101420000E94AC09019661F4BE016D5E7F4F82EEB1 |
||||
:1014300092E00E94AC0911E0019619F410E001C09D |
||||
:1014400011E0CE0101960E94EE02112379F1BE0156 |
||||
:101450006D5E7F4F8CED92E00E94D702BE01635F0C |
||||
:101460007F4F86ED92E00E94D70200910902109111 |
||||
:101470000A02BE01635F7F4FCE0107960E94F3020E |
||||
:10148000BE016D5E7F4FCE0101960E94F302BE0148 |
||||
:10149000695F7F4FCE010196F8010995CE01019653 |
||||
:1014A0000E94EE02CE0107960E94EE02CE010D963A |
||||
:1014B0000E94EE02CE0143960E94EE0268960FB69D |
||||
:1014C000F894DEBF0FBECDBFDF91CF911F910F917A |
||||
:1014D0000895AF92BF92CF92DF92EF92FF920F9357 |
||||
:1014E0001F93CF93DF9300D000D000D0CDB7DEB7ED |
||||
:1014F0008C016B01FC0184859585029749F5B80143 |
||||
:10150000CE0101960E94F302F80184859585892B0E |
||||
:10151000D9F0C801EE24E394F12CF8012485358537 |
||||
:101520005C01F6E0AF0EB11CE216F30640F4B50123 |
||||
:101530000E94D702FFEFEF1AFF0AC501EECF21503C |
||||
:101540003109F80135872487CE0101960E94EE0209 |
||||
:10155000F8012485358546E0429FC001439F900DE8 |
||||
:101560001124B601800F911F0E94D702F8018485D3 |
||||
:10157000958501969587848726960FB6F894DEBFE9 |
||||
:101580000FBECDBFDF91CF911F910F91FF90EF90D4 |
||||
:10159000DF90CF90BF90AF900895EF92FF920F939E |
||||
:1015A0001F93CF93DF93EC016CEF71E00E94FC027C |
||||
:1015B0006CEF71E0CE0106960E94FC021D861C862F |
||||
:1015C0007E0100E010E08C859D850817190758F40E |
||||
:1015D0006CEF71E0C7010E94C0020F5F1F4F86E0F1 |
||||
:1015E000E80EF11CF0CFDF91CF911F910F91FF908A |
||||
:1015F000EF9008950E94AA14BF92CF92DF92EF92CB |
||||
:10160000FF920F931F93CF93DF937C016B018A01AD |
||||
:10161000E9012417350720F4812F8901C42FD82F21 |
||||
:101620006CEF71E0C7010E94FC02D60114968D9107 |
||||
:101630009C91159708171907D0F48C179D0708F48B |
||||
:10164000EC01D601ED91FC911197EC0FFD1FB080DC |
||||
:1016500010824D915C91BA01600F711FC7010E9409 |
||||
:10166000C002D601ED91FC91EC0FFD1FB082C701C5 |
||||
:10167000DF91CF911F910F91FF90EF90DF90CF906E |
||||
:10168000BF900895CF93DF93FC01248135814217E9 |
||||
:10169000530778F4C081D181062E000C770BCE0160 |
||||
:1016A000840F951F0E94B814009719F08C1B9D0B96 |
||||
:1016B00002C08FEF9FEFDF91CF910895FC0124814D |
||||
:1016C0003581232B31F421E061157105A1F0FB0177 |
||||
:1016D00008C0FC01808191816115710531F421E020 |
||||
:1016E000FC018081882339F005C00E94C31421E0E9 |
||||
:1016F000892B09F020E0822F0895FC012481358197 |
||||
:10170000FB01448155812417350721F5FC018081B7 |
||||
:101710009181FB0160817181009719F0611571055C |
||||
:10172000A1F46115710549F0232BB1F0FB01808113 |
||||
:1017300090E09195819591090AC0009769F0232B5B |
||||
:1017400059F0FC01808190E002C00E94C31421E0A6 |
||||
:10175000892B19F020E001C021E0822F0895CF935A |
||||
:10176000DF93EC016115710561F0FB010190002030 |
||||
:10177000E9F73197AF01461B570B0E940D0281110B |
||||
:1017800003C0CE010E947A02CE01DF91CF9108956D |
||||
:1017900041E861E886EB92E00C94E4041092D302F5 |
||||
:1017A0001092D2026DE186EB92E00E941305482F61 |
||||
:1017B0004E7F6DE986EB92E00C94E40443E861E827 |
||||
:1017C00086EB92E00E94E40462E186EB92E00E94E4 |
||||
:1017D000130583FFF9CF48E062E986EB92E00E94AF |
||||
:1017E000E40481E090E00895CF93DF93BC0189E1A8 |
||||
:1017F00092E00E941103EC016AEF71E089E192E04E |
||||
:101800000E9411038C0F9D1FDF91CF9108950E94BC |
||||
:10181000C80B0E94CE0B40E06DE886EB92E00E9480 |
||||
:10182000E40440E062EA86EB92E00E94E40481E096 |
||||
:1018300090E00895CF93DF93FC014481558160814E |
||||
:10184000718189E192E00E948800EC016AEF71E009 |
||||
:1018500089E192E00E9411038C0F9D1FDF91CF91CF |
||||
:10186000089586ED92E00E94EE028CED92E00E94D7 |
||||
:10187000EE0288EE92E00E94EE0282EE92E00E947A |
||||
:10188000EE0280EF92E00E94EE0286EF92E00E946C |
||||
:10189000EE028CEF92E00E94EE0282E093E00E9462 |
||||
:1018A000EE0288E093E00E94EE0588E193E00E945A |
||||
:1018B000EE0282E193E00E94EE0286E293E00E9453 |
||||
:1018C000EE0280E293E00C94EE02CF93DF93CDB76B |
||||
:1018D000DEB7A4970FB6F894DEBF0FBECDBF7894E5 |
||||
:1018E00084B5826084BD84B5816084BD85B5826025 |
||||
:1018F00085BD85B5816085BD80916E0081608093D6 |
||||
:101900006E0010928100809181008260809381003E |
||||
:10191000809181008160809381008091800081604E |
||||
:10192000809380008091B10084608093B1008091A9 |
||||
:10193000B00081608093B00080917A0084608093D1 |
||||
:101940007A0080917A00826080937A0080917A0098 |
||||
:10195000816080937A0080917A00806880937A0019 |
||||
:101960001092C100E0912902F0912A0282E0808366 |
||||
:10197000E0912502F09126021082E0912702F09179 |
||||
:10198000280280E1808310923102E0912D02F091D3 |
||||
:101990002E0286E08083E0912B02F0912C02808160 |
||||
:1019A00080618083E0912B02F0912C02808188601D |
||||
:1019B0008083E0912B02F0912C02808180688083EB |
||||
:1019C000E0912B02F0912C0280818F7D808361E079 |
||||
:1019D0008091C6020E94CA0361E08091C6020E9403 |
||||
:1019E0007E038091C8029091C9028F3F2FEF92072A |
||||
:1019F000C9F061E00E94CA0360E08091C8020E94C1 |
||||
:101A00007E036AE070E080E090E00E94060461E0FE |
||||
:101A10008091C8020E947E036AE070E080E090E05E |
||||
:101A20000E9406041FB7F89480910C02811127C010 |
||||
:101A3000EEEAF0E08491EAE9F0E09491E82FF0E03A |
||||
:101A4000EE0FFF1FEA57FF4FA591B491EC91E923E8 |
||||
:101A500021F461E08AE00E947E0361E08AE00E9456 |
||||
:101A6000CA038CB580618CBD8CB580648CBD61E08F |
||||
:101A70008DE00E94CA0361E08BE00E94CA0380915E |
||||
:101A80000C028F5F80930C021FBF62E486EB92E032 |
||||
:101A90000E941305823109F071C340E861E886EBCA |
||||
:101AA00092E00E94E40480E49EE0AFECB9E1809310 |
||||
:101AB000CC029093CD02A093CE02B093CF024CE61D |
||||
:101AC00066E886EB92E00E94E40440E467E886EB77 |
||||
:101AD00092E00E94E40440E068E886EB92E00E9415 |
||||
:101AE000E40440E06EE886EB92E00E94E40440E00B |
||||
:101AF0006FE886EB92E00E94E4046CE086EB92E0F3 |
||||
:101B00000E941305482F43606CE886EB92E00E9428 |
||||
:101B1000E40444E066EA86EB92E00E94E4044FE8C5 |
||||
:101B200069E886EB92E00E94E4040E94C80B60E042 |
||||
:101B30008EE00E94CA0360E08FE00E94CA0360E06A |
||||
:101B400080E10E94CA0360E081E10E94CA0361E073 |
||||
:101B500084E00E94CA030E94420685ED99E09093BA |
||||
:101B600008028093070266EC71E0CE0101960E94A4 |
||||
:101B7000FC02BE016F5F7F4F82EE92E00E94690A15 |
||||
:101B8000CE0101960E94EE028DE897E090930A0242 |
||||
:101B90008093090288EC91E00E94F40BE12CF12C77 |
||||
:101BA00096E0B92E0E94400461327F4B824091053D |
||||
:101BB00010F0F701099562E186EB92E00E941305AF |
||||
:101BC000182F0E94CE0B412F62E986EB92E00E9413 |
||||
:101BD000E40416FF2CC015FD2AC01092D102109209 |
||||
:101BE000D0028091D2029091D302892B11F062E24F |
||||
:101BF00001C063E186EB92E00E941305082F10E01C |
||||
:101C000060E186EB92E00E941305482F6DE886EBB9 |
||||
:101C100092E00E94E4040E94C80B012B09F4F4C175 |
||||
:101C20006CEF71E0CE014F960E94FC0215C061E09E |
||||
:101C300086EB92E00E941305863809F4E5C140E086 |
||||
:101C40006DE886EB92E00E94E40446E861E886EBEA |
||||
:101C500092E00E94E404D8C186EB92E00E94600505 |
||||
:101C6000892B81F086EB92E00E94450589831A82D8 |
||||
:101C700041E050E0BE016F5F7F4FCE014F960E9462 |
||||
:101C80000D02EACF2BA13CA12150310940E050E0E8 |
||||
:101C9000BE01615E7F4FCE010D960E94FC0ABE011F |
||||
:101CA000635F7F4FCE0101960E9404062BA13CA1E9 |
||||
:101CB000A90141505109BE01615E7F4FCE010796D7 |
||||
:101CC0000E94FC0ABE016F5F7F4FCE0107960E9403 |
||||
:101CD0007D0B182FCE0107960E94EE02CE010196D1 |
||||
:101CE0000E94EE02CE010D960E94EE02112309F42D |
||||
:101CF00087C1BE01615E7F4FCE0101960E943A0707 |
||||
:101D000066E371E0CE0101960E945E0B811115C061 |
||||
:101D1000BE01615E7F4FCE0107960E943A0768E8D8 |
||||
:101D200071E0CE0107960E945E0B11E0811110E078 |
||||
:101D3000CE0107960E94EE0201C010E0CE0101968E |
||||
:101D40000E94EE0211115CC1BE01615E7F4FCE01A7 |
||||
:101D500001960E94F70662ED71E0CE0101960E94A5 |
||||
:101D60005E0B182FCE0101960E94EE021123C1F1E5 |
||||
:101D700062ED71E0CE0143960E94FC02BE01615EFD |
||||
:101D80007F4FCE010D960E943A07BE01615E7F4FE4 |
||||
:101D9000CE0107960E941007BE01615E7F4FCE0103 |
||||
:101DA00001960E94AC069E012D5E3F4FAE01435F3F |
||||
:101DB0005F4FBE01695F7F4FCE0101960E943409DB |
||||
:101DC000CE0101960E94EE02CE0107960E94EE021D |
||||
:101DD000CE010D960E94EE02CE0143960E94EE02C5 |
||||
:101DE000BE01615E7F4FCE0101960E94F7066DED48 |
||||
:101DF00071E0CE0101960E945E0B182FCE01019674 |
||||
:101E00000E94EE02112309F4B0C0BE01615E7F4F53 |
||||
:101E100082E193E00E94690ABE01615E7F4FCE01BC |
||||
:101E200001960E947406BE01615E7F4FCE010D9641 |
||||
:101E30000E941007BE01635F7F4FCE0107960E948C |
||||
:101E40005D0766ED71E0CE0143960E94FC02BE0183 |
||||
:101E5000695F7F4FCE0143960E948C02BE016F5F87 |
||||
:101E60007F4F0E948C026AED71E00E94AF0BBC01B3 |
||||
:101E7000CE0149960E94F302CE0143960E94EE02E3 |
||||
:101E8000CE0107960E94EE02CE010D960E94EE0250 |
||||
:101E9000CE0101960E94EE02BE01675E7F4FCE0129 |
||||
:101EA00001960E9404064D815E8169817A81CE018E |
||||
:101EB00049960E940D02CE0101960E94EE02CE01CB |
||||
:101EC00049960E944A06CE0149960E94EE02BE0142 |
||||
:101ED000615E7F4F82E193E00E94AC09019609F0B8 |
||||
:101EE0008FC06DED71E0CE0143960E94FC02BE01F1 |
||||
:101EF000615E7F4FCE010D960E943A07BE01615E82 |
||||
:101F00007F4FCE0107960E941007BE01615E7F4F92 |
||||
:101F1000CE0101960E94AC069E012D5E3F4FAE01A0 |
||||
:101F2000435F5F4FBE01695F7F4FCE0101960E9404 |
||||
:101F30003409CE0101960E94EE02CE0107960E945E |
||||
:101F4000EE02CE010D960E94EE02CE0143960E9453 |
||||
:101F5000EE0280911E0390911F03069734F060E01B |
||||
:101F600070E082E193E00E94B905BE01615E7F4F9F |
||||
:101F7000CE0101960E94F7066CED71E0CE0101964C |
||||
:101F80000E945E0B182FCE0101960E94EE021123D3 |
||||
:101F9000B9F1BE01615E7F4FCE0107960E94AC068B |
||||
:101FA00000E010E080912C0390912D030817190791 |
||||
:101FB00018F517FD04C0081719070CF4E4C060E217 |
||||
:101FC00073E0CE0101960E947406BE01695F7F4FE7 |
||||
:101FD000CE0101960E947D0BD82ECE0101960E9463 |
||||
:101FE000EE02DD2031F0B80180E293E00E94B905F5 |
||||
:101FF00003C00F5F1F4FD6CFCE0107960E94EE029F |
||||
:10200000CE014F960E94EE028091110281110DC007 |
||||
:102010000E94400460930D0270930E0280930F02A1 |
||||
:102020009093100281E0809311020E94400400917D |
||||
:102030000D0210910E0220910F0230911002DC016E |
||||
:10204000CB01801B910BA20BB30B893E9340A105E2 |
||||
:10205000B10508F490C0812C912C00E010E0809133 |
||||
:102060002C0390912D030817190708F07AC017FD6B |
||||
:1020700004C0081719070CF48EC080E2C82E83E054 |
||||
:10208000D82E61EE71E0CE0101960E94FC02B601ED |
||||
:10209000CE0101960E948C020E944A06CE01019652 |
||||
:1020A0000E94EE0280910E0390910F03801791071A |
||||
:1020B0003CF0E0910A03F0910B03E80DF91D02C01A |
||||
:1020C000E0E1F3E0808191810196918380838091AA |
||||
:1020D0000E0390910F03801791073CF0E0910A03E3 |
||||
:1020E000F0910B03E80DF91D02C0E0E1F3E08081FF |
||||
:1020F0009181F80131966F01089770F1B80180E283 |
||||
:1021000093E00E94B905E0910A03F0910B03E80DFA |
||||
:10211000F91D80E090E020910E0330910F03A9019A |
||||
:102120004F5F5F4F401B510B8417950734F4A60196 |
||||
:10213000480F591F241735074CF40C191D09200F9F |
||||
:10214000311F30930F0320930E0306C02281338189 |
||||
:10215000219331930196DFCF8601F2E08F0E911C1F |
||||
:102160007ECF0E94400460930D0270930E02809314 |
||||
:102170000F02909310020E94840114CD84EE91E02E |
||||
:102180000E94F40BFFCFB09EB001B19E700D1124E0 |
||||
:10219000605E7C4F16CFB09EC001B19E900D1124A1 |
||||
:1021A0009C01205E3C4F69016CCFCF93DF93E9E146 |
||||
:1021B000F2E01382128288EE93E0A0E0B0E0848324 |
||||
:1021C0009583A683B7838EE091E09183808385EC2D |
||||
:1021D00090E09587848784EC90E09787868780ECF1 |
||||
:1021E00090E0918B808B81EC90E0938B828B82ECE2 |
||||
:1021F00090E0958B848B86EC90E0978B868B118E8C |
||||
:10220000128E138E148EE6EBF2E01382128280E2BD |
||||
:1022100091E09183808380E5848781E085878EE2E9 |
||||
:1022200093E0978786878AE090E0918B808B89E0A6 |
||||
:1022300090E0938B828B82E090E0958B848B168A62 |
||||
:10224000178A108E118E138E128E158E148E178E85 |
||||
:10225000168E148215821682178280E293E00E9405 |
||||
:10226000CD0A82E193E00E94CD0AC8E0D3E082E388 |
||||
:1022700091E09983888380E090E00E94B3129B8371 |
||||
:102280008A832FEF3FEF3F832E839D838C836CEFF8 |
||||
:1022900071E082E093E00E94FC026CEF71E08CEF51 |
||||
:1022A00092E00E94FC026CEF71E086EF92E00E94E7 |
||||
:1022B000FC026CEF71E080EF92E00E94FC0282EE83 |
||||
:1022C00092E00E94CD0A6CEF71E08CED92E00E94EA |
||||
:1022D000FC026CEF71E086ED92E0DF91CF910C94FF |
||||
:1022E000FC021F93FC0199278827BC01E8941191F7 |
||||
:1022F0001032E9F3193010F01E30C8F31B3251F0E0 |
||||
:102300001D3249F4689406C00E94B211610F711D1C |
||||
:10231000811D911D119110531A30B0F33EF4909528 |
||||
:102320008095709561957F4F8F4F9F4F1F910895B6 |
||||
:10233000BB274A3031F4992322F4BDE29095819570 |
||||
:102340009F4F0C94EA11BB272A3051F4992342F491 |
||||
:10235000BDE290958095709561957F4F8F4F9F4F0F |
||||
:102360000C94C811592F482F372F262F660F771F2F |
||||
:10237000881F991F660F771F881F991F620F731F91 |
||||
:10238000841F951F660F771F881F991F0895BB270D |
||||
:10239000FA01A62F6217710581059105330B30FBF9 |
||||
:1023A00066F0AA27660F771F881F991FAA1FA2171A |
||||
:1023B00010F0A21B63953850A9F7A05DAA3308F06E |
||||
:1023C000A95DA19336F7B111B1931082CA010C94A3 |
||||
:1023D0000312BB27FB015527AA27880F991FAA1FA5 |
||||
:1023E000A41710F0A41B83955051B9F7A05DAA3330 |
||||
:1023F00008F0A95DA193009779F7B111B1931192FB |
||||
:10240000CB010C940312DC01FC01672F719177233F |
||||
:10241000E1F7329704C07C916D9370836291AE179F |
||||
:10242000BF07C8F30895052E97FB1EF400940E9481 |
||||
:102430002A1257FD07D00E94691207FC03D04EF400 |
||||
:102440000C942A1250954095309521953F4F4F4F4F |
||||
:102450005F4F089590958095709561957F4F8F4F50 |
||||
:102460009F4F08952F923F924F925F926F927F926B |
||||
:102470008F929F92AF92BF92CF92DF92EF92FF9294 |
||||
:102480000F931F93CF93DF93CDB7DEB7CA1BDB0B40 |
||||
:102490000FB6F894DEBF0FBECDBF09942A883988E5 |
||||
:1024A00048885F846E847D848C849B84AA84B984EC |
||||
:1024B000C884DF80EE80FD800C811B81AA81B981F8 |
||||
:1024C000CE0FD11D0FB6F894DEBF0FBECDBFED010C |
||||
:1024D0000895A1E21A2EAA1BBB1BFD010DC0AA1F65 |
||||
:1024E000BB1FEE1FFF1FA217B307E407F50720F07D |
||||
:1024F000A21BB30BE40BF50B661F771F881F991FF8 |
||||
:102500001A9469F760957095809590959B01AC0140 |
||||
:10251000BD01CF010895A29FB001B39FC001A39F49 |
||||
:10252000700D811D1124911DB29F700D811D11240C |
||||
:10253000911D0895991B79E004C0991F961708F022 |
||||
:10254000961B881F7A95C9F7809508950E948B1273 |
||||
:10255000B7FF0895821B930B0895EE0FFF1F0590A0 |
||||
:10256000F491E02D0994CF93DF938230910510F41C |
||||
:1025700082E090E0E0913103F091320320E030E01E |
||||
:10258000C0E0D0E0309711F14081518148175907E0 |
||||
:10259000C0F04817590761F482819381209719F0A0 |
||||
:1025A0009B838A832BC0909332038093310326C090 |
||||
:1025B0002115310519F04217530718F49A01BE018D |
||||
:1025C000DF01EF010280F381E02DDCCF2115310521 |
||||
:1025D00009F1281B390B2430310590F412968D91A6 |
||||
:1025E0009C9113976115710521F0FB019383828300 |
||||
:1025F00004C09093320380933103FD01329644C0AE |
||||
:10260000FD01E20FF31F81939193225031092D9325 |
||||
:102610003C933AC020912F0330913003232B41F497 |
||||
:1026200020910601309107013093300320932F034E |
||||
:1026300020910401309105012115310541F42DB798 |
||||
:102640003EB74091080150910901241B350BE091E0 |
||||
:102650002F03F0913003E217F307A0F42E1B3F0B7A |
||||
:102660002817390778F0AC014E5F5F4F2417350704 |
||||
:1026700048F04E0F5F1F5093300340932F03819318 |
||||
:10268000919302C0E0E0F0E0CF01DF91CF91089597 |
||||
:102690000F931F93CF93DF93009709F48CC0FC0135 |
||||
:1026A0003297138212820091310310913203011587 |
||||
:1026B000110581F420813181820F931F20912F0316 |
||||
:1026C000309130032817390779F5F0933003E09300 |
||||
:1026D0002F0371C0D80140E050E0AE17BF0750F49F |
||||
:1026E00012962D913C911397AD012115310509F1F9 |
||||
:1026F000D901F3CF9D01DA01338322836081718197 |
||||
:10270000860F971F8217930769F4EC01288139819E |
||||
:10271000260F371F2E5F3F4F318320838A819B8195 |
||||
:1027200093838283452B29F4F0933203E0933103A2 |
||||
:1027300042C01396FC93EE931297ED014991599183 |
||||
:102740009E01240F351FE217F30771F480819181F8 |
||||
:10275000840F951F029611969C938E93828193818C |
||||
:1027600013969C938E931297E0E0F0E0D8011296B6 |
||||
:102770008D919C911397009719F0F8018C01F6CF79 |
||||
:102780008D919C9198012E5F3F4F820F931F209156 |
||||
:102790002F03309130032817390769F4309729F453 |
||||
:1027A000109232031092310302C0138212821093EE |
||||
:1027B000300300932F03DF91CF911F910F91089564 |
||||
:1027C000A0E0B0E0E6EEF3E10C943612EC010097E5 |
||||
:1027D00021F4CB010E94B312B8C0FC01E60FF71F31 |
||||
:1027E0009C0122503109E217F30708F4ACC0D9016B |
||||
:1027F0000D911C91119706171707B0F005301105C0 |
||||
:1028000008F49FC0C80104978617970708F499C079 |
||||
:1028100002501109061B170B019311936D937C93C2 |
||||
:10282000CF010E9448138DC05B01A01AB10A4C0170 |
||||
:10283000800E911EA0913103B091320340E050E030 |
||||
:10284000E12CF12C109709F44AC0A815B905D1F56F |
||||
:102850006D907C901197630182E0C80ED11CCA1460 |
||||
:10286000DB0480F1A3014A195B096A0182E0C80E0A |
||||
:10287000D11C1296BC9012971396AC91B5E0CB1672 |
||||
:10288000D10440F0B282A38351834083D9016D9378 |
||||
:102890007C930AC00E5F1F4FC301800F911FF90187 |
||||
:1028A00091838083EB2DFA2FE114F10431F0D701ED |
||||
:1028B0001396FC93EE93129744C0F0933203E09387 |
||||
:1028C00031033FC08D919C9111974817590708F427 |
||||
:1028D000AC017D0112960D90BC91A02DB3CF8091DB |
||||
:1028E0002F039091300388159905E1F44617570797 |
||||
:1028F000C8F48091040190910501009741F48DB7CF |
||||
:102900009EB74091080150910901841B950BE8176F |
||||
:10291000F907C8F4F0933003E0932F03F9017183B2 |
||||
:1029200060830FC0CB010E94B3127C01009759F065 |
||||
:10293000A801BE010E94AF14CE010E944813C70136 |
||||
:1029400004C0CE0102C080E090E0CDB7DEB7EEE07B |
||||
:102950000C94521281E090E0F8940C947417FB01EF |
||||
:10296000DC0102C001900D9241505040D8F708950B |
||||
:10297000FC018191861721F08823D9F799270895C2 |
||||
:102980003197CF010895FB01DC018D9101908019F1 |
||||
:102990000110D9F3990B0895FB01DC0101900D9210 |
||||
:1029A0000020E1F70895AEE0B0E0E9EDF4E10C9429 |
||||
:1029B00040120D891E8986E08C831A8309838FEF6C |
||||
:1029C0009FE79E838D83AE01475E5F4F6F89788D51 |
||||
:1029D000CE0101960E94F6142F813885F801E20F8E |
||||
:1029E000F31F10822E96E4E00C945C12ACE0B0E091 |
||||
:1029F000ECEFF4E10C9432127C016B018A01FC01D2 |
||||
:102A000017821682838181FFBDC1CE0101964C01E0 |
||||
:102A1000F7019381F60193FD859193FF81916F01F9 |
||||
:102A2000882309F4ABC1853239F493FD859193FF76 |
||||
:102A300081916F01853229F4B70190E00E94DE1682 |
||||
:102A4000E7CF512C312C20E02032A0F48B3269F0FA |
||||
:102A500030F4803259F0833269F420612CC08D3219 |
||||
:102A600039F0803339F4216026C02260246023C00D |
||||
:102A7000286021C027FD27C030ED380F3A3078F4A8 |
||||
:102A800026FF06C0FAE05F9E300D1124532E13C0BE |
||||
:102A90008AE0389E300D1124332E20620CC08E3215 |
||||
:102AA00021F426FD6BC1206406C08C3611F4206829 |
||||
:102AB00002C0883641F4F60193FD859193FF819120 |
||||
:102AC0006F018111C1CF982F9F7D9554933028F4C9 |
||||
:102AD0000C5F1F4FFFE3F9830DC0833631F083375E |
||||
:102AE00071F0833509F05BC022C0F80180818983D1 |
||||
:102AF0000E5F1F4F44244394512C540115C03801DC |
||||
:102B0000F2E06F0E711CF801A080B18026FF03C0B7 |
||||
:102B1000652D70E002C06FEF7FEFC5012C870E942A |
||||
:102B2000D3162C0183012C852F77222E17C0380154 |
||||
:102B3000F2E06F0E711CF801A080B18026FF03C087 |
||||
:102B4000652D70E002C06FEF7FEFC5012C870E94FA |
||||
:102B5000C8162C012C852068222E830123FC1BC063 |
||||
:102B6000832D90E048165906B0F4B70180E290E05A |
||||
:102B70000E94DE163A94F4CFF50127FC859127FEDA |
||||
:102B800081915F01B70190E00E94DE1631103A9406 |
||||
:102B9000F1E04F1A51084114510471F7E5C0843631 |
||||
:102BA00011F0893639F5F80127FF07C0608171817E |
||||
:102BB000828193810C5F1F4F08C060817181072E55 |
||||
:102BC000000C880B990B0E5F1F4F2F76722E97FF0C |
||||
:102BD00009C090958095709561957F4F8F4F9F4F5D |
||||
:102BE0002068722E2AE030E0A4010E941617A82E59 |
||||
:102BF000A81844C0853729F42F7EB22E2AE030E091 |
||||
:102C000025C0F22FF97FBF2E8F36C1F018F488351A |
||||
:102C100079F0B4C0803719F0883721F0AFC02F2F7A |
||||
:102C20002061B22EB4FE0DC08B2D8460B82E09C079 |
||||
:102C300024FF0AC09F2F9660B92E06C028E030E01E |
||||
:102C400005C020E130E002C020E132E0F801B7FE2B |
||||
:102C500007C060817181828193810C5F1F4F06C024 |
||||
:102C60006081718180E090E00E5F1F4FA4010E949F |
||||
:102C70001617A82EA818FB2DFF777F2E76FE0BC007 |
||||
:102C8000372D3E7FA51450F474FE0AC072FC08C0B4 |
||||
:102C9000372D3E7E05C0BA2C372D03C0BA2C01C09B |
||||
:102CA000B52C34FF0DC0FE01EA0DF11D808180338B |
||||
:102CB00011F4397E09C032FF06C0B394B39404C046 |
||||
:102CC000832F867809F0B39433FD13C030FF06C01C |
||||
:102CD0005A2CB31418F4530C5B18B32CB31468F4C7 |
||||
:102CE000B70180E290E03C870E94DE16B3943C85F9 |
||||
:102CF000F5CFB31410F43B1801C0312C34FF12C0CF |
||||
:102D0000B70180E390E03C870E94DE163C8532FFED |
||||
:102D100017C031FD03C088E790E002C088E590E06D |
||||
:102D2000B7010CC0832F867859F031FF02C08BE2C7 |
||||
:102D300001C080E237FD8DE2B70190E00E94DE160F |
||||
:102D4000A51438F4B70180E390E00E94DE165A948F |
||||
:102D5000F7CFAA94F401EA0DF11D8081B70190E04C |
||||
:102D60000E94DE16A110F5CF332009F451CEB70131 |
||||
:102D700080E290E00E94DE163A94F6CFF701868159 |
||||
:102D8000978102C08FEF9FEF2C96E2E10C944E12D8 |
||||
:102D9000FC010590615070400110D8F78095909526 |
||||
:102DA0008E0F9F1F0895FC0161507040019001102B |
||||
:102DB000D8F7809590958E0F9F1F08950F931F93BE |
||||
:102DC000CF93DF93FB01238121FD03C08FEF9FEFA2 |
||||
:102DD00028C022FF16C046815781248135814217C1 |
||||
:102DE000530744F4A081B1819D012F5F3F4F318390 |
||||
:102DF00020838C93268137812F5F3F4F3783268333 |
||||
:102E000010C0EB01092F182F0084F185E02D0995E2 |
||||
:102E1000892BE1F68E819F8101969F838E83812F7E |
||||
:102E2000902FDF91CF911F910F910895FA01AA275A |
||||
:102E3000283051F1203181F1E8946F936E7F6E5FFD |
||||
:102E40007F4F8F4F9F4FAF4FB1E03ED0B4E03CD0AB |
||||
:102E5000670F781F891F9A1FA11D680F791F8A1F8E |
||||
:102E6000911DA11D6A0F711D811D911DA11D20D0F5 |
||||
:102E700009F468943F912AE0269F11243019305DAF |
||||
:102E80003193DEF6CF010895462F4770405D4193A0 |
||||
:102E9000B3E00FD0C9F7F6CF462F4F70405D4A33ED |
||||
:102EA00018F0495D31FD4052419302D0A9F7EACFB5 |
||||
:102EB000B4E0A6959795879577956795BA95C9F7E4 |
||||
:102EC00000976105710508959B01AC010A2E0694D7 |
||||
:102ED0005795479537952795BA95C9F7620F731F90 |
||||
:102EE000841F951FA01D089510E0CDE5D0E004C01B |
||||
:102EF000FE010E94AD122196CE35D107C9F7F89494 |
||||
:022F0000FFCF01 |
||||
:102F0200CA01CA01000033038000000000001B0157 |
||||
:102F12008800B3006201E400C200D6000000000095 |
||||
:102F2200CC017105E301CB016005450517050000E1 |
||||
:102F32000000EE05FA05312E302E302E3200726579 |
||||
:102F42007300716F732F73796E63007B2274223A60 |
||||
:102F5200226E6F646530222C2262223A002C227784 |
||||
:102F6200223A002C2254223A002C2268223A002CC7 |
||||
:102F72002273223A002C2271223A007D007265737C |
||||
:102F82002F6A736F6E002400302E302E302E3000E8 |
||||
:102F92007564707C257325737C002573257300632B |
||||
:102FA200746C2F6E6F6465312F776174657253771D |
||||
:102FB200697463680070756D704F6E0031007075D2 |
||||
:102FC2006D704F6666002300737461727465642EBF |
||||
:102FD2002E0075647000727463707C00727463708A |
||||
:102FE200007463005374617274696E67204C6F528F |
||||
:0E2FF20061206661696C656421000D0A0000B3 |
||||
:00000001FF |
@ -0,0 +1,894 @@ |
||||
:100000000C945E000C94BD040C9496040C94860031 |
||||
:100010000C9486000C9486000C9486000C94860048 |
||||
:100020000C9486000C9486000C9486000C94860038 |
||||
:100030000C9486000C9486000C9486000C94860028 |
||||
:100040000C944C040C9486000C944C030C942603E2 |
||||
:100050000C9486000C9486000C9486000C94860008 |
||||
:100060000C9486000C9486000000000025002800F7 |
||||
:100070002B0000000008000201000003040700003C |
||||
:1000800000000000000000000000240027002A00FB |
||||
:10009000010204081020408001020408102001021F |
||||
:1000A00004081020040404040404040402020202EC |
||||
:1000B0000202030303030303D510310C11241FBEF6 |
||||
:1000C000CFEFD8E0DEBFCDBF11E0A0E0B1E0E2E0CD |
||||
:1000D000FFE202C005900D92AE3FB107D9F723E0D1 |
||||
:1000E000AEEFB1E001C01D92A333B207E1F710E01B |
||||
:1000F000CDE5D0E004C02197FE010E94AD12CC35C1 |
||||
:10010000D107C9F70E94650C0C9474170C94000079 |
||||
:10011000CF92DF92EF92FF920F931F93CF93DF93D3 |
||||
:100120006C017A018B01C0E0D0E0CE15DF0589F0CB |
||||
:10013000D8016D918D01D601ED91FC910190F08176 |
||||
:10014000E02DC6010995892B11F47E0102C021968C |
||||
:10015000ECCFC701DF91CF911F910F91FF90EF90EE |
||||
:10016000DF90CF900895FC01538D448D252F30E012 |
||||
:10017000842F90E0821B930B541710F0CF960895B4 |
||||
:1001800001970895FC01918D828D981761F0828D01 |
||||
:10019000DF01A80FB11D5D968C91928D9F5F9F73BB |
||||
:1001A000928F90E008958FEF9FEF0895FC01918D5D |
||||
:1001B000828D981731F0828DE80FF11D858D90E0CA |
||||
:1001C00008958FEF9FEF0895FC01918D228D892F67 |
||||
:1001D00090E0805C9F4F821B91098F73992708954F |
||||
:1001E00089E192E00E94E40021E0892B09F420E0FB |
||||
:1001F000822F0895FC01848DDF01A80FB11DA35A41 |
||||
:10020000BF4F2C91848D90E001968F739927848F36 |
||||
:10021000A689B7892C93A089B1898C9180648C932D |
||||
:10022000938D848D981306C00288F389E02D808118 |
||||
:100230008F7D80830895EF92FF920F931F93CF934A |
||||
:10024000DF93EC0181E0888F9B8D8C8D981305C026 |
||||
:10025000E889F989808185FD24C0F62E0B8D10E098 |
||||
:100260000F5F1F4F0F731127E02E8C8DE8120CC00B |
||||
:100270000FB607FCFACFE889F989808185FFF5CFB1 |
||||
:10028000CE010E94FA00F1CF8B8DFE01E80FF11D27 |
||||
:10029000E35AFF4FF0820B8FEA89FB8980818062ED |
||||
:1002A00007C0EE89FF896083E889F98980818064CD |
||||
:1002B000808381E090E0DF91CF911F910F91FF90BB |
||||
:1002C000EF900895CF93DF93EC01888D8823C9F0D8 |
||||
:1002D000EA89FB89808185FD05C0A889B9898C914F |
||||
:1002E00086FD0FC00FB607FCF5CF808185FFF2CFEA |
||||
:1002F000A889B9898C9185FFEDCFCE010E94FA00C3 |
||||
:10030000E7CFDF91CF91089580E090E0892B29F02D |
||||
:100310000E94F00081110C94000008958E3008F0C6 |
||||
:100320008E508770806480937C0080917A00806416 |
||||
:1003300080937A0080917A0086FDFCCF80917800CE |
||||
:100340002091790090E0922B08953FB7F894809126 |
||||
:10035000030290910402A0910502B091060226B515 |
||||
:10036000A89B05C02F3F19F00196A11DB11D3FBFED |
||||
:10037000BA2FA92F982F8827820F911DA11DB11D7B |
||||
:10038000BC01CD0142E0660F771F881F991F4A9577 |
||||
:10039000D1F7089508950895CF93DF931F92CDB7B5 |
||||
:1003A000DEB76983DC01ED91FC910280F381E02DE1 |
||||
:1003B00041E050E0BE016F5F7F4F09950F90DF91E4 |
||||
:1003C000CF910895089580E090E008950F931F93D2 |
||||
:1003D000CF93DF93EC0188819981009729F02A81DE |
||||
:1003E0003B812617370788F48B016F5F7F4F0E9490 |
||||
:1003F000E013009761F0998388831B830A832C8123 |
||||
:100400003D81232B11F4FC01108281E001C080E0CA |
||||
:10041000DF91CF911F910F910895EF92FF920F936B |
||||
:100420001F93CF93DF93FC01248135816115710502 |
||||
:1004300011F480E019C041155105A9F07B01EC01D0 |
||||
:100440008A01020F131FB8010E94E601882389F375 |
||||
:10045000288139818C819D81B701820F931F0E9471 |
||||
:10046000CC141D830C8381E0DF91CF911F910F91FC |
||||
:10047000FF90EF900895EF92FF920F931F93CF9309 |
||||
:10048000DF93CDB7DEB728970FB6F894DEBF0FBE67 |
||||
:10049000CDBF7C01CB014AE08E010F5F1F4FB80139 |
||||
:1004A0000E949811F80101900020E9F73197AF01FF |
||||
:1004B000401B510BB801C7010E940D0228960FB6D0 |
||||
:1004C000F894DEBF0FBECDBFDF91CF911F910F918A |
||||
:1004D000FF90EF9008956115710551F0FB010190B7 |
||||
:1004E0000020E9F73197AF01461B570B0C940D0222 |
||||
:1004F00080E00895CF93DF93EC0188819981009784 |
||||
:1005000011F00E944813198218821D821C821B82DE |
||||
:100510001A82DF91CF910895CF93DF93EC01FB0115 |
||||
:1005200044815581608171810E940D02811103C057 |
||||
:10053000CE010E947A02CE01DF91CF910895EF9211 |
||||
:10054000FF920F931F93CF93DF93EC017B018A01FE |
||||
:10055000BA010E94E601811104C0CE010E947A0214 |
||||
:1005600007C01D830C83B701888199810E94CC1438 |
||||
:10057000CE01DF91CF911F910F91FF90EF900895E1 |
||||
:10058000CF93DF93EC016115710559F0FB010190E8 |
||||
:100590000020E9F73197AF01461B570B0E949F02DD |
||||
:1005A00002C00E947A02CE01DF91CF910895CF93CD |
||||
:1005B000DF93EC01FB018617970761F06081718181 |
||||
:1005C0006115710529F0448155810E949F0202C086 |
||||
:1005D0000E947A02CE01DF91CF910895FC018081C3 |
||||
:1005E00091810C944813FC011182108213821282B3 |
||||
:1005F000158214820C94D702FC011182108213829E |
||||
:100600001282158214826115710551F0FB0101906F |
||||
:100610000020E9F73197AF01461B570B0C949F025E |
||||
:1006200008956115710579F0FB0101900020E9F74B |
||||
:100630003197AF01461B570BDC01ED91FC91028015 |
||||
:10064000F381E02D099480E090E008951F920F92CD |
||||
:100650000FB60F9211242F933F934F935F936F9395 |
||||
:100660007F938F939F93AF93BF93EF93FF9389E112 |
||||
:1006700092E00E94FA00FF91EF91BF91AF919F919C |
||||
:100680008F917F916F915F914F913F912F910F903B |
||||
:100690000FBE0F901F9018951F920F920FB60F92DA |
||||
:1006A00011242F938F939F93EF93FF93E09129024F |
||||
:1006B000F0912A028081E0912F02F091300282FDB8 |
||||
:1006C00012C09081809132028F5F8F73209133022C |
||||
:1006D000821751F0E0913202F0E0E75EFD4F958F16 |
||||
:1006E0008093320201C08081FF91EF919F918F91A1 |
||||
:1006F0002F910F900FBE0F901F90189590E0FC0166 |
||||
:10070000EE58FF4F3491FC01E057FF4F2491FC015C |
||||
:10071000EC55FF4FE491EE2309F43BC0332339F14C |
||||
:10072000333091F038F43130A9F0323001F584B52E |
||||
:100730008F7D12C0373091F03830A1F03430B9F4E9 |
||||
:10074000809180008F7D03C0809180008F7780939F |
||||
:1007500080000DC084B58F7784BD09C08091B00042 |
||||
:100760008F7703C08091B0008F7D8093B000F0E060 |
||||
:10077000EE0FFF1FE859FF4FA591B4918FB7F89482 |
||||
:10078000EC91611103C020952E2301C02E2B2C93D8 |
||||
:100790008FBF0895CF93DF9390E0FC01E057FF4FA8 |
||||
:1007A0002491FC01EC55FF4F8491882361F190E086 |
||||
:1007B000880F991FFC01EA57FF4FC591D491FC01A6 |
||||
:1007C000E859FF4FA591B491611109C09FB7F89402 |
||||
:1007D0008881209582238883EC912E230BC0623080 |
||||
:1007E00061F49FB7F8943881822F809583238883A2 |
||||
:1007F000EC912E2B2C939FBF06C08FB7F894E88105 |
||||
:100800002E2B28838FBFDF91CF9108958F929F92D7 |
||||
:10081000AF92BF92CF92DF92EF92FF926B017C0179 |
||||
:100820000E94A5014B015C01C114D104E104F10453 |
||||
:10083000F1F00E94A501DC01CB0188199909AA09F0 |
||||
:10084000BB09883E9340A105B10570F321E0C21AAF |
||||
:10085000D108E108F10888EE880E83E0981EA11CFB |
||||
:10086000B11CC114D104E104F10419F7DDCFFF90EC |
||||
:10087000EF90DF90CF90BF90AF909F908F900895B2 |
||||
:100880002FB7F8946091FF017091000280910102EE |
||||
:10089000909102022FBF08951F920F920FB60F92F0 |
||||
:1008A00011242F933F938F939F93AF93BF93809186 |
||||
:1008B000FF0190910002A0910102B09102023091DB |
||||
:1008C000FE0123E0230F2D3720F40196A11DB11D59 |
||||
:1008D00005C026E8230F0296A11DB11D2093FE013D |
||||
:1008E0008093FF0190930002A0930102B093020253 |
||||
:1008F0008091030290910402A0910502B09106023A |
||||
:100900000196A11DB11D8093030290930402A09350 |
||||
:100910000502B0930602BF91AF919F918F913F91D5 |
||||
:100920002F910F900FBE0F901F9018951F920F924E |
||||
:100930000FB60F9211242F933F934F935F936F93B2 |
||||
:100940007F938F939F93AF93BF93EF93FF93E09128 |
||||
:100950000201F09103010995FF91EF91BF91AF91D1 |
||||
:100960009F918F917F916F915F914F913F912F91C7 |
||||
:100970000F900FBE0F901F9018951F920F920FB6F9 |
||||
:100980000F9211242F933F934F935F936F937F9315 |
||||
:100990008F939F93AF93BF93EF93FF93E0910001E9 |
||||
:1009A000F09101010995FF91EF91BF91AF919F9156 |
||||
:1009B0008F917F916F915F914F913F912F910F9008 |
||||
:1009C0000FBE0F901F901895EF92FF921F93CF9339 |
||||
:1009D000DF931F92CDB7DEB77C01162F60E0FC01DC |
||||
:1009E000808949830E947E03F701948585859CBD9B |
||||
:1009F0008DBD1EBD000049810DB407FEFDCF8EB533 |
||||
:100A00004EBD00000DB407FEFDCF1EB561E0F7013D |
||||
:100A100080890E947E03812F0F90DF91CF911F91DB |
||||
:100A2000FF90EF9008956F7740E00C94E404EF920C |
||||
:100A3000FF921F93CF93DF931F92CDB7DEB77C0158 |
||||
:100A4000DC01ED91FC910084F185E02D0995892B65 |
||||
:100A500099F06DE0C7010E941305482F60E0C701BF |
||||
:100A600049830E941305182F49816DE8C7010E9430 |
||||
:100A7000E404812F90E002C08FEF9FEF0F90DF9191 |
||||
:100A8000CF911F91FF90EF900895CF93DF93EC01EA |
||||
:100A9000E881F9810084F185E02D0995892B59F0D1 |
||||
:100AA0008A8D9B8D01969B8F8A8F60E0CE010E947C |
||||
:100AB000130590E002C08FEF9FEFDF91CF91089573 |
||||
:100AC000CF93DF93EC0163E10E941305282F30E000 |
||||
:100AD0008A8D9B8DA901481B590BCA01DF91CF91CB |
||||
:100AE00008958F929F92AF92BF92CF92DF92FF9222 |
||||
:100AF0000F931F93CF93DF931F92CDB7DEB76C0197 |
||||
:100B0000B62E4A0162E279830E941305F82E90E026 |
||||
:100B10009C01280D391D79812F3F310531F028F0D6 |
||||
:100B20002FEF30E04901881A990A0B2D172F580131 |
||||
:100B3000A80CB91C0A151B0541F0F80141918F0161 |
||||
:100B400060E8C6010E94E404F5CF482D4F0D62EA2B |
||||
:100B5000C6010E94E404C4010F90DF91CF911F9160 |
||||
:100B60000F91FF90DF90CF90BF90AF909F908F90AC |
||||
:100B70000895EF92FF920F931F93CF93DF9377FD2A |
||||
:100B800026C0FC01248535856217730704F5EC0146 |
||||
:100B90008B010F5F1F4F26E0269FC001279F900DFE |
||||
:100BA00011248E0F9F1F2C853D857C01F6E0EF0EF2 |
||||
:100BB000F11C0217130738F4B7010E94D7020F5F28 |
||||
:100BC0001F4FC701F0CF215031093D872C87DF919E |
||||
:100BD000CF911F910F91FF90EF90089522E331E0A4 |
||||
:100BE000FC013183208382819381009711F00C9462 |
||||
:100BF00048130895CF93DF93EC010E94EE05CE01D8 |
||||
:100C0000DF91CF910C9448130F931F93CF93DF93F1 |
||||
:100C100000D0CDB7DEB78C01DB011496ED91FC91CD |
||||
:100C2000159720E030E08BE62E173F0781F0DB01BF |
||||
:100C30004D915C914115510529F0DA01A20FB31FC6 |
||||
:100C40009C9101C090E089272F5F3F4FEDCF6AE173 |
||||
:100C50000E949A12F8011182108213821282158268 |
||||
:100C600014829F5999831A82BE016F5F7F4FC8011A |
||||
:100C70000E94C002C8010F900F90DF91CF911F9189 |
||||
:100C80000F9108950E94CE0B45E861E886EB92E053 |
||||
:100C90000C94E404CF93DF93EC010E94C80B68EC42 |
||||
:100CA00070E080E090E00E9406040E94070CCE01F4 |
||||
:100CB0000E941A0CE091B602F091B7024C815D815E |
||||
:100CC000688179810280F381E02D86EB92E00995BD |
||||
:100CD0000E94DE0B68EC70E080E090E00E94060469 |
||||
:100CE000DF91CF910C944206EF92FF920F931F93E6 |
||||
:100CF000CF93DF938C01EB0140E050E06CE7CE0135 |
||||
:100D00000E94420BAC014F5F5F4F6CE7CE010E9427 |
||||
:100D1000420BAC014F5F5F4F6CE7CE010E94420B6C |
||||
:100D2000AC014F5F5F4F6CE7CE010E94420B019612 |
||||
:100D30007C01AC016CE7CE010E94420B9C01A70133 |
||||
:100D4000BE01C8010E94FC0AC801DF91CF911F912A |
||||
:100D50000F91FF90EF900895CF92DF92EF92FF9264 |
||||
:100D60000F931F93CF93DF9300D000D000D0CDB767 |
||||
:100D7000DEB77C018B0140E050E06CE7C8010E94C7 |
||||
:100D8000420BAC014F5F5F4F6CE7C8010E94420B02 |
||||
:100D9000AC014F5F5F4F6CE7C8010E94420B0196A8 |
||||
:100DA0006C01AC016CE7C8010E94420B9C01A601DA |
||||
:100DB000B801CE0101960E94FC0ABE016F5F7F4F11 |
||||
:100DC000C7010E94F302CE0101960E94EE02C70104 |
||||
:100DD00026960FB6F894DEBF0FBECDBFDF91CF9140 |
||||
:100DE0001F910F91FF90EF90DF90CF9008950F9398 |
||||
:100DF0001F93CF93DF93EC018B0140E050E06CE751 |
||||
:100E0000C8010E94420B9C0140E050E0B801CE01B5 |
||||
:100E10000E94FC0ACE01DF91CF911F910F9108959E |
||||
:100E2000EF92FF920F931F93CF93DF938C01EB010F |
||||
:100E300040E050E06CE7CE010E94420BAC014F5FF6 |
||||
:100E40005F4F6CE7CE010E94420B01967C01AC0122 |
||||
:100E50006CE7CE010E94420B9C01A701BE01C801B4 |
||||
:100E60000E94FC0AC801DF91CF911F910F91FF9062 |
||||
:100E7000EF900895EF92FF920F931F93CF93DF931C |
||||
:100E80008C01EB0140E050E06CE7CE010E94420B88 |
||||
:100E900001967C01AC016CE7CE010E94420B9C01E3 |
||||
:100EA000A701BE01C8010E94FC0AC801DF91CF91D1 |
||||
:100EB0001F910F91FF90EF9008950F931F93CF9381 |
||||
:100EC000DF9300D000D000D0CDB7DEB78C01CE01CB |
||||
:100ED00001960E94F3026AED71E0CE0101960E9434 |
||||
:100EE000AF0B66E371E00E94AF0B6AED71E00E9408 |
||||
:100EF000AF0BBC01C8010E94F302CE0101960E9413 |
||||
:100F0000EE02C80126960FB6F894DEBF0FBECDBF25 |
||||
:100F1000DF91CF911F910F9108958F929F92AF9281 |
||||
:100F2000BF92CF92DF92EF92FF920F931F93CF93D6 |
||||
:100F3000DF93CDB7DEB7AC970FB6F894DEBF0FBE28 |
||||
:100F4000CDBF5C016B018EE391E00E94F40B62E483 |
||||
:100F500071E0C5010E945E0B882309F444C1F601CB |
||||
:100F600080819181009709F43EC10E947111DC01DA |
||||
:100F7000CB01885C9109A109B10984369105A105CD |
||||
:100F8000B10508F030C16CEF71E0CE0181960E948E |
||||
:100F9000FC026BE471E0CE0181960E94C00280E108 |
||||
:100FA0000E948E0124E630E0DC010E94A61220E0BF |
||||
:100FB00034E040E050E00E941312CA01B9012AE077 |
||||
:100FC0008E010F5F1F4FA8010E94A311F80101902D |
||||
:100FD0000020E9F73197AF01401B510BB801CE015A |
||||
:100FE00081960E940D026DE571E0CE0181960E940E |
||||
:100FF0006B0281E10E948E0161E070E0C39714F002 |
||||
:1010000060E070E0CE0181960E943B0263E671E0F1 |
||||
:10101000CE0181960E946B028FE00E948E012DE727 |
||||
:10102000AC01249FC001259F900D1124792F770FCB |
||||
:10103000770B692FCE0181960E943B0269E671E031 |
||||
:10104000CE0181960E946B028EE00E948E01BC014F |
||||
:10105000CE0181960E943B026FE671E0CE0181963F |
||||
:101060000E946B0260E070E0CE0181960E943B021C |
||||
:1010700065E771E0CE0181960E946B02F601448122 |
||||
:10108000558160817181CE0181960E940D026BE7CE |
||||
:1010900071E0CE0181960E946B02CE0181960E9482 |
||||
:1010A0001A0C6DE771E0CE0187960E94FC02BE012A |
||||
:1010B000695D7F4FC8010E94F30266E871E0C801D4 |
||||
:1010C0000E94AF0BBE016F5D7F4F0E948C02BC017E |
||||
:1010D000CE014B960E94F302C8010E94EE0268E81E |
||||
:1010E00071E0CE0145960E94FC028F8D98A18796F3 |
||||
:1010F0000E94B3127C01BE01655E7F4FC8010E9451 |
||||
:10110000F30299808A80BE016B5E7F4FCE010F96FD |
||||
:101110000E945D078F929F9288898F938F858F930E |
||||
:1011200080E991E09F938F93FF92EF920E94D314F6 |
||||
:10113000CE010F960E94EE02C8010E94EE02B70196 |
||||
:10114000CE010F960E94FC02BE01615F7F4FC80175 |
||||
:101150000E9404068A818F9389818F93FF92EF9278 |
||||
:101160008AE991E09F938F93FF92EF920E94D314AC |
||||
:10117000C8010E94EE02CE010F960E94EE020E946C |
||||
:10118000C80B68EC70E080E090E00E9406040E94CA |
||||
:10119000070CC7010E94F40BB70186EB92E00E9496 |
||||
:1011A00011030E94DE0B68EC70E080E090E00E948A |
||||
:1011B00006040E944206C7010E944813CE014596CC |
||||
:1011C0000E94EE02CE014B960E94EE02CE0187965F |
||||
:1011D0000E94EE02CE0181960E94EE020FB6F894B4 |
||||
:1011E000DEBF0FBECDBF6FE971E0C5010E945E0B8F |
||||
:1011F0008823F1F06EE871E0C6010E945E0B88233F |
||||
:1012000041F061E084E00E947E0385EB91E00E9462 |
||||
:10121000F40B6CEB71E0C6010E945E0B882341F079 |
||||
:1012200060E084E00E947E038EEB91E00E94F40B6C |
||||
:1012300068EE73E080E090E00E940604E0E0F0E0F9 |
||||
:101240000995AC960FB6F894DEBF0FBECDBFDF9107 |
||||
:10125000CF911F910F91FF90EF90DF90CF90BF90B3 |
||||
:10126000AF909F908F9008958F929F92AF92BF9270 |
||||
:10127000CF92DF92EF92FF920F931F93CF93DF9362 |
||||
:10128000CDB7DEB768970FB6F894DEBF0FBECDBFFF |
||||
:101290008C017B016A015901BC0182E093E00E944C |
||||
:1012A000D702B7018CEF92E00E94D702B60186EF19 |
||||
:1012B00092E00E94D702B50180EF92E00E94D7022F |
||||
:1012C00080910B02811135C0809007029090080236 |
||||
:1012D000B501CE0143960E94F302B601CE010D96F0 |
||||
:1012E0000E94F302B701CE0107960E94F302B801F3 |
||||
:1012F000CE0101960E94F3029E012D5E3F4FAE018A |
||||
:10130000435F5F4FBE01695F7F4FCE010196F401DD |
||||
:101310000995CE0101960E94EE02CE0107960E9429 |
||||
:10132000EE02CE010D960E94EE02CE0143960E947F |
||||
:10133000EE0268960FB6F894DEBF0FBECDBFDF9108 |
||||
:10134000CF911F910F91FF90EF90DF90CF90BF90C2 |
||||
:10135000AF909F908F900895CF92DF92EF92FF927F |
||||
:101360000F931F93CF93DF936B01FC01E484F5840B |
||||
:10137000EC0100E010E00E151F0561F0B601CE0192 |
||||
:101380000E947D0B2696882311F0C80105C00F5FCF |
||||
:101390001F4FF1CF8FEF9FEFDF91CF911F910F91F3 |
||||
:1013A000FF90EF90DF90CF9008950F931F93CF930E |
||||
:1013B000DF93CDB7DEB768970FB6F894DEBF0FBEE8 |
||||
:1013C000CDBF8C0140E050E064E20E94420B8F3FB1 |
||||
:1013D0002FEF920709F472C09C0140E050E0B80181 |
||||
:1013E000CE0143960E94FC0A40E050E064E2C8014E |
||||
:1013F0000E94420BF80124813581AC014F5F5F4FA1 |
||||
:10140000B801CE010D960E94FC0A66EC71E0CE0197 |
||||
:1014100001960E94FC02BE016F5F7F4F82EE92E058 |
||||
:101420000E94AC09019661F4BE016D5E7F4F82EEB1 |
||||
:1014300092E00E94AC0911E0019619F410E001C09D |
||||
:1014400011E0CE0101960E94EE02112379F1BE0156 |
||||
:101450006D5E7F4F8CED92E00E94D702BE01635F0C |
||||
:101460007F4F86ED92E00E94D70200910902109111 |
||||
:101470000A02BE01635F7F4FCE0107960E94F3020E |
||||
:10148000BE016D5E7F4FCE0101960E94F302BE0148 |
||||
:10149000695F7F4FCE010196F8010995CE01019653 |
||||
:1014A0000E94EE02CE0107960E94EE02CE010D963A |
||||
:1014B0000E94EE02CE0143960E94EE0268960FB69D |
||||
:1014C000F894DEBF0FBECDBFDF91CF911F910F917A |
||||
:1014D0000895AF92BF92CF92DF92EF92FF920F9357 |
||||
:1014E0001F93CF93DF9300D000D000D0CDB7DEB7ED |
||||
:1014F0008C016B01FC0184859585029749F5B80143 |
||||
:10150000CE0101960E94F302F80184859585892B0E |
||||
:10151000D9F0C801EE24E394F12CF8012485358537 |
||||
:101520005C01F6E0AF0EB11CE216F30640F4B50123 |
||||
:101530000E94D702FFEFEF1AFF0AC501EECF21503C |
||||
:101540003109F80135872487CE0101960E94EE0209 |
||||
:10155000F8012485358546E0429FC001439F900DE8 |
||||
:101560001124B601800F911F0E94D702F8018485D3 |
||||
:10157000958501969587848726960FB6F894DEBFE9 |
||||
:101580000FBECDBFDF91CF911F910F91FF90EF90D4 |
||||
:10159000DF90CF90BF90AF900895EF92FF920F939E |
||||
:1015A0001F93CF93DF93EC016CEF71E00E94FC027C |
||||
:1015B0006CEF71E0CE0106960E94FC021D861C862F |
||||
:1015C0007E0100E010E08C859D850817190758F40E |
||||
:1015D0006CEF71E0C7010E94C0020F5F1F4F86E0F1 |
||||
:1015E000E80EF11CF0CFDF91CF911F910F91FF908A |
||||
:1015F000EF9008950E94AA14BF92CF92DF92EF92CB |
||||
:10160000FF920F931F93CF93DF937C016B018A01AD |
||||
:10161000E9012417350720F4812F8901C42FD82F21 |
||||
:101620006CEF71E0C7010E94FC02D60114968D9107 |
||||
:101630009C91159708171907D0F48C179D0708F48B |
||||
:10164000EC01D601ED91FC911197EC0FFD1FB080DC |
||||
:1016500010824D915C91BA01600F711FC7010E9409 |
||||
:10166000C002D601ED91FC91EC0FFD1FB082C701C5 |
||||
:10167000DF91CF911F910F91FF90EF90DF90CF906E |
||||
:10168000BF900895CF93DF93FC01248135814217E9 |
||||
:10169000530778F4C081D181062E000C770BCE0160 |
||||
:1016A000840F951F0E94B814009719F08C1B9D0B96 |
||||
:1016B00002C08FEF9FEFDF91CF910895FC0124814D |
||||
:1016C0003581232B31F421E061157105A1F0FB0177 |
||||
:1016D00008C0FC01808191816115710531F421E020 |
||||
:1016E000FC018081882339F005C00E94C31421E0E9 |
||||
:1016F000892B09F020E0822F0895FC012481358197 |
||||
:10170000FB01448155812417350721F5FC018081B7 |
||||
:101710009181FB0160817181009719F0611571055C |
||||
:10172000A1F46115710549F0232BB1F0FB01808113 |
||||
:1017300090E09195819591090AC0009769F0232B5B |
||||
:1017400059F0FC01808190E002C00E94C31421E0A6 |
||||
:10175000892B19F020E001C021E0822F0895CF935A |
||||
:10176000DF93EC016115710561F0FB010190002030 |
||||
:10177000E9F73197AF01461B570B0E940D0281110B |
||||
:1017800003C0CE010E947A02CE01DF91CF9108956D |
||||
:1017900041E861E886EB92E00C94E4041092D302F5 |
||||
:1017A0001092D2026DE186EB92E00E941305482F61 |
||||
:1017B0004E7F6DE986EB92E00C94E40443E861E827 |
||||
:1017C00086EB92E00E94E40462E186EB92E00E94E4 |
||||
:1017D000130583FFF9CF48E062E986EB92E00E94AF |
||||
:1017E000E40481E090E00895CF93DF93BC0189E1A8 |
||||
:1017F00092E00E941103EC016AEF71E089E192E04E |
||||
:101800000E9411038C0F9D1FDF91CF9108950E94BC |
||||
:10181000C80B0E94CE0B40E06DE886EB92E00E9480 |
||||
:10182000E40440E062EA86EB92E00E94E40481E096 |
||||
:1018300090E00895CF93DF93FC014481558160814E |
||||
:10184000718189E192E00E948800EC016AEF71E009 |
||||
:1018500089E192E00E9411038C0F9D1FDF91CF91CF |
||||
:10186000089586ED92E00E94EE028CED92E00E94D7 |
||||
:10187000EE0288EE92E00E94EE0282EE92E00E947A |
||||
:10188000EE0280EF92E00E94EE0286EF92E00E946C |
||||
:10189000EE028CEF92E00E94EE0282E093E00E9462 |
||||
:1018A000EE0288E093E00E94EE0588E193E00E945A |
||||
:1018B000EE0282E193E00E94EE0286E293E00E9453 |
||||
:1018C000EE0280E293E00C94EE02CF93DF93CDB76B |
||||
:1018D000DEB7A4970FB6F894DEBF0FBECDBF7894E5 |
||||
:1018E00084B5826084BD84B5816084BD85B5826025 |
||||
:1018F00085BD85B5816085BD80916E0081608093D6 |
||||
:101900006E0010928100809181008260809381003E |
||||
:10191000809181008160809381008091800081604E |
||||
:10192000809380008091B10084608093B1008091A9 |
||||
:10193000B00081608093B00080917A0084608093D1 |
||||
:101940007A0080917A00826080937A0080917A0098 |
||||
:10195000816080937A0080917A00806880937A0019 |
||||
:101960001092C100E0912902F0912A0282E0808366 |
||||
:10197000E0912502F09126021082E0912702F09179 |
||||
:10198000280280E1808310923102E0912D02F091D3 |
||||
:101990002E0286E08083E0912B02F0912C02808160 |
||||
:1019A00080618083E0912B02F0912C02808188601D |
||||
:1019B0008083E0912B02F0912C02808180688083EB |
||||
:1019C000E0912B02F0912C0280818F7D808361E079 |
||||
:1019D0008091C6020E94CA0361E08091C6020E9403 |
||||
:1019E0007E038091C8029091C9028F3F2FEF92072A |
||||
:1019F000C9F061E00E94CA0360E08091C8020E94C1 |
||||
:101A00007E036AE070E080E090E00E94060461E0FE |
||||
:101A10008091C8020E947E036AE070E080E090E05E |
||||
:101A20000E9406041FB7F89480910C02811127C010 |
||||
:101A3000EEEAF0E08491EAE9F0E09491E82FF0E03A |
||||
:101A4000EE0FFF1FEA57FF4FA591B491EC91E923E8 |
||||
:101A500021F461E08AE00E947E0361E08AE00E9456 |
||||
:101A6000CA038CB580618CBD8CB580648CBD61E08F |
||||
:101A70008DE00E94CA0361E08BE00E94CA0380915E |
||||
:101A80000C028F5F80930C021FBF62E486EB92E032 |
||||
:101A90000E941305823109F071C340E861E886EBCA |
||||
:101AA00092E00E94E40480E49EE0AFECB9E1809310 |
||||
:101AB000CC029093CD02A093CE02B093CF024CE61D |
||||
:101AC00066E886EB92E00E94E40440E467E886EB77 |
||||
:101AD00092E00E94E40440E068E886EB92E00E9415 |
||||
:101AE000E40440E06EE886EB92E00E94E40440E00B |
||||
:101AF0006FE886EB92E00E94E4046CE086EB92E0F3 |
||||
:101B00000E941305482F43606CE886EB92E00E9428 |
||||
:101B1000E40444E066EA86EB92E00E94E4044FE8C5 |
||||
:101B200069E886EB92E00E94E4040E94C80B60E042 |
||||
:101B30008EE00E94CA0360E08FE00E94CA0360E06A |
||||
:101B400080E10E94CA0360E081E10E94CA0361E073 |
||||
:101B500084E00E94CA030E94420685ED99E09093BA |
||||
:101B600008028093070266EC71E0CE0101960E94A4 |
||||
:101B7000FC02BE016F5F7F4F82EE92E00E94690A15 |
||||
:101B8000CE0101960E94EE028DE897E090930A0242 |
||||
:101B90008093090288EC91E00E94F40BE12CF12C77 |
||||
:101BA00096E0B92E0E94400461327F4B824091053D |
||||
:101BB00010F0F701099562E186EB92E00E941305AF |
||||
:101BC000182F0E94CE0B412F62E986EB92E00E9413 |
||||
:101BD000E40416FF2CC015FD2AC01092D102109209 |
||||
:101BE000D0028091D2029091D302892B11F062E24F |
||||
:101BF00001C063E186EB92E00E941305082F10E01C |
||||
:101C000060E186EB92E00E941305482F6DE886EBB9 |
||||
:101C100092E00E94E4040E94C80B012B09F4F4C175 |
||||
:101C20006CEF71E0CE014F960E94FC0215C061E09E |
||||
:101C300086EB92E00E941305863809F4E5C140E086 |
||||
:101C40006DE886EB92E00E94E40446E861E886EBEA |
||||
:101C500092E00E94E404D8C186EB92E00E94600505 |
||||
:101C6000892B81F086EB92E00E94450589831A82D8 |
||||
:101C700041E050E0BE016F5F7F4FCE014F960E9462 |
||||
:101C80000D02EACF2BA13CA12150310940E050E0E8 |
||||
:101C9000BE01615E7F4FCE010D960E94FC0ABE011F |
||||
:101CA000635F7F4FCE0101960E9404062BA13CA1E9 |
||||
:101CB000A90141505109BE01615E7F4FCE010796D7 |
||||
:101CC0000E94FC0ABE016F5F7F4FCE0107960E9403 |
||||
:101CD0007D0B182FCE0107960E94EE02CE010196D1 |
||||
:101CE0000E94EE02CE010D960E94EE02112309F42D |
||||
:101CF00087C1BE01615E7F4FCE0101960E943A0707 |
||||
:101D000066E371E0CE0101960E945E0B811115C061 |
||||
:101D1000BE01615E7F4FCE0107960E943A0768E8D8 |
||||
:101D200071E0CE0107960E945E0B11E0811110E078 |
||||
:101D3000CE0107960E94EE0201C010E0CE0101968E |
||||
:101D40000E94EE0211115CC1BE01615E7F4FCE01A7 |
||||
:101D500001960E94F70662ED71E0CE0101960E94A5 |
||||
:101D60005E0B182FCE0101960E94EE021123C1F1E5 |
||||
:101D700062ED71E0CE0143960E94FC02BE01615EFD |
||||
:101D80007F4FCE010D960E943A07BE01615E7F4FE4 |
||||
:101D9000CE0107960E941007BE01615E7F4FCE0103 |
||||
:101DA00001960E94AC069E012D5E3F4FAE01435F3F |
||||
:101DB0005F4FBE01695F7F4FCE0101960E943409DB |
||||
:101DC000CE0101960E94EE02CE0107960E94EE021D |
||||
:101DD000CE010D960E94EE02CE0143960E94EE02C5 |
||||
:101DE000BE01615E7F4FCE0101960E94F7066DED48 |
||||
:101DF00071E0CE0101960E945E0B182FCE01019674 |
||||
:101E00000E94EE02112309F4B0C0BE01615E7F4F53 |
||||
:101E100082E193E00E94690ABE01615E7F4FCE01BC |
||||
:101E200001960E947406BE01615E7F4FCE010D9641 |
||||
:101E30000E941007BE01635F7F4FCE0107960E948C |
||||
:101E40005D0766ED71E0CE0143960E94FC02BE0183 |
||||
:101E5000695F7F4FCE0143960E948C02BE016F5F87 |
||||
:101E60007F4F0E948C026AED71E00E94AF0BBC01B3 |
||||
:101E7000CE0149960E94F302CE0143960E94EE02E3 |
||||
:101E8000CE0107960E94EE02CE010D960E94EE0250 |
||||
:101E9000CE0101960E94EE02BE01675E7F4FCE0129 |
||||
:101EA00001960E9404064D815E8169817A81CE018E |
||||
:101EB00049960E940D02CE0101960E94EE02CE01CB |
||||
:101EC00049960E944A06CE0149960E94EE02BE0142 |
||||
:101ED000615E7F4F82E193E00E94AC09019609F0B8 |
||||
:101EE0008FC06DED71E0CE0143960E94FC02BE01F1 |
||||
:101EF000615E7F4FCE010D960E943A07BE01615E82 |
||||
:101F00007F4FCE0107960E941007BE01615E7F4F92 |
||||
:101F1000CE0101960E94AC069E012D5E3F4FAE01A0 |
||||
:101F2000435F5F4FBE01695F7F4FCE0101960E9404 |
||||
:101F30003409CE0101960E94EE02CE0107960E945E |
||||
:101F4000EE02CE010D960E94EE02CE0143960E9453 |
||||
:101F5000EE0280911E0390911F03069734F060E01B |
||||
:101F600070E082E193E00E94B905BE01615E7F4F9F |
||||
:101F7000CE0101960E94F7066CED71E0CE0101964C |
||||
:101F80000E945E0B182FCE0101960E94EE021123D3 |
||||
:101F9000B9F1BE01615E7F4FCE0107960E94AC068B |
||||
:101FA00000E010E080912C0390912D030817190791 |
||||
:101FB00018F517FD04C0081719070CF4E4C060E217 |
||||
:101FC00073E0CE0101960E947406BE01695F7F4FE7 |
||||
:101FD000CE0101960E947D0BD82ECE0101960E9463 |
||||
:101FE000EE02DD2031F0B80180E293E00E94B905F5 |
||||
:101FF00003C00F5F1F4FD6CFCE0107960E94EE029F |
||||
:10200000CE014F960E94EE028091110281110DC007 |
||||
:102010000E94400460930D0270930E0280930F02A1 |
||||
:102020009093100281E0809311020E94400400917D |
||||
:102030000D0210910E0220910F0230911002DC016E |
||||
:10204000CB01801B910BA20BB30B893E9340A105E2 |
||||
:10205000B10508F490C0812C912C00E010E0809133 |
||||
:102060002C0390912D030817190708F07AC017FD6B |
||||
:1020700004C0081719070CF48EC080E2C82E83E054 |
||||
:10208000D82E61EE71E0CE0101960E94FC02B601ED |
||||
:10209000CE0101960E948C020E944A06CE01019652 |
||||
:1020A0000E94EE0280910E0390910F03801791071A |
||||
:1020B0003CF0E0910A03F0910B03E80DF91D02C01A |
||||
:1020C000E0E1F3E0808191810196918380838091AA |
||||
:1020D0000E0390910F03801791073CF0E0910A03E3 |
||||
:1020E000F0910B03E80DF91D02C0E0E1F3E08081FF |
||||
:1020F0009181F80131966F01089770F1B80180E283 |
||||
:1021000093E00E94B905E0910A03F0910B03E80DFA |
||||
:10211000F91D80E090E020910E0330910F03A9019A |
||||
:102120004F5F5F4F401B510B8417950734F4A60196 |
||||
:10213000480F591F241735074CF40C191D09200F9F |
||||
:10214000311F30930F0320930E0306C02281338189 |
||||
:10215000219331930196DFCF8601F2E08F0E911C1F |
||||
:102160007ECF0E94400460930D0270930E02809314 |
||||
:102170000F02909310020E94840114CD84EE91E02E |
||||
:102180000E94F40BFFCFB09EB001B19E700D1124E0 |
||||
:10219000605E7C4F16CFB09EC001B19E900D1124A1 |
||||
:1021A0009C01205E3C4F69016CCFCF93DF93E9E146 |
||||
:1021B000F2E01382128288EE93E0A0E0B0E0848324 |
||||
:1021C0009583A683B7838EE091E09183808385EC2D |
||||
:1021D00090E09587848784EC90E09787868780ECF1 |
||||
:1021E00090E0918B808B81EC90E0938B828B82ECE2 |
||||
:1021F00090E0958B848B86EC90E0978B868B118E8C |
||||
:10220000128E138E148EE6EBF2E01382128280E2BD |
||||
:1022100091E09183808380E5848781E085878EE2E9 |
||||
:1022200093E0978786878AE090E0918B808B89E0A6 |
||||
:1022300090E0938B828B82E090E0958B848B168A62 |
||||
:10224000178A108E118E138E128E158E148E178E85 |
||||
:10225000168E148215821682178280E293E00E9405 |
||||
:10226000CD0A82E193E00E94CD0AC8E0D3E082E388 |
||||
:1022700091E09983888380E090E00E94B3129B8371 |
||||
:102280008A832FEF3FEF3F832E839D838C836CEFF8 |
||||
:1022900071E082E093E00E94FC026CEF71E08CEF51 |
||||
:1022A00092E00E94FC026CEF71E086EF92E00E94E7 |
||||
:1022B000FC026CEF71E080EF92E00E94FC0282EE83 |
||||
:1022C00092E00E94CD0A6CEF71E08CED92E00E94EA |
||||
:1022D000FC026CEF71E086ED92E0DF91CF910C94FF |
||||
:1022E000FC021F93FC0199278827BC01E8941191F7 |
||||
:1022F0001032E9F3193010F01E30C8F31B3251F0E0 |
||||
:102300001D3249F4689406C00E94B211610F711D1C |
||||
:10231000811D911D119110531A30B0F33EF4909528 |
||||
:102320008095709561957F4F8F4F9F4F1F910895B6 |
||||
:10233000BB274A3031F4992322F4BDE29095819570 |
||||
:102340009F4F0C94EA11BB272A3051F4992342F491 |
||||
:10235000BDE290958095709561957F4F8F4F9F4F0F |
||||
:102360000C94C811592F482F372F262F660F771F2F |
||||
:10237000881F991F660F771F881F991F620F731F91 |
||||
:10238000841F951F660F771F881F991F0895BB270D |
||||
:10239000FA01A62F6217710581059105330B30FBF9 |
||||
:1023A00066F0AA27660F771F881F991FAA1FA2171A |
||||
:1023B00010F0A21B63953850A9F7A05DAA3308F06E |
||||
:1023C000A95DA19336F7B111B1931082CA010C94A3 |
||||
:1023D0000312BB27FB015527AA27880F991FAA1FA5 |
||||
:1023E000A41710F0A41B83955051B9F7A05DAA3330 |
||||
:1023F00008F0A95DA193009779F7B111B1931192FB |
||||
:10240000CB010C940312DC01FC01672F719177233F |
||||
:10241000E1F7329704C07C916D9370836291AE179F |
||||
:10242000BF07C8F30895052E97FB1EF400940E9481 |
||||
:102430002A1257FD07D00E94691207FC03D04EF400 |
||||
:102440000C942A1250954095309521953F4F4F4F4F |
||||
:102450005F4F089590958095709561957F4F8F4F50 |
||||
:102460009F4F08952F923F924F925F926F927F926B |
||||
:102470008F929F92AF92BF92CF92DF92EF92FF9294 |
||||
:102480000F931F93CF93DF93CDB7DEB7CA1BDB0B40 |
||||
:102490000FB6F894DEBF0FBECDBF09942A883988E5 |
||||
:1024A00048885F846E847D848C849B84AA84B984EC |
||||
:1024B000C884DF80EE80FD800C811B81AA81B981F8 |
||||
:1024C000CE0FD11D0FB6F894DEBF0FBECDBFED010C |
||||
:1024D0000895A1E21A2EAA1BBB1BFD010DC0AA1F65 |
||||
:1024E000BB1FEE1FFF1FA217B307E407F50720F07D |
||||
:1024F000A21BB30BE40BF50B661F771F881F991FF8 |
||||
:102500001A9469F760957095809590959B01AC0140 |
||||
:10251000BD01CF010895A29FB001B39FC001A39F49 |
||||
:10252000700D811D1124911DB29F700D811D11240C |
||||
:10253000911D0895991B79E004C0991F961708F022 |
||||
:10254000961B881F7A95C9F7809508950E948B1273 |
||||
:10255000B7FF0895821B930B0895EE0FFF1F0590A0 |
||||
:10256000F491E02D0994CF93DF938230910510F41C |
||||
:1025700082E090E0E0913103F091320320E030E01E |
||||
:10258000C0E0D0E0309711F14081518148175907E0 |
||||
:10259000C0F04817590761F482819381209719F0A0 |
||||
:1025A0009B838A832BC0909332038093310326C090 |
||||
:1025B0002115310519F04217530718F49A01BE018D |
||||
:1025C000DF01EF010280F381E02DDCCF2115310521 |
||||
:1025D00009F1281B390B2430310590F412968D91A6 |
||||
:1025E0009C9113976115710521F0FB019383828300 |
||||
:1025F00004C09093320380933103FD01329644C0AE |
||||
:10260000FD01E20FF31F81939193225031092D9325 |
||||
:102610003C933AC020912F0330913003232B41F497 |
||||
:1026200020910601309107013093300320932F034E |
||||
:1026300020910401309105012115310541F42DB798 |
||||
:102640003EB74091080150910901241B350BE091E0 |
||||
:102650002F03F0913003E217F307A0F42E1B3F0B7A |
||||
:102660002817390778F0AC014E5F5F4F2417350704 |
||||
:1026700048F04E0F5F1F5093300340932F03819318 |
||||
:10268000919302C0E0E0F0E0CF01DF91CF91089597 |
||||
:102690000F931F93CF93DF93009709F48CC0FC0135 |
||||
:1026A0003297138212820091310310913203011587 |
||||
:1026B000110581F420813181820F931F20912F0316 |
||||
:1026C000309130032817390779F5F0933003E09300 |
||||
:1026D0002F0371C0D80140E050E0AE17BF0750F49F |
||||
:1026E00012962D913C911397AD012115310509F1F9 |
||||
:1026F000D901F3CF9D01DA01338322836081718197 |
||||
:10270000860F971F8217930769F4EC01288139819E |
||||
:10271000260F371F2E5F3F4F318320838A819B8195 |
||||
:1027200093838283452B29F4F0933203E0933103A2 |
||||
:1027300042C01396FC93EE931297ED014991599183 |
||||
:102740009E01240F351FE217F30771F480819181F8 |
||||
:10275000840F951F029611969C938E93828193818C |
||||
:1027600013969C938E931297E0E0F0E0D8011296B6 |
||||
:102770008D919C911397009719F0F8018C01F6CF79 |
||||
:102780008D919C9198012E5F3F4F820F931F209156 |
||||
:102790002F03309130032817390769F4309729F453 |
||||
:1027A000109232031092310302C0138212821093EE |
||||
:1027B000300300932F03DF91CF911F910F91089564 |
||||
:1027C000A0E0B0E0E6EEF3E10C943612EC010097E5 |
||||
:1027D00021F4CB010E94B312B8C0FC01E60FF71F31 |
||||
:1027E0009C0122503109E217F30708F4ACC0D9016B |
||||
:1027F0000D911C91119706171707B0F005301105C0 |
||||
:1028000008F49FC0C80104978617970708F499C079 |
||||
:1028100002501109061B170B019311936D937C93C2 |
||||
:10282000CF010E9448138DC05B01A01AB10A4C0170 |
||||
:10283000800E911EA0913103B091320340E050E030 |
||||
:10284000E12CF12C109709F44AC0A815B905D1F56F |
||||
:102850006D907C901197630182E0C80ED11CCA1460 |
||||
:10286000DB0480F1A3014A195B096A0182E0C80E0A |
||||
:10287000D11C1296BC9012971396AC91B5E0CB1672 |
||||
:10288000D10440F0B282A38351834083D9016D9378 |
||||
:102890007C930AC00E5F1F4FC301800F911FF90187 |
||||
:1028A00091838083EB2DFA2FE114F10431F0D701ED |
||||
:1028B0001396FC93EE93129744C0F0933203E09387 |
||||
:1028C00031033FC08D919C9111974817590708F427 |
||||
:1028D000AC017D0112960D90BC91A02DB3CF8091DB |
||||
:1028E0002F039091300388159905E1F44617570797 |
||||
:1028F000C8F48091040190910501009741F48DB7CF |
||||
:102900009EB74091080150910901841B950BE8176F |
||||
:10291000F907C8F4F0933003E0932F03F9017183B2 |
||||
:1029200060830FC0CB010E94B3127C01009759F065 |
||||
:10293000A801BE010E94AF14CE010E944813C70136 |
||||
:1029400004C0CE0102C080E090E0CDB7DEB7EEE07B |
||||
:102950000C94521281E090E0F8940C947417FB01EF |
||||
:10296000DC0102C001900D9241505040D8F708950B |
||||
:10297000FC018191861721F08823D9F799270895C2 |
||||
:102980003197CF010895FB01DC018D9101908019F1 |
||||
:102990000110D9F3990B0895FB01DC0101900D9210 |
||||
:1029A0000020E1F70895AEE0B0E0E9EDF4E10C9429 |
||||
:1029B00040120D891E8986E08C831A8309838FEF6C |
||||
:1029C0009FE79E838D83AE01475E5F4F6F89788D51 |
||||
:1029D000CE0101960E94F6142F813885F801E20F8E |
||||
:1029E000F31F10822E96E4E00C945C12ACE0B0E091 |
||||
:1029F000ECEFF4E10C9432127C016B018A01FC01D2 |
||||
:102A000017821682838181FFBDC1CE0101964C01E0 |
||||
:102A1000F7019381F60193FD859193FF81916F01F9 |
||||
:102A2000882309F4ABC1853239F493FD859193FF76 |
||||
:102A300081916F01853229F4B70190E00E94DE1682 |
||||
:102A4000E7CF512C312C20E02032A0F48B3269F0FA |
||||
:102A500030F4803259F0833269F420612CC08D3219 |
||||
:102A600039F0803339F4216026C02260246023C00D |
||||
:102A7000286021C027FD27C030ED380F3A3078F4A8 |
||||
:102A800026FF06C0FAE05F9E300D1124532E13C0BE |
||||
:102A90008AE0389E300D1124332E20620CC08E3215 |
||||
:102AA00021F426FD6BC1206406C08C3611F4206829 |
||||
:102AB00002C0883641F4F60193FD859193FF819120 |
||||
:102AC0006F018111C1CF982F9F7D9554933028F4C9 |
||||
:102AD0000C5F1F4FFFE3F9830DC0833631F083375E |
||||
:102AE00071F0833509F05BC022C0F80180818983D1 |
||||
:102AF0000E5F1F4F44244394512C540115C03801DC |
||||
:102B0000F2E06F0E711CF801A080B18026FF03C0B7 |
||||
:102B1000652D70E002C06FEF7FEFC5012C870E942A |
||||
:102B2000D3162C0183012C852F77222E17C0380154 |
||||
:102B3000F2E06F0E711CF801A080B18026FF03C087 |
||||
:102B4000652D70E002C06FEF7FEFC5012C870E94FA |
||||
:102B5000C8162C012C852068222E830123FC1BC063 |
||||
:102B6000832D90E048165906B0F4B70180E290E05A |
||||
:102B70000E94DE163A94F4CFF50127FC859127FEDA |
||||
:102B800081915F01B70190E00E94DE1631103A9406 |
||||
:102B9000F1E04F1A51084114510471F7E5C0843631 |
||||
:102BA00011F0893639F5F80127FF07C0608171817E |
||||
:102BB000828193810C5F1F4F08C060817181072E55 |
||||
:102BC000000C880B990B0E5F1F4F2F76722E97FF0C |
||||
:102BD00009C090958095709561957F4F8F4F9F4F5D |
||||
:102BE0002068722E2AE030E0A4010E941617A82E59 |
||||
:102BF000A81844C0853729F42F7EB22E2AE030E091 |
||||
:102C000025C0F22FF97FBF2E8F36C1F018F488351A |
||||
:102C100079F0B4C0803719F0883721F0AFC02F2F7A |
||||
:102C20002061B22EB4FE0DC08B2D8460B82E09C079 |
||||
:102C300024FF0AC09F2F9660B92E06C028E030E01E |
||||
:102C400005C020E130E002C020E132E0F801B7FE2B |
||||
:102C500007C060817181828193810C5F1F4F06C024 |
||||
:102C60006081718180E090E00E5F1F4FA4010E949F |
||||
:102C70001617A82EA818FB2DFF777F2E76FE0BC007 |
||||
:102C8000372D3E7FA51450F474FE0AC072FC08C0B4 |
||||
:102C9000372D3E7E05C0BA2C372D03C0BA2C01C09B |
||||
:102CA000B52C34FF0DC0FE01EA0DF11D808180338B |
||||
:102CB00011F4397E09C032FF06C0B394B39404C046 |
||||
:102CC000832F867809F0B39433FD13C030FF06C01C |
||||
:102CD0005A2CB31418F4530C5B18B32CB31468F4C7 |
||||
:102CE000B70180E290E03C870E94DE16B3943C85F9 |
||||
:102CF000F5CFB31410F43B1801C0312C34FF12C0CF |
||||
:102D0000B70180E390E03C870E94DE163C8532FFED |
||||
:102D100017C031FD03C088E790E002C088E590E06D |
||||
:102D2000B7010CC0832F867859F031FF02C08BE2C7 |
||||
:102D300001C080E237FD8DE2B70190E00E94DE160F |
||||
:102D4000A51438F4B70180E390E00E94DE165A948F |
||||
:102D5000F7CFAA94F401EA0DF11D8081B70190E04C |
||||
:102D60000E94DE16A110F5CF332009F451CEB70131 |
||||
:102D700080E290E00E94DE163A94F6CFF701868159 |
||||
:102D8000978102C08FEF9FEF2C96E2E10C944E12D8 |
||||
:102D9000FC010590615070400110D8F78095909526 |
||||
:102DA0008E0F9F1F0895FC0161507040019001102B |
||||
:102DB000D8F7809590958E0F9F1F08950F931F93BE |
||||
:102DC000CF93DF93FB01238121FD03C08FEF9FEFA2 |
||||
:102DD00028C022FF16C046815781248135814217C1 |
||||
:102DE000530744F4A081B1819D012F5F3F4F318390 |
||||
:102DF00020838C93268137812F5F3F4F3783268333 |
||||
:102E000010C0EB01092F182F0084F185E02D0995E2 |
||||
:102E1000892BE1F68E819F8101969F838E83812F7E |
||||
:102E2000902FDF91CF911F910F910895FA01AA275A |
||||
:102E3000283051F1203181F1E8946F936E7F6E5FFD |
||||
:102E40007F4F8F4F9F4FAF4FB1E03ED0B4E03CD0AB |
||||
:102E5000670F781F891F9A1FA11D680F791F8A1F8E |
||||
:102E6000911DA11D6A0F711D811D911DA11D20D0F5 |
||||
:102E700009F468943F912AE0269F11243019305DAF |
||||
:102E80003193DEF6CF010895462F4770405D4193A0 |
||||
:102E9000B3E00FD0C9F7F6CF462F4F70405D4A33ED |
||||
:102EA00018F0495D31FD4052419302D0A9F7EACFB5 |
||||
:102EB000B4E0A6959795879577956795BA95C9F7E4 |
||||
:102EC00000976105710508959B01AC010A2E0694D7 |
||||
:102ED0005795479537952795BA95C9F7620F731F90 |
||||
:102EE000841F951FA01D089510E0CDE5D0E004C01B |
||||
:102EF000FE010E94AD122196CE35D107C9F7F89494 |
||||
:022F0000FFCF01 |
||||
:102F0200CA01CA01000033038000000000001B0157 |
||||
:102F12008800B3006201E400C200D6000000000095 |
||||
:102F2200CC017105E301CB016005450517050000E1 |
||||
:102F32000000EE05FA05312E302E302E3200726579 |
||||
:102F42007300716F732F73796E63007B2274223A60 |
||||
:102F5200226E6F646530222C2262223A002C227784 |
||||
:102F6200223A002C2254223A002C2268223A002CC7 |
||||
:102F72002273223A002C2271223A007D007265737C |
||||
:102F82002F6A736F6E002400302E302E302E3000E8 |
||||
:102F92007564707C257325737C002573257300632B |
||||
:102FA200746C2F6E6F6465312F776174657253771D |
||||
:102FB200697463680070756D704F6E0031007075D2 |
||||
:102FC2006D704F6666002300737461727465642EBF |
||||
:102FD2002E0075647000727463707C00727463708A |
||||
:102FE200007463005374617274696E67204C6F528F |
||||
:0E2FF20061206661696C656421000D0A0000B3 |
||||
:107800000C94343C0C94513C0C94513C0C94513CE1 |
||||
:107810000C94513C0C94513C0C94513C0C94513CB4 |
||||
:107820000C94513C0C94513C0C94513C0C94513CA4 |
||||
:107830000C94513C0C94513C0C94513C0C94513C94 |
||||
:107840000C94513C0C94513C0C94513C0C94513C84 |
||||
:107850000C94513C0C94513C0C94513C0C94513C74 |
||||
:107860000C94513C0C94513C11241FBECFEFD8E036 |
||||
:10787000DEBFCDBF11E0A0E0B1E0ECE9FFE702C060 |
||||
:1078800005900D92A230B107D9F712E0A2E0B1E065 |
||||
:1078900001C01D92AD30B107E1F70E942D3D0C945F |
||||
:1078A000CC3F0C94003C982F959595959595959582 |
||||
:1078B000905D8F708A307CF0282F295A8091C0000B |
||||
:1078C00085FFFCCF9093C6008091C00085FFFCCF60 |
||||
:1078D0002093C6000895282F205DF0CF982F809127 |
||||
:1078E000C00085FFFCCF9093C6000895EF92FF92F1 |
||||
:1078F0000F931F93EE24FF2487018091C00087FD22 |
||||
:1079000017C00894E11CF11C011D111D81E4E8164B |
||||
:1079100082E4F8068FE0080780E0180770F3E09132 |
||||
:107920000401F091050109958091C00087FFE9CF1E |
||||
:107930008091C6001F910F91FF90EF9008950E94D3 |
||||
:10794000763C982F8091C00085FFFCCF9093C600B5 |
||||
:1079500091362CF490330CF09053892F089597555D |
||||
:10796000892F08951F930E949F3C182F0E949F3CCF |
||||
:107970001295107F810F1F9108951F93182F882350 |
||||
:1079800021F00E94763C1150E1F71F9108951F935A |
||||
:10799000182F0E94763C803249F0809103018F5F5E |
||||
:1079A000809303018530C1F01F9108958091C0003C |
||||
:1079B00085FFFCCF84E18093C6008091C00085FFE5 |
||||
:1079C000FCCF1093C6008091C00085FFFCCF80E102 |
||||
:1079D0008093C6001F910895E0910401F091050184 |
||||
:1079E00009951F9108950E94763C803241F0809164 |
||||
:1079F00003018F5F80930301853081F008958091AA |
||||
:107A0000C00085FFFCCF84E18093C6008091C00058 |
||||
:107A100085FFFCCF80E18093C6000895E0910401CA |
||||
:107A2000F09105010995089540E951E08823A1F0FE |
||||
:107A30002D9A28EE33E0FA013197F1F721503040CA |
||||
:107A4000D1F72D9828EE33E0FA013197F1F7215064 |
||||
:107A50003040D1F7815061F708953F924F925F9285 |
||||
:107A60006F927F928F929F92AF92BF92CF92DF924E |
||||
:107A7000EF92FF920F931F93CF93DF93000080E16B |
||||
:107A80008093C4001092C50088E18093C10086E015 |
||||
:107A90008093C2005098589A259A81E00E94143D24 |
||||
:107AA00024E1F22E9EE1E92E85E9D82E0FE0C02ECA |
||||
:107AB00010E1B12EAA24A394B1E49B2EA6E58A2E50 |
||||
:107AC000F2E57F2EE0E26E2E79E4572E63E5462E36 |
||||
:107AD00050E5352E0E94763C8033B1F18133B9F107 |
||||
:107AE000803409F46FC0813409F476C0823409F41B |
||||
:107AF00085C0853409F488C0803531F1823521F1A3 |
||||
:107B0000813511F1853509F485C0863509F48DC0BC |
||||
:107B1000843609F496C0843709F403C1853709F423 |
||||
:107B200072C1863709F466C0809103018F5F80932C |
||||
:107B30000301853079F6E0910401F0910501099582 |
||||
:107B40000E94763C803351F60E94F33CC3CF0E94E2 |
||||
:107B5000763C803249F78091C00085FFFCCFF092DF |
||||
:107B6000C6008091C00085FFFCCF9092C600809136 |
||||
:107B7000C00085FFFCCF8092C6008091C00085FFC9 |
||||
:107B8000FCCF7092C6008091C00085FFFCCF609250 |
||||
:107B9000C6008091C00085FFFCCF5092C600809146 |
||||
:107BA000C00085FFFCCF4092C6008091C00085FFD9 |
||||
:107BB000FCCF3092C6008091C00085FFFCCFB09210 |
||||
:107BC000C60088CF0E94763C863808F4BDCF0E945C |
||||
:107BD000763C0E94F33C7ECF0E94763C803809F4CC |
||||
:107BE0009CC0813809F40BC1823809F43CC1883942 |
||||
:107BF00009F48FC080E00E94C73C6CCF84E10E94F2 |
||||
:107C0000BD3C0E94F33C66CF85E00E94BD3C0E94D3 |
||||
:107C1000F33C60CF0E94763C809306010E94763C44 |
||||
:107C2000809307010E94F33C55CF0E94763C80333D |
||||
:107C300009F41DC183E00E94BD3C80E00E94C73C66 |
||||
:107C400049CF0E94763C809309020E94763C809343 |
||||
:107C5000080280910C028E7F80930C020E94763C79 |
||||
:107C6000853409F415C18091080290910902892B8D |
||||
:107C700089F000E010E00E94763CF801E85FFE4FDA |
||||
:107C800080830F5F1F4F80910802909109020817AF |
||||
:107C9000190788F30E94763C803209F045CF809125 |
||||
:107CA0000C0280FF01C16091060170910701660F0F |
||||
:107CB000771F7093070160930601A0910802B091AD |
||||
:107CC00009021097C9F0E8E0F1E09B01AD014E0F09 |
||||
:107CD0005F1FF999FECF32BD21BD819180BDFA9A17 |
||||
:107CE000F99A2F5F3F4FE417F50799F76A0F7B1F4B |
||||
:107CF00070930701609306018091C00085FFFCCF5F |
||||
:107D0000F092C6008091C00085FFFCCFB092C60003 |
||||
:107D1000E1CE83E00E94C73CDDCE82E00E94C73CFA |
||||
:107D2000D9CE0E94763C809309020E94763C8093D3 |
||||
:107D300008028091060190910701880F991F909386 |
||||
:107D40000701809306010E94763C853409F4A6C0A1 |
||||
:107D500080910C028E7F80930C020E94763C8032D0 |
||||
:107D600009F0B8CE8091C00085FFFCCFF092C6002C |
||||
:107D7000609108027091090261157105B9F140E046 |
||||
:107D800050E080910C02A82FA170B82FB27011C0E2 |
||||
:107D9000BB2309F45CC0E0910601F0910701319624 |
||||
:107DA000F0930701E09306014F5F5F4F46175707B7 |
||||
:107DB000E8F4AA2369F3F999FECF209106013091E6 |
||||
:107DC000070132BD21BDF89A90B58091C00085FFB2 |
||||
:107DD000FCCF9093C6002F5F3F4F30930701209355 |
||||
:107DE00006014F5F5F4F4617570718F38091C00099 |
||||
:107DF00085FDE5CE8091C00085FFF8CFE0CE81E023 |
||||
:107E00000E94C73C67CE0E94763C803209F08CCE3F |
||||
:107E10008091C00085FFFCCFF092C6008091C00029 |
||||
:107E200085FFFCCFE092C6008091C00085FFFCCFAB |
||||
:107E3000D092C6008091C00085FFFCCFC092C600E2 |
||||
:107E40008091C00085FFFCCFB092C60043CEE09188 |
||||
:107E50000601F091070194918091C00085FFFCCF4D |
||||
:107E60009093C6009CCF80E10E94C73C33CE0E9415 |
||||
:107E7000763C0E94763C182F0E94763C112309F430 |
||||
:107E800083C0113009F484C08FE00E94C73C22CE29 |
||||
:107E900080910C02816080930C02E5CE80910C02EF |
||||
:107EA000816080930C0259CF809107018823880F4D |
||||
:107EB000880B8A2180930B02809106019091070123 |
||||
:107EC000880F991F90930701809306018091080203 |
||||
:107ED00080FF09C080910802909109020196909359 |
||||
:107EE000090280930802F894F999FECF1127E091D6 |
||||
:107EF0000601F0910701C8E0D1E08091080290915D |
||||
:107F00000902103091F40091570001700130D9F34B |
||||
:107F100003E000935700E89500915700017001308D |
||||
:107F2000D9F301E100935700E89509901990009169 |
||||
:107F3000570001700130D9F301E000935700E89534 |
||||
:107F40001395103498F011270091570001700130FB |
||||
:107F5000D9F305E000935700E895009157000170B0 |
||||
:107F60000130D9F301E100935700E895329602976A |
||||
:107F700009F0C7CF103011F00296E5CF112480919F |
||||
:107F8000C00085FFB9CEBCCE8EE10E94C73CA2CD19 |
||||
:0C7F900085E90E94C73C9ECDF894FFCF0D |
||||
:027F9C00800063 |
||||
:040000030000780081 |
||||
:00000001FF |
@ -0,0 +1,91 @@ |
||||
# 1 "e:\\git\\smart-farming\\opt\\node\\node1\\node1.ino" |
||||
# 1 "e:\\git\\smart-farming\\opt\\node\\node1\\node1.ino" |
||||
|
||||
|
||||
# 4 "e:\\git\\smart-farming\\opt\\node\\node1\\node1.ino" 2 |
||||
|
||||
LoRaMQTT mqtt; |
||||
|
||||
void(* resetFunc) (void) = 0; |
||||
|
||||
void setup() { |
||||
|
||||
Serial.begin(115200); |
||||
|
||||
if (!LoRa.begin(433E6)) { |
||||
Serial.println("Starting LoRa failed!"); |
||||
while (1); |
||||
} |
||||
|
||||
pinMode(A0, 0x0); |
||||
pinMode(A1, 0x0); |
||||
pinMode(A2, 0x0); |
||||
pinMode(A3, 0x0); |
||||
pinMode(4, 0x1); |
||||
|
||||
mqtt.ini(); |
||||
mqtt.subscribe("#"); |
||||
mqtt.onReceived(mqttRes); |
||||
|
||||
Serial.println("started.."); |
||||
|
||||
} |
||||
|
||||
void loop() { |
||||
|
||||
if(millis() > 180000) resetFunc(); |
||||
mqtt.core(); |
||||
} |
||||
|
||||
void mqttRes(String subject, String content){ |
||||
Serial.println("res"); |
||||
if(subject == "qos/sync" && content.toInt()>=200 && content.toInt()<300){ |
||||
String s; |
||||
getData(s, content); |
||||
Serial.println(s); |
||||
mqtt.publish("res/json", s); |
||||
} |
||||
if(subject == "ctl/node1/waterSwitch"){ |
||||
if(content == "0") pumpOn(); |
||||
if(content == "1") pumpOff(); |
||||
} |
||||
|
||||
delay(1000); |
||||
resetFunc(); |
||||
|
||||
|
||||
} |
||||
|
||||
|
||||
void getData(String& s, const String& content){ |
||||
s = "{\"t\":\"node0\",\"b\":"; |
||||
s += ((long int)analogRead(A2)*100)/1024; |
||||
s += ",\"w\":"; |
||||
s += (analogRead(A3) > 50) ? 0 : 1; |
||||
s += ",\"T\":"; |
||||
s += (125*analogRead(A1))>>8; |
||||
s += ",\"h\":"; |
||||
s += analogRead(A0); |
||||
s += ",\"s\":"; |
||||
s += 0; |
||||
s += ",\"q\":"; |
||||
s += content; |
||||
s += "}"; |
||||
|
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
bool pumpOn(){ |
||||
digitalWrite(4, 0x1); |
||||
Serial.println("pumpOn"); |
||||
return true; |
||||
} |
||||
|
||||
bool pumpOff(){ |
||||
digitalWrite(4, 0x0); |
||||
Serial.println("pumpOff"); |
||||
return true; |
||||
} |
@ -0,0 +1,87 @@ |
||||
#ifndef __LORA_MATT_H__ |
||||
#define __LORA_MATT_H__ |
||||
|
||||
#define MAX_STRINGVEC_SIZE 2 |
||||
#include "lora-socket.h" |
||||
|
||||
|
||||
class LoRaMQTT{ |
||||
|
||||
public: |
||||
|
||||
inline void ini(){ |
||||
socket.ini(); |
||||
socket.onReceived(_onReceived); |
||||
} |
||||
|
||||
inline void core(){ |
||||
if(isLoopMode){ |
||||
if(socket.isNewMsg()){ |
||||
String msg = "", from = "", to = "", type = ""; |
||||
socket.getNewMsg(msg, from, to, type); |
||||
_onReceived(msg, from, to, type); |
||||
} |
||||
} |
||||
socket.core(); |
||||
} |
||||
|
||||
|
||||
inline void publish(const String& subject, const String& content){ |
||||
String s = subject + "$" + content; |
||||
socket.udp(s); |
||||
} |
||||
|
||||
inline void subscribe(const String& subject){ |
||||
this->_subjects.PushBack(subject); |
||||
} |
||||
|
||||
inline static void onReceived(void (*f)(String, String)){ |
||||
_f = f; |
||||
} |
||||
inline bool isNewMsg(){ |
||||
isLoopMode = true; |
||||
return (newSubject == "") ? false : true; |
||||
}; |
||||
inline void getNewMsg(String& subject, String& content){ |
||||
subject = newSubject; |
||||
content = newContent; |
||||
clearNewMsg(); |
||||
} |
||||
|
||||
|
||||
private: |
||||
static LoRaSocket socket; |
||||
static StringVec _subjects; |
||||
static void (*_f)(String, String); |
||||
static String newSubject, newContent; |
||||
static bool isLoopMode; |
||||
|
||||
inline void clearNewMsg(){ |
||||
newSubject = ""; |
||||
newContent = ""; |
||||
}; |
||||
|
||||
inline static void _onReceived(String msg, String from, String to, String type){ |
||||
|
||||
if(msg.indexOf('$') == -1) return; |
||||
String subject = msg.substring(0, msg.indexOf('$')); |
||||
String content = msg.substring(msg.indexOf('$') + 1, msg.length()); |
||||
|
||||
if(_subjects.Find("#") != -1 || _subjects.Find(subject) != -1){ |
||||
newSubject = subject; |
||||
newContent = content; |
||||
if(!isLoopMode) _f(subject, content); |
||||
} |
||||
}; |
||||
|
||||
|
||||
}; |
||||
|
||||
|
||||
LoRaSocket LoRaMQTT::socket; |
||||
StringVec LoRaMQTT::_subjects; |
||||
void (*LoRaMQTT::_f)(String, String); |
||||
String LoRaMQTT::newSubject = "", LoRaMQTT::newContent = ""; |
||||
bool LoRaMQTT::isLoopMode = false; |
||||
|
||||
#endif //__LORA_MATT_H__
|
@ -0,0 +1,289 @@ |
||||
#ifndef __LORA_SOCKET_H__ |
||||
#define __LORA_SOCKET_H__ |
||||
|
||||
#include <LoRa.h> |
||||
#include "vector.h" |
||||
#include "stringVec.h" |
||||
|
||||
#ifndef LORA_SOCKET_IP |
||||
#define LORA_SOCKET_IP "0.0.0.0" |
||||
#endif |
||||
|
||||
#ifndef MAX_RECEIVE_STACK_SIZE |
||||
#define MAX_RECEIVE_STACK_SIZE 5 |
||||
#endif |
||||
|
||||
#ifndef MAX_SEND_STACK_SIZE |
||||
#define MAX_SEND_STACK_SIZE 5 |
||||
#endif |
||||
|
||||
#ifndef MAX_TCP_TRY_TIMES |
||||
#define MAX_TCP_TRY_TIMES 8 |
||||
#endif |
||||
|
||||
|
||||
class LoRaSocket { |
||||
public: |
||||
LoRaSocket(){} |
||||
static void core(); |
||||
static void ini(); |
||||
static void udp(const String& msg, const String& to = "0.0.0.0"); |
||||
static void tcp(const String& msg, const String& to); |
||||
static void rtcp(const String& msg); |
||||
inline static void onReceived(void (*f)(String, String, String, String)){ |
||||
_f = f; |
||||
}; |
||||
inline bool isNewMsg(){ |
||||
isLoopMode = true; |
||||
return (newType == "") ? false : true; |
||||
}; |
||||
inline const String getNewMsg(){ |
||||
String msg = newMsg; |
||||
clearNewMsg(); |
||||
return msg; |
||||
}; |
||||
inline void getNewMsg(String& msg, String& from, String& to, String& type){ |
||||
msg = newMsg; |
||||
from = newFrom; |
||||
to = newTo; |
||||
type = newType; |
||||
clearNewMsg(); |
||||
}; |
||||
|
||||
private: |
||||
static StringVec tcp_sendingStack, tcp_receiveStack; |
||||
static Vector<unsigned int> tcp_sendingTryTimes; |
||||
static void(*_f)(String, String, String, String); |
||||
static String newMsg, newFrom, newTo, newType; |
||||
static bool isLoopMode; |
||||
inline void clearNewMsg(){ |
||||
newMsg = ""; |
||||
newFrom = ""; |
||||
newTo = ""; |
||||
newType = ""; |
||||
}; |
||||
inline static void _onReceived(const String& msg, const String& from, const String& to, const String& type){ |
||||
newMsg = msg; |
||||
newFrom = from; |
||||
newTo = to; |
||||
newType = type; |
||||
if(!isLoopMode) (*_f)(msg, from, to, type); |
||||
}; |
||||
/* LoRa Functions */ |
||||
static void LoRa_tx_mode(); |
||||
static void LoRa_rx_mode(); |
||||
static void send(const String& s); |
||||
static void send(const char *s); |
||||
static const String receiveMsg(); |
||||
/* Package Functions */ |
||||
inline static const String getIPHeader(const String& to = "0.0.0.0"){ |
||||
return to + "|" + LORA_SOCKET_IP + "|"; |
||||
}; |
||||
inline static bool isGoodPackage(const String& s){ |
||||
String body = s.substring(0, s.length() - 1); |
||||
if(s.substring(s.length() - 1, s.length()) != hash(body)){ |
||||
return false; |
||||
} |
||||
return true; |
||||
}; |
||||
inline static const String getToIP(const String& s){ |
||||
unsigned short left = s.indexOf('|'); |
||||
unsigned short right = s.indexOf('|', left + 1); |
||||
return s.substring(left + 1, right); |
||||
}; |
||||
inline static const String getFromIP(const String& s){ |
||||
unsigned short left = s.indexOf('|', s.indexOf('|') + 1); |
||||
unsigned short right = s.indexOf('|', left + 1); |
||||
return s.substring(left + 1, right); |
||||
}; |
||||
inline static const String getType(const String& s){ |
||||
return s.substring(0, s.indexOf('|')); |
||||
}; |
||||
inline static const String getContent(const String& s){ |
||||
unsigned short left = s.indexOf('|', s.indexOf('|', s.indexOf('|') + 1) + 1); |
||||
unsigned short right = s.indexOf('|', left + 1); |
||||
return decode(s.substring(left + 1, right)); |
||||
}; |
||||
inline static const String getTcpKey(const String& s){ |
||||
int left = s.indexOf('|', s.indexOf('|', s.indexOf('|', s.indexOf('|') + 1) + 1) + 1); |
||||
int right = s.indexOf('|', left + 1); |
||||
return s.substring(left + 1, right); |
||||
}; |
||||
/* receive Functions */ |
||||
static void getMsg(const String& msg); |
||||
/* tcp stack functions */ |
||||
static void checkSendStack(){ |
||||
for(unsigned int i = 0; i < tcp_sendingStack.Size(); i ++){ |
||||
send("tc"+tcp_sendingStack[i]); |
||||
tcp_sendingTryTimes[i] += 1; |
||||
|
||||
if(tcp_sendingTryTimes[i] >= MAX_TCP_TRY_TIMES){ |
||||
tcp_sendingStack.Erase(i); |
||||
tcp_sendingTryTimes.Erase(i); |
||||
} |
||||
} |
||||
}; |
||||
inline static void receiveStackClassify(){ |
||||
if(tcp_receiveStack.Size() > MAX_RECEIVE_STACK_SIZE) tcp_receiveStack.Erase(0); |
||||
}; |
||||
inline static void sendStackClassify(){ |
||||
if(tcp_sendingStack.Size() > MAX_SEND_STACK_SIZE) { |
||||
tcp_sendingStack.Erase(0); |
||||
tcp_sendingTryTimes.Erase(0); |
||||
} |
||||
}; |
||||
static void removeByKey(const String& key); |
||||
/* tools */ |
||||
static const String hash(const String& s); |
||||
static const String encode(const String& s){ |
||||
return s; |
||||
}; |
||||
static const String decode(const String& s){ |
||||
return s; |
||||
} |
||||
static const String generateRandomKey(){ |
||||
String o = ""; |
||||
for(unsigned short i = 0; i < 4; i ++){ |
||||
o += char(random(26) + 97); |
||||
} |
||||
return o; |
||||
} |
||||
|
||||
/* timer */ |
||||
static void setInterval(void (*function)(void), const int delay){ |
||||
static unsigned long startTime = millis();
|
||||
|
||||
if(millis() - startTime > delay){ |
||||
(*function)(); |
||||
startTime = millis(); |
||||
} |
||||
} |
||||
|
||||
|
||||
}; |
||||
|
||||
void LoRaSocket::getMsg(const String& msg){ |
||||
|
||||
if(!isGoodPackage(msg)) return; |
||||
if(getToIP(msg) != LORA_SOCKET_IP && getToIP(msg) != "0.0.0.0") return; |
||||
|
||||
if(getType(msg) == "udp") _onReceived(getContent(msg), getFromIP(msg), getToIP(msg), "udp"); |
||||
if(getType(msg) == "tcp"){ |
||||
rtcp(msg); |
||||
if(tcp_receiveStack.Find(msg) != -1) return; |
||||
_onReceived(getContent(msg), getFromIP(msg), getToIP(msg), "tcp"); |
||||
receiveStackClassify(); |
||||
} |
||||
if(getType(msg) == "rtcp"){ |
||||
removeByKey(getContent(msg)); |
||||
} |
||||
|
||||
} |
||||
|
||||
void LoRaSocket::udp(const String& msg, const String& to){ |
||||
char *c; |
||||
c = (char*)malloc((msg.length()+39)*sizeof(char)); |
||||
sprintf(c, "udp|%s%s|", getIPHeader(to).c_str(), encode(msg).c_str()); |
||||
sprintf(c, "%s%s", c, hash(c).c_str()); |
||||
send(c); |
||||
free(c); |
||||
}; |
||||
|
||||
|
||||
void LoRaSocket::tcp(const String& msg, const String& to){ |
||||
String fin = "tcp|" + getIPHeader(to) + encode(msg) + "|" + generateRandomKey() + "|"; |
||||
fin += hash(fin); |
||||
tcp_sendingStack.PushBack(fin); |
||||
tcp_sendingTryTimes.PushBack(0); |
||||
sendStackClassify(); |
||||
send(fin); |
||||
}; |
||||
|
||||
|
||||
void LoRaSocket::rtcp(const String& msg){ |
||||
tcp_receiveStack.PushBack(msg); |
||||
String fin = "rtcp|" + getIPHeader(getFromIP(msg)) + getTcpKey(msg) + "|"; |
||||
fin += hash(fin); |
||||
send(fin); |
||||
} |
||||
|
||||
StringVec LoRaSocket::tcp_sendingStack, LoRaSocket::tcp_receiveStack; |
||||
Vector<unsigned int> LoRaSocket::tcp_sendingTryTimes; |
||||
void (*LoRaSocket::_f)(String, String, String, String); |
||||
String LoRaSocket::newMsg = "", LoRaSocket::newFrom = "", LoRaSocket::newTo = "", LoRaSocket::newType = ""; |
||||
bool LoRaSocket::isLoopMode = false; |
||||
|
||||
void LoRaSocket::ini() { |
||||
|
||||
LoRa_rx_mode(); |
||||
} |
||||
|
||||
void LoRaSocket::core() { |
||||
|
||||
/* Listen Msg */ |
||||
if(LoRa.parsePacket()){ |
||||
getMsg(receiveMsg()); |
||||
} |
||||
|
||||
/* check tcp stack */ |
||||
setInterval(checkSendStack, 1000); |
||||
|
||||
} |
||||
|
||||
void LoRaSocket::LoRa_tx_mode(){ |
||||
LoRa.idle(); |
||||
} |
||||
|
||||
void LoRaSocket::LoRa_rx_mode(){ |
||||
LoRa.receive(); |
||||
} |
||||
|
||||
void LoRaSocket::send(const char *s){ |
||||
LoRa_tx_mode(); |
||||
delay(200); |
||||
LoRa.beginPacket();Serial.println(s); |
||||
LoRa.print(s); |
||||
LoRa.endPacket(); |
||||
delay(200); |
||||
LoRa_rx_mode(); |
||||
} |
||||
|
||||
void LoRaSocket::send(const String& s){ |
||||
LoRa_tx_mode(); |
||||
delay(200); |
||||
LoRa.beginPacket();Serial.println(s); |
||||
LoRa.print(s); |
||||
LoRa.endPacket(); |
||||
delay(200); |
||||
LoRa_rx_mode(); |
||||
} |
||||
|
||||
|
||||
const String LoRaSocket::receiveMsg(){ |
||||
String s = ""; |
||||
while (LoRa.available()) { |
||||
s += (char)LoRa.read(); |
||||
} |
||||
return s; |
||||
} |
||||
|
||||
const String LoRaSocket::hash(const String& s){ |
||||
unsigned char hashVal = 'k'; |
||||
for(unsigned short i = 0; i < s.length(); i ++){ |
||||
hashVal ^= s.charAt(i); |
||||
} |
||||
hashVal = hashVal % 26 + 97; |
||||
return String((char)hashVal); |
||||
} |
||||
|
||||
|
||||
void LoRaSocket::removeByKey(const String& key){ |
||||
for(unsigned int i = 0; i < tcp_sendingStack.Size(); i++){ |
||||
if(getTcpKey(tcp_sendingStack[i]) == key) { |
||||
tcp_sendingStack.Erase(i); |
||||
return; |
||||
} |
||||
} |
||||
} |
||||
|
||||
#endif //__LORA_SOCKET_H__
|
@ -0,0 +1,107 @@ |
||||
#include <Arduino.h> |
||||
#line 1 "e:\\git\\smart-farming\\opt\\node\\node1\\node1.ino" |
||||
#line 1 "e:\\git\\smart-farming\\opt\\node\\node1\\node1.ino" |
||||
|
||||
#define LORA_SOCKET_IP "1.0.0.2" |
||||
#include "lora-mqtt.h" |
||||
|
||||
LoRaMQTT mqtt; |
||||
|
||||
void(* resetFunc) (void) = 0; |
||||
|
||||
#line 9 "e:\\git\\smart-farming\\opt\\node\\node1\\node1.ino" |
||||
void setup(); |
||||
#line 32 "e:\\git\\smart-farming\\opt\\node\\node1\\node1.ino" |
||||
void loop(); |
||||
#line 38 "e:\\git\\smart-farming\\opt\\node\\node1\\node1.ino" |
||||
void mqttRes(String subject, String content); |
||||
#line 58 "e:\\git\\smart-farming\\opt\\node\\node1\\node1.ino" |
||||
void getData(String& s, const String& content); |
||||
#line 79 "e:\\git\\smart-farming\\opt\\node\\node1\\node1.ino" |
||||
bool pumpOn(); |
||||
#line 85 "e:\\git\\smart-farming\\opt\\node\\node1\\node1.ino" |
||||
bool pumpOff(); |
||||
#line 9 "e:\\git\\smart-farming\\opt\\node\\node1\\node1.ino" |
||||
void setup() { |
||||
|
||||
Serial.begin(115200); |
||||
|
||||
if (!LoRa.begin(433E6)) { |
||||
Serial.println("Starting LoRa failed!"); |
||||
while (1); |
||||
} |
||||
|
||||
pinMode(A0, INPUT); |
||||
pinMode(A1, INPUT); |
||||
pinMode(A2, INPUT); |
||||
pinMode(A3, INPUT); |
||||
pinMode(4, OUTPUT); |
||||
|
||||
mqtt.ini(); |
||||
mqtt.subscribe("#"); |
||||
mqtt.onReceived(mqttRes); |
||||
|
||||
Serial.println("started.."); |
||||
|
||||
} |
||||
|
||||
void loop() { |
||||
|
||||
if(millis() > 180000) resetFunc(); |
||||
mqtt.core(); |
||||
} |
||||
|
||||
void mqttRes(String subject, String content){ |
||||
Serial.println("res"); |
||||
if(subject == "qos/sync" && content.toInt()>=200 && content.toInt()<300){ |
||||
String s; |
||||
getData(s, content); |
||||
Serial.println(s); |
||||
mqtt.publish("res/json", s); |
||||
} |
||||
if(subject == "ctl/node1/waterSwitch"){ |
||||
if(content == "0") pumpOn(); |
||||
if(content == "1") pumpOff(); |
||||
} |
||||
|
||||
delay(1000); |
||||
resetFunc(); |
||||
|
||||
|
||||
} |
||||
|
||||
|
||||
void getData(String& s, const String& content){ |
||||
s = "{\"t\":\"node0\",\"b\":"; |
||||
s += ((long int)analogRead(A2)*100)/1024; |
||||
s += ",\"w\":"; |
||||
s += (analogRead(A3) > 50) ? 0 : 1; |
||||
s += ",\"T\":"; |
||||
s += (125*analogRead(A1))>>8; |
||||
s += ",\"h\":"; |
||||
s += analogRead(A0); |
||||
s += ",\"s\":"; |
||||
s += 0; |
||||
s += ",\"q\":"; |
||||
s += content; |
||||
s += "}"; |
||||
|
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
bool pumpOn(){ |
||||
digitalWrite(4, HIGH); |
||||
Serial.println("pumpOn"); |
||||
return true; |
||||
} |
||||
|
||||
bool pumpOff(){ |
||||
digitalWrite(4, LOW); |
||||
Serial.println("pumpOff"); |
||||
return true; |
||||
} |
||||
|
||||
|
@ -0,0 +1,20 @@ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\sketch\node1.ino.cpp.o: \ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\sketch\node1.ino.cpp \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/binary.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/WCharacter.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/HardwareSerial.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/Printable.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/USBAPI.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/pins_arduino.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs/../standard/pins_arduino.h \ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\sketch\lora-mqtt.h \ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\sketch\lora-socket.h \ |
||||
E:\OneDrive\pc\document\Arduino\libraries\LoRa\src/LoRa.h \ |
||||
C:\Program\ Files\ (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src/SPI.h \ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\sketch\vector.h \ |
||||
e:\git\smart-farming\opt\node\node1\.vscode\bin\sketch\stringVec.h |
Binary file not shown.
@ -0,0 +1,125 @@ |
||||
|
||||
/**
|
||||
* ovo-arduino Main File |
||||
* |
||||
* @category ovo-arduino |
||||
* @package ovo.cpp |
||||
* @copyright Copyright (c) 2019 EEENeko (https://github.com/eeeneko)
|
||||
* @license GNU General Public License 2.0 |
||||
* @version 0.0.1 |
||||
*/ |
||||
|
||||
|
||||
#ifndef _OVO_H |
||||
#define _OVO_H |
||||
|
||||
|
||||
/**
|
||||
* Like set Timeout in JS |
||||
* |
||||
* @Author yimian |
||||
* @param auto function (allow Lambda) |
||||
* @param int millisecond to dealy |
||||
* @return void |
||||
*/ |
||||
void setTimeout(auto function,const int delay) |
||||
{ |
||||
static bool on = 1; |
||||
if(on == 1){ |
||||
static unsigned long startTime = millis();
|
||||
|
||||
if(millis() - startTime > delay){ |
||||
function(); |
||||
on == 0; |
||||
} |
||||
} |
||||
} |
||||
|
||||
/**
|
||||
* Like set Interval in JS |
||||
* |
||||
* @Author yimian |
||||
* @param auto function (allow Lambda) |
||||
* @param int millisecond of interval |
||||
* @return void |
||||
*/ |
||||
void setInterval(auto function, const int delay) |
||||
{ |
||||
static unsigned long startTime = millis();
|
||||
|
||||
if(millis() - startTime > delay){ |
||||
function(); |
||||
startTime = millis(); |
||||
} |
||||
} |
||||
|
||||
|
||||
/**
|
||||
* Switch between function1 and function2 for delay1 and delay2 |
||||
* |
||||
* @Author yimian |
||||
* @param auto function1 (allow Lambda) |
||||
* @param auto function2 (allow Lambda) |
||||
* @param int millisecond of interval |
||||
* @param int millisecond of interval |
||||
* @return void |
||||
*/ |
||||
void setSwitch(auto function1, auto function2, const int delay1, const int delay2) |
||||
{ |
||||
static unsigned long startTime = millis();
|
||||
|
||||
if(millis() - startTime < delay1){ |
||||
function1(); |
||||
}else if(millis() - startTime >= delay1 && millis() - startTime < delay1 + delay2){ |
||||
function2(); |
||||
}else if(millis() - startTime >= delay1 + delay2){ |
||||
startTime = millis(); |
||||
} |
||||
} |
||||
|
||||
|
||||
/**
|
||||
* Make direct voltage change to gradually change |
||||
* |
||||
* @author yimian |
||||
* @category ovo |
||||
* @package ovo |
||||
*/ |
||||
class slowWrite |
||||
{ |
||||
public: |
||||
inline void set(int t_pin, unsigned int t_delay){ |
||||
pin = t_pin; |
||||
delay = t_delay; |
||||
}; |
||||
inline void high(){ |
||||
startTime = millis(); |
||||
state = 1; |
||||
}; |
||||
inline void low(){ |
||||
startTime = millis(); |
||||
state = 0; |
||||
}; |
||||
inline void run(){ |
||||
if(state == 1 && millis() - startTime < delay){ |
||||
analogWrite(pin, ((millis() - startTime) * 255 / delay));Serial.println(((millis() - startTime) * 255 / delay)); |
||||
}else if(state == 0 && millis() - startTime < delay){ |
||||
analogWrite(pin, 255-((millis() - startTime) * 255 / delay));Serial.println(255-((millis() - startTime) * 255 / delay)); |
||||
}else{ |
||||
state = -1; |
||||
} |
||||
}; |
||||
|
||||
private: |
||||
unsigned long startTime; |
||||
int state; |
||||
int pin; |
||||
unsigned int delay;
|
||||
}; |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif |
||||
|
@ -0,0 +1,136 @@ |
||||
#ifndef __SOCKET_HPP_ |
||||
#define __SOCKET_HPP_ |
||||
|
||||
#include <LoRa.h> |
||||
#include <SPI.h> |
||||
#include "ovo.h" |
||||
#include "vector.h" |
||||
|
||||
#ifndef SS |
||||
#define SS 18 |
||||
#endif |
||||
#ifndef RST |
||||
#define RST 14 |
||||
#endif |
||||
#ifndef DI0 |
||||
#define DI0 26 |
||||
#endif |
||||
#ifndef BAND |
||||
#define BAND 433E6 |
||||
#endif |
||||
#ifndef SEND_TIMES |
||||
#define SEND_TIMES 8 |
||||
#endif |
||||
#ifndef SEND_INTERVAL |
||||
#define SEND_INTERVAL 100 |
||||
#endif |
||||
#ifndef TCP_TIMEOUT |
||||
#define TCP_TIMEOUT 1000 |
||||
#endif |
||||
|
||||
|
||||
#define DEFAULT_SERIAL 115200 |
||||
|
||||
|
||||
class Socket { |
||||
public: |
||||
Socket(){} |
||||
void core(); |
||||
void ini(); |
||||
void onReceive(auto handler); |
||||
void udp(const String& msg, auto callback); |
||||
inline void udp(const String& msg) { |
||||
this->udp(msg, [=](int err) {}); |
||||
}; |
||||
|
||||
private: |
||||
static Vector<int> udp_sendingStack; |
||||
static String cache; |
||||
static void (*callback)(const String& msg); |
||||
void LoRa_rxMode(); |
||||
void LoRa_txMode(); |
||||
void LoRa_sendMessage(const String& message); |
||||
static void _received(int size); |
||||
|
||||
}; |
||||
|
||||
Vector<int> Socket::udp_sendingStack; |
||||
String Socket::cache = ""; |
||||
void (*Socket::callback)(const String& msg); |
||||
|
||||
void Socket::ini() { |
||||
|
||||
if(!Serial) Serial.begin(DEFAULT_SERIAL); |
||||
|
||||
//LoRa.setPins(SS, RST, DI0);
|
||||
if (!LoRa.begin(BAND)) { |
||||
Serial.println("Starting LoRa failed!"); |
||||
while(true); |
||||
} |
||||
LoRa.onReceive(this->_received); |
||||
} |
||||
|
||||
void Socket::core() { |
||||
if(LoRa.parsePacket()){ |
||||
Serial.println("new msg in"); |
||||
} |
||||
} |
||||
|
||||
void Socket::_received(int size) { |
||||
String message = ""; |
||||
while (LoRa.available()) { |
||||
message += (char)LoRa.read(); |
||||
} |
||||
Serial.println(" "+message); |
||||
if (message == cache) return; |
||||
cache = message; |
||||
if (message.length() == 3) { |
||||
int pos = udp_sendingStack.Find(message.toInt()); |
||||
if (pos != -1) { |
||||
udp_sendingStack.Erase(pos); |
||||
} |
||||
return; |
||||
} |
||||
(*callback)(message.substring(3)); |
||||
} |
||||
|
||||
void Socket::onReceive(auto handler) { |
||||
static auto f = handler; |
||||
this->callback = f; |
||||
} |
||||
|
||||
void Socket::udp(const String& msg, auto callback) { |
||||
int mid = random(100, 1000); |
||||
String s = String(mid) + msg; |
||||
this->udp_sendingStack.PushBack(mid); |
||||
this->LoRa_txMode(); |
||||
for(int i = 0; i < SEND_TIMES; i ++){ |
||||
setTimeout([=](){ |
||||
this->LoRa_sendMessage(s); |
||||
if(i == SEND_TIMES - 1){ |
||||
this->LoRa_rxMode(); |
||||
callback(0); |
||||
} |
||||
}, i*SEND_INTERVAL); |
||||
} |
||||
} |
||||
|
||||
|
||||
|
||||
void Socket::LoRa_rxMode(){ |
||||
LoRa.receive(); |
||||
} |
||||
|
||||
void Socket::LoRa_txMode(){ |
||||
LoRa.idle(); |
||||
} |
||||
|
||||
|
||||
void Socket::LoRa_sendMessage(const String& message) { |
||||
LoRa.beginPacket(); |
||||
LoRa.print(message); |
||||
LoRa.endPacket(); |
||||
} |
||||
|
||||
|
||||
#endif //__SOCKET_HPP_
|
@ -0,0 +1,77 @@ |
||||
#ifndef __STRINGVEC__ |
||||
#define __STRINGVEC__ |
||||
|
||||
|
||||
|
||||
#ifndef MAX_STRINGVEC_SIZE |
||||
#define MAX_STRINGVEC_SIZE 2 |
||||
#endif |
||||
|
||||
class StringVec{ |
||||
public:
|
||||
StringVec():_size(0){ |
||||
this->clear(); |
||||
}; |
||||
|
||||
inline void PushBack(const String& ss){ |
||||
if(this->Size() == MAX_STRINGVEC_SIZE){ |
||||
this->shift(); |
||||
} |
||||
this->_s[this->Size()] = ss; |
||||
this->_size ++; |
||||
} |
||||
|
||||
const int Find(const String& ss){ |
||||
for(unsigned i = 0; i < this->Size(); i ++){ |
||||
if(this->_s[i] == ss){ |
||||
return i; |
||||
} |
||||
} |
||||
return -1; |
||||
} |
||||
|
||||
void Erase(const int& pos){ |
||||
if(pos < 0 || pos >= this->Size()) return; |
||||
for(unsigned int i = pos+1; i < this->Size(); i ++){ |
||||
this->_s[i-1] = this->_s[i]; |
||||
} |
||||
this->_size --; |
||||
} |
||||
|
||||
const String shift(){ |
||||
String s = this->_s[0]; |
||||
if(this->Size() != 0){ |
||||
for(unsigned int i = 1; i < this->Size(); i ++){ |
||||
this->_s[i-1] = this->_s[i]; |
||||
} |
||||
this->_size --; |
||||
} |
||||
return s; |
||||
} |
||||
|
||||
void clear(){ |
||||
for(unsigned int i = 0; i < this->Size(); i ++){ |
||||
this->_s[i] = ""; |
||||
} |
||||
} |
||||
|
||||
inline const int Size(){ |
||||
return this->_size; |
||||
} |
||||
|
||||
|
||||
String& operator[](int i){ |
||||
if(i < 0 || i >= this->Size()) return this->_s[0]; |
||||
return this->_s[i]; |
||||
} |
||||
|
||||
private: |
||||
String _s[MAX_STRINGVEC_SIZE]; |
||||
int _size; |
||||
|
||||
}; |
||||
|
||||
|
||||
|
||||
|
||||
#endif //__STRINGVEC__
|
@ -0,0 +1,269 @@ |
||||
/*
|
||||
* Vector.h |
||||
* |
||||
* Created on: 05/04/2012 |
||||
* Author: tom |
||||
* Purpose: To play the part of a mutable array in the absence of the STL. |
||||
*/ |
||||
|
||||
#ifndef VECTOR_H |
||||
#define VECTOR_H |
||||
|
||||
#include <stdint.h> |
||||
#include <stdlib.h> |
||||
#include <string.h> |
||||
|
||||
#ifndef MIN |
||||
#define MIN(a, b) (((a) < (b)) ? (a) : (b)) |
||||
#endif |
||||
|
||||
#ifndef MAX |
||||
#define MAX(a, b) (((a) > (b)) ? (a) : (b)) |
||||
#endif |
||||
|
||||
#define SWAP(type, a, b) type tmp ## a = a; a = b; b = tmp ## a; |
||||
|
||||
template <class ParameterType> class Predicate |
||||
{ |
||||
public: |
||||
virtual void operator() (ParameterType ¶m) = 0; |
||||
}; |
||||
|
||||
template <class VectorType> class Vector |
||||
{ |
||||
// The address of the first element of the vector
|
||||
VectorType *begin; |
||||
// The address one after the last allocated entry in the underlying array
|
||||
VectorType *storage; |
||||
// The index of the most recent element put in the underlying array - the head
|
||||
int head; |
||||
|
||||
public: |
||||
// The value that is returned when the caller asks for an element that is out of the bounds of the vector
|
||||
VectorType OB; |
||||
|
||||
// We can save a few re-sizings if we know how large the array is likely to grow to be
|
||||
Vector(int initialSize = 0) |
||||
{ |
||||
begin = new VectorType[initialSize]; //points to the beginning of the new array
|
||||
head = initialSize - 1; |
||||
storage = begin + initialSize; //points to the element one outside of the array (such that end - begin = capacity)
|
||||
} |
||||
|
||||
Vector(Vector &obj) |
||||
{ |
||||
begin = new VectorType[0]; // Points to the beginning of the new array, it's zero but this line keeps malloc from seg faulting should we delete begin before resizing it
|
||||
head = -1; |
||||
storage = begin; //points to the element one outside of the array (such that end - begin = capacity)
|
||||
|
||||
*this = obj; |
||||
} |
||||
|
||||
// If there's anything in the vector then delete the array, if there's no array then doing will will cause seg faults
|
||||
virtual ~Vector() { delete[] begin; } |
||||
|
||||
Vector &operator=(Vector &obj) |
||||
{ |
||||
// Reallocate the underlying buffer to the same size as the
|
||||
Resize(obj.Size()); |
||||
|
||||
for(int i = 0; i < obj.Size(); i++) |
||||
(*this)[i] = obj[i]; |
||||
|
||||
head = obj.head; |
||||
|
||||
return *this; |
||||
} |
||||
|
||||
void ForEach(Predicate<VectorType> &functor) |
||||
{ |
||||
for(int i = 0; i < Size(); i++) |
||||
functor(begin[i]); |
||||
} |
||||
|
||||
// Swaps the underlying array and characteristics of this vector with another of the same type, very quickly
|
||||
void Swap(Vector &obj) |
||||
{ |
||||
SWAP(int, head, obj.head); |
||||
SWAP(VectorType*, begin, obj.begin); |
||||
SWAP(VectorType*, storage, obj.storage); |
||||
} |
||||
|
||||
// Checks the entire Vector to see whether a matching item exists. Bear in mind that the VectorType might need to implement
|
||||
// equality operator (operator==) for this to work properly.
|
||||
bool Contains(VectorType element) |
||||
{ |
||||
for(int i = 0; i < Size(); i++) |
||||
if(operator [](i) == element) |
||||
return true; |
||||
|
||||
return false; |
||||
} |
||||
|
||||
int Find(VectorType element) |
||||
{ |
||||
for(int i = 0; i < Size(); i++) |
||||
if(operator [](i) == element) |
||||
return i; |
||||
|
||||
return -1; |
||||
} |
||||
|
||||
void PushBack(VectorType element) { PushBack(&element, 1); } |
||||
|
||||
void PushBack(const VectorType *elements, int len) |
||||
{ |
||||
// If the length plus this's size is greater than the capacity, reallocate to that size.
|
||||
if(len + Size() > Capacity()) |
||||
ReAllocate(MAX(Size() + len, Size() * 2)); |
||||
|
||||
int append = MIN(storage - begin - head - 1, len), prepend = len - append; |
||||
|
||||
// memcpy the data starting at the head all the way up to the last element *(storage - 1)
|
||||
memcpy((begin + head + 1), elements, sizeof(VectorType) * append); |
||||
|
||||
// If there's still data to copy memcpy whatever remains, starting at the first element *(begin) until the end of data. The first step will have ensured
|
||||
// that we don't crash into the tail during this process.
|
||||
memcpy(begin,(elements + append), sizeof(VectorType) * prepend); |
||||
|
||||
// Re-recalculate head and size.
|
||||
head += len; |
||||
} |
||||
|
||||
void Erase(unsigned int position) { Erase(position, position + 1); } |
||||
|
||||
// Erase an arbitrary section of the vector from first up to last minus one. Like the stl counterpart, this is pretty labour intensive so go easy on it.
|
||||
void Erase(int first, int last) |
||||
{ |
||||
// For this we'll set the value of the array at first to the value of the array at last plus one. We'll do that all the way up to toIndex
|
||||
for(int i = 0; i < (Size() - first); i++) |
||||
{ |
||||
// If by trying to fill in the next element with the ones ahead of it we'll be running off the end of the vector, stop.
|
||||
if((i + last) > (Size() - 1)) |
||||
break; |
||||
|
||||
begin[first + i] = begin[last + i]; |
||||
} |
||||
|
||||
// Adjust the head to reflect the new size
|
||||
head -= last - first; |
||||
} |
||||
|
||||
// Remove the most recent element in the array
|
||||
void PopBack() |
||||
{ |
||||
if(Size() > 0) |
||||
head--; |
||||
} |
||||
|
||||
// Empty the vector, or to be precise - forget the fact that there was ever anything in there.
|
||||
void Clear() { head = -1; } |
||||
|
||||
// Returns a bool indicating whether or not there are any elements in the array
|
||||
bool Empty() { return head == -1; } |
||||
|
||||
// Returns the oldest element in the array (the one added before any other)
|
||||
VectorType const &Back() { return *begin; } |
||||
|
||||
// Returns the newest element in the array (the one added after every other)
|
||||
VectorType const &Front() { return begin[head]; } |
||||
|
||||
// Returns the nth element in the vector
|
||||
VectorType &operator[](int n) |
||||
{ |
||||
if(n < Size()) |
||||
return begin[n]; |
||||
else |
||||
return OB; |
||||
} |
||||
|
||||
// Returns a pointer such that the vector's data is laid out between ret to ret + size
|
||||
VectorType *Data() { return begin; } |
||||
|
||||
// Recreates the vector to hold len elements, all being copies of val
|
||||
void Assign(int len, const VectorType &val) |
||||
{ |
||||
delete[] begin; |
||||
|
||||
// Allocate an array the same size as the one passed in
|
||||
begin = new VectorType[len]; |
||||
storage = begin + len; |
||||
|
||||
// Refresh the head and tail, assuming the array is in order, which it really has to be
|
||||
head = len - 1; |
||||
|
||||
for(int i = 0 ; i < Size(); i++) |
||||
begin[i] = val; |
||||
} |
||||
|
||||
// Recreates the vector using an external array
|
||||
void Assign(VectorType *array, int len) |
||||
{ |
||||
delete[] begin; |
||||
|
||||
// Allocate an array the same size as the one passed in
|
||||
begin = new VectorType[len]; |
||||
storage = begin + len; |
||||
|
||||
// Refresh the head and tail, assuming the array is in order, which it really has to be
|
||||
head = len - 1; |
||||
|
||||
// Copy over the memory
|
||||
memcpy(begin, array, sizeof(VectorType) * len); |
||||
} |
||||
|
||||
// Returns the number of elements that the vector will support before needing resizing
|
||||
int Capacity() { return (storage - begin); } |
||||
|
||||
// Returns the number of elements in vector
|
||||
int Size() { return head + 1; } |
||||
|
||||
// Requests that the capacity of the allocated storage space for the elements
|
||||
// of the vector be at least enough to hold size elements.
|
||||
void Reserve(unsigned int size) |
||||
{ |
||||
if(size > Capacity()) |
||||
ReAllocate(size); |
||||
} |
||||
|
||||
// Resizes the vector
|
||||
void Resize(unsigned int size) |
||||
{ |
||||
// If necessary, resize the underlying array to fit the new size
|
||||
if(size > Capacity()) |
||||
ReAllocate(size); |
||||
|
||||
// Now revise the head and size (tail needn't change) to reflect the new size
|
||||
head = size - 1; |
||||
} |
||||
|
||||
private: |
||||
|
||||
void ReAllocate(unsigned int size) |
||||
{ |
||||
// Just in case we're re-allocating less room than we had before, make sure that we don't overrun the buffer by trying to write more elements than
|
||||
// are now possible for this vector to hold.
|
||||
if(Size() > (int)size) |
||||
head = size - 1; |
||||
|
||||
// Allocate an array twice the size of that of the old
|
||||
VectorType *_begin = new VectorType[size]; |
||||
VectorType *_storage = _begin + size; |
||||
|
||||
int _head = Size() - 1; |
||||
|
||||
// Copy across all the old array's data and rearrange it!
|
||||
for(int i = 0; i < Size(); i++) |
||||
_begin[i] = (*this)[i]; |
||||
|
||||
// Free the old memory
|
||||
delete[] begin; |
||||
|
||||
// Redirect the old array to point to the new one
|
||||
begin = _begin; |
||||
storage = _storage; |
||||
head = _head; |
||||
} |
||||
}; |
||||
|
||||
#endif // VECTOR_H
|
@ -0,0 +1,19 @@ |
||||
{ |
||||
"configurations": [ |
||||
{ |
||||
"name": "Win32", |
||||
"includePath": [ |
||||
"C:\\Program Files (x86)\\Arduino\\tools\\**", |
||||
"C:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\**", |
||||
"C:\\Users\\i\\AppData\\Local\\Arduino15\\packages\\esp8266\\tools\\**", |
||||
"C:\\Users\\i\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.5.2\\**" |
||||
], |
||||
"forcedInclude": [ |
||||
"C:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino\\Arduino.h" |
||||
], |
||||
"intelliSenseMode": "msvc-x64", |
||||
"compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe" |
||||
} |
||||
], |
||||
"version": 4 |
||||
} |
@ -0,0 +1,10 @@ |
||||
{ |
||||
"files.associations": { |
||||
"initializer_list": "cpp", |
||||
"list": "cpp", |
||||
"vector": "cpp", |
||||
"xhash": "cpp", |
||||
"xstring": "cpp", |
||||
"xutility": "cpp" |
||||
} |
||||
} |
@ -0,0 +1,87 @@ |
||||
#ifndef __LORA_MATT_H__ |
||||
#define __LORA_MATT_H__ |
||||
|
||||
#define MAX_STRINGVEC_SIZE 2 |
||||
#include "lora-socket.h" |
||||
|
||||
|
||||
class LoRaMQTT{ |
||||
|
||||
public: |
||||
|
||||
inline void ini(){ |
||||
socket.ini(); |
||||
socket.onReceived(_onReceived); |
||||
} |
||||
|
||||
inline void core(){ |
||||
if(isLoopMode){ |
||||
if(socket.isNewMsg()){ |
||||
String msg = "", from = "", to = "", type = ""; |
||||
socket.getNewMsg(msg, from, to, type); |
||||
_onReceived(msg, from, to, type); |
||||
} |
||||
} |
||||
socket.core(); |
||||
} |
||||
|
||||
|
||||
inline void publish(const String& subject, const String& content){ |
||||
String s = subject + "$" + content; |
||||
socket.udp(s); |
||||
} |
||||
|
||||
inline void subscribe(const String& subject){ |
||||
this->_subjects.PushBack(subject); |
||||
} |
||||
|
||||
inline static void onReceived(void (*f)(String, String)){ |
||||
_f = f; |
||||
} |
||||
inline bool isNewMsg(){ |
||||
isLoopMode = true; |
||||
return (newSubject == "") ? false : true; |
||||
}; |
||||
inline void getNewMsg(String& subject, String& content){ |
||||
subject = newSubject; |
||||
content = newContent; |
||||
clearNewMsg(); |
||||
} |
||||
|
||||
|
||||
private: |
||||
static LoRaSocket socket; |
||||
static StringVec _subjects; |
||||
static void (*_f)(String, String); |
||||
static String newSubject, newContent; |
||||
static bool isLoopMode; |
||||
|
||||
inline void clearNewMsg(){ |
||||
newSubject = ""; |
||||
newContent = ""; |
||||
}; |
||||
|
||||
inline static void _onReceived(String msg, String from, String to, String type){ |
||||
|
||||
if(msg.indexOf('$') == -1) return; |
||||
String subject = msg.substring(0, msg.indexOf('$')); |
||||
String content = msg.substring(msg.indexOf('$') + 1, msg.length()); |
||||
|
||||
if(_subjects.Find("#") != -1 || _subjects.Find(subject) != -1){ |
||||
newSubject = subject; |
||||
newContent = content; |
||||
if(!isLoopMode) _f(subject, content); |
||||
} |
||||
}; |
||||
|
||||
|
||||
}; |
||||
|
||||
|
||||
LoRaSocket LoRaMQTT::socket; |
||||
StringVec LoRaMQTT::_subjects; |
||||
void (*LoRaMQTT::_f)(String, String); |
||||
String LoRaMQTT::newSubject = "", LoRaMQTT::newContent = ""; |
||||
bool LoRaMQTT::isLoopMode = false; |
||||
|
||||
#endif //__LORA_MATT_H__
|
@ -0,0 +1,289 @@ |
||||
#ifndef __LORA_SOCKET_H__ |
||||
#define __LORA_SOCKET_H__ |
||||
|
||||
#include <LoRa.h> |
||||
#include "vector.h" |
||||
#include "stringVec.h" |
||||
|
||||
#ifndef LORA_SOCKET_IP |
||||
#define LORA_SOCKET_IP "0.0.0.0" |
||||
#endif |
||||
|
||||
#ifndef MAX_RECEIVE_STACK_SIZE |
||||
#define MAX_RECEIVE_STACK_SIZE 5 |
||||
#endif |
||||
|
||||
#ifndef MAX_SEND_STACK_SIZE |
||||
#define MAX_SEND_STACK_SIZE 5 |
||||
#endif |
||||
|
||||
#ifndef MAX_TCP_TRY_TIMES |
||||
#define MAX_TCP_TRY_TIMES 8 |
||||
#endif |
||||
|
||||
|
||||
class LoRaSocket { |
||||
public: |
||||
LoRaSocket(){} |
||||
static void core(); |
||||
static void ini(); |
||||
static void udp(const String& msg, const String& to = "0.0.0.0"); |
||||
static void tcp(const String& msg, const String& to); |
||||
static void rtcp(const String& msg); |
||||
inline static void onReceived(void (*f)(String, String, String, String)){ |
||||
_f = f; |
||||
}; |
||||
inline bool isNewMsg(){ |
||||
isLoopMode = true; |
||||
return (newType == "") ? false : true; |
||||
}; |
||||
inline const String getNewMsg(){ |
||||
String msg = newMsg; |
||||
clearNewMsg(); |
||||
return msg; |
||||
}; |
||||
inline void getNewMsg(String& msg, String& from, String& to, String& type){ |
||||
msg = newMsg; |
||||
from = newFrom; |
||||
to = newTo; |
||||
type = newType; |
||||
clearNewMsg(); |
||||
}; |
||||
|
||||
private: |
||||
static StringVec tcp_sendingStack, tcp_receiveStack; |
||||
static Vector<unsigned int> tcp_sendingTryTimes; |
||||
static void(*_f)(String, String, String, String); |
||||
static String newMsg, newFrom, newTo, newType; |
||||
static bool isLoopMode; |
||||
inline void clearNewMsg(){ |
||||
newMsg = ""; |
||||
newFrom = ""; |
||||
newTo = ""; |
||||
newType = ""; |
||||
}; |
||||
inline static void _onReceived(const String& msg, const String& from, const String& to, const String& type){ |
||||
newMsg = msg; |
||||
newFrom = from; |
||||
newTo = to; |
||||
newType = type; |
||||
if(!isLoopMode) (*_f)(msg, from, to, type); |
||||
}; |
||||
/* LoRa Functions */ |
||||
static void LoRa_tx_mode(); |
||||
static void LoRa_rx_mode(); |
||||
static void send(const String& s); |
||||
static void send(const char *s); |
||||
static const String receiveMsg(); |
||||
/* Package Functions */ |
||||
inline static const String getIPHeader(const String& to = "0.0.0.0"){ |
||||
return to + "|" + LORA_SOCKET_IP + "|"; |
||||
}; |
||||
inline static bool isGoodPackage(const String& s){ |
||||
String body = s.substring(0, s.length() - 1); |
||||
if(s.substring(s.length() - 1, s.length()) != hash(body)){ |
||||
return false; |
||||
} |
||||
return true; |
||||
}; |
||||
inline static const String getToIP(const String& s){ |
||||
unsigned short left = s.indexOf('|'); |
||||
unsigned short right = s.indexOf('|', left + 1); |
||||
return s.substring(left + 1, right); |
||||
}; |
||||
inline static const String getFromIP(const String& s){ |
||||
unsigned short left = s.indexOf('|', s.indexOf('|') + 1); |
||||
unsigned short right = s.indexOf('|', left + 1); |
||||
return s.substring(left + 1, right); |
||||
}; |
||||
inline static const String getType(const String& s){ |
||||
return s.substring(0, s.indexOf('|')); |
||||
}; |
||||
inline static const String getContent(const String& s){ |
||||
unsigned short left = s.indexOf('|', s.indexOf('|', s.indexOf('|') + 1) + 1); |
||||
unsigned short right = s.indexOf('|', left + 1); |
||||
return decode(s.substring(left + 1, right)); |
||||
}; |
||||
inline static const String getTcpKey(const String& s){ |
||||
int left = s.indexOf('|', s.indexOf('|', s.indexOf('|', s.indexOf('|') + 1) + 1) + 1); |
||||
int right = s.indexOf('|', left + 1); |
||||
return s.substring(left + 1, right); |
||||
}; |
||||
/* receive Functions */ |
||||
static void getMsg(const String& msg); |
||||
/* tcp stack functions */ |
||||
static void checkSendStack(){ |
||||
for(unsigned int i = 0; i < tcp_sendingStack.Size(); i ++){ |
||||
send("tc"+tcp_sendingStack[i]); |
||||
tcp_sendingTryTimes[i] += 1; |
||||
|
||||
if(tcp_sendingTryTimes[i] >= MAX_TCP_TRY_TIMES){ |
||||
tcp_sendingStack.Erase(i); |
||||
tcp_sendingTryTimes.Erase(i); |
||||
} |
||||
} |
||||
}; |
||||
inline static void receiveStackClassify(){ |
||||
if(tcp_receiveStack.Size() > MAX_RECEIVE_STACK_SIZE) tcp_receiveStack.Erase(0); |
||||
}; |
||||
inline static void sendStackClassify(){ |
||||
if(tcp_sendingStack.Size() > MAX_SEND_STACK_SIZE) { |
||||
tcp_sendingStack.Erase(0); |
||||
tcp_sendingTryTimes.Erase(0); |
||||
} |
||||
}; |
||||
static void removeByKey(const String& key); |
||||
/* tools */ |
||||
static const String hash(const String& s); |
||||
static const String encode(const String& s){ |
||||
return s; |
||||
}; |
||||
static const String decode(const String& s){ |
||||
return s; |
||||
} |
||||
static const String generateRandomKey(){ |
||||
String o = ""; |
||||
for(unsigned short i = 0; i < 4; i ++){ |
||||
o += char(random(26) + 97); |
||||
} |
||||
return o; |
||||
} |
||||
|
||||
/* timer */ |
||||
static void setInterval(void (*function)(void), const int delay){ |
||||
static unsigned long startTime = millis();
|
||||
|
||||
if(millis() - startTime > delay){ |
||||
(*function)(); |
||||
startTime = millis(); |
||||
} |
||||
} |
||||
|
||||
|
||||
}; |
||||
|
||||
void LoRaSocket::getMsg(const String& msg){ |
||||
|
||||
if(!isGoodPackage(msg)) return; |
||||
if(getToIP(msg) != LORA_SOCKET_IP && getToIP(msg) != "0.0.0.0") return; |
||||
|
||||
if(getType(msg) == "udp") _onReceived(getContent(msg), getFromIP(msg), getToIP(msg), "udp"); |
||||
if(getType(msg) == "tcp"){ |
||||
rtcp(msg); |
||||
if(tcp_receiveStack.Find(msg) != -1) return; |
||||
_onReceived(getContent(msg), getFromIP(msg), getToIP(msg), "tcp"); |
||||
receiveStackClassify(); |
||||
} |
||||
if(getType(msg) == "rtcp"){ |
||||
removeByKey(getContent(msg)); |
||||
} |
||||
|
||||
} |
||||
|
||||
void LoRaSocket::udp(const String& msg, const String& to){ |
||||
char *c; |
||||
c = (char*)malloc((msg.length()+39)*sizeof(char)); |
||||
sprintf(c, "udp|%s%s|", getIPHeader(to).c_str(), encode(msg).c_str()); |
||||
sprintf(c, "%s%s", c, hash(c).c_str()); |
||||
send(c); |
||||
free(c); |
||||
}; |
||||
|
||||
|
||||
void LoRaSocket::tcp(const String& msg, const String& to){ |
||||
String fin = "tcp|" + getIPHeader(to) + encode(msg) + "|" + generateRandomKey() + "|"; |
||||
fin += hash(fin); |
||||
tcp_sendingStack.PushBack(fin); |
||||
tcp_sendingTryTimes.PushBack(0); |
||||
sendStackClassify(); |
||||
send(fin); |
||||
}; |
||||
|
||||
|
||||
void LoRaSocket::rtcp(const String& msg){ |
||||
tcp_receiveStack.PushBack(msg); |
||||
String fin = "rtcp|" + getIPHeader(getFromIP(msg)) + getTcpKey(msg) + "|"; |
||||
fin += hash(fin); |
||||
send(fin); |
||||
} |
||||
|
||||
StringVec LoRaSocket::tcp_sendingStack, LoRaSocket::tcp_receiveStack; |
||||
Vector<unsigned int> LoRaSocket::tcp_sendingTryTimes; |
||||
void (*LoRaSocket::_f)(String, String, String, String); |
||||
String LoRaSocket::newMsg = "", LoRaSocket::newFrom = "", LoRaSocket::newTo = "", LoRaSocket::newType = ""; |
||||
bool LoRaSocket::isLoopMode = false; |
||||
|
||||
void LoRaSocket::ini() { |
||||
|
||||
LoRa_rx_mode(); |
||||
} |
||||
|
||||
void LoRaSocket::core() { |
||||
|
||||
/* Listen Msg */ |
||||
if(LoRa.parsePacket()){ |
||||
getMsg(receiveMsg()); |
||||
} |
||||
|
||||
/* check tcp stack */ |
||||
setInterval(checkSendStack, 1000); |
||||
|
||||
} |
||||
|
||||
void LoRaSocket::LoRa_tx_mode(){ |
||||
LoRa.idle(); |
||||
} |
||||
|
||||
void LoRaSocket::LoRa_rx_mode(){ |
||||
LoRa.receive(); |
||||
} |
||||
|
||||
void LoRaSocket::send(const char *s){ |
||||
LoRa_tx_mode(); |
||||
delay(200); |
||||
LoRa.beginPacket();Serial.println(s); |
||||
LoRa.print(s); |
||||
LoRa.endPacket(); |
||||
delay(200); |
||||
LoRa_rx_mode(); |
||||
} |
||||
|
||||
void LoRaSocket::send(const String& s){ |
||||
LoRa_tx_mode(); |
||||
delay(200); |
||||
LoRa.beginPacket();Serial.println(s); |
||||
LoRa.print(s); |
||||
LoRa.endPacket(); |
||||
delay(200); |
||||
LoRa_rx_mode(); |
||||
} |
||||
|
||||
|
||||
const String LoRaSocket::receiveMsg(){ |
||||
String s = ""; |
||||
while (LoRa.available()) { |
||||
s += (char)LoRa.read(); |
||||
} |
||||
return s; |
||||
} |
||||
|
||||
const String LoRaSocket::hash(const String& s){ |
||||
unsigned char hashVal = 'k'; |
||||
for(unsigned short i = 0; i < s.length(); i ++){ |
||||
hashVal ^= s.charAt(i); |
||||
} |
||||
hashVal = hashVal % 26 + 97; |
||||
return String((char)hashVal); |
||||
} |
||||
|
||||
|
||||
void LoRaSocket::removeByKey(const String& key){ |
||||
for(unsigned int i = 0; i < tcp_sendingStack.Size(); i++){ |
||||
if(getTcpKey(tcp_sendingStack[i]) == key) { |
||||
tcp_sendingStack.Erase(i); |
||||
return; |
||||
} |
||||
} |
||||
} |
||||
|
||||
#endif //__LORA_SOCKET_H__
|
@ -0,0 +1,90 @@ |
||||
|
||||
#define LORA_SOCKET_IP "1.0.0.2" |
||||
#include "lora-mqtt.h" |
||||
|
||||
LoRaMQTT mqtt; |
||||
|
||||
void(* resetFunc) (void) = 0; |
||||
|
||||
void setup() { |
||||
|
||||
Serial.begin(115200); |
||||
|
||||
if (!LoRa.begin(433E6)) { |
||||
Serial.println("Starting LoRa failed!"); |
||||
while (1); |
||||
} |
||||
|
||||
pinMode(A0, INPUT); |
||||
pinMode(A1, INPUT); |
||||
pinMode(A2, INPUT); |
||||
pinMode(A3, INPUT); |
||||
pinMode(4, OUTPUT); |
||||
|
||||
mqtt.ini(); |
||||
mqtt.subscribe("#"); |
||||
mqtt.onReceived(mqttRes); |
||||
|
||||
Serial.println("started.."); |
||||
|
||||
} |
||||
|
||||
void loop() { |
||||
|
||||
if(millis() > 180000) resetFunc(); |
||||
mqtt.core(); |
||||
} |
||||
|
||||
void mqttRes(String subject, String content){ |
||||
Serial.println("res"); |
||||
if(subject == "qos/sync" && content.toInt()>=200 && content.toInt()<300){ |
||||
String s; |
||||
getData(s, content); |
||||
Serial.println(s); |
||||
mqtt.publish("res/json", s); |
||||
} |
||||
if(subject == "ctl/node1/waterSwitch"){ |
||||
if(content == "0") pumpOn(); |
||||
if(content == "1") pumpOff(); |
||||
} |
||||
|
||||
delay(1000); |
||||
resetFunc(); |
||||
|
||||
|
||||
} |
||||
|
||||
|
||||
void getData(String& s, const String& content){ |
||||
s = "{\"t\":\"node0\",\"b\":"; |
||||
s += ((long int)analogRead(A2)*100)/1024; |
||||
s += ",\"w\":"; |
||||
s += (analogRead(A3) > 50) ? 0 : 1; |
||||
s += ",\"T\":"; |
||||
s += (125*analogRead(A1))>>8; |
||||
s += ",\"h\":"; |
||||
s += analogRead(A0); |
||||
s += ",\"s\":"; |
||||
s += 0; |
||||
s += ",\"q\":"; |
||||
s += content; |
||||
s += "}"; |
||||
|
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
bool pumpOn(){ |
||||
digitalWrite(4, HIGH); |
||||
Serial.println("pumpOn"); |
||||
return true; |
||||
} |
||||
|
||||
bool pumpOff(){ |
||||
digitalWrite(4, LOW); |
||||
Serial.println("pumpOff"); |
||||
return true; |
||||
} |
||||
|
@ -0,0 +1,125 @@ |
||||
|
||||
/**
|
||||
* ovo-arduino Main File |
||||
* |
||||
* @category ovo-arduino |
||||
* @package ovo.cpp |
||||
* @copyright Copyright (c) 2019 EEENeko (https://github.com/eeeneko)
|
||||
* @license GNU General Public License 2.0 |
||||
* @version 0.0.1 |
||||
*/ |
||||
|
||||
|
||||
#ifndef _OVO_H |
||||
#define _OVO_H |
||||
|
||||
|
||||
/**
|
||||
* Like set Timeout in JS |
||||
* |
||||
* @Author yimian |
||||
* @param auto function (allow Lambda) |
||||
* @param int millisecond to dealy |
||||
* @return void |
||||
*/ |
||||
void setTimeout(auto function,const int delay) |
||||
{ |
||||
static bool on = 1; |
||||
if(on == 1){ |
||||
static unsigned long startTime = millis();
|
||||
|
||||
if(millis() - startTime > delay){ |
||||
function(); |
||||
on == 0; |
||||
} |
||||
} |
||||
} |
||||
|
||||
/**
|
||||
* Like set Interval in JS |
||||
* |
||||
* @Author yimian |
||||
* @param auto function (allow Lambda) |
||||
* @param int millisecond of interval |
||||
* @return void |
||||
*/ |
||||
void setInterval(auto function, const int delay) |
||||
{ |
||||
static unsigned long startTime = millis();
|
||||
|
||||
if(millis() - startTime > delay){ |
||||
function(); |
||||
startTime = millis(); |
||||
} |
||||
} |
||||
|
||||
|
||||
/**
|
||||
* Switch between function1 and function2 for delay1 and delay2 |
||||
* |
||||
* @Author yimian |
||||
* @param auto function1 (allow Lambda) |
||||
* @param auto function2 (allow Lambda) |
||||
* @param int millisecond of interval |
||||
* @param int millisecond of interval |
||||
* @return void |
||||
*/ |
||||
void setSwitch(auto function1, auto function2, const int delay1, const int delay2) |
||||
{ |
||||
static unsigned long startTime = millis();
|
||||
|
||||
if(millis() - startTime < delay1){ |
||||
function1(); |
||||
}else if(millis() - startTime >= delay1 && millis() - startTime < delay1 + delay2){ |
||||
function2(); |
||||
}else if(millis() - startTime >= delay1 + delay2){ |
||||
startTime = millis(); |
||||
} |
||||
} |
||||
|
||||
|
||||
/**
|
||||
* Make direct voltage change to gradually change |
||||
* |
||||
* @author yimian |
||||
* @category ovo |
||||
* @package ovo |
||||
*/ |
||||
class slowWrite |
||||
{ |
||||
public: |
||||
inline void set(int t_pin, unsigned int t_delay){ |
||||
pin = t_pin; |
||||
delay = t_delay; |
||||
}; |
||||
inline void high(){ |
||||
startTime = millis(); |
||||
state = 1; |
||||
}; |
||||
inline void low(){ |
||||
startTime = millis(); |
||||
state = 0; |
||||
}; |
||||
inline void run(){ |
||||
if(state == 1 && millis() - startTime < delay){ |
||||
analogWrite(pin, ((millis() - startTime) * 255 / delay));Serial.println(((millis() - startTime) * 255 / delay)); |
||||
}else if(state == 0 && millis() - startTime < delay){ |
||||
analogWrite(pin, 255-((millis() - startTime) * 255 / delay));Serial.println(255-((millis() - startTime) * 255 / delay)); |
||||
}else{ |
||||
state = -1; |
||||
} |
||||
}; |
||||
|
||||
private: |
||||
unsigned long startTime; |
||||
int state; |
||||
int pin; |
||||
unsigned int delay;
|
||||
}; |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif |
||||
|
@ -0,0 +1,136 @@ |
||||
#ifndef __SOCKET_HPP_ |
||||
#define __SOCKET_HPP_ |
||||
|
||||
#include <LoRa.h> |
||||
#include <SPI.h> |
||||
#include "ovo.h" |
||||
#include "vector.h" |
||||
|
||||
#ifndef SS |
||||
#define SS 18 |
||||
#endif |
||||
#ifndef RST |
||||
#define RST 14 |
||||
#endif |
||||
#ifndef DI0 |
||||
#define DI0 26 |
||||
#endif |
||||
#ifndef BAND |
||||
#define BAND 433E6 |
||||
#endif |
||||
#ifndef SEND_TIMES |
||||
#define SEND_TIMES 8 |
||||
#endif |
||||
#ifndef SEND_INTERVAL |
||||
#define SEND_INTERVAL 100 |
||||
#endif |
||||
#ifndef TCP_TIMEOUT |
||||
#define TCP_TIMEOUT 1000 |
||||
#endif |
||||
|
||||
|
||||
#define DEFAULT_SERIAL 115200 |
||||
|
||||
|
||||
class Socket { |
||||
public: |
||||
Socket(){} |
||||
void core(); |
||||
void ini(); |
||||
void onReceive(auto handler); |
||||
void udp(const String& msg, auto callback); |
||||
inline void udp(const String& msg) { |
||||
this->udp(msg, [=](int err) {}); |
||||
}; |
||||
|
||||
private: |
||||
static Vector<int> udp_sendingStack; |
||||
static String cache; |
||||
static void (*callback)(const String& msg); |
||||
void LoRa_rxMode(); |
||||
void LoRa_txMode(); |
||||
void LoRa_sendMessage(const String& message); |
||||
static void _received(int size); |
||||
|
||||
}; |
||||
|
||||
Vector<int> Socket::udp_sendingStack; |
||||
String Socket::cache = ""; |
||||
void (*Socket::callback)(const String& msg); |
||||
|
||||
void Socket::ini() { |
||||
|
||||
if(!Serial) Serial.begin(DEFAULT_SERIAL); |
||||
|
||||
//LoRa.setPins(SS, RST, DI0);
|
||||
if (!LoRa.begin(BAND)) { |
||||
Serial.println("Starting LoRa failed!"); |
||||
while(true); |
||||
} |
||||
LoRa.onReceive(this->_received); |
||||
} |
||||
|
||||
void Socket::core() { |
||||
if(LoRa.parsePacket()){ |
||||
Serial.println("new msg in"); |
||||
} |
||||
} |
||||
|
||||
void Socket::_received(int size) { |
||||
String message = ""; |
||||
while (LoRa.available()) { |
||||
message += (char)LoRa.read(); |
||||
} |
||||
Serial.println(" "+message); |
||||
if (message == cache) return; |
||||
cache = message; |
||||
if (message.length() == 3) { |
||||
int pos = udp_sendingStack.Find(message.toInt()); |
||||
if (pos != -1) { |
||||
udp_sendingStack.Erase(pos); |
||||
} |
||||
return; |
||||
} |
||||
(*callback)(message.substring(3)); |
||||
} |
||||
|
||||
void Socket::onReceive(auto handler) { |
||||
static auto f = handler; |
||||
this->callback = f; |
||||
} |
||||
|
||||
void Socket::udp(const String& msg, auto callback) { |
||||
int mid = random(100, 1000); |
||||
String s = String(mid) + msg; |
||||
this->udp_sendingStack.PushBack(mid); |
||||
this->LoRa_txMode(); |
||||
for(int i = 0; i < SEND_TIMES; i ++){ |
||||
setTimeout([=](){ |
||||
this->LoRa_sendMessage(s); |
||||
if(i == SEND_TIMES - 1){ |
||||
this->LoRa_rxMode(); |
||||
callback(0); |
||||
} |
||||
}, i*SEND_INTERVAL); |
||||
} |
||||
} |
||||
|
||||
|
||||
|
||||
void Socket::LoRa_rxMode(){ |
||||
LoRa.receive(); |
||||
} |
||||
|
||||
void Socket::LoRa_txMode(){ |
||||
LoRa.idle(); |
||||
} |
||||
|
||||
|
||||
void Socket::LoRa_sendMessage(const String& message) { |
||||
LoRa.beginPacket(); |
||||
LoRa.print(message); |
||||
LoRa.endPacket(); |
||||
} |
||||
|
||||
|
||||
#endif //__SOCKET_HPP_
|
@ -0,0 +1,77 @@ |
||||
#ifndef __STRINGVEC__ |
||||
#define __STRINGVEC__ |
||||
|
||||
|
||||
|
||||
#ifndef MAX_STRINGVEC_SIZE |
||||
#define MAX_STRINGVEC_SIZE 2 |
||||
#endif |
||||
|
||||
class StringVec{ |
||||
public:
|
||||
StringVec():_size(0){ |
||||
this->clear(); |
||||
}; |
||||
|
||||
inline void PushBack(const String& ss){ |
||||
if(this->Size() == MAX_STRINGVEC_SIZE){ |
||||
this->shift(); |
||||
} |
||||
this->_s[this->Size()] = ss; |
||||
this->_size ++; |
||||
} |
||||
|
||||
const int Find(const String& ss){ |
||||
for(unsigned i = 0; i < this->Size(); i ++){ |
||||
if(this->_s[i] == ss){ |
||||
return i; |
||||
} |
||||
} |
||||
return -1; |
||||
} |
||||
|
||||
void Erase(const int& pos){ |
||||
if(pos < 0 || pos >= this->Size()) return; |
||||
for(unsigned int i = pos+1; i < this->Size(); i ++){ |
||||
this->_s[i-1] = this->_s[i]; |
||||
} |
||||
this->_size --; |
||||
} |
||||
|
||||
const String shift(){ |
||||
String s = this->_s[0]; |
||||
if(this->Size() != 0){ |
||||
for(unsigned int i = 1; i < this->Size(); i ++){ |
||||
this->_s[i-1] = this->_s[i]; |
||||
} |
||||
this->_size --; |
||||
} |
||||
return s; |
||||
} |
||||
|
||||
void clear(){ |
||||
for(unsigned int i = 0; i < this->Size(); i ++){ |
||||
this->_s[i] = ""; |
||||
} |
||||
} |
||||
|
||||
inline const int Size(){ |
||||
return this->_size; |
||||
} |
||||
|
||||
|
||||
String& operator[](int i){ |
||||
if(i < 0 || i >= this->Size()) return this->_s[0]; |
||||
return this->_s[i]; |
||||
} |
||||
|
||||
private: |
||||
String _s[MAX_STRINGVEC_SIZE]; |
||||
int _size; |
||||
|
||||
}; |
||||
|
||||
|
||||
|
||||
|
||||
#endif //__STRINGVEC__
|
@ -0,0 +1,269 @@ |
||||
/*
|
||||
* Vector.h |
||||
* |
||||
* Created on: 05/04/2012 |
||||
* Author: tom |
||||
* Purpose: To play the part of a mutable array in the absence of the STL. |
||||
*/ |
||||
|
||||
#ifndef VECTOR_H |
||||
#define VECTOR_H |
||||
|
||||
#include <stdint.h> |
||||
#include <stdlib.h> |
||||
#include <string.h> |
||||
|
||||
#ifndef MIN |
||||
#define MIN(a, b) (((a) < (b)) ? (a) : (b)) |
||||
#endif |
||||
|
||||
#ifndef MAX |
||||
#define MAX(a, b) (((a) > (b)) ? (a) : (b)) |
||||
#endif |
||||
|
||||
#define SWAP(type, a, b) type tmp ## a = a; a = b; b = tmp ## a; |
||||
|
||||
template <class ParameterType> class Predicate |
||||
{ |
||||
public: |
||||
virtual void operator() (ParameterType ¶m) = 0; |
||||
}; |
||||
|
||||
template <class VectorType> class Vector |
||||
{ |
||||
// The address of the first element of the vector
|
||||
VectorType *begin; |
||||
// The address one after the last allocated entry in the underlying array
|
||||
VectorType *storage; |
||||
// The index of the most recent element put in the underlying array - the head
|
||||
int head; |
||||
|
||||
public: |
||||
// The value that is returned when the caller asks for an element that is out of the bounds of the vector
|
||||
VectorType OB; |
||||
|
||||
// We can save a few re-sizings if we know how large the array is likely to grow to be
|
||||
Vector(int initialSize = 0) |
||||
{ |
||||
begin = new VectorType[initialSize]; //points to the beginning of the new array
|
||||
head = initialSize - 1; |
||||
storage = begin + initialSize; //points to the element one outside of the array (such that end - begin = capacity)
|
||||
} |
||||
|
||||
Vector(Vector &obj) |
||||
{ |
||||
begin = new VectorType[0]; // Points to the beginning of the new array, it's zero but this line keeps malloc from seg faulting should we delete begin before resizing it
|
||||
head = -1; |
||||
storage = begin; //points to the element one outside of the array (such that end - begin = capacity)
|
||||
|
||||
*this = obj; |
||||
} |
||||
|
||||
// If there's anything in the vector then delete the array, if there's no array then doing will will cause seg faults
|
||||
virtual ~Vector() { delete[] begin; } |
||||
|
||||
Vector &operator=(Vector &obj) |
||||
{ |
||||
// Reallocate the underlying buffer to the same size as the
|
||||
Resize(obj.Size()); |
||||
|
||||
for(int i = 0; i < obj.Size(); i++) |
||||
(*this)[i] = obj[i]; |
||||
|
||||
head = obj.head; |
||||
|
||||
return *this; |
||||
} |
||||
|
||||
void ForEach(Predicate<VectorType> &functor) |
||||
{ |
||||
for(int i = 0; i < Size(); i++) |
||||
functor(begin[i]); |
||||
} |
||||
|
||||
// Swaps the underlying array and characteristics of this vector with another of the same type, very quickly
|
||||
void Swap(Vector &obj) |
||||
{ |
||||
SWAP(int, head, obj.head); |
||||
SWAP(VectorType*, begin, obj.begin); |
||||
SWAP(VectorType*, storage, obj.storage); |
||||
} |
||||
|
||||
// Checks the entire Vector to see whether a matching item exists. Bear in mind that the VectorType might need to implement
|
||||
// equality operator (operator==) for this to work properly.
|
||||
bool Contains(VectorType element) |
||||
{ |
||||
for(int i = 0; i < Size(); i++) |
||||
if(operator [](i) == element) |
||||
return true; |
||||
|
||||
return false; |
||||
} |
||||
|
||||
int Find(VectorType element) |
||||
{ |
||||
for(int i = 0; i < Size(); i++) |
||||
if(operator [](i) == element) |
||||
return i; |
||||
|
||||
return -1; |
||||
} |
||||
|
||||
void PushBack(VectorType element) { PushBack(&element, 1); } |
||||
|
||||
void PushBack(const VectorType *elements, int len) |
||||
{ |
||||
// If the length plus this's size is greater than the capacity, reallocate to that size.
|
||||
if(len + Size() > Capacity()) |
||||
ReAllocate(MAX(Size() + len, Size() * 2)); |
||||
|
||||
int append = MIN(storage - begin - head - 1, len), prepend = len - append; |
||||
|
||||
// memcpy the data starting at the head all the way up to the last element *(storage - 1)
|
||||
memcpy((begin + head + 1), elements, sizeof(VectorType) * append); |
||||
|
||||
// If there's still data to copy memcpy whatever remains, starting at the first element *(begin) until the end of data. The first step will have ensured
|
||||
// that we don't crash into the tail during this process.
|
||||
memcpy(begin,(elements + append), sizeof(VectorType) * prepend); |
||||
|
||||
// Re-recalculate head and size.
|
||||
head += len; |
||||
} |
||||
|
||||
void Erase(unsigned int position) { Erase(position, position + 1); } |
||||
|
||||
// Erase an arbitrary section of the vector from first up to last minus one. Like the stl counterpart, this is pretty labour intensive so go easy on it.
|
||||
void Erase(int first, int last) |
||||
{ |
||||
// For this we'll set the value of the array at first to the value of the array at last plus one. We'll do that all the way up to toIndex
|
||||
for(int i = 0; i < (Size() - first); i++) |
||||
{ |
||||
// If by trying to fill in the next element with the ones ahead of it we'll be running off the end of the vector, stop.
|
||||
if((i + last) > (Size() - 1)) |
||||
break; |
||||
|
||||
begin[first + i] = begin[last + i]; |
||||
} |
||||
|
||||
// Adjust the head to reflect the new size
|
||||
head -= last - first; |
||||
} |
||||
|
||||
// Remove the most recent element in the array
|
||||
void PopBack() |
||||
{ |
||||
if(Size() > 0) |
||||
head--; |
||||
} |
||||
|
||||
// Empty the vector, or to be precise - forget the fact that there was ever anything in there.
|
||||
void Clear() { head = -1; } |
||||
|
||||
// Returns a bool indicating whether or not there are any elements in the array
|
||||
bool Empty() { return head == -1; } |
||||
|
||||
// Returns the oldest element in the array (the one added before any other)
|
||||
VectorType const &Back() { return *begin; } |
||||
|
||||
// Returns the newest element in the array (the one added after every other)
|
||||
VectorType const &Front() { return begin[head]; } |
||||
|
||||
// Returns the nth element in the vector
|
||||
VectorType &operator[](int n) |
||||
{ |
||||
if(n < Size()) |
||||
return begin[n]; |
||||
else |
||||
return OB; |
||||
} |
||||
|
||||
// Returns a pointer such that the vector's data is laid out between ret to ret + size
|
||||
VectorType *Data() { return begin; } |
||||
|
||||
// Recreates the vector to hold len elements, all being copies of val
|
||||
void Assign(int len, const VectorType &val) |
||||
{ |
||||
delete[] begin; |
||||
|
||||
// Allocate an array the same size as the one passed in
|
||||
begin = new VectorType[len]; |
||||
storage = begin + len; |
||||
|
||||
// Refresh the head and tail, assuming the array is in order, which it really has to be
|
||||
head = len - 1; |
||||
|
||||
for(int i = 0 ; i < Size(); i++) |
||||
begin[i] = val; |
||||
} |
||||
|
||||
// Recreates the vector using an external array
|
||||
void Assign(VectorType *array, int len) |
||||
{ |
||||
delete[] begin; |
||||
|
||||
// Allocate an array the same size as the one passed in
|
||||
begin = new VectorType[len]; |
||||
storage = begin + len; |
||||
|
||||
// Refresh the head and tail, assuming the array is in order, which it really has to be
|
||||
head = len - 1; |
||||
|
||||
// Copy over the memory
|
||||
memcpy(begin, array, sizeof(VectorType) * len); |
||||
} |
||||
|
||||
// Returns the number of elements that the vector will support before needing resizing
|
||||
int Capacity() { return (storage - begin); } |
||||
|
||||
// Returns the number of elements in vector
|
||||
int Size() { return head + 1; } |
||||
|
||||
// Requests that the capacity of the allocated storage space for the elements
|
||||
// of the vector be at least enough to hold size elements.
|
||||
void Reserve(unsigned int size) |
||||
{ |
||||
if(size > Capacity()) |
||||
ReAllocate(size); |
||||
} |
||||
|
||||
// Resizes the vector
|
||||
void Resize(unsigned int size) |
||||
{ |
||||
// If necessary, resize the underlying array to fit the new size
|
||||
if(size > Capacity()) |
||||
ReAllocate(size); |
||||
|
||||
// Now revise the head and size (tail needn't change) to reflect the new size
|
||||
head = size - 1; |
||||
} |
||||
|
||||
private: |
||||
|
||||
void ReAllocate(unsigned int size) |
||||
{ |
||||
// Just in case we're re-allocating less room than we had before, make sure that we don't overrun the buffer by trying to write more elements than
|
||||
// are now possible for this vector to hold.
|
||||
if(Size() > (int)size) |
||||
head = size - 1; |
||||
|
||||
// Allocate an array twice the size of that of the old
|
||||
VectorType *_begin = new VectorType[size]; |
||||
VectorType *_storage = _begin + size; |
||||
|
||||
int _head = Size() - 1; |
||||
|
||||
// Copy across all the old array's data and rearrange it!
|
||||
for(int i = 0; i < Size(); i++) |
||||
_begin[i] = (*this)[i]; |
||||
|
||||
// Free the old memory
|
||||
delete[] begin; |
||||
|
||||
// Redirect the old array to point to the new one
|
||||
begin = _begin; |
||||
storage = _storage; |
||||
head = _head; |
||||
} |
||||
}; |
||||
|
||||
#endif // VECTOR_H
|
Loading…
Reference in new issue