From b49dbde6c2f64ad001127aa8659ed91f17f9b86c Mon Sep 17 00:00:00 2001 From: jameszah <36938190+jameszah@users.noreply.github.com> Date: Sun, 2 Jan 2022 22:33:39 -0700 Subject: [PATCH] Jan 2, 2022 - v58 - 1.8.19 and esp32-arduino 2.0.2 changes for Arduino 1.8.19 and esp32 Board Library 2.0.2 - rtos mutexes and sd_mmc --- v58/CRC32.cpp | 59 + v58/CRC32.h | 77 + v58/ESP32-CAM-Video-Recorder-junior-58x.ino | 2169 +++++++++++++++++++ v58/ESPxWebFlMgr.cpp | 902 ++++++++ v58/ESPxWebFlMgr.h | 161 ++ v58/ESPxWebFlMgrWp.h | 536 +++++ v58/ESPxWebFlMgrWpF.h | 23 + v58/first.jpg | Bin 0 -> 65554 bytes v58/fourth.jpg | Bin 0 -> 88174 bytes v58/last.jpg | Bin 0 -> 38495 bytes v58/second.jpg | Bin 0 -> 63091 bytes v58/third.jpg | Bin 0 -> 93732 bytes v58/wifi.jpg | Bin 0 -> 32576 bytes 13 files changed, 3927 insertions(+) create mode 100644 v58/CRC32.cpp create mode 100644 v58/CRC32.h create mode 100644 v58/ESP32-CAM-Video-Recorder-junior-58x.ino create mode 100644 v58/ESPxWebFlMgr.cpp create mode 100644 v58/ESPxWebFlMgr.h create mode 100644 v58/ESPxWebFlMgrWp.h create mode 100644 v58/ESPxWebFlMgrWpF.h create mode 100644 v58/first.jpg create mode 100644 v58/fourth.jpg create mode 100644 v58/last.jpg create mode 100644 v58/second.jpg create mode 100644 v58/third.jpg create mode 100644 v58/wifi.jpg diff --git a/v58/CRC32.cpp b/v58/CRC32.cpp new file mode 100644 index 0000000..12972ca --- /dev/null +++ b/v58/CRC32.cpp @@ -0,0 +1,59 @@ +// mods by James Zahary Dec 28, 2021 https://github.com/jameszah/ESPxWebFlMgr +// based on https://github.com/holgerlembke/ESPxWebFlMgr + +// +// Copyright (c) 2013 Christopher Baker +// +// SPDX-License-Identifier: MIT +// + + +#include "CRC32.h" + +// Conditionally use pgm memory if it is available. + +#if defined(PROGMEM) + #define FLASH_PROGMEM PROGMEM + #define FLASH_READ_DWORD(x) (pgm_read_dword_near(x)) +#else + #define FLASH_PROGMEM + #define FLASH_READ_DWORD(x) (*(uint32_t*)(x)) +#endif + + +static const uint32_t crc32_table[] FLASH_PROGMEM = { + 0x00000000, 0x1db71064, 0x3b6e20c8, 0x26d930ac, + 0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c, + 0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c, + 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c +}; + + +CRC32::CRC32() +{ + reset(); +} + + +void CRC32::reset() +{ + _state = ~0L; +} + + +void CRC32::update(const uint8_t& data) +{ + // via http://forum.arduino.cc/index.php?topic=91179.0 + uint8_t tbl_idx = 0; + + tbl_idx = _state ^ (data >> (0 * 4)); + _state = FLASH_READ_DWORD(crc32_table + (tbl_idx & 0x0f)) ^ (_state >> 4); + tbl_idx = _state ^ (data >> (1 * 4)); + _state = FLASH_READ_DWORD(crc32_table + (tbl_idx & 0x0f)) ^ (_state >> 4); +} + + +uint32_t CRC32::finalize() const +{ + return ~_state; +} diff --git a/v58/CRC32.h b/v58/CRC32.h new file mode 100644 index 0000000..a7c9fbd --- /dev/null +++ b/v58/CRC32.h @@ -0,0 +1,77 @@ +// mods by James Zahary Dec 28, 2021 https://github.com/jameszah/ESPxWebFlMgr +// based on https://github.com/holgerlembke/ESPxWebFlMgr + +// +// Copyright (c) 2013 Christopher Baker +// +// SPDX-License-Identifier: MIT +// + + +#pragma once + + +#include "Arduino.h" + + +/// \brief A class for calculating the CRC32 checksum from arbitrary data. +/// \sa http://forum.arduino.cc/index.php?topic=91179.0 +class CRC32 +{ +public: + /// \brief Initialize an empty CRC32 checksum. + CRC32(); + + /// \brief Reset the checksum claculation. + void reset(); + + /// \brief Update the current checksum caclulation with the given data. + /// \param data The data to add to the checksum. + void update(const uint8_t& data); + + /// \brief Update the current checksum caclulation with the given data. + /// \tparam Type The data type to read. + /// \param data The data to add to the checksum. + template + void update(const Type& data) + { + update(&data, 1); + } + + /// \brief Update the current checksum caclulation with the given data. + /// \tparam Type The data type to read. + /// \param data The array to add to the checksum. + /// \param size Size of the array to add. + template + void update(const Type* data, size_t size) + { + size_t nBytes = size * sizeof(Type); + const uint8_t* pData = (const uint8_t*)data; + + for (size_t i = 0; i < nBytes; i++) + { + update(pData[i]); + } + } + + /// \returns the caclulated checksum. + uint32_t finalize() const; + + /// \brief Calculate the checksum of an arbitrary data array. + /// \tparam Type The data type to read. + /// \param data A pointer to the data to add to the checksum. + /// \param size The size of the data to add to the checksum. + /// \returns the calculated checksum. + template + static uint32_t calculate(const Type* data, size_t size) + { + CRC32 crc; + crc.update(data, size); + return crc.finalize(); + } + +private: + /// \brief The internal checksum state. + uint32_t _state = ~0L; + +}; diff --git a/v58/ESP32-CAM-Video-Recorder-junior-58x.ino b/v58/ESP32-CAM-Video-Recorder-junior-58x.ino new file mode 100644 index 0000000..c163a3c --- /dev/null +++ b/v58/ESP32-CAM-Video-Recorder-junior-58x.ino @@ -0,0 +1,2169 @@ +/* + + ESP32-CAM-Video-Recorder-junior + + This program records an mjpeg avi video to the sd card of an ESP32-CAM. + + + It is the junior version of https://github.com/jameszah/ESP32-CAM-Video-Recorder + which has 100 other features of wifi, streaming video, http control, telegram updates, pir control, + touch control, ftp downloads, .... and other things that make it very big and complex. + + Just set a few parameters, compile and download, and it will record on power-on, until sd is full, or power-off. + Then pull out the sd and move it to your computer, and you will see all but the last file avi which died during the unplug. + + The files will have the name such as: + + desklens10.003.avi + + "desklens" is your devname + 10 - is a number stored in eprom that will increase everytime your device boots + 3 - is the 3rd file created during the current boot + + Small red led on the back blinks with every frame. + + + by James Zahary Sep 12, 2020 + jamzah.plc@gmail.com + + - v50 apr 13, 2021 - tidy + - v50lpmod apr 28, 2021 - shut off low power modem + - v53 jul 8, 2021 - get rid on no wifi message cloggoing up log file + - v56 dec 23, 2021 - tzchar to 60 bytes + - add esp32 sd filemanager to download files + - v57 dec 28, 2021 - final changes to https://github.com/jameszah/ESPxWebFlMgr/tree/master/esp32_sd_file_manager + - v58 dec 30, 2021 - changes for Arduino 1.8.19 and esp32 Board Library 2.0.2 + + https://github.com/jameszah/ESP32-CAM-Video-Recorder-junior + + jameszah/ESP32-CAM-Video-Recorder-junior is licensed under the + GNU General Public License v3.0 + + The is Arduino code, with standard setup for ESP32-CAM + - Board ESP32 Wrover Module + - Partition Scheme Huge APP (3MB No OTA) + - or with AI Thinker ESP32-CAM + + Needs these libraries or better: + + ArduinoJson 6.18.5 by Benoit Blanchon + WiFiManager 2.05-beat by tablatronix + + Compiled with Arduino 1.8.19, and esp32-arduino core version 2.0.2, on Dec 30, 2021. + + +Using library FS at version 2.0.0 in folder: C:\ArduinoPortable\arduino-1.8.19\portable\packages\esp32\hardware\esp32\2.0.2\libraries\FS +Using library SD_MMC at version 2.0.0 in folder: C:\ArduinoPortable\arduino-1.8.19\portable\packages\esp32\hardware\esp32\2.0.2\libraries\SD_MMC +Using library EEPROM at version 2.0.0 in folder: C:\ArduinoPortable\arduino-1.8.19\portable\packages\esp32\hardware\esp32\2.0.2\libraries\EEPROM +Using library WiFi at version 2.0.0 in folder: C:\ArduinoPortable\arduino-1.8.19\portable\packages\esp32\hardware\esp32\2.0.2\libraries\WiFi +Using library WiFiManager at version 2.0.5-beta in folder: C:\ArduinoPortable\arduino-1.8.19\portable\sketchbook\libraries\WiFiManager +Using library Update at version 2.0.0 in folder: C:\ArduinoPortable\arduino-1.8.19\portable\packages\esp32\hardware\esp32\2.0.2\libraries\Update +Using library WebServer at version 2.0.0 in folder: C:\ArduinoPortable\arduino-1.8.19\portable\packages\esp32\hardware\esp32\2.0.2\libraries\WebServer +Using library DNSServer at version 2.0.0 in folder: C:\ArduinoPortable\arduino-1.8.19\portable\packages\esp32\hardware\esp32\2.0.2\libraries\DNSServer +Using library ESPmDNS at version 2.0.0 in folder: C:\ArduinoPortable\arduino-1.8.19\portable\packages\esp32\hardware\esp32\2.0.2\libraries\ESPmDNS +Using library HTTPClient at version 2.0.0 in folder: C:\ArduinoPortable\arduino-1.8.19\portable\packages\esp32\hardware\esp32\2.0.2\libraries\HTTPClient +Using library WiFiClientSecure at version 2.0.0 in folder: C:\ArduinoPortable\arduino-1.8.19\portable\packages\esp32\hardware\esp32\2.0.2\libraries\WiFiClientSecure +"C:\\ArduinoPortable\\arduino-1.8.19\\portable\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\gcc8_4_0-esp-2021r2/bin/xtensa-esp32-elf-size" -A "C:\\Users\\James\\AppData\\Local\\Temp\\arduino_build_895714/ESP32-CAM-Video-Recorder-junior-58x.ino.elf" +Sketch uses 1056201 bytes (33%) of program storage space. Maximum is 3145728 bytes. +Global variables use 59268 bytes (18%) of dynamic memory, leaving 268412 bytes for local variables. Maximum is 327680 bytes. +C:\ArduinoPortable\arduino-1.8.19\portable\packages\esp32\tools\esptool_py\3.1.0/esptool.exe --chip esp32 --port COM7 --baud 460800 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0xe000 C:\ArduinoPortable\arduino-1.8.19\portable\packages\esp32\hardware\esp32\2.0.2/tools/partitions/boot_app0.bin 0x1000 C:\Users\James\AppData\Local\Temp\arduino_build_895714/ESP32-CAM-Video-Recorder-junior-58x.ino.bootloader.bin 0x10000 C:\Users\James\AppData\Local\Temp\arduino_build_895714/ESP32-CAM-Video-Recorder-junior-58x.ino.bin 0x8000 C:\Users\James\AppData\Local\Temp\arduino_build_895714/ESP32-CAM-Video-Recorder-junior-58x.ino.partitions.bin + + +*/ + +//#define LOG_LOCAL_LEVEL ESP_LOG_VERBOSE +#include "esp_log.h" +#include "esp_http_server.h" +#include "esp_camera.h" +#include "sensor.h" +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// user edits here: + +static const char vernum[] = "v58"; +char devname[30]; +String devstr = "desklens"; + +int IncludeInternet = 0; // 0 for no internet, 1 for time only, 2 streaming with WiFiMan, 3 ssid in file, 4 default internet on and file + + +const char* ssid = "jzjzjz"; +const char* password = "jzjzjz"; + + + +// https://sites.google.com/a/usapiens.com/opnode/time-zones -- find your timezone here +String TIMEZONE = "GMT0BST,M3.5.0/01,M10.5.0/02"; +//String TIMEZONE = "MST7MDT,M3.2.0/2:00:00,M11.1.0/2:00:00"; +#define Lots_of_Stats 1 + +int framesize = FRAMESIZE_HD; +int quality = 12; +int framesizeconfig = FRAMESIZE_UXGA; +int qualityconfig = 5; +int buffersconfig = 3; +int avi_length = 1800; // how long a movie in seconds -- 1800 sec = 30 min +int frame_interval = 0; // record at full speed +int speed_up_factor = 1; // play at realtime +int stream_delay = 500; // minimum of 500 ms delay between frames +int MagicNumber = 12; // change this number to reset the eprom in your esp32 for file numbers + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +bool configfile = false; +bool InternetOff = true; +bool reboot_now = false; +String cssid; +String cpass; +String czone; + +TaskHandle_t the_camera_loop_task; +TaskHandle_t the_sd_loop_task; +TaskHandle_t the_streaming_loop_task; + +static SemaphoreHandle_t wait_for_sd; +static SemaphoreHandle_t sd_go; + +long current_frame_time; +long last_frame_time; + + +// https://github.com/espressif/esp32-camera/issues/182 +#define fbs 8 // was 64 -- how many kb of static ram for psram -> sram buffer for sd write +uint8_t framebuffer_static[fbs * 1024 + 20]; + +// CAMERA_MODEL_AI_THINKER +#define PWDN_GPIO_NUM 32 +#define RESET_GPIO_NUM -1 +#define XCLK_GPIO_NUM 0 +#define SIOD_GPIO_NUM 26 +#define SIOC_GPIO_NUM 27 +#define Y9_GPIO_NUM 35 +#define Y8_GPIO_NUM 34 +#define Y7_GPIO_NUM 39 +#define Y6_GPIO_NUM 36 +#define Y5_GPIO_NUM 21 +#define Y4_GPIO_NUM 19 +#define Y3_GPIO_NUM 18 +#define Y2_GPIO_NUM 5 +#define VSYNC_GPIO_NUM 25 +#define HREF_GPIO_NUM 23 +#define PCLK_GPIO_NUM 22 + +camera_fb_t * fb_curr = NULL; +camera_fb_t * fb_next = NULL; + +#include +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "esp_system.h" +#include "nvs_flash.h" +#include "nvs.h" +#include "soc/soc.h" +#include "soc/cpu.h" +#include "soc/rtc_cntl_reg.h" + +static esp_err_t cam_err; +float most_recent_fps = 0; +int most_recent_avg_framesize = 0; + +uint8_t* framebuffer; +int framebuffer_len; + +int first = 1; +long frame_start = 0; +long frame_end = 0; +long frame_total = 0; +long frame_average = 0; +long loop_average = 0; +long loop_total = 0; +long total_frame_data = 0; +long last_frame_length = 0; +int done = 0; +long avi_start_time = 0; +long avi_end_time = 0; +int start_record = 0; +int start_record_2nd_opinion = -2; +int start_record_1st_opinion = -1; + +int we_are_already_stopped = 0; +long total_delay = 0; +long bytes_before_last_100_frames = 0; +long time_before_last_100_frames = 0; + +long time_in_loop = 0; +long time_in_camera = 0; +long time_in_sd = 0; +long time_in_good = 0; +long time_total = 0; +long time_in_web1 = 0; +long time_in_web2 = 0; +long delay_wait_for_sd = 0; +long wait_for_cam = 0; + +int do_it_now = 0; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Avi Writer Stuff here + + +// MicroSD +#include "driver/sdmmc_host.h" +#include "driver/sdmmc_defs.h" +#include "sdmmc_cmd.h" +#include "esp_vfs_fat.h" +#include "FS.h" +#include + +File logfile; +File avifile; +File idxfile; + +char avi_file_name[100]; + +static int i = 0; +uint16_t frame_cnt = 0; +uint16_t remnant = 0; +uint32_t length = 0; +uint32_t startms; +uint32_t elapsedms; +uint32_t uVideoLen = 0; + +int bad_jpg = 0; +int extend_jpg = 0; +int normal_jpg = 0; + +int file_number = 0; +int file_group = 0; +long boot_time = 0; + +long totalp; +long totalw; + +#define BUFFSIZE 512 + +uint8_t buf[BUFFSIZE]; + +#define AVIOFFSET 240 // AVI main header length + +unsigned long movi_size = 0; +unsigned long jpeg_size = 0; +unsigned long idx_offset = 0; + +uint8_t zero_buf[4] = {0x00, 0x00, 0x00, 0x00}; +uint8_t dc_buf[4] = {0x30, 0x30, 0x64, 0x63}; // "00dc" +uint8_t dc_and_zero_buf[8] = {0x30, 0x30, 0x64, 0x63, 0x00, 0x00, 0x00, 0x00}; + +uint8_t avi1_buf[4] = {0x41, 0x56, 0x49, 0x31}; // "AVI1" +uint8_t idx1_buf[4] = {0x69, 0x64, 0x78, 0x31}; // "idx1" + + +struct frameSizeStruct { + uint8_t frameWidth[2]; + uint8_t frameHeight[2]; +}; + +// data structure from here https://github.com/s60sc/ESP32-CAM_MJPEG2SD/blob/master/avi.cpp, extended for ov5640 + +static const frameSizeStruct frameSizeData[] = { + {{0x60, 0x00}, {0x60, 0x00}}, // FRAMESIZE_96X96, // 96x96 + {{0xA0, 0x00}, {0x78, 0x00}}, // FRAMESIZE_QQVGA, // 160x120 + {{0xB0, 0x00}, {0x90, 0x00}}, // FRAMESIZE_QCIF, // 176x144 + {{0xF0, 0x00}, {0xB0, 0x00}}, // FRAMESIZE_HQVGA, // 240x176 + {{0xF0, 0x00}, {0xF0, 0x00}}, // FRAMESIZE_240X240, // 240x240 + {{0x40, 0x01}, {0xF0, 0x00}}, // FRAMESIZE_QVGA, // 320x240 framessize + {{0x90, 0x01}, {0x28, 0x01}}, // FRAMESIZE_CIF, // 400x296 bytes per buffer required in psram - quality must be higher number (lower quality) than config quality + {{0xE0, 0x01}, {0x40, 0x01}}, // FRAMESIZE_HVGA, // 480x320 low qual med qual high quality + {{0x80, 0x02}, {0xE0, 0x01}}, // FRAMESIZE_VGA, // 640x480 8 11+ ## 6-10 ## 0-5 indoor(56,COUNT=3) (56,COUNT=2) (56,count=1) + // 38,400 61,440 153,600 + {{0x20, 0x03}, {0x58, 0x02}}, // FRAMESIZE_SVGA, // 800x600 9 240,000 + {{0x00, 0x04}, {0x00, 0x03}}, // FRAMESIZE_XGA, // 1024x768 10 + {{0x00, 0x05}, {0xD0, 0x02}}, // FRAMESIZE_HD, // 1280x720 11 115,200 184,320 460,800 (11)50.000 25.4fps (11)50.000 12fps (11)50,000 12.7fps + {{0x00, 0x05}, {0x00, 0x04}}, // FRAMESIZE_SXGA, // 1280x1024 12 + {{0x40, 0x06}, {0xB0, 0x04}}, // FRAMESIZE_UXGA, // 1600x1200 13 240,000 384,000 960,000 + // 3MP Sensors + {{0x80, 0x07}, {0x38, 0x04}}, // FRAMESIZE_FHD, // 1920x1080 14 259,200 414,720 1,036,800 (11)210,000 5.91fps + {{0xD0, 0x02}, {0x00, 0x05}}, // FRAMESIZE_P_HD, // 720x1280 15 + {{0x60, 0x03}, {0x00, 0x06}}, // FRAMESIZE_P_3MP, // 864x1536 16 + {{0x00, 0x08}, {0x00, 0x06}}, // FRAMESIZE_QXGA, // 2048x1536 17 393,216 629,146 1,572,864 + // 5MP Sensors + {{0x00, 0x0A}, {0xA0, 0x05}}, // FRAMESIZE_QHD, // 2560x1440 18 460,800 737,280 1,843,200 (11)400,000 3.5fps (11)330,000 1.95fps + {{0x00, 0x0A}, {0x40, 0x06}}, // FRAMESIZE_WQXGA, // 2560x1600 19 + {{0x38, 0x04}, {0x80, 0x07}}, // FRAMESIZE_P_FHD, // 1080x1920 20 + {{0x00, 0x0A}, {0x80, 0x07}} // FRAMESIZE_QSXGA, // 2560x1920 21 614,400 983,040 2,457,600 (15)425,000 3.25fps (15)382,000 1.7fps (15)385,000 1.7fps + +}; + +const int avi_header[AVIOFFSET] PROGMEM = { + 0x52, 0x49, 0x46, 0x46, 0xD8, 0x01, 0x0E, 0x00, 0x41, 0x56, 0x49, 0x20, 0x4C, 0x49, 0x53, 0x54, + 0xD0, 0x00, 0x00, 0x00, 0x68, 0x64, 0x72, 0x6C, 0x61, 0x76, 0x69, 0x68, 0x38, 0x00, 0x00, 0x00, + 0xA0, 0x86, 0x01, 0x00, 0x80, 0x66, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x02, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x49, 0x53, 0x54, 0x84, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x72, 0x6C, 0x73, 0x74, 0x72, 0x68, 0x30, 0x00, 0x00, 0x00, 0x76, 0x69, 0x64, 0x73, + 0x4D, 0x4A, 0x50, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x66, + 0x28, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x18, 0x00, 0x4D, 0x4A, 0x50, 0x47, 0x00, 0x84, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x4E, 0x46, 0x4F, + 0x10, 0x00, 0x00, 0x00, 0x6A, 0x61, 0x6D, 0x65, 0x73, 0x7A, 0x61, 0x68, 0x61, 0x72, 0x79, 0x20, + 0x76, 0x35, 0x38, 0x20, 0x4C, 0x49, 0x53, 0x54, 0x00, 0x01, 0x0E, 0x00, 0x6D, 0x6F, 0x76, 0x69, +}; + + +// +// Writes an uint32_t in Big Endian at current file position +// +static void inline print_quartet(unsigned long i, File fd) { + + uint8_t y[4]; + y[0] = i % 0x100; + y[1] = (i >> 8) % 0x100; + y[2] = (i >> 16) % 0x100; + y[3] = (i >> 24) % 0x100; + size_t i1_err = fd.write(y , 4); +} + +// +// Writes 2 uint32_t in Big Endian at current file position +// +static void inline print_2quartet(unsigned long i, unsigned long j, File fd) { + + uint8_t y[8]; + y[0] = i % 0x100; + y[1] = (i >> 8) % 0x100; + y[2] = (i >> 16) % 0x100; + y[3] = (i >> 24) % 0x100; + y[4] = j % 0x100; + y[5] = (j >> 8) % 0x100; + y[6] = (j >> 16) % 0x100; + y[7] = (j >> 24) % 0x100; + size_t i1_err = fd.write(y , 8); +} + +// +// if we have no camera, or sd card, then flash rear led on and off to warn the human SOS - SOS +// +void major_fail() { + + Serial.println(" "); + logfile.close(); + + for (int i = 0; i < 10; i++) { // 10 loops or about 100 seconds then reboot + for (int j = 0; j < 3; j++) { + digitalWrite(33, LOW); delay(150); + digitalWrite(33, HIGH); delay(150); + } + delay(1000); + + for (int j = 0; j < 3; j++) { + digitalWrite(33, LOW); delay(500); + digitalWrite(33, HIGH); delay(500); + } + delay(1000); + Serial.print("Major Fail "); Serial.print(i); Serial.print(" / "); Serial.println(10); + } + + ESP.restart(); +} + + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// + +static void config_camera() { + + camera_config_t config; + + //Serial.println("config camera"); + + config.ledc_channel = LEDC_CHANNEL_0; + config.ledc_timer = LEDC_TIMER_0; + config.pin_d0 = Y2_GPIO_NUM; + config.pin_d1 = Y3_GPIO_NUM; + config.pin_d2 = Y4_GPIO_NUM; + config.pin_d3 = Y5_GPIO_NUM; + config.pin_d4 = Y6_GPIO_NUM; + config.pin_d5 = Y7_GPIO_NUM; + config.pin_d6 = Y8_GPIO_NUM; + config.pin_d7 = Y9_GPIO_NUM; + config.pin_xclk = XCLK_GPIO_NUM; + config.pin_pclk = PCLK_GPIO_NUM; + config.pin_vsync = VSYNC_GPIO_NUM; + config.pin_href = HREF_GPIO_NUM; + config.pin_sscb_sda = SIOD_GPIO_NUM; + config.pin_sscb_scl = SIOC_GPIO_NUM; + config.pin_pwdn = PWDN_GPIO_NUM; + config.pin_reset = RESET_GPIO_NUM; + + config.xclk_freq_hz = 20000000; // 10000000 or 20000000 -- 100 is faster with v1.04 // 200 is faster with v1.06 // 16500000 is an option + + config.pixel_format = PIXFORMAT_JPEG; + + Serial.printf("Frame config %d, quality config %d, buffers config %d\n", framesizeconfig, qualityconfig, buffersconfig); + config.frame_size = (framesize_t)framesizeconfig; + config.jpeg_quality = qualityconfig; + config.fb_count = buffersconfig; + + + if (Lots_of_Stats) { + Serial.printf("Before camera config ..."); + Serial.printf("Internal Total heap %d, internal Free Heap %d, ", ESP.getHeapSize(), ESP.getFreeHeap()); + Serial.printf("SPIRam Total heap %d, SPIRam Free Heap %d\n", ESP.getPsramSize(), ESP.getFreePsram()); + } + esp_err_t cam_err = ESP_FAIL; + int attempt = 5; + while (attempt && cam_err != ESP_OK) { + cam_err = esp_camera_init(&config); + if (cam_err != ESP_OK) { + Serial.printf("Camera init failed with error 0x%x", cam_err); + digitalWrite(PWDN_GPIO_NUM, 1); + delay(500); + digitalWrite(PWDN_GPIO_NUM, 0); // power cycle the camera (OV2640) + attempt--; + } + } + + if (Lots_of_Stats) { + Serial.printf("After camera config ..."); + Serial.printf("Internal Total heap %d, internal Free Heap %d, ", ESP.getHeapSize(), ESP.getFreeHeap()); + Serial.printf("SPIRam Total heap %d, SPIRam Free Heap %d\n", ESP.getPsramSize(), ESP.getFreePsram()); + } + + if (cam_err != ESP_OK) { + major_fail(); + } + + sensor_t * ss = esp_camera_sensor_get(); + + ///ss->set_hmirror(ss, 1); // 0 = disable , 1 = enable + ///ss->set_vflip(ss, 1); // 0 = disable , 1 = enable + + Serial.printf("\nCamera started correctly, Type is %x (hex) of 9650, 7725, 2640, 3660, 5640\n\n", ss->id.PID); + + if (ss->id.PID == OV5640_PID ) { + //Serial.println("56 - going mirror"); + ss->set_hmirror(ss, 1); // 0 = disable , 1 = enable + } else { + ss->set_hmirror(ss, 0); // 0 = disable , 1 = enable + } + + ss->set_quality(ss, quality); + ss->set_framesize(ss, (framesize_t)framesize); + + ss->set_brightness(ss, 1); //up the blightness just a bit + ss->set_saturation(ss, -2); //lower the saturation + + delay(800); + for (int j = 0; j < 4; j++) { + camera_fb_t * fb = esp_camera_fb_get(); // get_good_jpeg(); + if (!fb) { + Serial.println("Camera Capture Failed"); + } else { + Serial.print("Pic, len="); Serial.print(fb->len); + Serial.printf(", new fb %X\n", (long)fb->buf); + esp_camera_fb_return(fb); + delay(50); + } + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// + + +static esp_err_t init_sdcard() +{ + + int succ = SD_MMC.begin("/sdcard", true); + if (succ) { + Serial.printf("SD_MMC Begin: %d\n", succ); + uint8_t cardType = SD_MMC.cardType(); + Serial.print("SD_MMC Card Type: "); + if (cardType == CARD_MMC) { + Serial.println("MMC"); + } else if (cardType == CARD_SD) { + Serial.println("SDSC"); + } else if (cardType == CARD_SDHC) { + Serial.println("SDHC"); + } else { + Serial.println("UNKNOWN"); + } + + uint64_t cardSize = SD_MMC.cardSize() / (1024 * 1024); + Serial.printf("SD_MMC Card Size: %lluMB\n", cardSize); + + } else { + Serial.printf("Failed to mount SD card VFAT filesystem. \n"); + Serial.println("Do you have an SD Card installed?"); + Serial.println("Check pin 12 and 13, not grounded, or grounded with 10k resistors!\n\n"); + major_fail(); + } + + return ESP_OK; +} + +void read_config_file() { + + // put a file "config.txt" onto SD card, to set parameters different from your hardcoded parameters + // it should look like this - one paramter per line, in the correct order, followed by 2 spaces, and any comments you choose + /* + desklens // camera name for files, mdns, etc + 11 // framesize 9=svga, 10=xga, 11=hd, 12=sxga, 13=uxga, 14=fhd, 17=qxga, 18=qhd, 21=qsxga + 8 // quality 0-63, lower the better, 10 good start, must be higher than "quality config" + 11 // framesize config - must be equal or higher than framesize + 5 / quality config - high q 0..5, med q 6..10, low q 11+ + 3 // buffers - 1 is half speed of 3, but you might run out od memory with 3 and framesize > uxga + 900 // length of video in seconds + 0 // interval - ms between frames - 0 for fastest, or 500 for 2fps, 10000 for 10 sec/frame + 1 // speedup - multiply framerate - 1 for realtime, 24 for record at 1fps, play at 24fps or24x + 0 // streamdelay - ms between streaming frames - 0 for fast as possible, 500 for 2fps + 4 // 0 no internet, 1 get time then shutoff, 2 streaming using wifiman, 3 for use ssid names below default off, 4 names below default on + MST7MDT,M3.2.0/2:00:00,M11.1.0/2:00:00 // timezone - this is mountain time, find timezone here https://sites.google.com/a/usapiens.com/opnode/time-zones + ssid1234 // ssid + mrpeanut // ssid password + + Lines above are rigid - do not delete lines, must have 2 spaces after the number or string + */ + + File config_file = SD_MMC.open("/config.txt", "r"); + if (!config_file) { + Serial.println("Failed to open config_file for reading"); + } else { + String junk; + Serial.println("Reading config.txt"); + String cname = config_file.readStringUntil(' '); + junk = config_file.readStringUntil('\n'); + int cframesize = config_file.parseInt(); + junk = config_file.readStringUntil('\n'); + int cquality = config_file.parseInt(); + junk = config_file.readStringUntil('\n'); + + int cframesizeconfig = config_file.parseInt(); + junk = config_file.readStringUntil('\n'); + int cqualityconfig = config_file.parseInt(); + junk = config_file.readStringUntil('\n'); + int cbuffersconfig = config_file.parseInt(); + junk = config_file.readStringUntil('\n'); + + int clength = config_file.parseInt(); + junk = config_file.readStringUntil('\n'); + int cinterval = config_file.parseInt(); + junk = config_file.readStringUntil('\n'); + int cspeedup = config_file.parseInt(); + junk = config_file.readStringUntil('\n'); + int cstreamdelay = config_file.parseInt(); + junk = config_file.readStringUntil('\n'); + int cinternet = config_file.parseInt(); + junk = config_file.readStringUntil('\n'); + String czone = config_file.readStringUntil(' '); + junk = config_file.readStringUntil('\n'); + cssid = config_file.readStringUntil(' '); + junk = config_file.readStringUntil('\n'); + cpass = config_file.readStringUntil(' '); + junk = config_file.readStringUntil('\n'); + config_file.close(); + + Serial.printf("========= Data fram config.txt =========\n"); + Serial.printf("Name %s\n", cname); logfile.printf("Name %s\n", cname); + Serial.printf("Framesize %d\n", cframesize); logfile.printf("Framesize %d\n", cframesize); + Serial.printf("Quality %d\n", cquality); logfile.printf("Quality %d\n", cquality); + Serial.printf("Framesize config %d\n", cframesizeconfig); logfile.printf("Framesize config%d\n", cframesizeconfig); + Serial.printf("Quality config %d\n", cqualityconfig); logfile.printf("Quality config%d\n", cqualityconfig); + Serial.printf("Buffers config %d\n", cbuffersconfig); logfile.printf("Buffers config %d\n", cbuffersconfig); + Serial.printf("Length %d\n", clength); logfile.printf("Length %d\n", clength); + Serial.printf("Interval %d\n", cinterval); logfile.printf("Interval %d\n", cinterval); + Serial.printf("Speedup %d\n", cspeedup); logfile.printf("Speedup %d\n", cspeedup); + Serial.printf("Streamdelay %d\n", cstreamdelay); logfile.printf("Streamdelay %d\n", cstreamdelay); + Serial.printf("Internet %d\n", cinternet); logfile.printf("Internet %d\n", cinternet); + //Serial.printf("Zone len %d, %s\n", czone.length(), czone); //logfile.printf("Zone len %d, %s\n", czone.length(), czone); + Serial.printf("Zone len %d\n", czone.length()); logfile.printf("Zone len %d\n", czone.length()); + Serial.printf("ssid %s\n", cssid); logfile.printf("ssid %s\n", cssid); + Serial.printf("pass %s\n", cpass); logfile.printf("pass %s\n", cpass); + + + framesize = cframesize; + quality = cquality; + framesizeconfig = cframesizeconfig; + qualityconfig = cqualityconfig; + buffersconfig = cbuffersconfig; + avi_length = clength; + frame_interval = cinterval; + speed_up_factor = cspeedup; + stream_delay = cstreamdelay; + IncludeInternet = cinternet; + configfile = true; + TIMEZONE = czone; + + cname.toCharArray(devname, cname.length() + 1); + } +} + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// delete_old_stuff() - delete oldest files to free diskspace +// + +void listDir( const char * dirname, uint8_t levels) { + + Serial.printf("Listing directory: %s\n", "/"); + + File root = SD_MMC.open("/"); + if (!root) { + Serial.println("Failed to open directory"); + return; + } + if (!root.isDirectory()) { + Serial.println("Not a directory"); + return; + } + + File filex = root.openNextFile(); + while (filex) { + if (filex.isDirectory()) { + Serial.print(" DIR : "); + Serial.println(filex.name()); + if (levels) { + listDir( filex.name(), levels - 1); + } + } else { + Serial.print(" FILE: "); + Serial.print(filex.name()); + Serial.print(" SIZE: "); + Serial.println(filex.size()); + } + filex = root.openNextFile(); + } +} + +void delete_old_stuff() { + + Serial.printf("Total space: %lluMB\n", SD_MMC.totalBytes() / (1024 * 1024)); + Serial.printf("Used space: %lluMB\n", SD_MMC.usedBytes() / (1024 * 1024)); + + //listDir( "/", 0); + + float full = 1.0 * SD_MMC.usedBytes() / SD_MMC.totalBytes();; + if (full < 0.8) { + Serial.printf("Nothing deleted, %.1f%% disk full\n", 100.0 * full); + } else { + Serial.printf("Disk is %.1f%% full ... deleting oldest file\n", 100.0 * full); + while (full > 0.8) { + + double del_number = 999999999; + char del_numbername[50]; + + File f = SD_MMC.open("/"); + + File file = f.openNextFile(); + + while (file) { + //Serial.println(file.name()); + if (!file.isDirectory()) { + + char foldname[50]; + strcpy(foldname, file.name()); + for ( int x = 0; x < 50; x++) { + if ( (foldname[x] >= 0x30 && foldname[x] <= 0x39) || foldname[x] == 0x2E) { + } else { + if (foldname[x] != 0) foldname[x] = 0x20; + } + } + + double i = atof(foldname); + if ( i > 0 && i < del_number) { + strcpy (del_numbername, file.name()); + del_number = i; + } + //Serial.printf("Name is %s, number is %f\n", foldname, i); + } + file = f.openNextFile(); + + } + Serial.printf("lowest is Name is %s, number is %f\n", del_numbername, del_number); + if (del_number < 999999999) { + deleteFolderOrFile(del_numbername); + } + full = 1.0 * SD_MMC.usedBytes() / SD_MMC.totalBytes(); + Serial.printf("Disk is %.1f%% full ... \n", 100.0 * full); + f.close(); + } + } +} + +void deleteFolderOrFile(const char * val) { + // Function provided by user @gemi254 + Serial.printf("Deleting : %s\n", val); + File f = SD_MMC.open(val); + if (!f) { + Serial.printf("Failed to open %s\n", val); + return; + } + + if (f.isDirectory()) { + File file = f.openNextFile(); + while (file) { + if (file.isDirectory()) { + Serial.print(" DIR : "); + Serial.println(file.name()); + } else { + Serial.print(" FILE: "); + Serial.print(file.name()); + Serial.print(" SIZE: "); + Serial.print(file.size()); + if (SD_MMC.remove(file.name())) { + Serial.println(" deleted."); + } else { + Serial.println(" FAILED."); + } + } + file = f.openNextFile(); + } + f.close(); + //Remove the dir + if (SD_MMC.rmdir(val)) { + Serial.printf("Dir %s removed\n", val); + } else { + Serial.println("Remove dir failed"); + } + + } else { + //Remove the file + if (SD_MMC.remove(val)) { + Serial.printf("File %s deleted\n", val); + } else { + Serial.println("Delete failed"); + } + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// get_good_jpeg() - take a picture and make sure it has a good jpeg +// +camera_fb_t * get_good_jpeg() { + + camera_fb_t * fb; + + long start; + int failures = 0; + + do { + int fblen = 0; + int foundffd9 = 0; + long bp = millis(); + long mstart = micros(); + + fb = esp_camera_fb_get(); + if (!fb) { + Serial.println("Camera Capture Failed"); + failures++; + } else { + long mdelay = micros() - mstart; + + int get_fail = 0; + + totalp = totalp + millis() - bp; + time_in_camera = totalp; + + fblen = fb->len; + + for (int j = 1; j <= 1025; j++) { + if (fb->buf[fblen - j] != 0xD9) { + // no d9, try next for + } else { //Serial.println("Found a D9"); + if (fb->buf[fblen - j - 1] == 0xFF ) { //Serial.print("Found the FFD9, junk is "); Serial.println(j); + if (j == 1) { + normal_jpg++; + } else { + extend_jpg++; + } + foundffd9 = 1; + if (Lots_of_Stats) { + if (j > 900) { // rarely happens - sometimes on 2640 + Serial.print("Frame "); Serial.print(frame_cnt); logfile.print("Frame "); logfile.print(frame_cnt); + Serial.print(", Len = "); Serial.print(fblen); logfile.print(", Len = "); logfile.print(fblen); + //Serial.print(", Correct Len = "); Serial.print(fblen - j + 1); + Serial.print(", Extra Bytes = "); Serial.println( j - 1); logfile.print(", Extra Bytes = "); logfile.println( j - 1); + logfile.flush(); + } + + if ( frame_cnt % 100 == 50) { + Serial.printf("Frame %6d, len %6d, extra %4d, cam time %7d ", frame_cnt, fblen, j - 1, mdelay / 1000); + logfile.printf("Frame %6d, len %6d, extra %4d, cam time %7d ", frame_cnt, fblen, j - 1, mdelay / 1000); + do_it_now = 1; + } + } + break; + } + } + } + + if (!foundffd9) { + bad_jpg++; + Serial.printf("Bad jpeg, Frame %d, Len = %d \n", frame_cnt, fblen); + logfile.printf("Bad jpeg, Frame %d, Len = %d\n", frame_cnt, fblen); + + esp_camera_fb_return(fb); + failures++; + + } else { + break; + // count up the useless bytes + } + } + + } while (failures < 10); // normally leave the loop with a break() + + // if we get 10 bad frames in a row, then quality parameters are too high - set them lower (+5), and start new movie + if (failures == 10) { + Serial.printf("10 failures"); + logfile.printf("10 failures"); + logfile.flush(); + + sensor_t * ss = esp_camera_sensor_get(); + int qual = ss->status.quality ; + ss->set_quality(ss, qual + 5); + quality = qual + 5; + Serial.printf("\n\nDecreasing quality due to frame failures %d -> %d\n\n", qual, qual + 5); + logfile.printf("\n\nDecreasing quality due to frame failures %d -> %d\n\n", qual, qual + 5); + delay(1000); + + start_record = 0; + //reboot_now = true; + } + return fb; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// eprom functions - increment the file_group, so files are always unique +// + +#include + +struct eprom_data { + int eprom_good; + int file_group; +}; + +void do_eprom_read() { + + eprom_data ed; + + EEPROM.begin(200); + EEPROM.get(0, ed); + + if (ed.eprom_good == MagicNumber) { + Serial.println("Good settings in the EPROM "); + file_group = ed.file_group; + file_group++; + Serial.print("New File Group "); Serial.println(file_group ); + } else { + Serial.println("No settings in EPROM - Starting with File Group 1 "); + file_group = 1; + } + do_eprom_write(); + file_number = 1; +} + +void do_eprom_write() { + + eprom_data ed; + ed.eprom_good = MagicNumber; + ed.file_group = file_group; + + Serial.println("Writing to EPROM ..."); + + EEPROM.begin(200); + EEPROM.put(0, ed); + EEPROM.commit(); + EEPROM.end(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Make the avi functions +// +// start_avi() - open the file and write headers +// another_pic_avi() - write one more frame of movie +// end_avi() - write the final parameters and close the file + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// start_avi - open the files and write in headers +// + +static void start_avi() { + + long start = millis(); + + Serial.println("Starting an avi "); + + sprintf(avi_file_name, "/%s%d.%03d.avi", devname, file_group, file_number); + + file_number++; + + avifile = SD_MMC.open(avi_file_name, "w"); + idxfile = SD_MMC.open("/idx.tmp", "w"); + + if (avifile) { + Serial.printf("File open: %s\n", avi_file_name); + logfile.printf("File open: %s\n", avi_file_name); + } else { + Serial.println("Could not open file"); + major_fail(); + } + + if (idxfile) { + //Serial.printf("File open: %s\n", "//idx.tmp"); + } else { + Serial.println("Could not open file /idx.tmp"); + major_fail(); + } + + for ( i = 0; i < AVIOFFSET; i++) { + char ch = pgm_read_byte(&avi_header[i]); + buf[i] = ch; + } + + memcpy(buf + 0x40, frameSizeData[framesize].frameWidth, 2); + memcpy(buf + 0xA8, frameSizeData[framesize].frameWidth, 2); + memcpy(buf + 0x44, frameSizeData[framesize].frameHeight, 2); + memcpy(buf + 0xAC, frameSizeData[framesize].frameHeight, 2); + + size_t err = avifile.write(buf, AVIOFFSET); + + avifile.seek( AVIOFFSET, SeekSet); + + Serial.print(F("\nRecording ")); + Serial.print(avi_length); + Serial.println(" seconds."); + + startms = millis(); + + totalp = 0; + totalw = 0; + + jpeg_size = 0; + movi_size = 0; + uVideoLen = 0; + idx_offset = 4; + + bad_jpg = 0; + extend_jpg = 0; + normal_jpg = 0; + + time_in_loop = 0; + time_in_camera = 0; + time_in_sd = 0; + time_in_good = 0; + time_total = 0; + time_in_web1 = 0; + time_in_web2 = 0; + delay_wait_for_sd = 0; + wait_for_cam = 0; + + time_in_sd += (millis() - start); + + logfile.flush(); + avifile.flush(); + +} // end of start avi + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// another_save_avi saves another frame to the avi file, uodates index +// -- pass in a fb pointer to the frame to add +// + +static void another_save_avi(camera_fb_t * fb ) { + + long start = millis(); + + int fblen; + fblen = fb->len; + + int fb_block_length; + uint8_t* fb_block_start; + + jpeg_size = fblen; + + remnant = (4 - (jpeg_size & 0x00000003)) & 0x00000003; + + long bw = millis(); + long frame_write_start = millis(); + + framebuffer_static[0] = 0x30; // "00dc" + framebuffer_static[1] = 0x30; + framebuffer_static[2] = 0x64; + framebuffer_static[3] = 0x63; + + int jpeg_size_rem = jpeg_size + remnant; + + framebuffer_static[4] = jpeg_size_rem % 0x100; + framebuffer_static[5] = (jpeg_size_rem >> 8) % 0x100; + framebuffer_static[6] = (jpeg_size_rem >> 16) % 0x100; + framebuffer_static[7] = (jpeg_size_rem >> 24) % 0x100; + + fb_block_start = fb->buf; + + if (fblen > fbs * 1024 - 8 ) { // fbs is the size of frame buffer static + fb_block_length = fbs * 1024; + fblen = fblen - (fbs * 1024 - 8); + memcpy(framebuffer_static + 8, fb_block_start, fb_block_length - 8); + fb_block_start = fb_block_start + fb_block_length - 8; + + } else { + fb_block_length = fblen + 8 + remnant; + memcpy(framebuffer_static + 8, fb_block_start, fblen); + fblen = 0; + } + + size_t err = avifile.write(framebuffer_static, fb_block_length); + + if (err != fb_block_length) { + Serial.print("Error on avi write: err = "); Serial.print(err); + Serial.print(" len = "); Serial.println(fb_block_length); + logfile.print("Error on avi write: err = "); logfile.print(err); + logfile.print(" len = "); logfile.println(fb_block_length); + } + + while (fblen > 0) { + + if (fblen > fbs * 1024) { + fb_block_length = fbs * 1024; + fblen = fblen - fb_block_length; + } else { + fb_block_length = fblen + remnant; + fblen = 0; + } + + memcpy(framebuffer_static, fb_block_start, fb_block_length); + + size_t err = avifile.write(framebuffer_static, fb_block_length); + + if (err != fb_block_length) { + Serial.print("Error on avi write: err = "); Serial.print(err); + Serial.print(" len = "); Serial.println(fb_block_length); + } + + fb_block_start = fb_block_start + fb_block_length; + delay(0); + } + + + movi_size += jpeg_size; + uVideoLen += jpeg_size; + long frame_write_end = millis(); + + print_2quartet(idx_offset, jpeg_size, idxfile); + + idx_offset = idx_offset + jpeg_size + remnant + 8; + + movi_size = movi_size + remnant; + + if ( do_it_now == 1) { + do_it_now = 0; + Serial.printf(" sd time %4d -- \n", millis() - bw); + logfile.printf(" sd time %4d -- \n", millis() - bw); + logfile.flush(); + } + + totalw = totalw + millis() - bw; + time_in_sd += (millis() - start); + + avifile.flush(); + + +} // end of another_pic_avi + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// end_avi writes the index, and closes the files +// + +static void end_avi() { + + long start = millis(); + + unsigned long current_end = avifile.position(); + + Serial.println("End of avi - closing the files"); + logfile.println("End of avi - closing the files"); + + if (frame_cnt < 5 ) { + Serial.println("Recording screwed up, less than 5 frames, forget index\n"); + idxfile.close(); + avifile.close(); + int xx = remove("/idx.tmp"); + int yy = remove(avi_file_name); + + } else { + + elapsedms = millis() - startms; + + float fRealFPS = (1000.0f * (float)frame_cnt) / ((float)elapsedms) * speed_up_factor; + + float fmicroseconds_per_frame = 1000000.0f / fRealFPS; + uint8_t iAttainedFPS = round(fRealFPS) ; + uint32_t us_per_frame = round(fmicroseconds_per_frame); + + //Modify the MJPEG header from the beginning of the file, overwriting various placeholders + + avifile.seek( 4 , SeekSet); + print_quartet(movi_size + 240 + 16 * frame_cnt + 8 * frame_cnt, avifile); + + avifile.seek( 0x20 , SeekSet); + print_quartet(us_per_frame, avifile); + + unsigned long max_bytes_per_sec = (1.0f * movi_size * iAttainedFPS) / frame_cnt; + + avifile.seek( 0x24 , SeekSet); + print_quartet(max_bytes_per_sec, avifile); + + avifile.seek( 0x30 , SeekSet); + print_quartet(frame_cnt, avifile); + + avifile.seek( 0x8c , SeekSet); + print_quartet(frame_cnt, avifile); + + avifile.seek( 0x84 , SeekSet); + print_quartet((int)iAttainedFPS, avifile); + + avifile.seek( 0xe8 , SeekSet); + print_quartet(movi_size + frame_cnt * 8 + 4, avifile); + + Serial.println(F("\n*** Video recorded and saved ***\n")); + + Serial.printf("Recorded %5d frames in %5d seconds\n", frame_cnt, elapsedms / 1000); + Serial.printf("File size is %u bytes\n", movi_size + 12 * frame_cnt + 4); + Serial.printf("Adjusted FPS is %5.2f\n", fRealFPS); + Serial.printf("Max data rate is %lu bytes/s\n", max_bytes_per_sec); + Serial.printf("Frame duration is %d us\n", us_per_frame); + Serial.printf("Average frame length is %d bytes\n", uVideoLen / frame_cnt); + Serial.print("Average picture time (ms) "); Serial.println( 1.0 * totalp / frame_cnt); + Serial.print("Average write time (ms) "); Serial.println( 1.0 * totalw / frame_cnt ); + Serial.print("Normal jpg % "); Serial.println( 100.0 * normal_jpg / frame_cnt, 1 ); + Serial.print("Extend jpg % "); Serial.println( 100.0 * extend_jpg / frame_cnt, 1 ); + Serial.print("Bad jpg % "); Serial.println( 100.0 * bad_jpg / frame_cnt, 5 ); + + Serial.printf("Writng the index, %d frames\n", frame_cnt); + + logfile.printf("Recorded %5d frames in %5d seconds\n", frame_cnt, elapsedms / 1000); + logfile.printf("File size is %u bytes\n", movi_size + 12 * frame_cnt + 4); + logfile.printf("Adjusted FPS is %5.2f\n", fRealFPS); + logfile.printf("Max data rate is %lu bytes/s\n", max_bytes_per_sec); + logfile.printf("Frame duration is %d us\n", us_per_frame); + logfile.printf("Average frame length is %d bytes\n", uVideoLen / frame_cnt); + logfile.print("Average picture time (ms) "); logfile.println( 1.0 * totalp / frame_cnt); + logfile.print("Average write time (ms) "); logfile.println( 1.0 * totalw / frame_cnt ); + logfile.print("Normal jpg % "); logfile.println( 100.0 * normal_jpg / frame_cnt, 1 ); + logfile.print("Extend jpg % "); logfile.println( 100.0 * extend_jpg / frame_cnt, 1 ); + logfile.print("Bad jpg % "); logfile.println( 100.0 * bad_jpg / frame_cnt, 5 ); + + logfile.printf("Writng the index, %d frames\n", frame_cnt); + + avifile.seek( current_end , SeekSet); + + idxfile.close(); + + size_t i1_err = avifile.write(idx1_buf, 4); + + print_quartet(frame_cnt * 16, avifile); + + idxfile = SD_MMC.open("/idx.tmp", "r"); + + if (idxfile) { + //Serial.printf("File open: %s\n", "//idx.tmp"); + //logfile.printf("File open: %s\n", "/idx.tmp"); + } else { + Serial.println("Could not open index file"); + logfile.println("Could not open index file"); + major_fail(); + } + + char * AteBytes; + AteBytes = (char*) malloc (8); + + for (int i = 0; i < frame_cnt; i++) { + size_t res = idxfile.readBytes( AteBytes, 8); + size_t i1_err = avifile.write(dc_buf, 4); + size_t i2_err = avifile.write(zero_buf, 4); + size_t i3_err = avifile.write((uint8_t *)AteBytes, 8); + } + + free(AteBytes); + + idxfile.close(); + avifile.close(); + + int xx = remove("/idx.tmp"); + } + + Serial.println("---"); logfile.println("---"); + + time_in_sd += (millis() - start); + + Serial.println(""); + time_total = millis() - startms; + Serial.printf("waiting for cam %10dms, %4.1f%%\n", wait_for_cam , 100.0 * wait_for_cam / time_total); + Serial.printf("Time in camera %10dms, %4.1f%%\n", time_in_camera, 100.0 * time_in_camera / time_total); + Serial.printf("waiting for sd %10dms, %4.1f%%\n", delay_wait_for_sd , 100.0 * delay_wait_for_sd / time_total); + Serial.printf("Time in sd %10dms, %4.1f%%\n", time_in_sd , 100.0 * time_in_sd / time_total); + Serial.printf("web (core 1) %10dms, %4.1f%%\n", time_in_web1 , 100.0 * time_in_web1 / time_total); + Serial.printf("web (core 0) %10dms, %4.1f%%\n", time_in_web2 , 100.0 * time_in_web2 / time_total); + Serial.printf("time total %10dms, %4.1f%%\n", time_total , 100.0 * time_total / time_total); + + logfile.printf("waiting for cam %10dms, %4.1f%%\n", wait_for_cam , 100.0 * wait_for_cam / time_total); + logfile.printf("Time in camera %10dms, %4.1f%%\n", time_in_camera, 100.0 * time_in_camera / time_total); + logfile.printf("waiting for sd %10dms, %4.1f%%\n", delay_wait_for_sd , 100.0 * delay_wait_for_sd / time_total); + logfile.printf("Time in sd %10dms, %4.1f%%\n", time_in_sd , 100.0 * time_in_sd / time_total); + logfile.printf("web (core 1) %10dms, %4.1f%%\n", time_in_web1 , 100.0 * time_in_web1 / time_total); + logfile.printf("web (core 0) %10dms, %4.1f%%\n", time_in_web2 , 100.0 * time_in_web2 / time_total); + logfile.printf("time total %10dms, %4.1f%%\n", time_total , 100.0 * time_total / time_total); + + logfile.flush(); + +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Time +#include "time.h" + +// Workaround for the WebServer.h vs esp_http_server.h problem https://github.com/tzapu/WiFiManager/issues/1184 + +#define _HTTP_Method_H_ + +typedef enum { + jHTTP_GET = 0b00000001, + jHTTP_POST = 0b00000010, + jHTTP_DELETE = 0b00000100, + jHTTP_PUT = 0b00001000, + jHTTP_PATCH = 0b00010000, + jHTTP_HEAD = 0b00100000, + jHTTP_OPTIONS = 0b01000000, + jHTTP_ANY = 0b01111111, +} HTTPMethod; + +#include +#include +#include + +#include "ESPxWebFlMgr.h" //v56 +const word filemanagerport = 8080; +ESPxWebFlMgr filemgr(filemanagerport); // we want a different port than the webserver + + +time_t now; +struct tm timeinfo; +char localip[20]; +WiFiEventId_t eventID; + +bool init_wifi() +{ + int connAttempts = 0; + + uint32_t brown_reg_temp = READ_PERI_REG(RTC_CNTL_BROWN_OUT_REG); + WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); + + if (IncludeInternet >= 3) { + + WiFi.disconnect(true, true); + WiFi.mode(WIFI_STA); + WiFi.setHostname(devname); + + char ssidch[20]; + char passch[20]; + cssid.toCharArray(ssidch, cssid.length() + 1); + cpass.toCharArray(passch, cpass.length() + 1); + Serial.printf("ssid >%s<, pass >%s<\n", ssidch, passch); + WiFi.begin(ssidch, passch); + + while (WiFi.status() != WL_CONNECTED ) { + delay(1000); + Serial.print("."); + if (connAttempts++ == 15) break; // try for 15 seconds to get internet, then give up + } + configTime(0, 0, "pool.ntp.org"); + char tzchar[60]; + //Serial.printf("Str >%s<, Char >%s<\n",TIMEZONE,tzchar); + TIMEZONE.toCharArray(tzchar, TIMEZONE.length()); // name of your camera for mDNS, Router, and filenames + setenv("TZ", tzchar, 1); // mountain time zone from #define at top + tzset(); + + time(&now); + + while (now < 15) { // try for 15 seconds to get the time, then give up - 10 seconds after boot + delay(1000); + Serial.print("o"); + time(&now); + } + + Serial.print("Local time: "); Serial.print(ctime(&now)); + sprintf(localip, "%s", WiFi.localIP().toString().c_str()); + Serial.print("IP: "); Serial.println(localip); Serial.println(" "); + InternetOff = false; + + if (!MDNS.begin(devname)) { + Serial.println("Error setting up MDNS responder!"); + } else { + Serial.printf("mDNS responder started '%s'\n", devname); + } + + eventID = WiFi.onEvent([](WiFiEvent_t event, WiFiEventInfo_t info) { + // info.disconnected.reason ==> info.wifi_sta_disconnected.reason - update with esp32_arduino 2.00 v58 + if (info.wifi_sta_disconnected.reason != 201) { + Serial.printf( "\nframe_cnt: %8d, WiFi event Reason: %d , Status: %d\n", frame_cnt, info.wifi_sta_disconnected.reason, WiFi.status()); + logfile.printf("\nframe_cnt: %8d, WiFi event Reason: %d , Status: %d\n", frame_cnt, info.wifi_sta_disconnected.reason, WiFi.status()); + } + }); + + } else { + + WiFiManager wm; + bool res; + wm.setHostname(devname); + //wm.resetSettings(); // for debugging - erase the ssid every time + + wm.setConnectTimeout(20); // how long to try to connect for before continuing + wm.setConfigPortalTimeout(30); // auto close configportal after n seconds + // res = wm.autoConnect(); // auto generated AP name from chipid + + res = wm.autoConnect("esp32cam-config"); // use the devname defined above, with no password + //res = wm.autoConnect("AutoConnectAP","password"); // password protected ap + + if (res) { + Serial.println("Succesful Connection using WiFiManager"); + Serial.printf("\nInternet status: %d\n", WiFi.status()); + + eventID = WiFi.onEvent([](WiFiEvent_t event, WiFiEventInfo_t info) { + Serial.printf( "\nframe_cnt: %8d, WiFi event Reason: %d , Status: %d\n", frame_cnt, info.wifi_sta_disconnected.reason, WiFi.status()); + logfile.printf("\nframe_cnt: %8d, WiFi event Reason: %d , Status: %d\n", frame_cnt, info.wifi_sta_disconnected.reason, WiFi.status()); + + }); + + configTime(0, 0, "pool.ntp.org"); + char tzchar[60]; + TIMEZONE.toCharArray(tzchar, TIMEZONE.length()); // name of your camera for mDNS, Router, and filenames + setenv("TZ", tzchar, 1); // mountain time zone from #define at top + tzset(); + + time(&now); + + while (now < 15) { // try for 5 seconds to get the time, then give up - 10 seconds after boot + delay(1000); + Serial.print("o"); + time(&now); + } + + Serial.print("Local time: "); Serial.print(ctime(&now)); + sprintf(localip, "%s", WiFi.localIP().toString().c_str()); + Serial.print("IP: "); Serial.println(localip); Serial.println(" "); + InternetOff = false; + } else { + + InternetOff = true; + Serial.println("Internet failed using WiFiManager - not starting Web services"); + } + } + + //typedef enum { + // WIFI_PS_NONE, /**< No power save */ + // WIFI_PS_MIN_MODEM, /**< Minimum modem power saving. In this mode, station wakes up to receive beacon every DTIM period */ + // WIFI_PS_MAX_MODEM, /**< Maximum modem power saving. In this mode, interval to receive beacons is determined by the listen_interval + // parameter in wifi_sta_config_t. + // Attention: Using this option may cause ping failures. Not recommended */ + //} wifi_ps_type_t; + + wifi_ps_type_t the_type; + + esp_err_t get_ps = esp_wifi_get_ps(&the_type); + Serial.printf("The power save was: %d\n", the_type); + + Serial.printf("Set power save to %d\n", WIFI_PS_NONE); + esp_err_t set_ps = esp_wifi_set_ps(WIFI_PS_NONE); + + esp_err_t new_ps = esp_wifi_get_ps(&the_type); + Serial.printf("The power save is : %d\n", the_type); + + WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, brown_reg_temp); + return true; + +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// +#include + +httpd_handle_t camera_httpd = NULL; +char the_page[4000]; + +static esp_err_t capture_handler(httpd_req_t *req) { + + long start = millis(); + + camera_fb_t * fb = NULL; + esp_err_t res = ESP_OK; + char fname[100]; + int file_number = 0; + + //Serial.print("capture, core "); Serial.print(xPortGetCoreID()); + //Serial.print(", priority = "); Serial.println(uxTaskPriorityGet(NULL)); + + file_number++; + + sprintf(fname, "inline; filename=capture_%d.jpg", file_number); + + if (fb_next == NULL) { + fb = get_good_jpeg(); // esp_camera_fb_get(); + framebuffer_len = fb->len; + memcpy(framebuffer, fb->buf, framebuffer_len); + esp_camera_fb_return(fb); + } else { + fb = fb_next; + framebuffer_len = fb->len; + memcpy(framebuffer, fb->buf, framebuffer_len); + } + + httpd_resp_set_type(req, "image/jpeg"); + httpd_resp_set_hdr(req, "Content-Disposition", fname); + + res = httpd_resp_send(req, (const char *)framebuffer, framebuffer_len); + + time_in_web1 += (millis() - start); + return res; +} + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// +static esp_err_t index_handler(httpd_req_t *req) { + + long start = millis(); + + Serial.print("http index, core "); Serial.print(xPortGetCoreID()); + Serial.print(", priority = "); Serial.println(uxTaskPriorityGet(NULL)); + + const char the_message[] = "Status"; + + time(&now); + const char *strdate = ctime(&now); + + int tot = SD_MMC.totalBytes() / (1024 * 1024); + int use = SD_MMC.usedBytes() / (1024 * 1024); + long rssi = WiFi.RSSI(); + + const char msg[] PROGMEM = R"rawliteral( + + + + +%s ESP32-CAM Video Recorder Junior + + +

%s
ESP32-CAM Video Recorder Junior %s
%s


+ + Used / Total SD Space %d MB / %d MB
+ Rssi %d
+ + Filename: %s
+ Framesize %d, Quality %d, Frame %d
+ Avg framesize %d, fps %.1f
+ Time left in current video %d seconds
+
+

http://%s/

+

Stream

+

Photos - 10 saveable photos every 3 seconds

+

File Manager - download, delete, edit

+

End recording, and reboot

+ +)rawliteral"; + + + int time_left = (- millis() + (avi_start_time + avi_length * 1000)) / 1000; + + if (start_record == 0) { + time_left = 0; + } + + sprintf(the_page, msg, devname, devname, vernum, strdate, use, tot, rssi, avi_file_name, + framesize, quality, frame_cnt, most_recent_avg_framesize, most_recent_fps, time_left, + localip, localip, localip, localip, localip, filemanagerport, localip ); + + + httpd_resp_send(req, the_page, strlen(the_page)); + + time_in_web1 += (millis() - start); + return ESP_OK; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// +static esp_err_t photos_handler(httpd_req_t *req) { + + long start = millis(); + + Serial.print("http photos, core "); Serial.print(xPortGetCoreID()); + Serial.print(", priority = "); Serial.println(uxTaskPriorityGet(NULL)); + //Serial.printf("Internal Total heap %d, internal Free Heap %d\n", ESP.getHeapSize(), ESP.getFreeHeap()); + //Serial.printf("SPIRam Total heap %d, SPIRam Free Heap %d\n", ESP.getPsramSize(), ESP.getFreePsram()); + + const char the_message[] = "Status"; + + time(&now); + const char *strdate = ctime(&now); + + const char msg[] PROGMEM = R"rawliteral( + + + + +%s ESP32-CAM Video Recorder Junior + + +

%s
ESP32-CAM Video Recorder Junior %s
%s


+
+ One photo every 3 seconds for 30 seconds - roll forward or back - refresh for more live photos +
+ +
+
+ +)rawliteral"; + + sprintf(the_page, msg, devname, devname, vernum, strdate ); + + httpd_resp_send(req, the_page, strlen(the_page)); + time_in_web1 += (millis() - start); + return ESP_OK; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// +static esp_err_t reboot_handler(httpd_req_t *req) { + + long start = millis(); + + Serial.print("http reboot, core "); Serial.print(xPortGetCoreID()); + Serial.print(", priority = "); Serial.println(uxTaskPriorityGet(NULL)); + //Serial.printf("Internal Total heap %d, internal Free Heap %d\n", ESP.getHeapSize(), ESP.getFreeHeap()); + //Serial.printf("SPIRam Total heap %d, SPIRam Free Heap %d\n", ESP.getPsramSize(), ESP.getFreePsram()); + + //start_record = 0; + reboot_now = true; + + const char the_message[] = "Status"; + + time(&now); + const char *strdate = ctime(&now); + + const char msg[] PROGMEM = R"rawliteral( + + + + +%s ESP32-CAM Video Recorder Junior + + +

%s
ESP32-CAM Video Recorder Junior %s
%s


+
+ Ending current recording, and rebooting ... +
+ +
+ +)rawliteral"; + + sprintf(the_page, msg, devname, devname, vernum, strdate ); + + httpd_resp_send(req, the_page, strlen(the_page)); + time_in_web1 += (millis() - start); + + return ESP_OK; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Streaming stuff based on Random Nerd +// + +bool start_streaming = false; + +#define PART_BOUNDARY "123456789000000000000987654321" + +static const char* _STREAM_CONTENT_TYPE = "multipart/x-mixed-replace;boundary=" PART_BOUNDARY; +static const char* _STREAM_BOUNDARY = "\r\n--" PART_BOUNDARY "\r\n"; +static const char* _STREAM_PART = "Content-Type: image/jpeg\r\nContent-Length: %u\r\n\r\n"; + +void the_streaming_loop (void* pvParameter); + +static esp_err_t stream_handler(httpd_req_t *req) { + + long start = millis(); + + Serial.print("stream_handler, core "); Serial.print(xPortGetCoreID()); + Serial.print(", priority = "); Serial.println(uxTaskPriorityGet(NULL)); + + start_streaming = true; + + xTaskCreatePinnedToCore( the_streaming_loop, "the_streaming_loop", 8000, req, 1, &the_streaming_loop_task, 0); + + if ( the_streaming_loop_task == NULL ) { + //vTaskDelete( xHandle ); + Serial.printf("do_the_steaming_task failed to start! %d\n", the_streaming_loop_task); + } + + time_in_web1 += (millis() - start); + + while (start_streaming == true) { // we have to keep the *req alive + delay(1000); + //Serial.print("z"); + } + Serial.println(" streaming done"); + delay(500); + return ESP_OK; +} + +void the_streaming_loop (void* pvParameter) { + + httpd_req_t *req; + camera_fb_t * fb = NULL; + esp_err_t res = ESP_OK; + size_t _jpg_buf_len = 0; + uint8_t * _jpg_buf = NULL; + char * part_buf[64]; + + long start = millis(); + + Serial.print("\n\nlow prio stream_handler task, core "); Serial.print(xPortGetCoreID()); + Serial.print(", priority = "); Serial.println(uxTaskPriorityGet(NULL)); + + req = (httpd_req_t *) pvParameter; + + Serial.println("Starting the streaming"); + + res = httpd_resp_set_type(req, _STREAM_CONTENT_TYPE); + if (res != ESP_OK) { + Serial.printf("after first httpd_resp_set_type %d\n", res); + start_streaming = false; + } + + int streaming_frames = 0; + long streaming_start = millis(); + + while (true) { + streaming_frames++; + + if (fb_curr == NULL) { + fb = get_good_jpeg(); //esp_camera_fb_get(); + if (!fb) { + Serial.println("Stream - Camera Capture Failed"); + start_streaming = false; + } + framebuffer_len = fb->len; + memcpy(framebuffer, fb->buf, fb->len); + esp_camera_fb_return(fb); + + } else { + fb = fb_curr; + framebuffer_len = fb->len; + memcpy(framebuffer, fb->buf, fb->len); + } + + _jpg_buf_len = framebuffer_len; + _jpg_buf = framebuffer; + + size_t hlen = snprintf((char *)part_buf, 64, _STREAM_PART, _jpg_buf_len); + long send_time = millis(); + + res = httpd_resp_send_chunk(req, (const char *)part_buf, hlen); + if (res != ESP_OK) { + //Serial.printf("Stream error - 1st send chunk %d\n",res); + start_streaming = false; + } + + res = httpd_resp_send_chunk(req, (const char *)_jpg_buf, _jpg_buf_len); + if (res != ESP_OK) { + //Serial.printf("Stream error - 2nd send chunk %d\n",res); + start_streaming = false; + } + + res = httpd_resp_send_chunk(req, _STREAM_BOUNDARY, strlen(_STREAM_BOUNDARY)); + if (res != ESP_OK) { + //Serial.printf("Stream error - 3rd send chunk %d\n", res); + start_streaming = false; + } + + if (millis() - send_time > stream_delay) { + stream_delay = stream_delay * 1.5; + } + + time_in_web2 += (millis() - start); + + if (streaming_frames % 100 == 10) { + if (Lots_of_Stats) Serial.printf("Streaming at %3.3f fps\n", (float)1000 * streaming_frames / (millis() - streaming_start)); + } + + delay(stream_delay); + start = millis(); + + if (start_streaming == false) { + Serial.println("Deleting the streaming task"); + delay(100); + vTaskDelete(the_streaming_loop_task); + delay(5000); + } + } // stream forever +} + + +void startCameraServer() { + httpd_config_t config = HTTPD_DEFAULT_CONFIG(); + + Serial.print("http task prio: "); Serial.println(config.task_priority); + + httpd_uri_t index_uri = { + .uri = "/", + .method = HTTP_GET, + .handler = index_handler, + .user_ctx = NULL + }; + httpd_uri_t capture_uri = { + .uri = "/capture", + .method = HTTP_GET, + .handler = capture_handler, + .user_ctx = NULL + }; + httpd_uri_t stream_uri = { + .uri = "/stream", + .method = HTTP_GET, + .handler = stream_handler, + .user_ctx = NULL + }; + + httpd_uri_t photos_uri = { + .uri = "/photos", + .method = HTTP_GET, + .handler = photos_handler, + .user_ctx = NULL + }; + + httpd_uri_t reboot_uri = { + .uri = "/reboot", + .method = HTTP_GET, + .handler = reboot_handler, + .user_ctx = NULL + }; + + if (httpd_start(&camera_httpd, &config) == ESP_OK) { + httpd_register_uri_handler(camera_httpd, &index_uri); + httpd_register_uri_handler(camera_httpd, &capture_uri); + httpd_register_uri_handler(camera_httpd, &stream_uri); + httpd_register_uri_handler(camera_httpd, &photos_uri); + httpd_register_uri_handler(camera_httpd, &reboot_uri); + } + + Serial.println("Camera http started"); +} + +void stopCameraServer() { + httpd_stop(camera_httpd); +} + +void the_camera_loop (void* pvParameter); +void the_sd_loop (void* pvParameter); +void delete_old_stuff(); + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +void setup() { + + Serial.begin(115200); + Serial.println("\n\n---"); + + pinMode(33, OUTPUT); // little red led on back of chip + digitalWrite(33, LOW); // turn on the red LED on the back of chip + + pinMode(4, OUTPUT); // Blinding Disk-Avtive Light + digitalWrite(4, LOW); // turn off + + pinMode(12, INPUT_PULLUP); // pull this down to stop recording + pinMode(13, INPUT_PULLUP); // pull this down switch wifi + + //Serial.setDebugOutput(true); + + Serial.println(" "); + Serial.println("-------------------------------------"); + Serial.printf("ESP32-CAM-Video-Recorder-junior %s\n", vernum); + Serial.println("-------------------------------------"); + + Serial.print("setup, core "); Serial.print(xPortGetCoreID()); + Serial.print(", priority = "); Serial.println(uxTaskPriorityGet(NULL)); + + esp_reset_reason_t reason = esp_reset_reason(); + + logfile.print("--- reboot ------ because: "); + Serial.print("--- reboot ------ because: "); + + switch (reason) { + case ESP_RST_UNKNOWN : Serial.println("ESP_RST_UNKNOWN"); logfile.println("ESP_RST_UNKNOWN"); break; + case ESP_RST_POWERON : Serial.println("ESP_RST_POWERON"); logfile.println("ESP_RST_POWERON"); break; + case ESP_RST_EXT : Serial.println("ESP_RST_EXT"); logfile.println("ESP_RST_EXT"); break; + case ESP_RST_SW : Serial.println("ESP_RST_SW"); logfile.println("ESP_RST_SW"); break; + case ESP_RST_PANIC : Serial.println("ESP_RST_PANIC"); logfile.println("ESP_RST_PANIC"); break; + case ESP_RST_INT_WDT : Serial.println("ESP_RST_INT_WDT"); logfile.println("ESP_RST_INT_WDT"); break; + case ESP_RST_TASK_WDT : Serial.println("ESP_RST_TASK_WDT"); logfile.println("ESP_RST_TASK_WDT"); break; + case ESP_RST_WDT : Serial.println("ESP_RST_WDT"); logfile.println("ESP_RST_WDT"); break; + case ESP_RST_DEEPSLEEP : Serial.println("ESP_RST_DEEPSLEEP"); logfile.println("ESP_RST_DEEPSLEEP"); break; + case ESP_RST_BROWNOUT : Serial.println("ESP_RST_BROWNOUT"); logfile.println("ESP_RST_BROWNOUT"); break; + case ESP_RST_SDIO : Serial.println("ESP_RST_SDIO"); logfile.println("ESP_RST_SDIO"); break; + default : Serial.println("Reset resaon"); logfile.println("ESP ???"); break; + } + + //Serial.printf("Internal Total heap %d, internal Free Heap %d\n", ESP.getHeapSize(), ESP.getFreeHeap()); + //Serial.printf("SPIRam Total heap %d, SPIRam Free Heap %d\n", ESP.getPsramSize(), ESP.getFreePsram()); + + Serial.println("Reading the eprom ..."); + do_eprom_read(); + + // SD camera init + Serial.println("Mounting the SD card ..."); + esp_err_t card_err = init_sdcard(); + if (card_err != ESP_OK) { + Serial.printf("SD Card init failed with error 0x%x", card_err); + major_fail(); + return; + } + + devstr.toCharArray(devname, devstr.length()); // name of your camera for mDNS, Router, and filenames + + Serial.println("Try to get parameters from config.txt ..."); + read_config_file(); + + + char logname[50]; + sprintf(logname, "/%s%d.999.txt", devname, file_group); + Serial.printf("Creating logfile %s\n", logname); + logfile = SD_MMC.open(logname, FILE_WRITE); + + if (!logfile) { + Serial.println("Failed to open logfile for writing"); + } + if (IncludeInternet > 0) { + Serial.println("Starting the wifi ..."); + init_wifi(); + InternetOff = false; + } + + Serial.println("Setting up the camera ..."); + config_camera(); + + Serial.println("Checking SD for available space ..."); + delete_old_stuff(); + + digitalWrite(33, HIGH); // red light turns off when setup is complete + + if ( !InternetOff && IncludeInternet == 1) { + Serial.printf("Shutting off WiFi now \n\n"); + delay(1000); + WiFi.disconnect(); + InternetOff = true; + } + + if ( !InternetOff && IncludeInternet > 1) { + Serial.println("Starting Web Services ..."); + startCameraServer(); + } + + framebuffer = (uint8_t*)ps_malloc(1024 * 1024); // buffer to store a jpg in motion // needs to be larger for big frames from ov5640 + + Serial.println("Creating the_camera_loop_task"); + + wait_for_sd = xSemaphoreCreateBinary(); //xSemaphoreCreateMutex(); + sd_go = xSemaphoreCreateBinary(); //xSemaphoreCreateMutex(); + + // prio 3 - higher than the camera loop(), and the streaming + xTaskCreatePinnedToCore( the_camera_loop, "the_camera_loop", 3000, NULL, 6, &the_camera_loop_task, 0); // prio 3, core 0 //v56 core 1 as http dominating 0 ... back to 0, raise prio + + delay(100); + + // prio 4 - higher than the cam_loop(), and the streaming + xTaskCreatePinnedToCore( the_sd_loop, "the_sd_loop", 2000, NULL, 4, &the_sd_loop_task, 1); // prio 4, core 1 + + delay(200); + + boot_time = millis(); + + const char *strdate = ctime(&now); + logfile.println(strdate); + + filemgr.begin(); + filemgr.setBackGroundColor("Gray"); + Serial.print("Open Filemanager with http://"); + Serial.print(WiFi.localIP()); + Serial.print(":"); + Serial.print(filemanagerport); + Serial.print("/"); + Serial.println(); + Serial.println(" End of setup()\n\n"); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// the_sd_loop() +// + +void the_sd_loop (void* pvParameter) { + + Serial.print("the_sd_loop, core "); Serial.print(xPortGetCoreID()); + Serial.print(", priority = "); Serial.println(uxTaskPriorityGet(NULL)); + + while (1) { + xSemaphoreTake( sd_go, portMAX_DELAY ); // we wait for camera loop to tell us to go + another_save_avi( fb_curr); // do the actual sd wrte + xSemaphoreGive( wait_for_sd ); // tell camera loop we are done + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// the_camera_loop() + +void the_camera_loop (void* pvParameter) { + + Serial.print("the camera loop, core "); Serial.print(xPortGetCoreID()); + Serial.print(", priority = "); Serial.println(uxTaskPriorityGet(NULL)); + + frame_cnt = 0; + start_record_2nd_opinion = digitalRead(12); + start_record_1st_opinion = digitalRead(12); + start_record = 0; + + delay(1000); + + while (1) { + + // if (frame_cnt == 0 && start_record == 0) // do nothing + // if (frame_cnt == 0 && start_record == 1) // start a movie + // if (frame_cnt > 0 && start_record == 0) // stop the movie + // if (frame_cnt > 0 && start_record != 0) // another frame + + /////////////////// NOTHING TO DO ////////////////// + if (frame_cnt == 0 && start_record == 0) { + + // Serial.println("Do nothing"); + if (we_are_already_stopped == 0) Serial.println("\n\nDisconnect Pin 12 from GND to start recording.\n\n"); + we_are_already_stopped = 1; + delay(100); + + /////////////////// START A MOVIE ////////////////// + } else if (frame_cnt == 0 && start_record == 1) { + + //Serial.println("Ready to start"); + + we_are_already_stopped = 0; + + delete_old_stuff(); + + avi_start_time = millis(); + Serial.printf("\nStart the avi ... at %d\n", avi_start_time); + Serial.printf("Framesize %d, quality %d, length %d seconds\n\n", framesize, quality, avi_length); + logfile.printf("\nStart the avi ... at %d\n", avi_start_time); + logfile.printf("Framesize %d, quality %d, length %d seconds\n\n", framesize, quality, avi_length); + logfile.flush(); + + frame_cnt++; + + long wait_for_cam_start = millis(); + fb_curr = get_good_jpeg(); // should take zero time + wait_for_cam += millis() - wait_for_cam_start; + + start_avi(); + + wait_for_cam_start = millis(); + fb_next = get_good_jpeg(); // should take nearly zero time due to time spent writing header + wait_for_cam += millis() - wait_for_cam_start; + xSemaphoreGive( sd_go ); // trigger sd write to write first frame + + digitalWrite(33, frame_cnt % 2); // blink + + /////////////////// END THE MOVIE ////////////////// + } else if ( reboot_now || (frame_cnt > 0 && start_record == 0) || millis() > (avi_start_time + avi_length * 1000)) { // end the avi + + Serial.println("End the Avi"); + + xSemaphoreTake( wait_for_sd, portMAX_DELAY ); + esp_camera_fb_return(fb_curr); + + frame_cnt++; + fb_curr = fb_next; + fb_next = NULL; + + xSemaphoreGive( sd_go ); // save final frame of movie + + digitalWrite(33, frame_cnt % 2); + + xSemaphoreTake( wait_for_sd, portMAX_DELAY ); // wait for final frame of movie to be written + + esp_camera_fb_return(fb_curr); + fb_curr = NULL; + + end_avi(); // end the movie + + digitalWrite(33, HIGH); // light off + + avi_end_time = millis(); + + float fps = 1.0 * frame_cnt / ((avi_end_time - avi_start_time) / 1000) ; + + Serial.printf("End the avi at %d. It was %d frames, %d ms at %.2f fps...\n", millis(), frame_cnt, avi_end_time, avi_end_time - avi_start_time, fps); + logfile.printf("End the avi at %d. It was %d frames, %d ms at %.2f fps...\n", millis(), frame_cnt, avi_end_time, avi_end_time - avi_start_time, fps); + + if (!reboot_now) frame_cnt = 0; // start recording again on the next loop + + /////////////////// ANOTHER FRAME ////////////////// + } else if (frame_cnt > 0 && start_record != 0) { // another frame of the avi + + //Serial.println("Another frame"); + + current_frame_time = millis(); + if (current_frame_time - last_frame_time < frame_interval) { + delay(frame_interval - (current_frame_time - last_frame_time)); // delay for timelapse + } + last_frame_time = millis(); + + frame_cnt++; + + long delay_wait_for_sd_start = millis(); + xSemaphoreTake( wait_for_sd, portMAX_DELAY ); // make sure sd writer is done + delay_wait_for_sd += millis() - delay_wait_for_sd_start; + + esp_camera_fb_return(fb_curr); + + fb_curr = fb_next; // we will write a frame, and get the camera preparing a new one + + xSemaphoreGive( sd_go ); // write the frame in fb_curr + + long wait_for_cam_start = millis(); + fb_next = get_good_jpeg(); // should take near zero, unless the sd is faster than the camera, when we will have to wait for the camera + wait_for_cam += millis() - wait_for_cam_start; + + digitalWrite(33, frame_cnt % 2); + + if (frame_cnt % 100 == 10 ) { // print some status every 100 frames + if (frame_cnt == 10) { + bytes_before_last_100_frames = movi_size; + time_before_last_100_frames = millis(); + most_recent_fps = 0; + most_recent_avg_framesize = 0; + } else { + + most_recent_fps = 100.0 / ((millis() - time_before_last_100_frames) / 1000.0) ; + most_recent_avg_framesize = (movi_size - bytes_before_last_100_frames) / 100; + + if (Lots_of_Stats) { + Serial.printf("So far: %04d frames, in %6.1f seconds, for last 100 frames: avg frame size %6.1f kb, %.2f fps ...\n", frame_cnt, 0.001 * (millis() - avi_start_time), 1.0 / 1024 * most_recent_avg_framesize, most_recent_fps); + logfile.printf("So far: %04d frames, in %6.1f seconds, for last 100 frames: avg frame size %6.1f kb, %.2f fps ...\n", frame_cnt, 0.001 * (millis() - avi_start_time), 1.0 / 1024 * most_recent_avg_framesize, most_recent_fps); + } + + total_delay = 0; + + bytes_before_last_100_frames = movi_size; + time_before_last_100_frames = millis(); + } + } + } + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// loop() - loop runs at low prio, so I had to move it to the task the_camera_loop at higher priority + +void loop() { + long run_time = millis() - boot_time; + + start_record_2nd_opinion = start_record_1st_opinion; + start_record_1st_opinion = digitalRead(12); + + if (start_record_1st_opinion == start_record_2nd_opinion ) { + if (start_record_1st_opinion > 0 ) start_record = 1; + else start_record = 0; + } + + int read13 = digitalRead(13); + delay(20); + read13 = read13 + digitalRead(13); // get 2 opinions to help poor soldering + + if (IncludeInternet == 4) { // 4 is oppoiste of 3, so, flip read13 + if (read13 > 0) { + read13 = 0; + } else { + read13 = 2; + } + } + + if (IncludeInternet > 1) { + if (read13 == 2 && !InternetOff) { + Serial.println("Shutting off wifi ..."); logfile.println("Shutting off wifi ..."); + stopCameraServer(); + WiFiManager wm; + wm.disconnect(); + InternetOff = true; + } + if (read13 == 0 && InternetOff) { + Serial.println("Starting the wifi ..."); logfile.println("Starting the wifi ..."); + init_wifi(); + Serial.println("Starting Web Services ..."); + startCameraServer(); + InternetOff = false; + } + } + + if (reboot_now == true) { + Serial.println(" \n\n\n Rebooting ... \n\n\n"); + delay(2000); + ESP.restart(); + } + + filemgr.handleClient(); //v56 + delay(200); + +} diff --git a/v58/ESPxWebFlMgr.cpp b/v58/ESPxWebFlMgr.cpp new file mode 100644 index 0000000..31a2c57 --- /dev/null +++ b/v58/ESPxWebFlMgr.cpp @@ -0,0 +1,902 @@ +// mods by James Zahary Dec 28, 2021 https://github.com/jameszah/ESPxWebFlMgr +// based on https://github.com/holgerlembke/ESPxWebFlMgr + +#include +#include +#include "ESPxWebFlMgr.h" +#include "ESPxWebFlMgrWp.h" +#include "ESPxWebFlMgrWpF.h" + +#include "crc32.h" + +#ifdef ESP8266 +#include +#include +#endif + +#ifdef ESP32 +#include +#include +#include //jz #include +#include +#endif + + +String getContentType(const String& path) { +#ifdef ESP8266 + return mime::getContentType(path); +#endif +#ifdef ESP32 + return StaticRequestHandler::getContentType(path); +#endif +} + + +//***************************************************************************************************** +ESPxWebFlMgr::ESPxWebFlMgr(word port) { + _Port = port; +} + +//***************************************************************************************************** +ESPxWebFlMgr::~ESPxWebFlMgr() { + end(); +} + +//***************************************************************************************************** +void ESPxWebFlMgr::begin() { +#ifdef ESP8266 + fileManager = new ESP8266WebServer(_Port); +#endif +#ifdef ESP32 + fileManager = new WebServer(_Port); +#endif + +#ifdef fileManagerServerStaticsInternally + fileManager->on("/", HTTP_GET, std::bind(&ESPxWebFlMgr::fileManagerIndexpage, this)); + fileManager->on("/fm.css", HTTP_GET, std::bind(&ESPxWebFlMgr::fileManagerCSS, this)); + fileManager->on("/fm.js", HTTP_GET, std::bind(&ESPxWebFlMgr::fileManagerJS, this)); +#endif + fileManager->on("/bg.css", HTTP_GET, std::bind(&ESPxWebFlMgr::fileManagerGetBackGround, this)); + + fileManager->on("/i", HTTP_GET, std::bind(&ESPxWebFlMgr::fileManagerFileListInsert, this)); + fileManager->on("/c", HTTP_GET, std::bind(&ESPxWebFlMgr::fileManagerCommandExecutor, this)); + fileManager->on("/e", HTTP_GET, std::bind(&ESPxWebFlMgr::fileManagerFileEditorInsert, this)); + // file receiver with attached file to form + fileManager->on("/r", HTTP_POST, std::bind(&ESPxWebFlMgr::fileManagerReceiverOK, this), + std::bind(&ESPxWebFlMgr::fileManagerReceiver, this)); + + fileManager->onNotFound(std::bind(&ESPxWebFlMgr::fileManagerNotFound, this)); + + fileManager->begin(); +} + +//***************************************************************************************************** +void ESPxWebFlMgr::end() { + if (fileManager) { + delete fileManager; + fileManager = NULL; + } +} + +//***************************************************************************************************** +void ESPxWebFlMgr::handleClient() { + if (fileManager) { + fileManager->handleClient(); + } +} + +//***************************************************************************************************** +void ESPxWebFlMgr::setViewSysFiles(bool vsf) { + _ViewSysFiles = vsf; +} + +//***************************************************************************************************** +bool ESPxWebFlMgr::getViewSysFiles(void) { + return _ViewSysFiles; +} + +//***************************************************************************************************** +void ESPxWebFlMgr::setSysFileStartPattern(String sfsp) { + _SysFileStartPattern = sfsp; +} + +//***************************************************************************************************** +String ESPxWebFlMgr::getSysFileStartPattern(void) { + return _SysFileStartPattern; +} + + +//***************************************************************************************************** +// privates start here +//***************************************************************************************************** +//***************************************************************************************************** +//***************************************************************************************************** +void ESPxWebFlMgr::fileManagerGetBackGround(void) { + fileManager->send(200, F("text/css"), ".background {background-color: " + _backgroundColor + ";}"); +} + +//***************************************************************************************************** +void ESPxWebFlMgr::setBackGroundColor(const String backgroundColor) { + _backgroundColor = backgroundColor; +} + +//***************************************************************************************************** +void ESPxWebFlMgr::fileManagerNotFound(void) { + String uri = fileManager->uri(); + + if (uri == "/") { + uri = "/fm.html"; + } + + String contentTyp = getContentType(uri); + + if (ESPxWebFlMgr_FileSystem.exists(uri)) { + File f = ESPxWebFlMgr_FileSystem.open(uri, "r"); + if (f) { + if (fileManager->streamFile(f, contentTyp) != f.size()) { + // Serial.println(F("Sent less data than expected!")); + // We should panic a little bit. + } + f.close(); + } + } else + { + fileManager->send(404, F("text/plain"), F("URI not found.")); + } +} + +//***************************************************************************************************** +String ESPxWebFlMgr::dispIntDotted(size_t i) { + String res = ""; + while (i != 0) { + int r = i % 1000; + res = String(i % 1000) + res; + i /= 1000; + if ( (r < 100) && (i > 0) ) { + res = "0" + res; + if (r < 10) { + res = "0" + res; + } + } + if (i != 0) { + res = "," + res; //jz dot to comma ;-) + } + } + return res; +} + +//***************************************************************************************************** +size_t ESPxWebFlMgr::totalBytes(void) { +#ifdef ESP8266 + FSInfo info; + ESPxWebFlMgr_FileSystem.info(info); + return info.totalBytes; +#endif + +#ifdef ESP32 + return (ESPxWebFlMgr_FileSystem.totalBytes() / 1024); +#endif +} + +//***************************************************************************************************** +size_t ESPxWebFlMgr::usedBytes(void) { +#ifdef ESP8266 + FSInfo info; + ESPxWebFlMgr_FileSystem.info(info); + return info.usedBytes; +#endif + +#ifdef ESP32 + return (ESPxWebFlMgr_FileSystem.usedBytes() / 1024); +#endif +} + +//***************************************************************************************************** +String ESPxWebFlMgr::dispFileString(size_t fs) { + if (fs < 0) { + return "-0"; + } + + if (fs == 0) { + return "0 kB"; + } + + if (fs < 1000) { + return String(fs) + " kB"; + } + // switch from bytes to kilobytes due to 4gb+ sd cards //jz + //String units[] = { "B", "kB", "MB", "GB", "TB" }; + String units[] = { "kB", "MB", "GB", "TB" }; + int digitGroups = (int) (log10(fs) / log10(1024)); + + //return String(fs / pow(1024, digitGroups)) + " " + units[digitGroups] + " (" + dispIntDotted(fs) + " kB)"; + return String(fs / pow(1024, digitGroups)) + " " + units[digitGroups] ; +} + +//***************************************************************************************************** +void ESPxWebFlMgr::fileManagerIndexpage(void) { + fileManager->send(200, F("text/html"), FPSTR(ESPxWebFlMgrWpindexpage)); + delay(1); +} + +//***************************************************************************************************** +void ESPxWebFlMgr::fileManagerJS(void) { + fileManager->send(200, F("text/javascript"), FPSTR(ESPxWebFlMgrWpjavascript)); + delay(1); +} + +//***************************************************************************************************** +void ESPxWebFlMgr::fileManagerCSS(void) { + fileManager->send(200, F("text/css"), FPSTR(ESPxWebFlMgrWpcss)); + delay(1); +} + +//***************************************************************************************************** +String ESPxWebFlMgr::CheckFileNameLengthLimit(String fn) { + // SPIFFS file name limit. Is there a way to get the max length from SPIFFS/LittleFS? + // SPIFFS_OBJ_NAME_LEN is spiffs.... but not very clean. + if (fn.length() > 32) { + int len = fn.length(); + fn.remove(29); + fn += String(len); + } + + return fn; +} + +//***************************************************************************************************** +String ESPxWebFlMgr::colorline(int i) { + if (i % 2 == 0) { + return "ccu"; + } else { + return "ccg"; + } +} + +//***************************************************************************************************** +boolean ESPxWebFlMgr::allowAccessToThisFile(const String filename) { + return ! filename.startsWith(_SysFileStartPattern); +} + + +//***************************************************************************************************** +// jz kludge for switching folders on the sd card +String subdir = "/"; + +//***************************************************************************************************** +//[make FS from esp8266 and esp32 compatible]********************************************************** +// this is the way MS DOS 3.x (?) did it with Int21 findfirst/findnext/findclose +#ifdef ESP8266 +File ESPxWebFlMgr::nextFile(Dir &dir) { + dir.next(); + return dir.openFile("r"); +} +File ESPxWebFlMgr::firstFile(Dir &dir) { + dir = ESPxWebFlMgr_FileSystem.openDir("/"); + return nextFile(dir); +} +#endif +#ifdef ESP32 +#define Dir File +File ESPxWebFlMgr::nextFile(Dir &dir) { + return dir.openNextFile(); +} +File ESPxWebFlMgr::firstFile(Dir &dir) { + dir = ESPxWebFlMgr_FileSystem.open(subdir, "r"); //jz dir = ESPxWebFlMgr_FileSystem.open("/", "r"); + return nextFile(dir); +} +#endif + +//***************************************************************************************************** +void ESPxWebFlMgr::fileManagerFileListInsert(void) { // must get arg with /i to list that folder + fileManager->setContentLength(CONTENT_LENGTH_UNKNOWN); + fileManager->send(200, F("text/html"), String()); + + fileManager->sendContent(F("
")); + + bool gzipperexists = ( (ESPxWebFlMgr_FileSystem.exists("/gzipper.js.gz")) || + (ESPxWebFlMgr_FileSystem.exists("/gzipper.js")) ); + + //Serial.println(fileManager->args()); + //Serial.println(fileManager->argName(0)); + //Serial.println(fileManager->arg(0)); + + if ( (fileManager->args() == 1) && (fileManager->argName(0) == "subdir") ) { + subdir = fileManager->arg(0); + //Serial.print("Arg: "); Serial.println(fileManager->arg(0)); + + /* + if (fileManager->arg(0) == "/"){ + subdir = "/"; + } else if (subdir == "/") { + subdir = fileManager->arg(0); + } else { + subdir = fileManager->arg(0); + } + Serial.print("New subdir: "); Serial.println(subdir); + */ + } else { + subdir = "/"; + } + //Serial.print("Final subdir: "); Serial.println(subdir); + + // first file is "go to root" + + String fcd; + String direct = "ccd"; //jz bland color for directory + String fn = "/"; + fcd = "
  " + fn + " - GOTO ROOT DIR -" + "
"; + + fcd += "
 " + dispIntDotted(0) + " 
"; + fcd += "
 "; + fcd += "  
"; + + fileManager->sendContent(fcd); + + + // List files + int i = 0; + Dir dir; + File file = firstFile(dir); + while (file) { + String fn = file.name(); + /* + Serial.print("FN: >"); + Serial.print(fn); + Serial.print("<"); + Serial.println(); + */ + if ( (_ViewSysFiles) || (allowAccessToThisFile(fn)) ) { + /* + String fc = "
  " + fn + "
"; + */ + + String fc; + String nsd; + if (subdir == "/"){ + nsd = "/"; + } else { + nsd = subdir + "/"; + } + if (file.isDirectory()) { + String direct = "ccd"; //jz bland color for directory + fc = "
  " + fn + " - DIR -" + "
"; + + } else { + //Serial.println(subdir); + //Serial.println(fn); + fc = "
  " + fn + "
"; + } + + // File f = dir.openFile("r"); + fc += "
 " + dispIntDotted(file.size()) + " 
"; + + fc += "
 " + " " + " "; + + // no gziped version and (zipper or gziped zipper) exists + if ( (! (fn.endsWith(".gz")) ) && gzipperexists) { + fc += " "; + } + // for editor +#ifndef fileManagerEditEverything + String contentTyp = getContentType(fn); + if ( (contentTyp.startsWith("text/")) || + (contentTyp.startsWith("application/j")) ) // boldly assume: json, javascript and everything else is edible.... +#endif + { + fc += " "; + } + + fc += "  
"; + + fileManager->sendContent(fc); + i++; + } + file = nextFile(dir); + } + + // fileManager->sendContent(""); + + String sinfo = "  Size: " + + dispFileString(totalBytes()) + + ", used: " + + dispFileString(usedBytes()); + /* + fileManager->sendContent(F(" FS blocksize: ")); + fileManager->sendContent(String(info.blockSize)); + fileManager->sendContent(F(", pageSize: ")); + fileManager->sendContent(String(info.pageSize)); + */ + fileManager->sendContent(F("
")); + + fileManager->sendContent(F("##")); + fileManager->sendContent(sinfo); + + fileManager->sendContent(""); + delay(1); +} + +//***************************************************************************************************** +String ESPxWebFlMgr::escapeHTMLcontent(String html) { + //html.replace("<","<"); + //html.replace(">",">"); + html.replace("&", "&"); + + return html; +} + +// in place editor +//***************************************************************************************************** +void ESPxWebFlMgr::fileManagerFileEditorInsert(void) { + //Serial.println("Edit"); + + if ( (fileManager->args() == 1) && (fileManager->argName(0) == "edit") ) { + + String fn = "/" + fileManager->arg(0); + if ( (! _ViewSysFiles) && (!allowAccessToThisFile(fn)) ) { + fileManager->send(404, F("text/plain"), F("Illegal.")); + return; + } + + fileManager->setContentLength(CONTENT_LENGTH_UNKNOWN); + fileManager->send(200, F("text/html"), String()); + + fileManager->sendContent(ESPxWebFlMgrWpFormIntro); + + if (ESPxWebFlMgr_FileSystem.exists(subdir + "/" + fn)) { + File f = ESPxWebFlMgr_FileSystem.open(subdir + "/" + fn, "r"); + if (f) { + do { + String l = f.readStringUntil('\n') + '\n'; + l = escapeHTMLcontent(l); + fileManager->sendContent(l); + } while (f.available()); + f.close(); + } + } + + fileManager->sendContent(ESPxWebFlMgrWpFormExtro1); + fileManager->sendContent(fn); + fileManager->sendContent(ESPxWebFlMgrWpFormExtro2); + + fileManager->sendContent(""); + } else { + fileManager->send(404, F("text/plain"), F("Illegal.")); + } + + delay(1); +} + +// Drag and Drop +// https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/File_drag_and_drop +// https://www.ab-heute-programmieren.de/drag-and-drop-upload-mit-html5/#Schritt_3_Eine_Datei_hochladen +//***************************************************************************************************** +void ESPxWebFlMgr::fileManagerReceiverOK(void) { + // Serial.println("fileManagerReceiverOK"); + fileManager->send(200); + delay(1); +} + +//***************************************************************************************************** +void ESPxWebFlMgr::fileManagerReceiver(void) { + // Serial.println("fileManagerReceiver"); + + HTTPUpload& upload = fileManager->upload(); + // Serial.println("Server upload Status: " + String(upload.status)); + + if (upload.status == UPLOAD_FILE_START) { + String filename = upload.filename; + if (!filename.startsWith("/")) { + filename = "/" + filename; + } + // Serial.print("handleFileUpload Name: "); + // Serial.println(filename); + + if (! ( (_ViewSysFiles) || (allowAccessToThisFile(filename)) ) ) { + filename = "/illegalfilename"; + } + + // cut length + filename = CheckFileNameLengthLimit(filename); + + fsUploadFile = ESPxWebFlMgr_FileSystem.open(subdir + filename, "w"); + } else if (upload.status == UPLOAD_FILE_WRITE) { + // Serial.print("handleFileUpload Data: "); + // Serial.println(upload.currentSize); + if (fsUploadFile) + fsUploadFile.write(upload.buf, upload.currentSize); + } else if (upload.status == UPLOAD_FILE_END) { + if (fsUploadFile) { + fsUploadFile.close(); + // fsUploadFile = NULL; + } + // Serial.print("handleFileUpload Size: "); + // Serial.println(upload.totalSize); + } + delay(1); +} + +struct __attribute__ ((__packed__)) zipFileHeader { + uint32_t signature; // 0x04034b50; + uint16_t versionneeded; + uint16_t bitflags; + uint16_t comp_method; + uint16_t lastModFileTime; + uint16_t lastModFileDate; + uint32_t crc_32; + uint32_t comp_size; + uint32_t uncompr_size; + uint16_t fname_len; + uint16_t extra_field_len; +}; + +struct __attribute__ ((__packed__)) zipDataDescriptor { + uint32_t signature; // 0x08074b50 + uint32_t crc32; + uint32_t comp_size; + uint32_t uncompr_size; +}; + +struct __attribute__ ((__packed__)) zipEndOfDirectory { + uint32_t signature; // 0x06054b50; + uint16_t nrofdisks; + uint16_t diskwherecentraldirectorystarts; + uint16_t nrofcentraldirectoriesonthisdisk; + uint16_t totalnrofcentraldirectories; + uint32_t sizeofcentraldirectory; + uint32_t ofsetofcentraldirectoryrelativetostartofarchiv; + uint16_t commentlength; +}; + +struct __attribute__ ((__packed__)) zipCentralDirectoryFileHeader { + uint32_t signature; // 0x02014b50 + uint16_t versionmadeby; + uint16_t versionneededtoextract; + uint16_t flag; + uint16_t compressionmethode; + uint16_t lastModFileTime; + uint16_t lastModFileDate; + uint32_t crc_32; + uint32_t comp_size; + uint32_t uncompr_size; + uint16_t fname_len; + uint16_t extra_len; + uint16_t comment_len; + uint16_t diskstart; + uint16_t internalfileattr; + uint32_t externalfileattr; + uint32_t relofsoflocalfileheader; + // nun filename, extra field, comment +}; + +//***************************************************************************************************** +int ESPxWebFlMgr::WriteChunk(const char* b, size_t l) { + // Serial.print(" Chunk: " + String(l) + " "); + + const char * footer = "\r\n"; + char chunkSize[11]; + sprintf(chunkSize, "%zx\r\n", l); + fileManager->client().write(chunkSize, strlen(chunkSize)); + fileManager->client().write(b, l); + fileManager->client().write(footer, 2); + + return strlen(chunkSize) + l + 2; +} + +//***************************************************************************************************** +/* https://en.wikipedia.org/wiki/Zip_(file_format) + https://www.fileformat.info/tool/hexdump.htm + https://hexed.it/?hl=de + HxD https://mh-nexus.de/de/ + + This code needs some memory: + 4 * + copybuffersize + + Uses no compression, because, well, code size. Should be good for 4mb. +*/ +void ESPxWebFlMgr::getAllFilesInOneZIP(void) { + const byte copybuffersize = 100; + + fileManager->setContentLength(CONTENT_LENGTH_UNKNOWN); + // fileManager->sendHeader(F("Content-Type"), F("text/text")); + // fileManager->sendHeader(F("Transfer-Encoding"), F("chunked")); + // fileManager->sendHeader(F("Connection"), F("close")); + fileManager->sendHeader(F("Content-Disposition"), F("attachment; filename=alles.zip")); + fileManager->sendHeader(F("Content-Transfer-Encoding"), F("binary")); + fileManager->send(200, F("application/octet-stream"), ""); + + // Pass 0: count files + int files = 0; + { + Dir dir; + File file = firstFile(dir); + while (file) { + String fn = file.name(); + if (!file.isDirectory() && (file.size() != 0)) { //jz + if ( (_ViewSysFiles) || (allowAccessToThisFile(fn)) ) { + files++; + } + } + file = nextFile(dir); + } + //Serial.println("Files: " + String(files)); + } + // Store the crcs + uint32_t crc_32s[files]; + + // Pass 1: local headers + file + { + zipFileHeader zip; + zip.signature = 0x04034b50; + zip.versionneeded = 0; + zip.bitflags = 1 << 3; + zip.comp_method = 0; // stored + zip.lastModFileTime = 0x4fa5; + zip.lastModFileDate = 0xe44e; + zip.extra_field_len = 0; + + int i = 0; + Dir dir; + File file = firstFile(dir); + while (file) { + String fn = file.name(); + if (!file.isDirectory() && (file.size() != 0) ) { //jz + if ( (_ViewSysFiles) || (allowAccessToThisFile(fn)) ) { + if (fn.indexOf("/") == 0) { + fn.remove(0, 1); // "/" filenames beginning with "/" dont work for Windows.... + } + + zip.comp_size = 0; + zip.uncompr_size = 0; + zip.crc_32 = 0; + zip.fname_len = fn.length(); + WriteChunk((char*)&zip, sizeof(zip)); + WriteChunk(fn.c_str(), zip.fname_len); + + //Serial.print("Send: " + fn); + // File f = dir.open("r",FILE_READ); + int len = file.size(); + //Serial.print("\nsending "); Serial.print(fn); + //Serial.print(" len is "); Serial.println(len); + + // send crc+len later... + zipDataDescriptor datadiscr; + datadiscr.signature = 0x08074b50; + datadiscr.comp_size = len; + datadiscr.uncompr_size = len; + + const char * footer = "\r\n"; + char chunkSize[11]; + sprintf(chunkSize, "%zx\r\n", len); + fileManager->client().write(chunkSize, strlen(chunkSize)); + + { // pff. + CRC32 crc; + byte b[copybuffersize]; + int lenr = len; + while (lenr > 0) { + byte r = (lenr > copybuffersize) ? copybuffersize : lenr; + file.read(b, r); + crc.update(b, r); + fileManager->client().write(b, r); + lenr -= r; + // Serial.print(lenr);Serial.print(","); //jz + } + //Serial.println(" done"); + datadiscr.crc32 = crc.finalize(); + crc_32s[i] = datadiscr.crc32; + } + + fileManager->client().write(footer, 2); + + WriteChunk((char*)&datadiscr, sizeof(datadiscr)); + + // f.close(); + i++; + /** / + Serial.print(" "); + Serial.print(l); + Serial.println(); + /**/ + } + } + file = nextFile(dir); + } + + } + + // Pass 2: Central directory Structur + { + zipEndOfDirectory eod; + eod.signature = 0x06054b50; + eod.nrofdisks = 0; + eod.diskwherecentraldirectorystarts = 0; + eod.nrofcentraldirectoriesonthisdisk = 0; + eod.totalnrofcentraldirectories = 0; + eod.sizeofcentraldirectory = 0; + eod.ofsetofcentraldirectoryrelativetostartofarchiv = 0; + eod.commentlength = 0; + + zipCentralDirectoryFileHeader CDFH; + + CDFH.signature = 0x02014b50; + CDFH.versionmadeby = 0; + CDFH.versionneededtoextract = 0; + CDFH.flag = 0; + CDFH.compressionmethode = 0; // Stored + CDFH.lastModFileTime = 0x4fa5; + CDFH.lastModFileDate = 0xe44e; + CDFH.extra_len = 0; + CDFH.comment_len = 0; + CDFH.diskstart = 0; + CDFH.internalfileattr = 0x01; + CDFH.externalfileattr = 0x20; + CDFH.relofsoflocalfileheader = 0; + + int i = 0; + + Dir dir; + File file = firstFile(dir); + while (file) { + String fn = file.name(); + if (!file.isDirectory() && (file.size() != 0)) { //jz + if ( (_ViewSysFiles) || (allowAccessToThisFile(fn)) ) { + if (fn.indexOf("/") == 0) { + fn.remove(0, 1); // "/" filenames beginning with "/" dont work for Windows.... + } + // Serial.print("CDFH: " + fn); + // File f = dir.open("r",FILE_READ); + int len = file.size(); + + //Serial.print("\nsending "); Serial.print(fn); //jz + //Serial.print(" len is "); Serial.println(len); + + CDFH.comp_size = len; + CDFH.uncompr_size = len; + CDFH.fname_len = fn.length(); + CDFH.crc_32 = crc_32s[i]; + + // f.close(); + + WriteChunk((char*)&CDFH, sizeof(CDFH)); + WriteChunk(fn.c_str(), CDFH.fname_len); + + int ofs = sizeof(zipFileHeader) + len + CDFH.fname_len + sizeof(zipDataDescriptor); + + // next position + CDFH.relofsoflocalfileheader += ofs; + + // book keeping + eod.nrofcentraldirectoriesonthisdisk++; + eod.totalnrofcentraldirectories++; + eod.ofsetofcentraldirectoryrelativetostartofarchiv += ofs; + eod.sizeofcentraldirectory += sizeof(CDFH) + CDFH.fname_len; + + i++; + } + } + file = nextFile(dir); + } + + // Serial.print("EOD: "); + WriteChunk((char*)&eod, sizeof(eod)); + // Serial.println(); + } + + const char * endchunk = "0\r\n\r\n"; + fileManager->client().write(endchunk, 5); + + fileManager->sendContent(""); + delay(1); +} + +//***************************************************************************************************** +void ESPxWebFlMgr::fileManagerCommandExecutor(void) { + // https://www.youtube.com/watch?v=KSxTxynXiBs + /* + for (uint8_t i = 0; i < fileManager->args(); i++) { + Serial.print(i); + Serial.print(" "); + Serial.print(fileManager->argName(i)); + Serial.print(": "); + Serial.print(fileManager->arg(i)); + Serial.println(); + } + */ + + // no Args: DIE! + if (fileManager->args() == 0) { + return; + } + + // +--++--++--++--++--++--++--++--++--++--++--++--++--++--++--+ + // one arg, "za", zip all and download + if ( (fileManager->args() == 1) && (fileManager->argName(0) == "za") ) { + getAllFilesInOneZIP(); + // does it all + return; + } + + // +--++--++--++--++--++--++--++--++--++--++--++--++--++--++--+ + // one arg, "dwn", download + // must happen in the context of the webpage... thus via "window.location.href="/c?dwn="+filename;" + if ( (fileManager->args() == 1) && (fileManager->argName(0) == "dwn") ) { + String fn = fileManager->arg(0); + Serial.println(fn); + if ( (_ViewSysFiles) || (allowAccessToThisFile(fn)) ) { + //Serial.println("allowed"); + File f = ESPxWebFlMgr_FileSystem.open("/" + fn, "r"); // add slash for esp32_arduino 2.0 + if (f) { + //Serial.println("got it open"); + fileManager->sendHeader(F("Content-Type"), F("text/text")); + fileManager->sendHeader(F("Connection"), F("close")); + //Serial.print(">");Serial.print(fn);Serial.println("<"); + //Serial.println(fn.indexOf("/")); + if (fn.indexOf("/") == 0) { + fileManager->sendHeader(F("Content-Disposition"), "attachment; filename=" + fn.substring(1)); + } else { + fileManager->sendHeader(F("Content-Disposition"), "attachment; filename=" + fn); + } + fileManager->sendHeader(F("Content-Transfer-Encoding"), F("binary")); + if (fileManager->streamFile(f, "application/octet-stream") != f.size()) { + Serial.println(F("Sent less data than expected!")); + } + f.close(); + return; + } else { + Serial.print("Could not open file "); Serial.println(fn); + } + } + } + + // +--++--++--++--++--++--++--++--++--++--++--++--++--++--++--+ + // one arg, "opd", opendirectory + if ( (fileManager->args() == 1) && (fileManager->argName(0) == "opd") ) { + String fn = fileManager->arg(0); + if ( (_ViewSysFiles) || (allowAccessToThisFile(fn)) ) { + delay(1); + } + } + + // +--++--++--++--++--++--++--++--++--++--++--++--++--++--++--+ + // one arg, "del", delete + if ( (fileManager->args() == 1) && (fileManager->argName(0) == "del") ) { + String fn = fileManager->arg(0); + if ( (_ViewSysFiles) || (allowAccessToThisFile(fn)) ) { + ESPxWebFlMgr_FileSystem.remove( subdir + "/" + fn); // Add slash + } + } + + // +--++--++--++--++--++--++--++--++--++--++--++--++--++--++--+ + // one arg, "ren", rename + if ( (fileManager->args() == 2) && (fileManager->argName(0) == "ren") ) { + String fn = fileManager->arg(0); + if ( (_ViewSysFiles) || (allowAccessToThisFile(fn)) ) { + String fn2 = CheckFileNameLengthLimit(fileManager->arg(1)); + if ( (_ViewSysFiles) || (allowAccessToThisFile(fn2)) ) { + //Serial.println(fn); + //Serial.println(fn2); + ESPxWebFlMgr_FileSystem.rename( subdir + "/" + fn, subdir + "/" + fn2); + } + } + } + + // dummy answer + fileManager->send(200, "text/plain", ""); + delay(1); +} diff --git a/v58/ESPxWebFlMgr.h b/v58/ESPxWebFlMgr.h new file mode 100644 index 0000000..b99963e --- /dev/null +++ b/v58/ESPxWebFlMgr.h @@ -0,0 +1,161 @@ +// mods by James Zahary Dec 28, 2021 https://github.com/jameszah/ESPxWebFlMgr +// based on https://github.com/holgerlembke/ESPxWebFlMgr + +// inline guard. Did I mention that c/c++ is broken by design? +#ifndef ESPxWebFlMgr_h +#define ESPxWebFlMgr_h + +/* + Changes + V1.03 + x removed all SPIFFS from ESP32 version, switched fully to LittleFS + x fixed rename+delete for ESP32+LittleFS (added "/") + + V1.02 + x fixed the way to select the file system by conditional defines + + V1.01 + + added file name progress while uploading + x fixed error in ZIP file structure (zip.bitflags needs a flag) + + V1.00 + + out of V0.9998... + + ESP8266: LittleFS is default + + javascript: added "msgline();" + + javascript: added "Loading..." as a not-working-hint to show that Javascript is disabled + + cleaning up the "/"-stuff (from SPIFF with leading "/" to LittleFS without...) + + Warning: esp8266 2.7.4 has an error in mime::getContentType(path) for .TXT. Fix line 65 is { kTxtSuffix, kTxt }, + + review of "edit file", moved some stuff to ESPxWebFlMgrWpF.h +*/ + +#include +#include + +// file system default for esp8266 is LittleFS, for ESP32 it is SPIFFS (no time to check...) + +#ifdef ESP8266 + #include + #include + #include + // + #include + #define ESPxWebFlMgr_FileSystem LittleFS + /* + #include + #define ESPxWebFlMgr_FileSystem SPIFFS + */ +#endif + +#ifdef ESP32 + #include + #include + #include + #include //jz #include + #define ESPxWebFlMgr_FileSystem SD_MMC //jz #define ESPxWebFlMgr_FileSystem LittleFS +#endif + + +#ifndef ESPxWebFlMgr_FileSystem +#pragma message ("ESPxWebFlMgr_FileSystem not defined.") +#endif + +/* undefine this to save about 10k code space. + it requires to put the files from "/filemanager" into the FS. No free lunch. +*/ +#define fileManagerServerStaticsInternally + +// will show the Edit-Button for every file type, even binary and such. +//#define fileManagerEditEverything + +class ESPxWebFlMgr { + private: + word _Port ; +#ifdef ESP8266 + ESP8266WebServer * fileManager = NULL; +#endif +#ifdef ESP32 + WebServer * fileManager = NULL; +#endif + bool _ViewSysFiles = false; + String _SysFileStartPattern = "/."; + File fsUploadFile; + String _backgroundColor = "black"; + + void fileManagerNotFound(void); + String dispIntDotted(size_t i); + String dispFileString(size_t fs); + String CheckFileNameLengthLimit(String fn); + + // the webpage + void fileManagerIndexpage(void); + void fileManagerJS(void); + void fileManagerCSS(void); + void fileManagerGetBackGround(void); + + // javascript xmlhttp includes + String colorline(int i); + String escapeHTMLcontent(String html); + void fileManagerFileListInsert(void); + void fileManagerFileEditorInsert(void); + boolean allowAccessToThisFile(const String filename); + void fileManagerCommandExecutor(void); + void fileManagerReceiverOK(void); + void fileManagerReceiver(void); + + // Zip-File uncompressed/stored + void getAllFilesInOneZIP(void); + int WriteChunk(const char* b, size_t l); + + // helper: fs.h from esp32 and esp8266 don't have a compatible solution + // for getting a file list from a directory +#ifdef ESP32 +#define Dir File +#endif + File nextFile(Dir &dir); + File firstFile(Dir &dir); + // and not to get this data about usage... + size_t totalBytes(void); + size_t usedBytes(void); + + public: + ESPxWebFlMgr(word port); + virtual ~ESPxWebFlMgr(); + + void begin(); + void end(); + virtual void handleClient(); + + // This must be called before the webpage is loaded in the browser... + // must be a valid css color name, see https://en.wikipedia.org/wiki/Web_colors + void setBackGroundColor(const String backgroundColor); + + void setViewSysFiles(bool vsf); + bool getViewSysFiles(void); + + void setSysFileStartPattern(String sfsp); + String getSysFileStartPattern(void); +}; + +#endif + +/* + History + + -- 2019-07-07 + + Renamed to ESPxWebFlMgr and made it work with esp32 and esp8266 + + separated file manager web page, "build script" to generate it + + -- 2019-07-06 + + "Download all files" creates a zip file from all files and downloads it + + option to set background color + - html5 fixes + + -- 2019-07-03 + + Public Release on https://github.com/holgerlembke/ESP8266WebFlMgr + + + Things to do + + ?? unify file system access for SPIFFS, LittleFS and SDFS + +*/ diff --git a/v58/ESPxWebFlMgrWp.h b/v58/ESPxWebFlMgrWp.h new file mode 100644 index 0000000..02715e8 --- /dev/null +++ b/v58/ESPxWebFlMgrWp.h @@ -0,0 +1,536 @@ +// mods by James Zahary Dec 28, 2021 https://github.com/jameszah/ESPxWebFlMgr +// based on https://github.com/holgerlembke/ESPxWebFlMgr + +// inline guard. Did I mention that c/c++ is broken by design? +#ifndef ESPxWebFlMgrWp_h +#define ESPxWebFlMgrWp_h + +// this file has been created by makeESPxWebFlMgrWp\do.cmd + +//***************************************************************************************************** +static const char ESPxWebFlMgrWpindexpage[] PROGMEM = R"==x==( + + + + FileManager + + + + + + + +
+
 
+
 
+
 
+
 
+ +
+
 
+
+
 
+
+
+
+ File
+ Drop
+ Zone
+
+
+
 
+
+
 
+
+
+ +
 
+
Download all files
+
Loading...
+
 
+
+ File list should appear here. +
+
+ + + + )==x=="; + +static const char ESPxWebFlMgrWpjavascript[] PROGMEM = R"==x==( + +function compressurlfile(source) { + msgline("Fetching file..."); + var request = new XMLHttpRequest(); + request.onreadystatechange = function () { + var DONE = this.DONE || 4; + if (this.readyState === DONE) { + var data = this.responseText; + var gzip = require('gzip-js'), options = { level: 9, name: source, timestamp: parseInt(Date.now() / 1000, 10) }; + var out = gzip.zip(data, options); + var bout = new Uint8Array(out); // out is 16 bits... + + msgline("Sending compressed file..."); + var sendback = new XMLHttpRequest(); + sendback.onreadystatechange = function () { + var DONE = this.DONE || 4; + if (this.readyState === DONE) { + getfileinsert(); + } + }; + sendback.open('POST', '/r'); + var formdata = new FormData(); + var blob = new Blob([bout], { type: "application/octet-binary" }); + formdata.append(source + '.gz', blob, source + '.gz'); + sendback.send(formdata); + } + }; + request.open('GET', source, true); + request.send(null); +} + +var subdir; + +function getfileinsert() { + msgline("Fetching files infos..."); + subdir = '/'; + var request = new XMLHttpRequest(); + request.onreadystatechange = function () { + var DONE = this.DONE || 4; + if (this.readyState === DONE) { + var res = this.responseText.split("##"); + document.getElementById('fi').innerHTML = res[0]; + document.getElementById("o3").innerHTML = res[1]; + msgline(""); + } + }; + request.open('GET', '/i', true); + request.send(null); +} + +function getfileinsert2(strddd) { + msgline("Fetching files infos..."); + subdir = strddd; + var request = new XMLHttpRequest(); + request.onreadystatechange = function () { + var DONE = this.DONE || 4; + if (this.readyState === DONE) { + var res = this.responseText.split("##"); + document.getElementById('fi').innerHTML = res[0]; + document.getElementById("o3").innerHTML = res[1]; + msgline(""); + } + }; + request.open('GET', '/i?subdir=' + strddd, true); // must send the subdir variable to get that folder //jz + request.send(null); +} +function executecommand(command) { + var xhr = new XMLHttpRequest(); + xhr.onreadystatechange = function () { + var DONE = this.DONE || 4; + if (this.readyState === DONE) { + getfileinsert2(subdir); + } + }; + xhr.open('GET', '/c?' + command, true); + xhr.send(null); +} + +function downloadfile(filename) { + window.location.href = "/c?dwn=" + filename; +} + +function opendirectory(filename) { + + getfileinsert2(filename); +} + +function deletefile(filename) { + if (confirm("Really delete " + filename)) { + msgline("Refresh when done deleting..."); //jz msgline("Please wait. Delete in progress..."); + executecommand("del=" + filename); + } +} + +function renamefile(filename) { + var newname = prompt("new name for " + filename, filename); + if (newname != null) { + msgline("Refresh when done renaming ..."); //jz msgline("Please wait. Rename in progress..."); + executecommand("ren=" + filename + "&new=" + newname); + } +} + +var editxhr; + +function editfile(filename) { + msgline("Please wait. Creating editor..."); + + editxhr = new XMLHttpRequest(); + editxhr.onreadystatechange = function () { + var DONE = this.DONE || 4; + if (this.readyState === DONE) { + document.getElementById('fi').innerHTML = editxhr.responseText; + document.getElementById("o3").innerHTML = "Edit " + filename; + msgline(""); + } + }; + editxhr.open('GET', '/e?edit=' + filename, true); + editxhr.send(null); +} + +function sved(filename) { + var content = document.getElementById('tect').value; + // utf-8 + content = unescape(encodeURIComponent(content)); + + var xhr = new XMLHttpRequest(); + + xhr.open("POST", "/r", true); + + var boundary = '-----whatever'; + xhr.setRequestHeader("Content-Type", "multipart/form-data; boundary=" + boundary); + + var body = "" + + '--' + boundary + '\r\n' + + 'Content-Disposition: form-data; name="uploadfile"; filename="' + filename + '"' + '\r\n' + + 'Content-Type: text/plain' + '\r\n' + + '' + '\r\n' + + content + '\r\n' + + '--' + boundary + '--\r\n' + // \r\n fixes upload delay in ESP8266WebServer + ''; + + // ajax does not do xhr.setRequestHeader("Content-length", body.length); + + xhr.onreadystatechange = function () { + var DONE = this.DONE || 4; + if (this.readyState === DONE) { + getfileinsert(); + } + } + + xhr.send(body); +} + +function abed() { + getfileinsert(); +} + +var uploaddone = true; // hlpr for multiple file uploads + +function uploadFile(file, islast) { + uploaddone = false; + var xhr = new XMLHttpRequest(); + xhr.onreadystatechange = function () { + // console.log(xhr.status); + var DONE = this.DONE || 4; + if (this.readyState === DONE) { + if (islast) { + getfileinsert2(subdir); + console.log('last file'); + } + uploaddone = true; + } + }; + xhr.open('POST', '/r'); + var formdata = new FormData(); + //var newname = subdir + '/' + file.name; //jz didnt work, so do it in c++ + //file.name = newname; + formdata.append('uploadfile', file); + // not sure why, but with that the upload to esp32 is stable. + formdata.append('dummy', 'dummy'); + xhr.send(formdata); +} + +var globaldropfilelisthlpr = null; // read-only-list, no shift() +var transferitem = 0; +var uploadFileProzessorhndlr = null; + +function uploadFileProzessor() { + if (uploaddone) { + if (transferitem==globaldropfilelisthlpr.length) { + clearInterval(uploadFileProzessorhndlr); + } else { + var file = globaldropfilelisthlpr[transferitem]; + msgline("Please wait. Transferring file "+file.name+"..."); + console.log('process file ' + file.name); + transferitem++; + uploadFile(file,transferitem==globaldropfilelisthlpr.length); + } + } +} + +/* +function dropHandlerALT(ev) { + console.log('File(s) dropped'); + + document.getElementById('msg').innerHTML = "Please wait. Transferring file..."; + + // Prevent default behavior (Prevent file from being opened) + ev.preventDefault(); + + if (ev.dataTransfer.items) { + // Use DataTransferItemList interface to access the file(s) + for (var i = 0; i < ev.dataTransfer.items.length; i++) { + // If dropped items aren't files, reject them + if (ev.dataTransfer.items[i].kind === 'file') { + var file = ev.dataTransfer.items[i].getAsFile(); + uploadFile(file); + console.log('.1. file[' + i + '].name = ' + file.name); + } + } + } else { + // Use DataTransfer interface to access the file(s) + for (var i = 0; i < ev.dataTransfer.files.length; i++) { + console.log('.2. file[' + i + '].name = ' + ev.dataTransfer.files[i].name); + } + } +} +*/ + +function dropHandler(ev) { + console.log('File(s) dropped'); + + globaldropfilelisthlpr = ev.dataTransfer; + transferitem = 0; + + msgline("Please wait. Transferring file..."); + + // Prevent default behavior (Prevent file from being opened) + ev.preventDefault(); + + if (ev.dataTransfer.items) { + var data = ev.dataTransfer; + globaldropfilelisthlpr = data.files; + uploadFileProzessorhndlr = setInterval(uploadFileProzessor,1000); + console.log('Init upload list.'); + } else { + // Use DataTransfer interface to access the file(s) + for (var i = 0; i < ev.dataTransfer.files.length; i++) { + console.log('.2. file[' + i + '].name = ' + ev.dataTransfer.files[i].name); + } + } +} + +function dragOverHandler(ev) { + console.log('File(s) in drop zone'); + + // Prevent default behavior (Prevent file from being opened) + ev.preventDefault(); +} + +function msgline(msg) { + document.getElementById('msg').innerHTML = msg; +} + +function downloadall() { + msgline("Sending all files in one zip."); + window.location.href = "/c?za=all"; + msgline(""); +} + +//-> +window.onload = getfileinsert; + + )==x=="; + + +//***************************************************************************************************** +static const char ESPxWebFlMgrWpcss[] PROGMEM = R"==g==( + +div { + margin: 1px; + padding: 0px; + font-family: 'Segoe UI', Verdana, sans-serif; +} + +#gc { + display: grid; + grid-template-columns: 80px 25% auto 30px; + grid-template-rows: 20px 30px auto 30px 20px; + grid-template-areas: "o1 o2 o3 o4" "m1 c c c" "m2 c c c" "m3 c c c" "u1 u2 u3 u4"; +} + +.o1 { + grid-area: o1; + background-color: #9999CC; + border-top-left-radius: 20px; + margin-bottom: 0px; +} + +.o2 { + grid-area: o2; + background-color: #9999FF; + margin-bottom: 0px; +} + +.o3 { + grid-area: o3; + background-color: #CC99CC; + margin-bottom: 0px; + white-space: nowrap; +} + +.o4 { + grid-area: o4; + background-color: #CC6699; + border-radius: 0 10px 10px 0; + margin-bottom: 0px; +} + +.m1 { + grid-area: m1; + margin-top: 0px; + background-color: #9999CC; + display: grid; + grid-template-columns: 60px 20px; + grid-template-rows: 20px; + grid-template-areas: "s11 s12"; +} + +.s12 { + margin: 0px; + background-color: #9999CC; +} + +.s13 { + margin: 0px; + border-top-left-radius: 20px; + height: 30px; +} + +.m2 { + display: flex; + justify-content: center; + align-items: center; + grid-area: m2; + background-color: #CC6699; + width: 60px; +} + +.m3 { + grid-area: m3; + margin-bottom: 0px; + background-color: #9999CC; + display: grid; + grid-template-columns: 60px 20px; + grid-template-rows: 20px; + grid-template-areas: "s31 s32"; +} + +.s32 { + margin: 0px; + background-color: #9999CC; +} + +.s33 { + margin: 0px; + border-bottom-left-radius: 20px; + height: 30px; +} + +.u1 { + grid-area: u1; + background-color: #9999CC; + border-bottom-left-radius: 20px; + margin-top: 0px; +} + +.u2 { + grid-area: u2; + cursor: pointer; + background-color: #CC6666; + margin-top: 0px; + padding-left: 10px; + vertical-align: middle; + font-size: 80%; +} + +.u2:hover { + background-color: #9999FF; + color: white; +} + +.u3 { + grid-area: u3; + padding-left: 10px; + background-color: #FF9966; + font-size: 80%; + margin-top: 0px; +} + +.u4 { + grid-area: u4; + background-color: #FF9900; + border-radius: 0 10px 10px 0; + margin-top: 0px; +} + +.c { + grid-area: c; +} + +#fi .b { + background-color: Transparent; + border: 1px solid #9999FF; + border-radius: 1px; + padding: 0px; + width: 30px; + cursor: pointer; +} + +#fi .b:hover { + background-color: #9999FF; + color: white; +} + +.cc { + width: min-content; + margin: 10px 0px; +} + +.gc div { + padding: 1px; +} + +.ccg { + height: 1.5em; + background-color: #A5A5FF; +} + +.ccu { + height: 1.5em; + background-color: #FE9A00; +} + +.ccd { + height: 1.5em; + background-color: #e8e2d8; +} + +.ccl { + border-radius: 5px 0 0 5px; + cursor: pointer; +} + +.ccl:hover { + border-radius: 5px 0 0 5px; + color: white; + cursor: pointer; +} + +.ccr { + border-radius: 0 5px 5px 0; +} + +.cct { + text-align: right; +} + +.gc { + display: grid; + grid-template-columns: repeat(3, max-content); +} + )==g=="; + + +#endif diff --git a/v58/ESPxWebFlMgrWpF.h b/v58/ESPxWebFlMgrWpF.h new file mode 100644 index 0000000..1a4cb44 --- /dev/null +++ b/v58/ESPxWebFlMgrWpF.h @@ -0,0 +1,23 @@ +// mods by James Zahary Dec 28, 2021 https://github.com/jameszah/ESPxWebFlMgr +// based on https://github.com/holgerlembke/ESPxWebFlMgr + +// inline guard. Still broken by design? +#ifndef ESPxWebFlMgrWpF_h +#define ESPxWebFlMgrWpF_h + +static const char ESPxWebFlMgrWpFormIntro[] PROGMEM = +R"==x==(
  + +)==x=="; + + + +#endif diff --git a/v58/first.jpg b/v58/first.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9405f64f0254af54ef5b26346d05ecf881ce37b0 GIT binary patch literal 65554 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
lYFMgaQxi<&1gQ9}XI#eK9u9oE(XrjfHJMLe&)n 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 literal 0 HcmV?d00001 diff --git a/v58/last.jpg b/v58/last.jpg new file mode 100644 index 0000000000000000000000000000000000000000..537acd5f5ef585b9ddf0d9faa4f98ae3daca9b8b GIT binary patch literal 38495 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 literal 0 HcmV?d00001 diff --git a/v58/third.jpg b/v58/third.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a8f8071669ee93b25aa455c876ea16010529044a GIT binary patch literal 93732 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%0D2);utJX?K$-V8xFg)4l-Z z@S#DIw#Da7uCgA5;GSh$Aq?ZJq)t5RLbvUv&LP$1ohQv5GW71V9ObH#k%V;(y>H;; z+jRpn51ol=wT?Er_96x4dq5S1@5qbu4z!7H7P1B1EZTGgdXH^9Ic>1i6HoVWsgpjv zAEqkZ*@`33df;E3p2Tt*KPJ={b<~=iUy~J=v4NaUnqw~PJ%~&yN#1p@u^J zKX+jWV$HKuY>0%0)p^fxvUorqqEp*LTx~gNyM;fBrjPeq^1@sac8y8Qcy_}BUxeMR zqfq6)Fbt=>;b3iWgkytbAEb-k8?C5Zgl!yo-2}3&e`5tjOapjv+?}|l21ay4ej3}4 zGCt0Wy)D|>{H5c$UcWIXn5wug|TwapuTM1S@lQW;X!vkTZ(2|+@fHnI;y!)zRXz)580Oyhx-p&LoN(|^W#h6 z9^pYpB#aHPJ52L;0>?(|O{Oj1i^VY@65mr_K0o-pe95Ov3Sa%D21t#b;=z{&hwvN5h`x@!(prYb$QWnUw8WW#poRhP3vZ*q1~S3t;B*4M#c?47qk`*e;vx z8=sEkpol~52qClO;1~BVq6gnQ1q>hpQXgn`6+4HQK3TV&*u6Q>{lpYZ%_6+Qd3x;< zFK#z|&tAWU^ z*adhF5efhxTo6wWeZB@9QJJ$Pfc*4u0!#EzD>LxQJ{-k|e|GQ?jKfBM4}*@^Kyer# zaXbU;lh1*F{yM{}u%BkRev-wB_if)+2LDV7=PzHcR^~)9_aC2%;?5F4AAGf`0s0q? zxL|+5N%YovOB_BCPeK6oD1HqA+8CU$F&bDV4d8#25bQ2|&Oq_<(B>SzcX#V@wC|?s z5rFUD%TqV**hJ6ON1t)zUq528k*t!hdlk&(S0!U;! zIS<@;Y1~V!0DXt@E}nAr5UXYao_!B5cG>w^u`_#f_W!QeodO2^n)fJ|IbH3%s|tzb z<%y-)3J~swQkz2~I~`V2+giA$*7O$8*?71ABoL>QSY9xOE7htdA-*F4*>nBiFD|=LJ>KNKYK2$IaeI!*1bgFx*xMbie$M;vCt=;dF zxYk-#Yt81O(O>-wZ~)c(!+;7kP4y0gZ{ndqKzatc?0Wj&24|N?^X<}THSek`syuHC zeTvI2s*Aj4^5TMKrn|4q^R1%_zniW5 z*PiWBpH( z%rNd3L9eL{`f=%ufJch3GXrC;R_mPWdZ#<9wz5^WK9)=Jz=`kEi+Urll5T3uEmww) zsnhH$-14)nOyG1}-crquAH7FP3!bf^+Ma0cx}rR0yYc#st#>m0rXR;NGqf*`%0Ae& z?D@*S-d`ZE_vyPwoN_`N!g!=k=4D@0azgAg>|JGjsWVoK5djewJHGkb_DeXDPWZ?S z_^1?aFe&n3;tJOjl+>o2tl3+82HxRKa+NJf9=Ef&KOZXLKi=a>(QyM(@=XW~P+L~S z16!yD5iq6(JZFo$1y~l83UEhEoH!E~`RMCTPKO$hwaJR$JQ|YWh8e`NO9KT)BX1Qr z*&`30+lXdZM~a4Cq4dnLHB@Wl*_~=I^f^YWv0brzN^}QA8DY&mmp+~Ll1Q3&+P|Ef9A5X)9@b2~g?x6Kz#HiI(z`s5^!p%(gwQFI-dC|g$1Io^;-Q{ zOVF@j343xaJzJ_rV`?%j_T?3_@mDp>0vb1+Oo2_&-%YF4>C7TI#g~&|_)+Ndp`1HL z@bi5X64BV}p7XZg1(0H+>4}-iTz%hr*vRz>BHd-sIZ+;dUEoQ)%r1_2xZH%Pl`-uy znxlT+SEYs3I9a%@G^f7AxY1&+l>QnCO;dpLO^4m^8*THAk410%Ej7TRS6s?gxtRt> zEM;eE0!_xTl^p2MMhD2-%iQDSvEo^jtnC*n!MzZSKn60v-S9EpS4J&kdnsAK8?6w zbQv8bif4qkP#+(mW=_#gK-~%0>ii}&d|Qtr^aTNwM*yW@$K!2mErI?`Z z)|#lRFw>*hk%_6EGkMiwlbzzqqYOr!vGNNqn`zsD?ai;?aDo1AW6<&A_?=A{v;l!j z{QhP%>j*jqU&bGLwMXID%+ZvMCzZhmEDl$SM?TqleknIM(9zJ!d;>bYodbxNXxzF% zb_}OSj}XpTA7k`#LCakWHLI{jie)$`(Y-qEwi(rW>WEof9Dy z+26N)1W}fEQNERLW=m_}@$y&9B_iLX-Q`tXRMr)nBQv77QE9c&Y6i4f$glaiR6tR& z9)TD|qhUY%g}nlxVDK->K4UgcNC&jjIX?<%2L8WiU^i9PgFDwaifoFIwzP!r_ zEu9W^oa1C%)!r~%{)Fcpq0_4y73B-vUZ_)@eUiq#L@|vxl-pgU&^4s+v zJEreC1-(lEi+kT%up+TYN5L9LQ26p}n`C&nkMe?Ay$El}Ls?uxivgKQRG08~$|VYzJ(c{uYkWo5rmwi4(wcWJCwg#CG<*ok^D7<-qx0eOV)OuD&DCJcA=9#l}D{~Pp>TPH9Xs`Si1U1 z3MUMG%el8R2gl9>Y2t7o$N#HuI1T>*?a$&s!kkAO6gk(NG3`od)+GDwGGE1&hvgLk zHj{5Htqe+PonsDNDE&bsD35k95Ri-B)(AGegnFWv{GM@|!`9lRS4+l>X>91*tJu8F z$*Rb%8D18Xk%$`%?SHcLKZz2&Y1ghXr2q!1gDG}?(~L_EupxlgQ`=UsmFO`uj)4Gj zgrAVOYX3$%f@z_M-Xps;`6wh&Gg>8TnX}9{WiyXoDc%HoMC--hrm)e`3q1L&#T*kx z^W`}Etg=_9bWv+YC2@GB62pW1>6rIM`|6S!%9f`AEe$n#E5e*l(V~U%$K8-VD4GIO ziuVCF44gplTWFxM2d*0UT#9d;hnNWNB}D(>k%)MJTgt#+;besN2LX?&ybK&8`d{q5 zXIzupy1t831!*EEy{R;%iu4*0=~AV)C>=rwNUyO0(gg$rr1uh{K-JE>(Ij z0YW_QTx&X)I_F$x?ep7fpZ`8*eF%IZgYk|r-cg?Wey&lPwg7j@_+xoWxZAQolskdya`h{N0e<#h0yZAB_%lyW9(KSJPg(=1)AlK-j+Vf$ z%l*Gq^7pC{9nHT4j#*VZ9lunZOWAkvBx5eiAUkUbJ z&w9XvF-(}ecr3X26Pd0c^A-X}|J zwB*5{nCLyD?rG9no)BcB4k+uZMNUXca$-v|$`8kMznrc<^GKPUWY^~pO;RJsLT~#i zugidl>nnjvdga83HfqYCcG*%h^x+ZctR^nTgfG5q#La|Hox+$0w93M<*N>L4`&Q|~ zNk$hIZtfI6+FI72A&ZpiE953m8(tXaFvD_(oo8NG#6HZ^o7nJ@U0d4V@zbm}#xz#w z*X)-S*{I|WWjrB$ZavxueJ-v=C>6pe!6ogMy$KKeya^6oEB7@iDk_pP>xAvM8rWsE z^IW*1s7FZc8vE#`rZMX0F0&ON-5F_VG?XY`1Hx|^`+5nun#J;STl!#{*AD#X2Ya4y zSkd60j4vdJe%kiZjLd8M2fCK$wu`#Nwp5L46<}O__ON@oQMA@>hp%(TV$qG5JGBiH zT_k^O0l=j*L%C&(!-BC?k{}Fk-eKCfoi;GaejDmapQP1RasnO#n}iEdVW2OK0Fm$o z{O<$4X!a^mu+z5BYTL;^PZtkzE2pBGj52wHee?^W!o%sHN92RSsx(Ja)g=8pHKHi} zg6k5(HD>Jf9w5;frv6B1xZazCd2KcGn#vg>`pYG{l9 z1+^fuG(`rVI}L1pzOem1~{@ez?Ll#4v7cNz1V+qZCEQv*2>dyKSR+15-{5V6f2 z1#sc*0merxh%D?>Q^VyUq+7iJxPOmNqdD5$+SZ$?%;d$Gax`^_DT~DERGzr4v{pWb zo_7I)Lv=hQb~XEmbVGGl4n+N^>GKr5iV%IV@$@)0dZMT1zMo-a#txKr*9#`FcnF%p ze&=cCq@DAqiOIr5M*O9!&~A?8jR$vh-dIou-THup+m|?iiT%8%PeiA5F>WUC^D?Q? z?)g|Bz{4{2Hh4r;Qt8X1U!Zm~+Mm`PlX_Mz!V+qH-TMxgP&K)`H6C{(N|M*nnkzZA zFqi>0af^YK5G&AJ8BgouH+i*xH^g0ecVv$2SeLn^FNk73p00-_5mE2jX3o4>WY|`+ za%3JRazN9!OdI`fppyO^bI@!&v(TVH=!)cdL^h5On=mca#ilbPt(R|)F-RNJA9ht| zd0S7?dYa(Q!*o*Ck)3y1TGY~JTe(r5mRqNr?*U0N;lf=)hHol@h^3`66bj{~?ZRW^ zt{pQswaN>L(iPr#Im<3WEhxf9*CAL74{lz=UOU=dyrb8T-rM|200dXe^Gdv)wl&ai z#&4B)g{ky~I!>Hq_+Mi5TpvkU6|C*_^I3It6K=S?H5F9HWexEz@d{S$L-1EsRt*YR zJdvpC`Oy7NjA?7MO5hZh5JZ8yTVwgaQv{LrY`2RWqdk~K!Bg1ovY^<13YGTD)oHKp zfylV#kr4-3>P^@)+kwv*;VIgY#eO3bBT%rD!0z#@QTZ^FM=eboom;#;+fZASQ%gXLRixj^W9HrLY$?Esm<(q(+7cu-RQn>SoMv3ieHi z*3DLVH~#Tse)@S8CfB>0MBzOV(r0tLViua0_`IR}AyBdgm#6d{>jX}%l8;T#hiz`O zNd`Us3@MOS$sFy>wtxFL5A5aR&8GI`5iv>F;MF^tu?rv0)DjS%g89)vAx%K%UC+RV zHqNXsVDCOgxK%!px;CT+t)Ak!U^qwknfV=*u6?CIzYuwCEMC;3p=N@k()XlYX8nPh zp+ct_@_@FSA~Y#C$94L+6Y%}C<#|Dx`O5C1O=kH%*vPYk?4EXLUx=oDTcPxRH1Evj z1Zbu^$DK2=P;>gjS{-x2Bwt)^!TvVJBn4Mx6+hNN68!;75MmUx%Ucvr+Un)|{tblT zOQ2gl4VbobdhM4JSRnGb<6J3ffJ*p{L>p|Jybo~c7bfc~1Q+Fbk1F>jN* zDwi+EUV|2Xyzu#Sub(_NWqKoU6dJej-2I&6gSy(FZUIrdS&nS?+g}N!1U@{jlwft2 z6Q8LoYn3Ih+@fAUPMZ2j;oB;Y4L`%GKoed3{d?bfiL zPJQ(jZJ?7vZdeh;Dl4UZX$Qh)_25R6D@;0OEYrze>&k=e@R)FdnUXk%NQTaek}jv} zii!|N+}@Dz>x8=1+Oe(5o}(TAuDoy@2yW}`4J}!!q=|P%v~)F#xs*HK={pQ#dn2xQ zeJ4no`b&<*BAQN`ZH9sojMZr~eOomQWsB70l&Ui9suH{^a^5KPY$usZwLhd=mcwuo zTibHO>#1^|ySJMe_vEm;L$})X`~Dsjg4U4}Z0_f~2#s~B4#Vg)JjKn&oSW z6vL|F0INs;jH##CVrJ;ZWni5q`1Qjh)tq#a7w88nfQZev#HYbH1}BZzq0e(7iCiBW zi=@n$Fv@5))#T)6*&Xa(9BpTADRwZ*4KE;jbY6w+vSliS8&UYs#lyq8alA9xGOicr zkATCB>?gT4*BYKA#nmOy(9(=X*Pcly+tMJ@K74pa>P@bK6nNpYQ%^6RAG{oECmGll zoK?1&@SN*{eNx`o!T4KuKGH7O{9^{yOKUuAZ^o139(rsyFmF1h3T!FHxt!0K=~7ef zD_+kGJ!la{SoGEPor|ZNw!7l(oL#1V_3iYnhiZ>4<-)WvIHAv)ggw~~`jRD&U935a zg!if1>={N0TraJjaV2KHa4q81qr>|*T)s4-R8)ADyv88y62|IdhXzo-k|Kli%L4Uj zQ&8E1ou!NsQ|yj;FU}~({%9(=c+D-sd|!=}afMI2gmdQ?m8kx?{Iri3fr=~*pxm8+|T_&5`^kb!GZ(&CW z-`Zw6h?&!G(S&5I@KG5pAFSBy&*uPcASQX~7^S)w={2X~wUpTna=f8m31m#RS*O7= z*ns_w<}^Y-#?K~vL}pQ@5pExlCOUmitLdf69HA=NLh4j()RZqW=wH1x{pA$fqEBmt z5E4C=2YJA|KKis&l41df5PpsZ1tK2 zv2}B%r+G9rBp0jMEPFLgJ(9LMS;O~CgmepUy7vL)TXCXHjLJ0Zg0WXqQw76tn(&lW z-E-Bjn`fe>sNLJhvM(rEkbB3!{S2mon9E?FdZuI3^f$wIj7KE!&hpwk z9(nTm^nB^8ENTqLWq1|qn`QDo8*F!bQsAl@xdOO5RF7Sy`qgPpu*(h+MM@LGyUJn6 zRzfkrH>Y2n$0P^gyHdC=2JFGX7~I7|#&|8#_%j!~WeTW`-pg8^SAKUIv!nsrYsas^ z1@C}>h*#azM@&wylF)1#1M=~7f7HH54#LbKA+vF~NBvkldQPyNi_@O%mT2>M{BBVI zJw}AtM`HB2X%rpw(dw+3hML&TFA_Za-Z@NgRAik^Ra#Vy19;4fUoFhcW>y1*>Gy5z zwXB8YXCCu)Y!LQ(cZl8m#o+jpG{d4S{e+#my)P^y>XNtJ3VXzi-JaIrgU9pr*m0%K z5Au%(AE$a<*Lz*0anpy(s(dV-e;;)KGdVPoSB=)zuGBk19kC&;tq2aoy-%N^0OzRP zOWNH`4j_jD7I_)5T%FMFw;-Im3O^} z!~nQ{pL6LMPva#%Pn?>P|VpUNazZ(zoT_GqF~JC^k- z`M6$1U1@y%=vLiQcwYwcFc&$12Z9ga?0(HyR{J&oJniHwf#y~*@_PwW zKW0ikN-OC7%s~H<-J~5NQA>3zLu-ry**O1iz;uc>KlR@ySpbv;~`;z%CjMttP@{t z5-`QsnM-TOmc9cNg%F~nU^9mmWOXun^MyTpmkRJgpqBs!N~0X`s`sk)0Li3z*kSU$ zhTxo~ohkE{yivpV^huD!Au91+vUnS50wM`%y}-Wm1ucb$0-_gpewBcmy>cKY3S&5B z@G`T1eONR2

^O{euR54c{^Ve5nzG$04!WUkNA|qD~0VIAWrsKrkMT ztWNr;4{q?ip!b6!&bq|{baF2c_W=&o|Ebq+1LZ&M^}lm`i3ArxXsEoB<>CYoN!Rdw z^~2WO)wc*Wyt*_`!t#K0hCt-WA$YSmMNO?N%DivZM43iHdTsft7UMa==tzi_uKieGNF(SAqol!OEWaDWO#KS^XwC^uLs}XklmxY};3g^M?u~lXF+N?T$d;qj40PGjxv&9>KH-h}#U&QsjMWkjC+w;6xPB$w~ z_a#`*qha@nAMNUVr?l?H9bt5(aL*Cx7<>x5_B~w=f&`W z)B#`cituGO_#!_m=3_s8yuYF*MQ3n*`R>wElriY{Qdh)&v)cU42=s&1rYtJFs-Rj? zLS1n0^0GAy z`@YG4aOKzot7I@EU|tPHy8>8U_~0T?OH&XsG3TT@=e4aqicO*|jalW#HP{IBeXE1N z-|o0rNIRucO&N9ClCE{-obX2!Y~EP`kIY!Cjop)KOXYl%tQgZVIwO^6!;^OX>Dg0{ zmu2G?_9p(q^s--y=gw=r1TVL5is^~($uhDc0#>P{QifLk&j-}G6OR%tjT!1{m+J#!<#)6!wB(W_CrUq9X1$GS8`d?BOJ9Ykum4=z^7+w&y7EVy*%CWp#q^_dKnux#AWPH_7A| z2&m|S_yWgpvyYn}ai*@ zN2_B>!lK>h=fmYmI3KEvceKfDwfMNSS`V%izEEMG8H%p~-iwa-VT~>svAB`Od`k}X z>$R1>`y<{{zJOJ1vrVxoipi@1Na9R8Eqir&zX(e7Ea<5})Ux5GQ^{PUn8E88*hra< zjteC_l`cFlP;X~hLya2}k(ya{g}uy@!}J_+IHCOI6&JRG2Nxiwyy9BbHoO{N395dX zuaSX##>W*a%&57e2i=Y-E__n4&i^!0r$$z?s5Snm@2yeAYnn5J@5YO7i9n38P6B(a zL%V272n#(rX@t)yyT7Xz(Q$=SW=Z;HzV$fPnnc-=>K0wMcwPM{x!vm|b*TH<4SSw? z4kS;l{V2$~SeE~~SW&4)4_sZZ#@-$3?%QC~)Rro=75toUcY?D=W3wl5`dG%|L5We9 ziwi`!hZ|MfT&nQe@wmA_CvP4)#YZkbd%hIUyjhXHvm{GZF$lGaIWQh_T&NrPT%}}) zd$PoS`|_$`aZDA_saw3`K6+8l5W-&xE}BB3yPOYP4dwDmJ2~gKXT0f6qO0ECtWe<+ zXE}Ta49~li>B*U*dw8WyXC%B&p0O)Lv{7-DRUnze15uc zzYKclgf(;XXKgb-&vJ3IBxky_Xt4w;QsA_^#ETm?alLxjs=(^-QaN!a;p1t69sH)# z9v{U!!6gIQgi4?80>lcfD3E!FA4J>f+db&Mt@u`n$xe*9`B~?M+AydVZPVmwbyhw6 z(4a_)T60q2?cvQyhtykkS1m}dvQsKPbTptSN`ktA8p9%_@C)>g4${%){@JdyPc$b=U?}h&^K6nUsufT0^!D(YaIJ6A(o7OhvV^UX zGAa@89NS9oTz8#Gbhw93Y82d5jv7XwWHil&>QqFcZQexb-thLg+o6|uMq8;ml&W@) z{~ZlML|2W}M$n5X`bi=;R< z2Hw5nP?4;vraMhVHV4j7V6A*pOXiWdXA`%+U+|~?r zqF`0|Y)KxqkJ}+#k&5ELMXi>Ib*!K{^_+Xx$lI@BNvnthDAZ?s!=k7~>k&rF6`L!x zH{_W_bsD$gc=}Sk38ILe5m=_Z8qP+O>>ie|?CmkDqbv*g3zHJ#q_HD%awNFqGqT!t z`_Or#ki&MLpn~G0LY!+D#|} zkLn8gR7B%WCgxHRQc_&N(92owl%l_ea z>kw$pvKK%?pz)7*Y~G?Y59xM6$1vb%PI5#Rb+QcKTdu?>=6f3@Y_j1c;YSZSyMQ2$ ztWU?5~g&h2NO$E$>@5Cyu(xmEm+d=105Cvu~@<-PB}( zE}U5l36_EnyO(@vd}tSN0}H=jQFG^p9j!-z(*E83t>?2*j0}X~);Fqn9>>jwhejD} zvRA$s8Cx>v7?u{Wg*a9`!KfUI#rNemMor0I(IFzpxEGb)TtoCUp~)vOT+%NJl5SsP z@o8jfMLJvz)+rUlB(+Shz}-2c;dADCO&yu%Cl6AMwHUTW_s4hiQPkw z-f%`RUqW1f?_mwN1w`i6GfVqa`t~GW--oJWv(&U)&OBmYuarwy;!azs3(d|;Kcc)r zC+a`eh^Iwu#;3{TWXIkuGaEN==W8PLh_N>|XeV$ceIY||8YQK*IZ=^=v}Y(sa*r>i zddB46Qrx-3<3!i~+2sjOp+pX=y_i9g`Rp@me`v>W7bsL?!;F6zBN$JZ$L^n!wc#q_ z)UQ8+3=~MlxW04Bssz~2?gzltAFn}F54OllrvR##rNp+zkg-v{?>~Y8*z7L;|1u-u)u`Dkb)afv)YEc>crZO!%!nxy#W(7Pv}?!5>cVp zb<^SwzY>u>UiU~*Ygu=fje1`1-OSrpj=Y}&SkgJXrng%nQKx%fA7S$M&k(CewPc3ua(yMBWa=a0A#7sVEHH_^FWT`S!OD1Ji>fK38U`m zfw5vK*IrS8CEec=FP33&yWa6I@MVm871~nHD5s(T;geej$0Vzmfn^sJJ|Ri*B9Waqjh2f9!ia?bG)GtQCE0 zP9-J9Yo2`QF?zGiDE8u8f%Lj`dfgfX?J^Kv8&XCvIfGV{Ud`O(O^CA5b_v+i>|mj9 z3F^|+9VgkHz1(IVPCm(k}kr*+pr3UIJqcZ06PAGuOIv|f0H4vkG#bwFR z!4Y@B4TEpp;t$=Hd`b}_l9gXeAZ`V6s5&Qc`E!Bz91{t87IwC6 zR?SROs1R&-z~DbKWin|$bMdNj{!+i;+-*TNXM_IS&7NT7E@zck1J_WU!ou1o5pl%D z_Ey)*4^Mc%ut}BmS~7h}G77NRq|9KrsBXRzpEFsxSk2l4ephYKB&}1pkW_IHlzebd zvnvLOb31~sd_I|;WiWg$u9lirrY|Av~@9l$+?ozaS4d4}T0HJ3<4$KCE z@Bwvxzuyk`-|X(m-n3$BuvJD2L^cgCyPg#2vXE5hFx6evfZA0J=BNLuGCms?1n zLg@Jvt@N&R?8FeCW^GoGn}M;|u}~*5@+q11@2=@D5to+M*F|1;GD$xd{yvTG@%Dju z$srcfcxj{SnXxx|C1bJe`Hr^~_bT#d2bcjCGP?q&_u`TtM8bHl4y_A^scRhdPio0_ zbA|=X1cqIuVm%wRnW{mqIV%v7%CZT1% zJ=EE_o6`)Q4;vLY8j7`N?vCoCyd4C-dAYv*cTkG}p+eUCB9)nm^L#hGM(vR7gBcfU zc#0k0A3!flaZ^!{y>l1wm})a;tQqEWdnGNOqh2_1iyyISSs#*@L?uQ{dD_Y9^2I8$ z`#@0qLeDc8tWaqKj!_iYO91wY=|MW*jCS8FjKyF8Z&Q+xZ}Q39D_N<$p(+LOpduB| z9%J-a%TkXo-q}n}yXT{fg4-pfCKjrgI_GG(C}=MhC@gJt{^u?#$qYqf194nm32s3) z9^gxDrglzVqknox)SxzCuf$&jsv~j$L;#J1V2Ai_@Xt=bMFBfo~1<&0Fby>DT8(KLa!xa{pD(@ZB*yye#48hpY*`21FXcjqqK9tXrg5P5dLw zWYdXN7y8Sw1pJ!=^|uEF#JZ^ek+wp`<&Q$bkoKh42k`xqp0Q;CJvCxZ8w0sK^~L12 zc*UOcfL*N(A4VOgdEU#Gus(;0TOGwbIp9DA7H>x;Qq7Qc7tW{H41XmMDLhWPi}+&~ z=%c?qZ0G-$?)+zFTVF$#AJq6%rp;~={(3TQ9TTaBnt(fM&xIsAV{$wOc)pFoZ#HBz z-oy?9kGWa4Mf+GAx>UvJ4|=@LM6ky406OQFdXtp?t7u?c`S^OcqJMI8VnovY9G@DN z^@%Vd$pG+S?_PWe@1E~oneRg&7G7}vN~#Lmq_UP7LFYAgDxUs2V75#}98zo+1P7V2 ziFi%Z&QOF1S*@;=CH-OS%lw(<4n!&We;nxx4c|=7zYWyldXpLJmb4I*%tiIhwC8>b zvdK&WuA;B^i5a{@jc)C%vspM(D3ruDPF^nG3J!J@LCD%Sw0mEOqp>2s>cPDdNw0i4 zvYDZkg<&&LanLzT(>$^VWB&f{vjPxP{ka8{#dyh}q`eul{}ZSRi&xIE!yE0j5&b9frS@w(E<7imzK*EKBhS%`Nk^-9Bhl zmtE1t`uanG>#HZ4OpU37&UIG*vcSoHs)vBe|8a>b9*$Mon|kiSfDYV~v4C9=_oYP* zhW^|6NN#%OMy<;x_-GX%~rBJd3uv0B|flF-aXyRV&K?g65<(rtn(>bVHY(?xJ1|bQTaIV zHj_6Z>Ml0U-(_|xNLH*@ID$f7EyNGBV2m1yHEDCU2~~fS?kM)EmcWXeBwl;6p6L4; z{G{d#b;K=;X!~N;fXQm1e8aOYnNut*tYR3)cj7-0{UttMT5rqs{p6Kk)dmJXS(ZUd zlL&eBq!Gk|{hBThZ$5&twD{GTUpnZ*BOwW!2ao1@8)&`s``enf4adj4>deb;j9!Xi z7uzOGAh0%QcXV2MGYbR}fZUVsRdqnu{$9jZuaj~~kgV~XfJ>$=6f5zRMY+Rp2?^WM zXWdE9xuu0A@di*0q9VYi!vfGuni`WX@|AMs=;8#DT=6*4hc;FuHx(6p_a9rk03c~- z&fr%9`9AY-(iTX|WkOP=qDcgZy+8UtzMDF+HdpnLWs{Q(`G)<(wYadINo} z^`ZZY<@as&_WiN6%(a3+)A2W&di(cIOfV&ZDq@^#!9KkUDmPUfzivtc>;Qg zS&{eQNR@v5By7eITv|2MQ?lltHLl3i-}^xQ|Mb3pBW(sG^n;Iyn}EbV{U3+R18kPz zn=1T=Z6qRRd+(gt{@px>@VQhkmc93pNR{ciml%zr8t&`k%k0N}aKK}9b4$&ryO5Yu zl;Av0PYF|=*M?K)yY%$M9l%dBwbmtsf3iPyfR|iLaS*vY+l|`cFq8VUiKdvGz{Y;= zdFn@MoxbvRCAuV$dd0z*Z{j75%9*z+!a??#cPuh*USboX;dyk6-JilJ?N8;r!FvUY zd>wihVLeCqwDgH7by6h0Cms>=GeS{*gg4W?@`G zpV}pCq;~YW{c?AWO8zo%M)s?I^KV+=k((O95N{aYL^DLtV0*~aij2TDsbcQj;M3>vLmQ;4f7W=hIEU}oxA<3P#7*OvO%vy(B^S@~m&J~FQ>6SnO4 z^`pt!U7QP;?1aMOrOzuD0mAKf=z}kKZU?n&ERk-FFQbeKZ3p2nUO<%ov}#z8=?(^@ z#Y5EU^ChAj@SoWmYXlbB0n5ITv z5>=GX3s%@1nrJE37v0}R4J{d3xE(gV2zCq9V0$P>cbZOE7!*3mZjVw%^08`#@^LQU zr8ck%dwf?J?JWqNTODg(H9HPDORu>;#`A$KL%YkGmcv+M_*iE(1&QjnUp^W!TeK;> zZ(1#rR6jc6=GRbBQ#o6aSM=A0GJ{mCXX_-dncDjpNRyH%3)iE-@;6WPl3HD$UmjW8 z(_7!Bl54zj201x5PzMzYrJbdCvR008>TXl3Dy#P{{!$tbzL62^Vo{bE8+3{o{9+v> zx=Mz@41uks)y!9O0_;WBcg*a+(A2sc=rgg<xaRkb_jogm<0f&jPNZ;x?RMEJVj*`$lXXaThOu9#uQqq!=z-x~7V{E3ZFax)3)S zw~En781A0B9R4PbyHG1Tb!o92k_Dg&d|3a|I%k?$_dSDU_s=0LKa7DAZKdx}8mzj& zblp>R@*(dBAI|q9$lzMmu{=F+dIxNbk3l;Wg+K)C%Xq-ty}z{a6us0w$p{Cc6~Hm- zUD{#r5D)^}SqDA5{*~Z+rp*t2LcNY__}*4{&l3EzCa&rK%SfF6f!@&9$jKRLL)vX2 zvPqdzJ@zQCkw2sR&?eHSFIoWH1Ihw;E`V^%?kV$iwaAuEY7y>Icr9W-O;rd|Fux#f zOqoSffQ(F20Q&r@*+1!JgTU{*IW_P9n0`(a=5ZlyJ_eW=QicWZ={`p)4gUFvXSyg=%DAqOULuc~_C^Q$ z5hI-?fSe3Vj*p*QTkVSO0K5laQT9seN-8*0K@`V_4OSD$_N!|-lTq$dzQ$eCk$H-SJ_S0V z^A&{?`y&oDM;rCPiPK^U;1@yu#xJ@K%$vWXf2chY1+UVwJq6Y@?wO-G=iO_n<;xxS z!s6q+bq?kkjT*t7{zoaDWQDq~AJB2oLLUT#9GG>Wzjr(RP~5aR>znFcJQ>!YO@DN~ zp0kFkbzx;~bZBCbHjMXqOlz+io1z$Ru+xwZ9sfCGdQl}~Xw$UydPjNOJnKwOF%*92 zu{&ghKey1-7Y7TyV9d1%R;mOpNBc@}Cg<-~vcFj|f3T7n_}dk>4CXz}BPmTWy1rVE zD6UVDSUzOlOExGSv&iq??|0UEQh6YDkX^g9dH5UH35X2+M(p|>?8MWIbDaS)2B)a% zO!0h!I3q~T(vknmKG86jq8wCdv|#kyG3BSk(Yp4?)Yf{XX|Ey7JBG`cyK4pKZY(T4 z)wt)fjq4Y`>Fo=UVo)_j7xm*Aogy?6 zu=|)^SI&W1U*%u<67f)7tY)qp-pWhZ_n$M?3<6u ztl<)lGcm6uFX|0ZpEJgw*>-j+H4w~P-+Sy5eq5iBVzi-YLj^O=d)!J%I$=6#VvXtR zN!obWyOo^ayfqGu?5nG>{i2h2*xP@Z|CIix{3o^lN&XXj69~UIr#_hK0UeQGPML8% zy*#u~m2fO(o6z>krYB)-BQ3|z_L7xX$<;@rt=!&dezMvZi{qoK`&_YEIiqOxbl8aOxb4*AL1 z&T3w;KQN9}`XW!}L8ZtRej)mL{Lq9Y)^IyIeKjOa8qh{;WY!us|+18SCS+CTf!gQn>?Aus%-RZvX= zJ;%XMzZ`lWnx+bNOS$M;VPO|dun?R2;v9TnwZ-71VQzI*#3L#tAr(eKiokXPv5p%G zZr=jW-=F}!bpo^EV+U$LB*zQ}M<<@ld?he0y;GcgoR)AXQ1yi`fO@H-(!+DfKR?BM zN;^RZs-B}M>+u5Wm3=7sD)fx{W5qKrvt$`T34zkI6i?ShG~X`M#(bJGZTG10!)pf( ztFYU12vUcGy4OF-m)$=ZKhLA|vv9*T4W}Ord$z=xc97t^G&(vuW`;=SmNtlKDd5}y zJf}!=VA=l@n8vSAs&C)}V50edkInH%CIjgAic#!!UdP)WFkI4y|0HXb!<*S=dJZ?y zo9wJB@%L~&>%!N7)Rmu9AK*CqT&X2(XBz%l`M(Hv_!HX1zn^9TT*b64xCq~$0^-or zw%?>H9_?}rt$9Dqy}Xm0x(zOylQcJ{iK)E126+j;a!MHbi;P268nXj9>XtevkLTGV znQUpSUxlh(h^=|aGQlR^jwepx`y(jDJMDK;3iH&zrwt1w_hXXwL-OroG-ZlCX>{q}`%F5J0&!>Xc#Aq&vjbSInoRfJ!zeQ^SbX&;}W3s6IS7&NhGN%km_MxV8rrOc@`R4j&18_d` zNfU3Ts9-#`nU{5=Jzi|_UVfyd$zNG$Kel0ChA!M)yaJ&K>kx`X93oKiPSBbAGA?1{bjP`KN| z!y$1sllHyQQD)W^Co}pE-NLcNDMPV7fd#WjwmVo3+ni7K4Ax&lL?&Rj`_1X0!eL(t zN)a`6cZ4~@Zz!>?-amJKj_TCq7d(9{e?Z49HhWp8S)_@WGNqlgKAG~gR>b(5Zxlqx zUhiDQQG>Qs94m}_tos~M!ZLP$d@&u0yr9iq`GxMA=BojWdZ8Y3&qSQgAIUkqbZdjg!EaV4G5#-6jsIi0Y{wxp%56@E3)jGBhtfZ2M&rTMpM zC_S(c`jf|y0<`O72veQ>-(zf9`1123ux^pLPFb&-lb8b5lN5{@>)V<`!3Lgp633bl zB$ngQb*$h|kV~e9NK&t)9J&XaSPjFL_7!cFN!9DiS{6lwCS8#u#=pDg`o!7;JoT=W=4i&0usPiYN2$)6nV1tFT zk}atnWe#<9FeL~)U}iKJO}p{0C#LcUG~+KnZERp26bZ}EO`7bWNt~@DvAR#BFn+6N zF!WcW378@f?M%31r5f^C(%Ey82e{ z-R0M*r@BN3W@rPE3quyDE&eE1{+QyUC-U%%B1t8l^p9W@kDtbTY9;sPY9=+pUpB&S z81q~k2ak%D4O)Qm-nmW*)i4PTiqHAQ*d3JNm`7TyR+0i2g>$o&2iS^iLcu-mT zW<0`Yl_xz0vh^o}x}_RDEa_x%FBLJ?p4yZ}I6O}g$Qv+r06hA+_`p_apu!D%!C z0as0yMsrhUD2O%lCLMYlM}3rAm(S^OUcIrxL(Bz@ZjX5W3+yux0yXzj+{{fzXl6}d z(-cud>2mB97ab_sw+aY?>^hxJpJ9p~H%P$RHq{`|!3`Ic_!GUE;*EhT(v|nu$tcSW zGR#_K^*DNeahA2-qyC6(+?L__+)zF3ui1DMjY&sCibAXgvLPzWNPW!;zA=HA=3w$i z`1=xO)u!jUy^>z$bMdYD`(=@XXz-d{Iectg^GBUHH1%9sCGHM3HXX;;J3CY-=S!VZ zTzO-(Z9$F6af2;z*7w>KIsWm@{5F)`QiEWx$a9;dCer~}X3zwGPR!`K1dX^UjSAfp z=Wy!hmhTB>b6h|)B_(w#)2tVk_I*V2`xlRbQk=W?6(4vrxxRP3Qb8J@;K0LA&^^z6 zN~FV2e_*2yUSz!NLlah{mbX+P*i$q%Zq(`EUMm*Ij_)>{*Rye^d_6~Yah`?Kzh0=V6K76rS;DZ}P(~4{HSQO4fP#u|bhbI}pNQ#;Rz6D-XnD zy>-Kh#=9xyUl2{WIR(`^>_AL{P}u&OnF?*svEjk}bLyA9mE@&x$t_sanP+3z2i9r`Et zA)swhFHig=XxFfW47Qno1@zdQ=BjlVaFO!lt=|NRQ{7%j-7WQ}TsXEG!jz)IR&)J9 zcZ1R|rEL|&o-F4*9Z$2xc5`ha!!B)CPW(Z6&Yl3nP#V(k=r;w7jjjZbN zGoaW~YcT+CzG#}RHUJL@)AK2`tmkFgB~%WW2HAki6xc6RJ)3^G9^hR33zW-e%@{kS z+KZFgS3iAwh%;Edk70jIJxVivQtpy>Md923Q zOXg0L5BPh#s{(AS6vQD8dBB-4yXJstakew(?p<{Yf$`=wlvVZbi8VwF)5vkRH=Hw~ zBi0HhBwCoeAf$E+TTtj=Aj?{Z27JbzL3Ovsggf^dZjJ|8-IU*dE}cV3OliVs<;Ps; ztVy3nj#6XxZC275PB3rSGFvNqU$fEV6A=*@ekK^=Wo$=Hz+vE83yXf~c8bz_io#2j z+|m?qz-4yM9Qw(mgAtpkE%Mj#`ZX4cG3U~s)%|us_YU{pF6e%{kAi#Jo3D9{B~R8@ zmctY795h69R`R~~3Gf&gFh4qStd;q%(0+!nwfOt!{fj^p)CS2K`(AYN>QMOxg9C_BQZoM8rz!FK!Z&uI?X*^m(RSUuDk-EC)o_|3*2AmI33s`_n0MXXH-#0vi7&|Q zxGHZu?JH1b`2N~N{JSK*9XjgqQ$!@$k#b12%$IEKaL~%pj?huzeqoU(>Ua;jgiJ|| zTmp7<`kryWU!-a*`8(vKgkg&QP?Hh}=A!RVPxwh~QKzOsWa0*koQyRES>yvH2q;r0 z&N`zoST1=~U1j|GjL55^Lx+-^gai_8v*sF7&!-#9S!{KrJ0wl&cPnuh+dH>M6HBf< zu&)&x+IBFOJ2?{z+E!AnI1QLJ7dD2K#%`X^tRqRJb03@ht(c zweiuE`~VeKU6^LMinTJE{m=#JaOZrXp%C%Y1;Uu9OWCV`gYw+=BQob+2go+CAMI0p zKblp3dO3bn>;FTx`BT);5AQpGCHTi3H2<^2o&OL~{+&b=2acg#y(-_p`Zu&x+*utQ z>K_YLv@{;x;{C*2$!gs5m-79utQCs?N!H36oOZFHDcs82V7UL#=NbPo=RK6-LrrN4 zpS17gJflCqF$l5fHKZh*|0axZwhNQ!hS`i0_T=9=4jpiJM>83Np&u~*L)0M zi?td3wUC~NQ)GgjkZ_;$;6ebH31BLcbH+E=B&{SFLfiCEmf^0FIzXwG;zNjA-7a5# zD(VLUiL=30%d~C#^UfTi`sA|8EF}e5!U8?ld(ACKK6TcAwA6PT7^&~O_lMQ58a*SU z4Yc#GOfojjZ^$2Ec%^Vz`0{YJt@zGt!N0teCg79`LAyYz9UulRQ^ODO4GXqjJI%uv z?Ew6*sgf&ii|hQ2`{_4il=|x?YmszzqAp7?&okH0L{s;~i#{PfoqmKN1*<1)>B-*6 zI?2*tiubGVXTW@^U-wJ3j?-;lIWf-CSY9gW!P5Z=gS$P~er0<8`uPV+&*~pZeM=d& zvQvTR2!p-=Td6Gp{kq<|(?|yfzlGub$-cRu`-LrZ=g-q!fL~Csbm&B4X?WCiv5^PO zqO5j7q@6OVlb>$3v4^Hwsh`oFe))!7^s}N8QPR{F{;B&+)Y%nd_1N19p7A|o>dq~e z<4TOr&ph5GES>ACQ<|yfgW}|%Irct!b$#P1u)K+OZ;k;rA_e}fJ8W7V*^lTd1mnKQ zfFYU!D@TLJ4t=rtYyRb^1I+vwyv?G~PwA~cfF(XA-!@q+Y0r1i;e|k9&-L%C2vk2d zXzR#+a{ks?6?L8&CWE8E2-I*$kzJnydl)I=ws^c$%%z52Dn+kP>AW<0^6%+Bv>0d- zbh<-kYo$7$slh2t%cG^wB!rL`Yt26Tx)-_!hXyHfp^}Sj+)tf zHhe%^lm%fOp-FHxGFyh8v0(I!yvImGsJ@y=KNOq#hmudR(zmq_OkK@RCJj9;>#E@{qr$w=kh~vL1N&rp+$ftEtbcc{v1i=z1P63a)2S}_S%837ve9sPT!L~nx@?F_QS=QK zqVopd1>CwKHZgwc(z5FFgR@b*%ePt;?qk#1jMKvL=Wr^L@kLqng8@u6z9}T6#H)Mc z{EC4eBHiNkZRomLtsYdYYsr)OLSyMG5Yvo%qeRA28z+;BgI;41mvi-Ru-Atp55;60nJKcv?Y4jdL{6p1pB(RWh!>2 zUVQfEvip!SdyI=irx^$Q|6=bw!`DP z)IvJ;aK8CFuT`b=H0pJsq<`zVgy#j+qUtD;_kL2sBVhTptFvjpfkve`Vc94nbrA-H(y zg^e~N4GiijM0q@CeQXj0izLMKy-9$pTfLqhUAPs?u$NA)$-C*v>(4BBosrOj&e(Y4 zYL$xey=sK-VO2aj1{FVDwE?Oa1yPcvjEu8dH02dd^CPMe4H&+ca|6`4);5Y`n^=o{ zSBu{5v-I)@D9**28d$PLy#Dm8-rasduUXAPjh*VPgn&$Jpq|f7oWXOqy^QNX;A(|} z2h_US!Psiskg3G`v181gTh5%?3Wk^7eW0+BVDD_vPWA~d75KbZ<563}h#WVMwLh{G z4}*T5(oHg8j!h-@{3_M*K2oM?h_ha~)CyttyvtSqS_^YRgij~=9YsCFUo!7Cze#NP zPWD#&3%Zf7G1}D`)1DI(I-{cquu9?^w5FYS85%O#bJD<_xNF=e;pkz&I$NDMqpYM* zEeg=4N<1}YL)T>CNX{Af?fxA|m*6^P^*P_g*WLa{1P@wJTv$+NvQ5fNK_mUzIX7}$ zzgt5DK6)8L72q~N3bSnT(BX*SbV-V0_rb^%)&mrlPE(FE{c3b| zvi(>v-mS=Tn`2dD^;Rc+>cfum-kGG2=7cl?#`2yq55hR|&N7^!>?Xd5SIaKdh&cT> z4v(}azN(hTC&g3w%0qHh#b&tecQtQWXFKYcCv#CG#T?F->%yn})^)3@;j!`atr(4Hup zL)_t^jw2kYgFc#hP!lFzs0fkNEtrJ2df843!Oh&b12e6TO@8vG!>vwGnPHs^-SWD8 zN0Xi0v#y%R?i8-yR`dDpt$&r)E z;ouFIvn{r#8@D1q;MqkHxhDi~S9eM`Rl4pgtIR2WjLt*u>7kjd%;rhrCaI#|5jJbf zIT>NtXmyCHa9S@d3YkL-S5>n+ot>^Z;=4AslQ%oC{w(FPm@2RI-s;9xksE@gVhhQG zi?(S^?q^Q^n9VZ*eNV9ioenCRLVY#WY4}+KZ~-9cbnokg?YwX<(Y)4&*rXf7SE&@nHmfVDC8vB@F%e(TnT#@W)_?c`4ko%Alyth3QQQ? zMAizWv__+lt$;iM1F@=P5s+%^=bammDms?S<9OoDZOk2-nHYG>Wa|q&+^num+HNW2 zRu1)<$f4xQF*E{fCl)HA{W>N%0A4&g;htl6PK|4ZTI)Z9>riYfF~rUaSB0z3RQ04> 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 z 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 BRxkhn literal 0 HcmV?d00001 diff --git a/v58/wifi.jpg b/v58/wifi.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1f3260ebcd60a6d074a7aa4504beaf46ffca1d95 GIT binary patch literal 32576 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 z

QwY02ZFac?2lUv1#k{`ZVC7d9TLODhX)nQvUQqw?$z*jXA$N2@vsImP!kC$KQU z)zUTWElxl4VI#auf75AQ);y&rUJAKQqe&sNg`Dgi-Zc@!VIoP;$aB_b9jZXX-+B02 zA4cQECBfcLplE~}0k}2KAOHJq%>~N9u{9x@;3qq_Y4mytbGar`hGs7EXmI0q^mElu z*jUYVufLU;F6sT@de%GG&^@Jfz`0y21VFszlv*wcSP0FdJ^rQ zzKI)<-SXIj!on)VyGrMc2Bw;kXL9MoWg0SG04>D=5gJZI1SC2R}M^NB@?GwbrI=)vsb|JpViMl-R zAtp0BVf&};^3(LfH@wS8NCZMm0u)h(4w2VWk|_w2AvTrq(YO(O6c(d zYx>6!?UL{-_srPH!Pjm%$9N&*I7uxSGRn$#>1@FQ{1<7>Rqpo*c%A`Zu?CK7{1$? z%4y#@s9bRw-NRa#;{6ilJjp)C?H_5hw7{liDrB6FtGGw9i%>k~RPzXm_*GJm&?Op2 zg+|>)^pNa23wvf;FsJ_Gbr!F_j~4Z!Cy#y*2??HBbXw7{f!N6S`FYMa`xw;^&5b1J z{p2Y{R92MMlvM_t^%?uS3f-lUJGEc_9)0Hp8Hh7rB>$yP?L%lVJRw#*RVc~J8EfF! z-^(bPhHlzISPjJ}V3PblDr9cZS$dI5{(g zjHd(nAv82gMBCrON8@-9_&Dzm%!HO5uhC5 z2C5I!TD%eqVgpf&Pu~Ru!6hp6qw?@R^5^ii?$~!?uo0L$PIU&LFS5=gHxIRsfP5Xo zcLIPPG)3Kb-}W8(S2OL4n)P+slwhK04uAMI<;*jZUxNQNxsES<(Ey9~pv1ZDo?ZYp zB^SSoiK@pVwT|tPYngwK2L9E!r~t@lU;}3!g4hjUS)}{!@4JRo;mw+p^jBvO^Q7T> zWt^(VrX)?*Km0(X6q%~U^%)LyW4rC097P(9K4VxJ+qn??NvH*Z{5e{oxLq@IO%x>jLeC_G2+t@tA7nljKLyS zr~DS%{hCqV^ePRvX=~l)vI>l)K3rBI5F$J zBEuP#5P9DLFDVwiGUh>k+*@Os2+SL{d}?q)X79WEY3Y@MnamMJ0H+M=@AM^r_DDAO z0cYlX7Ii6Tc2Vb)+adT3{KaJEc(z#~x&ayod+Am=a~i42v%DB@IEJ;Ye4@7{Pj-og zig(hLa%7h6()Mrbl{pp^@cqvNM-DCC^gQn^Mv5)jiQU4)O_1}P`f1mUfA?@o!hLOL z} z-EtSAiCH0^_Lrx@-R%mk%3|3?r>9~FJjnMy4ihs*tF@$}Z39A6+A0v;T3Ck4=-$U~ zzqRdC+MCLuI&huSrU}GfQ4#5hXLo4%aQ`_yBy1CFz2Lqyo<71E&DW)|l>@#u0cD_h>@x0>E^g+H|*i=lSuFA&f7 zljtRN*0PwB(x)!{bVNBKn(@@3hs>69-`)DBL9w>Rh7jIQV;3m0!O#TkS=5v#(EKKH zZBg6v3tGt&c%TL8m`?WXI#rSd!b=n~Z&McPa0tH8lDtE2U-?jr^J&=S(8Devtz26t zTd`(rctd%?Kh9Q=94z8eWOl-8XA}uvJI5zuJ4I zkm;6mFvL-ipZ$A`nSLMMkRl@+E6&Yy*XtApw1CP ztMN&8wZ`9P6dWWwxqJ#nas7NT;P40umD@LebknNP3)#7c_e^bH!X-bYzH!~PQ*KM1bWDYQdss|mWz`li)Gt2OWHOCQ)=|*3ynk#XbV;n}c73wnE}B156pl(& zE10ntBMB&0?P!v6;+sk3P5%n+sKQ_3Jb$g;-gpN zKJT}heA=>Dk7I4W?6nlDUI93nh6iIF7x2q*#o1;DVzhfaWOwd1krd+ZUBvt_ldtla0%;tD3sr%CQ8nqG<>|`{DsBT;8c$zBY}K+=>9$w$R#gpZ~{&naEiu9@?wn* zl<2%U*g2aS&hOv%JcA#W7(11z<(aa0f(W1|WaHP*zjFKFSDq_@2t)0EK$}l?j)#SyE8c3kv zKseGq@xs=_Cca&Tqdv*EjC)+ZR~-JST%zi98>+cxD^3ND^ z=QTX6?t4^oQqN`L6e~@C^eGAlhc~;)q;Ji#>zRl|`D^V2q^o7m(DN<|J3HRUf`7DN z<4kthJbe83wvzp8w9#L>@Ok2K!Eag5CEE-o#%6IAsf!&myU=kODHCZAj?n1{7xn>~ zYl#u-Cs`-8FQ4ES zte^hlD}6voDZ)s3oI=ucBPHEEuE_N2Lm3_^RT7!Sqauy8!dnWaxf**wtuJH2S@!xb z^&Iq|!vKO183_3BjB22Nh@yK~1TQ+RCOB!^KvPm_+2k-PYG(N&D#^KYLPh%GiyfIo zxItR-_vEg=3QQvoNkz$f{1t+dr6-&_qIeW|8=ma%H@ z933$2L7d?Yi%{*IG@rZtN!wyN+bpFdqIL|B_?C|tsiR4$gB)P>{r~by4*zt~w-IgW zE8E}qXnU>|?+lAQ99Nm%f;o33E3gDeiyBs>G*4pf6dZxTd$B2udt2#n`=i55`w3@G z^SlSotK}ry>CL0Ji@mQFoBgOpj)d+6ZOlw3@?7c?N@e;4dreP%d_LI!R~iHu?xiQI ze%#>=rIloJ7eWBHnQL-9kvC zfow`)b&-u%e4bSGF`biyK_zV~XH^`>wI*KW`47?itJF8NjJAX-;`mfJqul}H-Fc~( zzuBLvKIyQO53t=YEdOM;|8JkJb^-4d$V<6WZdMNYoYWcWKe0|#yM)`t41OqO{fR&^ zJ~HN)=_~+KqoEJ?>dSuGuHRySd={=W(3$Gxd3sHRH^1*Ch=l*mbs?ir`L`}{PC*LX zu^RD>+dIo@j`2r@yu*%0YY)DhbFI4JnR|ywh4rcBYhJzfJ(bw2U%x>=*0R+2C|z*W z$Gb)^lG4Ur_vx!r)e*2ek4KR8u)8DmBEdQ0qV5`BV1lxB<#(_?n5?*-{R zh;GSWQp$gLKm6L9*F}@zI$QzKhT;bz!jn~_H2K<9g)k}*nUjH$->K}o* zwokK(IZK#&CA62-9P-UrpR>p{__xO} zK)>!;ZeTTpS$lA3RuVw(67UREsZQ93b^SND+2Z|jDaw<0H4?L9|4EwUI;il9mW#s2|jF_s&f7)3|pm!yy)K)VrJ+ z1GFDs=9P`uN#}Y;XVUFrPvR6{c=t4RqOINbeGnzbQ(8rf{gE?pD0^xtRbU}}el2q} z(|e@0JmJweRaNt(-)fI;69$p5=~H!V{QY`bg~UZ-(UaCFl8a zroASB9>6>4-`9QRk3)3NmM)7_^14dgPC*p3979Jdpt<{l;} z&^2e>MJny8rTCT7&kUVEemHcVymcU|t3wrJ`#c?yaJc(mFmrDzF+StPT-`9F6hHE+ zm^ZSk!C2L<@zXo2mQ?jaq9|VI9!=x4P_qI<+4tcB{G{K6^|9+DNA*gu1&HrS+$3Gz z2lBDJWMWUIQvPNtVm0CCbkHNgh8k#1pbb1~{A!EuV6MBPNO;Z|h>8eIes z5EV!;Q}KCPkRdF5Ms2R2*$ka`_RRKmNB)ca-9q7~(T?FI56$BitpvW4lG*UA@W&2; zQlZT-)}12_W6F91<+7h!t|C_)jQSQdwR#>EdwP#LP16Ybq3%D0Mt%Xu*ORFY2$#uu z&XojrgxW6GM7x(-sd3g;@*Y|7bDj6d_f%j+5SXmAa5o1GtzrML7t>i0PEd&nq;}}xPtS=Ze=3RH@`V54v z2^KZdY>Rgt7U5)|d0pzUcBavx!CB-H&bPk^Xk2A{gMvnyDGd8DqSKnqLOoZC8-A9{ zvA$l|d6u9P!MyO3l&!fWv&r&eayIY0vgbVo8DyRGJY_GL*@$Emt%;A+-tK!b`8z0k z7Ul$_=yxx^(@(VrQ;F1e@_&*sxYMO(f*it2pnd0e-^V996um#JDt{s|tum`urWQuT zG)&VVaDGtc@z|axDXp_%!t8k;mh2ginH^sW2G>RVTZaHw^B|@p3P!B-GYxp?&zYlS zSt`|QiR3XytK<-Lw14+wVO@MZQ){8+?CaUN#Iu;vA!AIkSQ|9-C#>l+I>91?hR)XS z(vT0AZ+5GnL@oMKNZ{w!Hm=Me<}u2`881FIDBjj9?)PBP4{IES(WKYxB}5&1M|ii0 zKPkfUHAp7nx>ICVEN+p*+=}SvZk$p-a(sIBD%5^Pa+lmz;p$%e*ZCCnp>0_%+{Z-M z-l9+I4bwl{I;-!S$MIUy`W|R+q>>M~=Ey6Y#GAR;u-JQlgG(YiKHcTLTxDK+@~Wc> z$Q^HWklMfgHtW`~GzrUkEQ!63+r;>iC`-^6kM10J5_ zM?&hQVR<17NazcP!)Z@!f7!&ucbg&l>knvmM~LBdp8Q$rQ49PnTGUwnJ+r)pS>}!C zwHfZgMf&NPuE+&RVMg;u%+CzpP<)BG57LEP6h@TRQGEmG>?RH1&wm8u}ybM8*v|f_dFzVLVk2WqTI{y zw$9NA-^iM8>q386D(#-wn*~&AeWBtv4@aAYc#h8K6U~)3&z>w&Sh~LmSIK>HNFqtr z431EsLbsmJz%!0aU>v0Mf-qehgWf{5`sUR>lb!>7cbembzg#CHokRB3xQCQ!0gNIY z!m``OuAn!5sHY8;*Kb;!eKWknf7U{AxO|R%ruW5E!8#K^3@!w9*_Q|Y%2H^~=l~+m z)_B<)&uyKH)kHVX)4Z*5h}#Ww_5W6IxG>Q-!{O;zSh(EgcGrnQzT|_99OK-pmx9RV zs8DVeboKn~c0c*Xz{bR@p5wvm5exC;ALbY01(+;Dl^3sVuqk&9iky<#^F&kEIiQ;mVAS33c4++VCZbtKng^X`C; z=~oZ4{j*M_Ye%8=(6&zwN1w*aAd5Nyy$N2eIu)0;m-bSyFf*2@w#2M=&xVZ-S`y7t za5=sf_D;Nr=WkZ6ldeHUrG4nLxAK3`6M+&>YmX;U?&0!eDC7B{+Br>zGgwQ!7fT2? zhn|-BfRv$UEUzI{CS9}d%EipCKvJuEjX6j#mL(J4ubJn;Z|uZuhz{s-Fgj>uxoEWc zq$cJDZ&h-t-hQo5X_T1F1FEWgYXQL^T3Z4-wH2f@-Ao)g-JS-9RiE`-qjH6mMM}Bdv2Kx0b1e8K5K@J4(g)=C1|I` ze1aw1rhi}eMZMbl^dwA*&_Md*?e?b~QU3z1HxPb8x<$$+h4LF%(7}UR&5-!x>PT>4 z$rh8|72hZRxefJLqfNq#aZZv{a z1}TaFV`k|QRYG3HU}DUjPa$vopKksJk%c_s%LtTR${v@>D_7WQ9rX1uSYT0O{o0{Z z3TY|-@#SmW#@hVR%E19ut8litg`jTo5K#am)&ssBrUq~`$6(d#wNx^jjsl9`%(+T4 zAHLK5t+m8LlA0jB@eeq!Zg(G}6Pptg^eD|NiS@emM)vXNvqB602bHfsUEh32T#B+z z$ChD)xJVCOm5%zS8dIhpw#?S(&McLGzafkVJ?^7X0B zaG`OMc7{aR$VR-|6sDtdhsn|oOlcc1>BL(#vFL&jOzzI=5YM>NR)fM%P_-GJagbNQWw zV57Z5_D?Np=B~5r!e8HDGH7+vUO;kZsQB2?5JoV0nyc0A%ZyAUErLHNtjJcwv*n8Q zv&Qr4nyRuszav1!_6vuXs7C|ol2;7UCX#Il<&;Vancd~1cJv9w(KYX`6kfP-rUoX3 zENc4Jd#w`}4d*u!XS(_s<%>yD_`oRg142cwH8Adv8Ez>Syxh@&lKgYMr0o@Nu0o%E zE1*~F%9E<2C)0yG6WhhYQvm2%BPqDEf}=S8-~tLPe-FZs+vS`%;DEi(4dYSBDqeaU zK+G4S%thVd?DYW2iyk^zwjmxS*_2OK_|VmiSQQ3LC%c=Hd4ZFBbw-gJSKQ*Thy1{F z#}w2X>`nQNo80b1+PWE959g*oZvxPD$~Uze8>Z zp%{Pd$N*Idk*+52_qG(fBJ%~)>=3oNTiNNAUh!8R3fR_0mMnfB#{Mc_cX0sU$O@6# zb92GKd5Y%TVJ%Wo5=GI&5j#DnQznbU5)q5EunQ{*kPw|fWSo)o+N|!4+rHsFC%`E` z<=_K3Ft7ENo!}(E#MbMOmo_Zb5?-PwOcX}Ws*ioqPT*Wv%hFV-+`1bsNBP-x{e@6_ z@`PoA-)Un@$v`x>;gZj(!U?{MNxxI>O7tnyz=VEg9gNMn zKP&4q7F*aGgS$?rILK)iIug+#GYJV^Hk~+5bC6#PoN5GuP?(@9unAq(T|j2a!VHTB z=j+ya-=3N-H8*dfEaBT~k8>CKu9eM_wWYOdh~KF-bp!SDD92P?Nelqt5i5Dc`^)dt zX9?x+S=N!EitqjMd^K?k?Ma=`;%$za@I9f?hH|+%(-QU)a{N`2nGynA? zV)fps_TXt?`ya>9S>O=ZApFesObif^L5X2AccLilPbi+n|M6gj|3_~l;`x8DKK|>z zJixBG5yox)n{u%v2?y`eO{tBrZ1h&VZe~``T1I#^=f!FluaX%*rP6)%k5Oy^J;`iE zx61E=59DjmG(Kf)pep3y3{%j!V^fX!vcVl~Sk!(auAB9<>o=1<5E~3V=J#jQZ?ba3 z&aBu!FwA!Gbh3S^;8i~aOnlUZQNK(OH5ik};>zMk972jpqA|ObDWohkzsM`$W@X1D z%OSCTOBX@xk74yLC^ba0aGUQw-mrbOe~R*=R&qmu{0VPojeM#d~8E8d56bm?w(;ZAT zz$!npP03ep)Q*$NE-)f4F2jztrQuPXx{0(yceOqD=aa&@n`cB-_(r0?K z^WXY7?(pyyt6p{cH9xVG6CRk5u`+yiD!cyt=KTQub&9K#JKQ!|1PA=i3)PxZd9_Me zNuK2N^0UY%if^7||KTz)n5VWDEZsVUau`TTpvB! z6pKMi_(N|7&4xjZ#!9DlkLm7t?t^x*QOYq~BIzkp!+z#ZgB?i-fkc)#yKrA$VwTZpfB*4)?tN+Zf*as!dDTD*CC|X@O|)EVqPmHT#=SUU1R(k; zVC{#V=1n@PYuxMKtlKGtq-Z3G|LE4Z)`e>)JZ1NfMbef!9awI`!w~%%RosY%u82%X zdVwcLhfc1CkJqp-q<(BOSWo)6;rdv9ILKv1t+ONuY=#U|H|Lrk?M3d1&q4ySoAf5v z&0tLR_0J=;7`=b6Jaib8gB6D;bXM(AQt(dWt9*Wsn>UOLeU2wKmE_YtEyxqR$Fsr7 zDI;nkTi{?W?j_V(ALRyes!P?PM<0Ebx~<;bcRNFHI_1F5B>z$^r7qjqbv~KVlj&Ch zc(lK_*2sQxT{x${ckIPeT?^nF#+|R+qXiyLEFXX6t-Zwn6FuU`&cf3+yXor)wi|U zY_Rx!ev%d%hC4NDop2zAZXsc6{57eMP*L~g zjgBrG^V35#!MVFnN_&5R&`U%1f}aLG(jE6 zEN)icS}BO4WE}BY36gs|#=qAgBf;`wnS8-!eD(saf2o<;KkVUtboV=%$0E>RbN9K* zDW`0KCsUZQdrrp&iPq-)? zT-Ei{^=r3ZHAvl8RV1@mzKLyE??|1u5iY;j$ZIchy!%mG^>=w^@SIJ--u-1>kN#{} z<|yISD|~oTi_>1w>}E(VS6DBHPiD7jkG|YfkEd}%LdsvX&jSCEHn`QJDW_-geVS;0 z#+#)j+(Aj>eMml``c`Dz?^pB>f1C{7dX)L%^d%crzX0SW)op*h7xk8g!$CJmgW#?X*k z#O7Juy>Tb_wEIGTKmpcL-B}5d#Iq2NOo*4=Z+UR#r}I{5ZCnkKU}&G{d()^_Eo_#e zsdwa*wb;5K+QXFxAD~2SL;*l8st3`26||C&K4omw#>?PWUV#i1Dmp^1_m^{dfRY6i zQFLmsz4cm>OzI(W5q{R#DskLgj+?>=NB2q5F@ze_Pl!u&%mg~Vp1gA?$+ovIgbW*7 zOCNgHd##5`d%5h6zx!7Ty`{ho)az?kd#s|MO7ziBn z#$d2iV?Mf{qHVmWQJpSuY9L7w$FLL)7w6D#KupOyqjrl^_#Vlfc4X_D8hnY=xFs^N z>e{{RKvfqAoiaKiaT@si99*y^`yf{+bklpujZz8{D)7G{E8YK31`+rFShxC@boB`S zL7hc?#S0=oMzXrdyGXkz+<+FIkpnZ(S@eb`@`HZc zBv>v!^sE0h7*v5#Q4*K=`2jPX4{vSyh)t5q35B9g^Ta_fI-pyQ$H>1(_nL5vHRqEb zL;RG6(d8kh%2w{P+TzwJ<}7T3oeg8DDD|N3RRb(K9Vx7xiZ@ zt_?bg_z0$<4*Y4lf$h`rUIj8*>pQWYpJdTzpc>fAh1cA@gv_T0IVFxBfreW1T2m!?Cd|7g!q$37<$#6tDf_b}}Ps-qd_?mtzzFbyjtbJoR7i1n!V|j%V)`ed?xw z+L!+s_5MaIZd^QpGVV$xumaw1LiO#F-P!^=_FsQlCKhHgUEkKY+)&XME-5!u6_ir7 zngngPO$ zSx$e5puT@+8UM=8oxR1UcPjAVY-OFebOY)Nqae=%`eXYb>T;M!0DDaOqauNgpl&ZCN8isybfo4G+} z0itQfz26U=&9Abxef$~dGkoMIUlF&D3b&|fG{S~1Xat9W$}~1?=e0a;t{cg?(6(kp zd>!1kd`IK+1TIcEUft8|I#H-~vo1SPD?(2xdJlT5NNXy7<~RkmML39mtPzl#)@3+K zxPc892Uj@~hSBKKl>?0{!j-Kz~xPX&((NN+EFI2uT;bS$pi1gm7CkT3)ZJ z@^0MAl(T@HyNGmFCPz?ZYi4=RS8g{62k4HOPt}3X-&6p^IsY?L3-g-AIeoAXn|lr0hlSNAN4V9Rv?IRM`@QF-g-b{eu$+F^+>n)YRuJz88eG=p-Y3`Sb~mvqzT>X*E?exKI2Vc6n@lz z0bay0Orze;|C3`KO>+SXAVs0n~cG@9?n%kpeO1G??rktc6Lh@W&5ugW9AgUlMo|lcG982s-%Im6164JTT^2xD0L(FvlyZ(>NxlzX`AQ+fiutLlCVs znu}q2@XMe3f7Ebz_tcIM%2!}0k{9<HkRG!i9B`kx$@WQ0#Z>Jlq8*1U)PYqr^uTp>U$U;0LqXQKL_KXJ~=DAF*D zRzDtjVbPaH(m}fZNvHU!(9D?VgR|ALhZ@v zfUk4LCb*AFW`r&1&hh-mapW<2X&oLo?l6hPQ!I;Z6x#Osi`kPbjwrQX$j&*VV9q+? z<4YeGy+Jv&ccOkj44IN}AZn5BO*GgVS=AHrmglMjUr0-k3$Jy$o}5IPi!s48L?#wB z=$aBfJsI{bsCS8P$WvT~cfoJY+n$B=Q%oBkt@>bzkt|jwKy1!iO2WE|4a@a~{}X~sGli}&``9G4KmEg z3d&8sIUth0s?M{+&rb4Qf!EFq20Nd7HKDlzKBee1@z)O^L~q*;Z=B`SJ^7Al%k6N_ zznoA~_YrWW6|PQs#qx8g_`6ok&yuVTCM@#FBjKWWjzqPq1UfrBsJRg@SyD7>>&~1> zs^3s~{;N;@WA6Uk+@tUPVtr(3_a$}}b)p7IIO8QgGBG&<0p(Q70j(_DnAKgxOk2)B zud|z1cGh0tyg)tZfAstC65p@CRxGC555N+r3nKv;laf6P4>AKedeYPw$Q({#FW4bg zWsng3@AsICP-AqPGG>HnCw65Jq2DaZZV|xYRX5$&mKTHG-#+g!%`GZeEqz@YYfOno>^jVGZXCtQwObKysYcCmE4q6X`_E<+|YgSl&P9DBtFXIW?iqf&V@o;mV#~Iq=7-Yv>rTr~xTR)gNyzi$AIy)K5Y6~d8XN+Kw%gK1KWHbQoEb~@nTPj%TT$ng* z5gQ;m5ub16-^O=Ttk?>6ElT3i+iKhJ;vUeifY|}J!o0>?FY4~48K(9B4y2-K6xNE1i6jThcmPauUV%O?1-kR3`$3KFsBxz29-DV`ao7~iC#n& z?VCe-rtX?!BcAPZbhUqIq6k)k`gtv4!YN`202><AodWq%UZc-J`Q@e7Bjr{2xVMK!Ub_`cb`CQSDp;0NdqINP`ipK-JAWt^4#HQ=23F_ssP58{TGftEFWZA6AIH zxI!2afJ{B12&JJpd5xQbLysfS+U62>s654z^vji9ttl`Vz$O5_gx(8}hL73#EV028 zPbzK@phF6c+WWKp*kFMPu+it_m?~20Z4FSu&t0?kSAE|D@)_|ISu-{j?OZ!P`&+j} zX3?!BW7a;()Zh3z0}r?z6=@`rhp1IVZJ24Xn*1B%WT#5hbsMS(a#vPWeuZaM zlWU3!B0YYya$$`f%*TDbu7aU?iF?*Zmv#EIu;ypqBw)DB3?s$l8hAdH%waRRk67UE z!v%$?@+qHX7-j#O>rUjhiaLykrSC%)@?DjmK*d2{H=dtvk=@n9);bJ{o3D~$Pdk@$ zNG1VC25!yAW^6|m-50VJen;GGVuH%sz0%`7D?za)8r zjlU*7(;PCrlf4;!%bhHT*V!d5dni9DZE2lsyOLJG2HbY}m2Bb>WX_g$x5R#ZQB(2J z;cpFbF{}QUCZPyI1GZq5#_QZaKp-d4AU_+rHYiWfw_D84-_nBk_$PC0DVb;C;D#uF zdA!ZyU4W{?2qC(BLC2rw#9<*i-XdG11*v^F<x4=eRo;Uaz@hH<8ww(8 zgZ`$n8z-r+sMC9NFQ|wGehYdhjs$zB(b)<1@R$#+laC`t?%$|X!*!KV)QoIs?9z?p z(E?yIe*fd)jyaO7Sc~Tyf-9+Nz-T`Jn$qb%JxZ}td>QkVh8|(=wIyLeQZ4Yxne$7Z zW3A#=ya)+A3kXXt{t8cns4v(1V-l4OKlCoje&`~L2u-#Ihu_ zUE6lv3-$JHbv!CExv@W@TpEPzZJ`KNBx8*J2yIkS55^?5j2Htg)%GAq3 z%l*WkfPvdb%n>UIp;oblR&&3X;x3e-JuGYK6cWk5bHR7-x!52A9&aa(nDCRj=|-ll z2Xnjk7`G-HOv;bc&-6HWDD|C0H^*Ji@r&>XutbXp4&RO26*>x8hsQuf@xNfRi+qo?z2e%HXi7O$HJ=ZfUzd|m60k>{l_*qsid&2G|pZfNy$+?Zj0##MNrKkC^ z9Ta&uki-xsKYcnYhK16L6cp_gFgHjs@7O8g2BOjZ-D_?w=+0pO^2bE2Ua&tXm}gu@ zxQj{q6X2H+edb}28>?DmZUJkXI_{O}xL-Rrpt&u>XcFu<{Pff$X~V4E2;tm64D%V5 z=tB5(tq08Fuln?2lQL{OfKY=x_@sPsoj(Y)0qz{a!nd>A{MBNLI$q+cdhPCwlER9% z6bjhn|E9XRrAR?f!#-xCi%UG*59gR4G@NFzpN2oJVF~tmY_B(69VP#bpB|!zfpU{{ z$1{4v?|T%`Zt*kxA#SN?xM1jpAGVFhXYPZY8WiyNeMTQ$oc$7zPkGu}SG<6r$POvs zKgd6OVwOixAWQOgSeRB&bk~`R<_e-MR6@~ig2YhnVWJv25bN)T?HKp_Q)}V^M%2&$ zs9VrpaR`{NxaawRR6GQ+#fM^`$?|Z9ZLXWq{wve|@T)u7)zK~`J9L5GAvq04)I)Ur zDLMhQKl+%mjIC{gqs8y-IL(stchU<$*=H1^kgqcT>oFj|E5(QK0(!j&&ldH*Bxt11 z+(KzGG3rBEP@ROm{w5aoQ*ZxD6u=`<^Cz9>{-p@*dD10j`u4`=%0<%46lg~iauGU@a7#f2Yd z-<#E-Pv(kB*L?Uu7wdp`F0X*Rt;h4`S7F$2Yb^^^aqgh6KeFW%P;Nb3jxb@e2eLVx zfA5;WHC%p>)8S3X5Ksy|7|3{L`f7e zp;JW#=}umw7eq=EtVcI|3!{r~S2?g&&3r)|n~$T3GkHzhpQ>Ui9;ph894sjOO{GlE zQAlFcCp2HHRs4XS>h6$W3i>o3+0-&7+-R#fXyO}Ew--dcdc8T^UZ>h4@}gMfafL?# zOUI=Jw-yRA3@RlIR>MmX$Y2vR|1PoNNZ9F$fR~f)@Ov0_dnkf!;pB6x92r}%`F4BU z=$prZL3kmM%}t$#WEP0KHIN-uP-JIGIPHNlQz1t@?l)pthwx4(MQ(MLG71bDft6#WuLS zgAWa@)Rmh`FOZ8bwtW2-tp~U=GNQQK{_2y7%<%ByHytz2j<@+XsDRqdWtBM8jrSED zu5bfR>iwoz{zf7@gk4)sW7O!w(fq8(Kt^{v=5fkQ`_h1FNVJz`I0DRC{Vc@>X^60= zl-v=7tT=GL`z;2>Q1%rX`0?dy1-Q^>1UJlrY;X2LdSvAKF*$p5i_4UDv>`))c=6)9 z04&j7d^aHCn+Ek(K_ZZWB5k~d2;!j;>J893^_4s0qT}HUYr%^;nUR5Kp&0?Pxn8%A z*~VSDfG2#BWo{kdf)i!eJ<>vJ;O@)jenZ)$tRi+p3+vDVWnbWt#ax)gX!^yBD7+o+ zaX5E4J`OlO<3CBRYeqrBs<;29qHj~hi)j&td8-iZrBy|4G6sb~(T=Zscz2pSUU7l_ zr0&K&yIZ3>*Sbr`-sHjU8&F#^llWqYS(tj+>xPkWE~cy~6{SG#ESvhnJz3#rPU;kM zn-=3R#f7I-+1MC`x^3ty&50*sTlSfrJ4Y9C&h8rV`hH011O4~ur?u@*ex6$-y_I&w zzFC!7yDCp9aghgh0=vx*x}qOw@Vpf7%uy3``|(Uits1_%b|H;IWlJ6nKuqY`92I_<92r9{ofX&kkFw+qcW{Z$QL zd~w%FkOxuB-E6JHUWEwT4K$fm}sz|+Ov$i;3j{16>Au7f!#tXZfq)Z9NZZYTYO}gWTW09m=|kLMJ*CpT2V$~ny=;WVPqJ9i_|pA z&`q>>PdFKA>Hj=5>`|)EH)I3QRxA!~ai)C19sH@*c>FGh2Fx58P zUE7jpV=aRX?_}s+FS|Tq`>ZCt#Y{*u9a5EC3GUdF4s)-S@8a!BwW*yR)b50f-#vN#LRb z))*_fPL-B>StHcr!V-dnbUd2Ay^d)L01WZdi*t!9ClHm^x zeb9Hc%}Dm}(t~f7tDXE971my zyzQl5cK1obowfts;Kq9g=e#OUjV?j>aRoj1r5thlS;9FBMNj)fXZ9gqnQD_3`5({y zcu&{yLtu`}OWD*p%K_)xZEahc0d^=Gv2U@97L68nL`+E9!xp7lby30LeXxG^Zmk@Ba)+}TS{gl(`owPi&zs5}r@e8CM=oX4hmrzIDxQ5>s$ zVE$eFvL#7gAx3WRNuLC6V#x&Lb%xONyESx+!j;_anBdVNws+f{IhM@}ySGp6j^Hrc z8+w_WvQOli#P|L}A|@r5k$#BJL!gbPsWBU_Yr^U47O(XluT6b5wg^A~CmVo1qlu^F z7IH{#X&w&Q!)1`4;^9#mY<_N7=3Qwua1v{&6DXZKbax0cqbSQ;m43CKYPP9Fu?tLV zw3>pM8h23|$VWO$f3=AhZMGyKnmnXMXJ+5NyO-JTc*z30?9fz{k*VqjojMLY&4s=X zzeVs}K}?c5_~KvIMd9P+KW4YDoji1!`GG{Fnnx`JN}s)X##{UDs(vBGTh|#aUl9f{ z99J9p3g`=^_YEsDpUnuoj9q(^`Juy!;m0bc%}ue2qNGJ2ZYhnX>R|?9mEjjaQP^c64TON}ra#8zV2NPO0uu%>!KnHG8(e z7l~Kf5mkti37mD?O9i4|KJC2LTLDO$y%SU-)@fExe$(_-Yx_CH*`Y@M>v-%uyfeQn z-@Ske!u)M>HXz$?XNR_7XQ+axpC@M7Uegu<$l}va%y{@B?P|&w`@zmPXF+Ec?E7l; z1ao5FXb_ANg>EvjHx6oX=bGFbE@=(6(@Pbz5^)v$+;8>b+xy?ALr!z5eQbiQDiprL z8A>($Wzo{WquQ3cys9*nywS(?r6nRKQ07VPqWoaKT;fcgv5*=4FYi>nDOAUG0zhY$ z0&Idt0vb82?cF&R1tz@U4#+0gSyMoki<>DdPNtGm26T4g$abBA4a2*aVEGZ`jy;Rj z@(m#FF9=Tum%&Zesmi^+xh1_|7YxXd;VH)1wsL&2(dvL*#ndUr->W zaHSgN|44#*IXM!d99+84chOvK>xKk{x+pYbRCP>)gk9~fJ@Bd)y2H8Vjod%Vb)>cm z=cB}O@DYq&dh7{4pAh$o%tPmag+eI%+;cWWm!`PFUnB9Rzg*4UObZI$Z*13&Q(8LT zJG(sY@Z0$!pG4=q^3U$wX}8hiD}xodz_MK_vyF$YV2@FG&(0P2Nj;}YbTF?#!Yug& zjB~W^<*E$ilZZEt<9zKALjqNa*$BPZ<1FBScFsCNk6WAU8F?(e8XF#*6FViYI-Zi@ z@Qv~f>j8>mb2-oVN#kg>r@zqH-KLgikiwKr2ePr*BP(IN>X-4a3ZJCi-hqdHm$IHl z3YnD>1eg2qMM1^H2aXeHv*tq+^1A1X9ex<{+AqBm--l0FUpOpYuI66n+}|wcp0vt; zwers^aRnab7kcqvK(kc|giVqBh(?ACAOCu5`SUORt1UyabpC1X84q{G&Gdxcc}##n ztN#QEvdysSGII#6Jo(N;G;J`m-MfHVcee3WADojbJC-S6@xMHJ|HT>MU;P&TBbfMK z_GI|Ke%^wAHTmjxxGeu`rS_`ENU^6!a|-#6&Ge}>zg`8u(>9!3>+faKRh6DL)&WGP ztf>j&76#s_++9X*5!5GWrG#qM@5h2 zS5DB-6Xm&s8ybI&aD3+9-LH_`_~EHW-~0MCq&;{QeXr298CuC4UbxrUR!)BQ+uWJj^ZDCqmOlEsv}*QxqVjOYo*9Yo+gs#YNvlS! zq546uIk?h47}4ztVh>@acbk6PJuIU^1T+|BYm!^ykbr=|X*pgILxs4YaTaM9cpMzJk2q5?IqiI!w+I)n{)>y-@jV7yX1b_ z^1$Nw6mZD9a7HQkbai5bFGhN}ho6rC02lTgt&?(BM;8I1f;?^w!?90qTmH#}w01_r zAMrXzmM(62&+7z!z35Q*#O;5`t}Y2*5TwlxPcvTpD6lvU~vKV@occ|9F!Wo z^AERv#=S}t2ZmT-3>=ImT_QX{st2H5Pf|@4Yil<}Y