From 8fdf14595ea704901d4ef3c3e7ae71a894e6cd3c Mon Sep 17 00:00:00 2001 From: luckfox-eng29 Date: Sat, 2 Nov 2024 18:41:51 +0800 Subject: [PATCH] project:app:rkipc:rkipc:Modify udhcpc for silent operation to suppress irrelevant information from being printed to the terminal project:build.sh:Add support for multiple folders in post overlay project:cfg:BoardConfig_IPC:Add support for rootfs post overlay sysdrv:Makefile:Replace the script-based copying method with the post overlay approach Signed-off-by: luckfox-eng29 --- .../app/rkipc/rkipc/src/rv1103_ipc/RkLunch.sh | 101 +- .../app/rkipc/rkipc/src/rv1106_ipc/RkLunch.sh | 105 +- project/app/wifi_app/.gitignore | 20 +- project/app/wifi_app/wifi/librkwifibt.so | Bin 282092 -> 281944 bytes project/build.sh | 13 +- ...Buildroot-RV1106_Luckfox_Pico_Ultra-IPC.mk | 6 +- ...ildroot-RV1106_Luckfox_Pico_Ultra_W-IPC.mk | 6 +- ...-RV1106_Luckfox_Pico_Ultra-IPC_FASTBOOT.mk | 2 +- ...MC-Ubuntu-RV1106_Luckfox_Pico_Ultra-IPC.mk | 3 + ...-Ubuntu-RV1106_Luckfox_Pico_Ultra_W-IPC.mk | 5 +- ..._CARD-Buildroot-RV1103_Luckfox_Pico-IPC.mk | 5 +- ...uildroot-RV1103_Luckfox_Pico_Mini_A-IPC.mk | 3 + ...uildroot-RV1103_Luckfox_Pico_Mini_B-IPC.mk | 3 + ...-Buildroot-RV1103_Luckfox_Pico_Plus-IPC.mk | 3 + ...D-Buildroot-RV1106_Luckfox_Pico_Max-IPC.mk | 5 +- ...D-Buildroot-RV1106_Luckfox_Pico_Pro-IPC.mk | 5 +- ...-SD_CARD-Ubuntu-RV1103_Luckfox_Pico-IPC.mk | 3 + ...D-Ubuntu-RV1103_Luckfox_Pico_Mini_A-IPC.mk | 3 + ...D-Ubuntu-RV1103_Luckfox_Pico_Mini_B-IPC.mk | 3 + ...ARD-Ubuntu-RV1103_Luckfox_Pico_Plus-IPC.mk | 3 + ...CARD-Ubuntu-RV1106_Luckfox_Pico_Max-IPC.mk | 5 +- ...CARD-Ubuntu-RV1106_Luckfox_Pico_Pro-IPC.mk | 5 +- ...uildroot-RV1103_Luckfox_Pico_Mini_B-IPC.mk | 3 + ...-Buildroot-RV1103_Luckfox_Pico_Plus-IPC.mk | 5 +- ...D-Buildroot-RV1106_Luckfox_Pico_Max-IPC.mk | 3 + ...D-Buildroot-RV1106_Luckfox_Pico_Pro-IPC.mk | 5 +- ...V1106_Luckfox_Pico_Pro_Max-IPC_FASTBOOT.mk | 2 +- .../etc/init.d/S50sshd | 48 + .../etc/init.d/S99hciinit | 27 + .../etc/init.d/S99python | 55 + .../etc/init.d/S99rtcinit | 16 + .../etc/init.d/S99usb0config | 67 + .../etc/profile | 24 + .../usr/bin/iomux | Bin 0 -> 7588 bytes .../bin/luckfox_switch_rgb_resolution | Bin 0 -> 7728 bytes .../etc/shadow | 9 + .../etc/smb.conf | 13 + .../etc/smbpasswd | 1 + .../etc/sshd_config | 116 + .../etc/init.d/S99luckfoxconfigload | 20 + .../etc/init.d/S99luckfoxcustomoverlay | 206 ++ .../usr/bin/luckfox-config | 2754 +++++++++++++++++ .../etc/fstab | 0 .../etc/inittab | 0 .../usr/bin/rz | Bin .../usr/bin/sz | Bin .../overlay-luckfox-ubuntu-config/usr/bin/dtc | Bin 0 -> 335248 bytes .../usr/bin/fdtdump | Bin 0 -> 43272 bytes .../usr/bin/fdtget | Bin 0 -> 49888 bytes .../usr/bin/fdtoverlay | Bin 0 -> 42740 bytes .../usr/bin/fdtput | Bin 0 -> 52568 bytes .../usr/bin/iomux | Bin 0 -> 12176 bytes .../usr/lib/libfdt.so.1 | 1 + .../usr/lib/libfdt.so.1.7.0 | Bin 0 -> 139612 bytes .../overlay-luckfox-ubuntu-ultra/etc/fstab | 4 + .../overlay-luckfox-ubuntu-ultra/etc/rc.local | 11 + .../etc/udhcpd.conf | 116 + .../usr/bin/filesystem_resize.sh | 25 + .../usr/bin/luckfox_switch_rgb_resolution | Bin 0 -> 12388 bytes .../usr/bin/udhcpc | Bin 0 -> 18628 bytes .../usr/bin/udhcpd | Bin 0 -> 15364 bytes .../usr/bin/wifi_bt_init.sh | 36 + .../usr/share/udhcpc/default.script | 39 + .../overlay-luckfox-ubuntu/etc/rc.local | 9 + sysdrv/Makefile | 33 - .../board/buildroot/luckfox_pico_w_defconfig | 2 + 66 files changed, 3791 insertions(+), 166 deletions(-) create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/etc/init.d/S50sshd create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/etc/init.d/S99hciinit create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/etc/init.d/S99python create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/etc/init.d/S99rtcinit create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/etc/init.d/S99usb0config create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/etc/profile create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/usr/bin/iomux create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-rgb/bin/luckfox_switch_rgb_resolution create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-shadow/etc/shadow create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-shadow/etc/smb.conf create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-shadow/etc/smbpasswd create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-shadow/etc/sshd_config create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-config/etc/init.d/S99luckfoxconfigload create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-config/etc/init.d/S99luckfoxcustomoverlay create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-config/usr/bin/luckfox-config rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox => overlay-luckfox-fastboot}/etc/fstab (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox => overlay-luckfox-fastboot}/etc/inittab (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox => overlay-luckfox-fastboot}/usr/bin/rz (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox => overlay-luckfox-fastboot}/usr/bin/sz (100%) create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/bin/dtc create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/bin/fdtdump create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/bin/fdtget create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/bin/fdtoverlay create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/bin/fdtput create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/bin/iomux create mode 120000 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/lib/libfdt.so.1 create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/lib/libfdt.so.1.7.0 create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/etc/fstab create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/etc/rc.local create mode 100644 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/etc/udhcpd.conf create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/filesystem_resize.sh create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/luckfox_switch_rgb_resolution create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/udhcpc create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/udhcpd create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/wifi_bt_init.sh create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/share/udhcpc/default.script create mode 100644 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu/etc/rc.local diff --git a/project/app/rkipc/rkipc/src/rv1103_ipc/RkLunch.sh b/project/app/rkipc/rkipc/src/rv1103_ipc/RkLunch.sh index a1e31866f..6721e9875 100644 --- a/project/app/rkipc/rkipc/src/rv1103_ipc/RkLunch.sh +++ b/project/app/rkipc/rkipc/src/rv1103_ipc/RkLunch.sh @@ -1,40 +1,37 @@ #!/bin/sh -rcS() -{ - for i in /oem/usr/etc/init.d/S??* ;do +rcS() { + for i in /oem/usr/etc/init.d/S??*; do # Ignore dangling symlinks (if any). [ ! -f "$i" ] && continue case "$i" in - *.sh) - # Source shell script for speed. - ( - trap - INT QUIT TSTP - set start - . $i - ) - ;; - *) - # No sh extension, so fork subprocess. - $i start - ;; + *.sh) + # Source shell script for speed. + ( + trap - INT QUIT TSTP + set start + . $i + ) + ;; + *) + # No sh extension, so fork subprocess. + $i start + ;; esac done } -check_linker() -{ - [ ! -L "$2" ] && ln -sf $1 $2 +check_linker() { + [ ! -L "$2" ] && ln -sf $1 $2 } -network_init() -{ - ethaddr1=`ifconfig -a | grep "eth.*HWaddr" | awk '{print $5}'` +network_init() { + ethaddr1=$(ifconfig -a | grep "eth.*HWaddr" | awk '{print $5}') if [ -f /data/ethaddr.txt ]; then - ethaddr2=`cat /data/ethaddr.txt` + ethaddr2=$(cat /data/ethaddr.txt) if [ $ethaddr1 == $ethaddr2 ]; then echo "eth HWaddr cfg ok" else @@ -42,18 +39,16 @@ network_init() ifconfig eth0 hw ether $ethaddr2 fi else - echo $ethaddr1 > /data/ethaddr.txt + echo $ethaddr1 >/data/ethaddr.txt fi - ifconfig eth0 up && udhcpc -i eth0 + ifconfig eth0 up && udhcpc -i eth0 >/dev/null 2>&1 } -post_chk() -{ +post_chk() { #TODO: ensure /userdata mount done cnt=0 - while [ $cnt -lt 30 ]; - do - cnt=$(( cnt + 1 )) + while [ $cnt -lt 30 ]; do + cnt=$((cnt + 1)) if mount | grep -w userdata; then break fi @@ -62,15 +57,15 @@ post_chk() # if ko exist, install ko first default_ko_dir=/ko - if [ -f "/oem/usr/ko/insmod_ko.sh" ];then + if [ -f "/oem/usr/ko/insmod_ko.sh" ]; then default_ko_dir=/oem/usr/ko fi - if [ -f "$default_ko_dir/insmod_ko.sh" ];then + if [ -f "$default_ko_dir/insmod_ko.sh" ]; then cd $default_ko_dir && sh insmod_ko.sh && cd - fi network_init & - check_linker /userdata /oem/usr/www/userdata + check_linker /userdata /oem/usr/www/userdata check_linker /media/usb0 /oem/usr/www/usb0 check_linker /mnt/sdcard /oem/usr/www/sdcard # if /data/rkipc not exist, cp /usr/share @@ -79,33 +74,35 @@ post_chk() if [ ! -f "/oem/usr/share/rkipc.ini" ]; then lsmod | grep sc530ai - if [ $? -eq 0 ] ;then + if [ $? -eq 0 ]; then ln -s -f /oem/usr/share/rkipc-500w.ini $default_rkipc_ini fi lsmod | grep sc4336 - if [ $? -eq 0 ] ;then + if [ $? -eq 0 ]; then ln -s -f /oem/usr/share/rkipc-400w.ini $default_rkipc_ini fi lsmod | grep sc3336 - if [ $? -eq 0 ] ;then + if [ $? -eq 0 ]; then ln -s -f /oem/usr/share/rkipc-300w.ini $default_rkipc_ini fi fi - tmp_md5=/tmp/.rkipc-ini.md5sum - data_md5=/userdata/.rkipc-default.md5sum - md5sum $default_rkipc_ini > $tmp_md5 - chk_rkipc=`cat $tmp_md5|awk '{print $1}'` - rm $tmp_md5 - if [ ! -f $data_md5 ];then - md5sum $default_rkipc_ini > $data_md5 - fi - grep -w $chk_rkipc $data_md5 - if [ $? -ne 0 ] ;then - rm -f $rkipc_ini - echo "$chk_rkipc" > $data_md5 - fi - if [ ! -f "$default_rkipc_ini" ];then + # check md5sum + # tmp_md5=/tmp/.rkipc-ini.md5sum + # data_md5=/userdata/.rkipc-default.md5sum + # md5sum $default_rkipc_ini > $tmp_md5 + # chk_rkipc=`cat $tmp_md5|awk '{print $1}'` + # rm $tmp_md5 + # if [ ! -f $data_md5 ];then + # md5sum $default_rkipc_ini > $data_md5 + # fi + # grep -w $chk_rkipc $data_md5 + # if [ $? -ne 0 ] ;then + # rm -f $rkipc_ini + # echo "$chk_rkipc" > $data_md5 + # fi + + if [ ! -f "$default_rkipc_ini" ]; then echo "Error: not found rkipc.ini !!!" exit -1 fi @@ -117,7 +114,7 @@ post_chk() cp -fa /oem/usr/share/image.bmp /userdata/ fi - if [ -d "/oem/usr/share/iqfiles" ];then + if [ -d "/oem/usr/share/iqfiles" ]; then rkipc -a /oem/usr/share/iqfiles & else rkipc & @@ -127,9 +124,9 @@ post_chk() rcS ulimit -c unlimited -echo "/data/core-%p-%e" > /proc/sys/kernel/core_pattern +echo "/data/core-%p-%e" >/proc/sys/kernel/core_pattern # echo 0 > /sys/devices/platform/rkcif-mipi-lvds/is_use_dummybuf -echo 1 > /proc/sys/vm/overcommit_memory +echo 1 >/proc/sys/vm/overcommit_memory post_chk & diff --git a/project/app/rkipc/rkipc/src/rv1106_ipc/RkLunch.sh b/project/app/rkipc/rkipc/src/rv1106_ipc/RkLunch.sh index 732c25975..f68873ef1 100644 --- a/project/app/rkipc/rkipc/src/rv1106_ipc/RkLunch.sh +++ b/project/app/rkipc/rkipc/src/rv1106_ipc/RkLunch.sh @@ -1,40 +1,37 @@ #!/bin/sh -rcS() -{ - for i in /oem/usr/etc/init.d/S??* ;do +rcS() { + for i in /oem/usr/etc/init.d/S??*; do # Ignore dangling symlinks (if any). [ ! -f "$i" ] && continue case "$i" in - *.sh) - # Source shell script for speed. - ( - trap - INT QUIT TSTP - set start - . $i - ) - ;; - *) - # No sh extension, so fork subprocess. - $i start - ;; + *.sh) + # Source shell script for speed. + ( + trap - INT QUIT TSTP + set start + . $i + ) + ;; + *) + # No sh extension, so fork subprocess. + $i start + ;; esac done } -check_linker() -{ - [ ! -L "$2" ] && ln -sf $1 $2 +check_linker() { + [ ! -L "$2" ] && ln -sf $1 $2 } -network_init() -{ - ethaddr1=`ifconfig -a | grep "eth.*HWaddr" | awk '{print $5}'` +network_init() { + ethaddr1=$(ifconfig -a | grep "eth.*HWaddr" | awk '{print $5}') if [ -f /data/ethaddr.txt ]; then - ethaddr2=`cat /data/ethaddr.txt` + ethaddr2=$(cat /data/ethaddr.txt) if [ $ethaddr1 == $ethaddr2 ]; then echo "eth HWaddr cfg ok" else @@ -42,18 +39,16 @@ network_init() ifconfig eth0 hw ether $ethaddr2 fi else - echo $ethaddr1 > /data/ethaddr.txt + echo $ethaddr1 >/data/ethaddr.txt fi - ifconfig eth0 up && udhcpc -i eth0 + ifconfig eth0 up && udhcpc -i eth0 >/dev/null 2>&1 } -post_chk() -{ +post_chk() { #TODO: ensure /userdata mount done cnt=0 - while [ $cnt -lt 30 ]; - do - cnt=$(( cnt + 1 )) + while [ $cnt -lt 30 ]; do + cnt=$((cnt + 1)) if mount | grep -w userdata; then break fi @@ -62,15 +57,15 @@ post_chk() # if ko exist, install ko first default_ko_dir=/ko - if [ -f "/oem/usr/ko/insmod_ko.sh" ];then + if [ -f "/oem/usr/ko/insmod_ko.sh" ]; then default_ko_dir=/oem/usr/ko fi - if [ -f "$default_ko_dir/insmod_ko.sh" ];then + if [ -f "$default_ko_dir/insmod_ko.sh" ]; then cd $default_ko_dir && sh insmod_ko.sh && cd - fi network_init & - check_linker /userdata /oem/usr/www/userdata + check_linker /userdata /oem/usr/www/userdata check_linker /media/usb0 /oem/usr/www/usb0 check_linker /mnt/sdcard /oem/usr/www/sdcard # if /data/rkipc not exist, cp /usr/share @@ -79,37 +74,39 @@ post_chk() if [ ! -f "/oem/usr/share/rkipc.ini" ]; then lsmod | grep sc530ai - if [ $? -eq 0 ] ;then + if [ $? -eq 0 ]; then ln -s -f /oem/usr/share/rkipc-500w.ini $default_rkipc_ini fi lsmod | grep sc4336 - if [ $? -eq 0 ] ;then + if [ $? -eq 0 ]; then ln -s -f /oem/usr/share/rkipc-400w.ini $default_rkipc_ini fi lsmod | grep sc3336 - if [ $? -eq 0 ] ;then + if [ $? -eq 0 ]; then ln -s -f /oem/usr/share/rkipc-300w.ini $default_rkipc_ini fi lsmod | grep imx415 - if [ $? -eq 0 ] ;then + if [ $? -eq 0 ]; then ln -s -f /oem/usr/share/rkipc-800w.ini $default_rkipc_ini fi fi - tmp_md5=/tmp/.rkipc-ini.md5sum - data_md5=/userdata/.rkipc-default.md5sum - md5sum $default_rkipc_ini > $tmp_md5 - chk_rkipc=`cat $tmp_md5|awk '{print $1}'` - rm $tmp_md5 - if [ ! -f $data_md5 ];then - md5sum $default_rkipc_ini > $data_md5 - fi - grep -w $chk_rkipc $data_md5 - if [ $? -ne 0 ] ;then - rm -f $rkipc_ini - echo "$chk_rkipc" > $data_md5 - fi - if [ ! -f "$default_rkipc_ini" ];then + # check md5sum + # tmp_md5=/tmp/.rkipc-ini.md5sum + # data_md5=/userdata/.rkipc-default.md5sum + # md5sum $default_rkipc_ini > $tmp_md5 + # chk_rkipc=`cat $tmp_md5|awk '{print $1}'` + # rm $tmp_md5 + # if [ ! -f $data_md5 ];then + # md5sum $default_rkipc_ini > $data_md5 + # fi + # grep -w $chk_rkipc $data_md5 + # if [ $? -ne 0 ] ;then + # rm -f $rkipc_ini + # echo "$chk_rkipc" > $data_md5 + # fi + + if [ ! -f "$default_rkipc_ini" ]; then echo "Error: not found rkipc.ini !!!" exit -1 fi @@ -121,11 +118,11 @@ post_chk() cp -fa /oem/usr/share/image.bmp /userdata/ fi - if [ -f "/oem/usr/share/speaker_test.wav" ];then + if [ -f "/oem/usr/share/speaker_test.wav" ]; then rk_mpi_ao_test -i /oem/usr/share/speaker_test.wav --sound_card_name=hw:0,0 --device_ch=2 --device_rate=8000 --input_rate=8000 --input_ch=2 --set_volume 50 fi - if [ -d "/oem/usr/share/iqfiles" ];then + if [ -d "/oem/usr/share/iqfiles" ]; then rkipc -a /oem/usr/share/iqfiles & else rkipc & @@ -135,9 +132,9 @@ post_chk() rcS ulimit -c unlimited -echo "/data/core-%p-%e" > /proc/sys/kernel/core_pattern +echo "/data/core-%p-%e" >/proc/sys/kernel/core_pattern # echo 0 > /sys/devices/platform/rkcif-mipi-lvds/is_use_dummybuf -echo 1 > /proc/sys/vm/overcommit_memory +echo 1 >/proc/sys/vm/overcommit_memory post_chk & diff --git a/project/app/wifi_app/.gitignore b/project/app/wifi_app/.gitignore index 1bca33d8a..9fefafdde 100644 --- a/project/app/wifi_app/.gitignore +++ b/project/app/wifi_app/.gitignore @@ -1,14 +1,14 @@ *.o -#hostapd-2.6/hostapd/hostapd -#hostapd-2.6/hostapd/hostapd_cli +hostapd-2.6/hostapd/hostapd +hostapd-2.6/hostapd/hostapd_cli install_out libnl-3.4.0 out -#wifi/lib32/librkwifibt.so -#wifi/librkwifibt.so -#wifi/test/rkwifi_server -#wpa_supplicant-2.6/wpa_supplicant/libwpa_client.so -#wpa_supplicant-2.6/wpa_supplicant/wpa_cli -#wpa_supplicant-2.6/wpa_supplicant/wpa_passphrase -#wpa_supplicant-2.6/wpa_supplicant/wpa_supplicant -#wpa_supplicant_hostapd-0.8_rtw-2-ga8ef7c824.20200911 +wifi/lib32/librkwifibt.so +wifi/librkwifibt.so +wifi/test/rkwifi_server +wpa_supplicant-2.6/wpa_supplicant/libwpa_client.so +wpa_supplicant-2.6/wpa_supplicant/wpa_cli +wpa_supplicant-2.6/wpa_supplicant/wpa_passphrase +wpa_supplicant-2.6/wpa_supplicant/wpa_supplicant +wpa_supplicant_hostapd-0.8_rtw-2-ga8ef7c824.20200911 diff --git a/project/app/wifi_app/wifi/librkwifibt.so b/project/app/wifi_app/wifi/librkwifibt.so index 255389aeceb6a0fff053eb2542c6792ff7c23433..49cb4051c42349093bb1f7629ffb380862aa8f8b 100755 GIT binary patch delta 16017 zcma)j33wDm7JpZD_jLDUrZbbuF*zU!WO5PCBoH9TO~NJjA=iQ&f}BDCC4u1*K{*8} zz$hZ1E_k5eMpryo@j_Qo*Hv8IbzKj1kwv@}*Z=QTPcZ(!{r=xS-&Z~LUcL9~y;rZU z?w517hu_%~-kQV4uFAbJmpz)xNA!-Zurw`@5!SRD{hBr>N7IHb*3=(oHuq^7=hmIc z_%W=diJGRDq7C(hsB`8sKwz8=0iU076}514S`tu;AXG2NDgnwg%vtklG<^;=+h&^p z{aAB}-!Mx9%|X4F1nkII2MVJui2BZKs{0HhNrwAy5lcWf`r|;^mO%=bSFs$XX-+kS zF(-;1xziRB4W|aG+D_*LO$#~25S!!lH8ibH0}>O_%Zya32AFa zg$XE{JQuy4e=H3APt*gXt)D6ve2g7GaGrJSh8rW>uZ9@ihamRttZl6bWlKL4yV+*9(9dxQE z8g?&HfyPh>Ubg!rP`9B&aEjeG-A_!x*ipD9Vt4j$B6)|=t=-ijGR^Jf0;o(Pg$=hq zn(c0?#dfa*%I=|nfO`T8**z6mD4YtiWGyjbcXFOUH8h13tTL4jnHV{{+E)1C2uizu zV4Ws&`tfAeO_ulLQ({*mK%5ljHpA#7_k%y2W-LI;B%%4BfN#K`uq-qZ4cvVXW0|nRN3smJNB~$Fo<@qhCh@FN!0do~ z91ciWt)P(mKGCgFK(ae50AQU0B5n~BP1vA-EcXD^N!Zf-T8PVWBh<3ZzW_jCT<#)Nl@<(R5a#?sM9ZN@)yFxLxzV1k-71t_4$KmRe4NJJEe8bicg=Y;H5OhnxpZ z>OgbT<%MeAtnfubhUeQFRB(sE;P7>6G%Ymu2Y4^MPyvSfuq^M-^V3~)7G5HvXb)(K zq3~)m6?~yb99h$!=fw^|)9{9*Ip`qtHw=9EX0Kk1Kn>sG)$amBc%xT;m%7;G)u&N? zbAT4c&?KlG-l9e}R0+?9w|e!f;Fa*UL~=rCJ;}M%QvDyJez#kr6fhBS72XlJmy8Hz zVTf|VE9|pm-lqt^@Qn_cs=2=qaGR44AfyFpI@n1Sb_hMVe}lS7UE-6ry__?E=f^7G zRn55%Ow1_&5qGMfh3<62U>nX&=+ktDL6*­0K;3-n> znpmHl6f6#!(+LmeoCg(mend~Yb2~7GlL+aia{@Z~oFkBKIW>@OJ1c;3G~*RHe;`lK z7=;P0WsDixQ)3xp`VNJRk?2Ur4khm%$n%FBgDzr^WlP2M93o!U zr$AojdL~|VOq!@OssGm$gXU6vi__NIaAps8F!lesMO1wvv!~yni8mB*GV29uc~g<~ zVLWTRoIIE}54HlAcuPM7`NkM|%V6Fr=E7B5lXbf-jdTMVk_|TvIL-YSmL~h`E6`xL zAK{s7+gIVoc1vJsvfrKuAmI8V00QnW){D2nhLi1BkePCTU>>WVxe= zN7zRL*o$-A#RR1gg!Qv8F{LR9h3-@smYi52)Vbv(p@#xiy1$U7J(Ym9?jZtt zDPX<3sNt3&d^n5!0&&UxS`3CG6Rv@?lB>M>wTO@8YOlT;lPbA?b}ndgz5qQ-3(^ea zjK7bCBA4ndB*KnG)LvlfJ9_F`iysgqEIqXWt)@PcFat1mSZ2%?eRB^>e*+t>sJd2>4?T;*FK4$X=N> z0b#&eH(L%WjbTsfhl=qzCLL>|Q@zC#B&MwSJ|*TOh_Q?{gfAqk^JBGVm zUKq|>@K<~?c?8d4FUj%|yr6F-Mv#rS#d+|W`sw>Mt>8JBoPQ-^k4?1Gn`5+1{XOVn z89vnWd*Hz)H8y;JhI}UXjo`Um_F;)&uQ~2Pa_`+BE1t6O8p0G4Cc23jUw15OX|-^A zjmF+^)M8k&U0xc&%S-PjTc2{2Q<)zFm%pEOq-PwLSWJB=%#Zega_q!q#%UvYUh9oS zwmr@`9*k`j<94TvmZRt_^7Czu^(pj2Uyp)?b(ims?v^ei<9Z zBgLN)vQ=E@CE_V@Lf7E8WIKZSCR9xQox@n9ddL%_cv);W#Y|>g?2Bmj%+HETSP9vz zS)(r?fi7>R{?Q@ei!P8;KDIq?wgAxf2M?oEihe_({;8cc3Z^yb-9P}8RKpvjjI0^W z(~AB@lyBNWHjacSzBldeRWQZV<}JH%6pxMOc}1rvFgJp{3VdFl8|~twT0We@ziJ+K~N`{*

w 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 diff --git a/project/build.sh b/project/build.sh index 3979502ce..e1050ea0c 100755 --- a/project/build.sh +++ b/project/build.sh @@ -2478,15 +2478,18 @@ function __RUN_POST_BUILD_SCRIPT() { } function post_overlay() { - check_config RK_POST_OVERLAY || return 0 + [ -n "$RK_POST_OVERLAY" ] || return 0 local tmp_path tmp_path=$(realpath $BOARD_CONFIG) tmp_path=$(dirname $tmp_path) - if [ -d "$tmp_path/overlay/$RK_POST_OVERLAY" ]; then - rsync -a --ignore-times --keep-dirlinks --chmod=u=rwX,go=rX --exclude .empty \ - $tmp_path/overlay/$RK_POST_OVERLAY/* $RK_PROJECT_PACKAGE_ROOTFS_DIR/ - fi + + for overlay_dir in $RK_POST_OVERLAY; do + if [ -d "$tmp_path/overlay/$overlay_dir" ]; then + rsync -a --ignore-times --keep-dirlinks --chmod=u=rwX,go=rX --exclude .empty \ + $tmp_path/overlay/$overlay_dir/* $RK_PROJECT_PACKAGE_ROOTFS_DIR/ + fi + done } function __RUN_PRE_BUILD_OEM_SCRIPT() { diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Ultra-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Ultra-IPC.mk index 27b2258ee..9e8f5587d 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Ultra-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Ultra-IPC.mk @@ -117,4 +117,8 @@ export RK_ENABLE_ROCKCHIP_TEST=y export RK_PRE_BUILD_OEM_SCRIPT=luckfox-buildroot-oem-pre.sh # specify post.sh for delete/overlay files -export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh \ No newline at end of file +export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh + +# declare overlay directory +export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-buildroot-init overlay-luckfox-buildroot-shadow\ + overlay-luckfox-buildroot-rgb" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Ultra_W-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Ultra_W-IPC.mk index 10d6a6156..fb6c1de06 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Ultra_W-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Ultra_W-IPC.mk @@ -115,7 +115,7 @@ export LF_WIFI_SSID="Your wifi ssid" export LF_WIFI_PSK="Your wifi password" ################################################# -# PRE and POST +# PRE and POST ################################################# # specify pre.sh for delete/overlay files @@ -123,3 +123,7 @@ export RK_PRE_BUILD_OEM_SCRIPT=luckfox-buildroot-oem-pre.sh # specify post.sh for delete/overlay files export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh + +# declare overlay directory +export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-buildroot-init overlay-luckfox-buildroot-shadow\ + overlay-luckfox-buildroot-rgb" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Busybox-RV1106_Luckfox_Pico_Ultra-IPC_FASTBOOT.mk b/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Busybox-RV1106_Luckfox_Pico_Ultra-IPC_FASTBOOT.mk index 05984b882..ae9780bb7 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Busybox-RV1106_Luckfox_Pico_Ultra-IPC_FASTBOOT.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Busybox-RV1106_Luckfox_Pico_Ultra-IPC_FASTBOOT.mk @@ -132,7 +132,7 @@ export RK_PRE_BUILD_OEM_SCRIPT=luckfox-rv1106-tb-pre-oem.sh export RK_ENABLE_FASTBOOT=y # declare overlay directory -export RK_POST_OVERLAY=overlay-luckfox +export RK_POST_OVERLAY=overlay-luckfox-fastboot # enable tiny meta only support cmdline overlay export RK_TINY_META=n diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Ultra-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Ultra-IPC.mk index 4439cc26b..e2f015cd0 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Ultra-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Ultra-IPC.mk @@ -118,3 +118,6 @@ export RK_PRE_BUILD_OEM_SCRIPT=luckfox-buildroot-oem-pre.sh # specify post.sh for delete/overlay files export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh + +# declare overlay directory +export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-ubuntu-config overlay-luckfox-ubuntu-ultra" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Ultra_W-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Ultra_W-IPC.mk index 6ed43a9bc..d403381cb 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Ultra_W-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Ultra_W-IPC.mk @@ -125,4 +125,7 @@ export LF_WIFI_PSK="Your wifi password" export RK_PRE_BUILD_OEM_SCRIPT=luckfox-buildroot-oem-pre.sh # specify post.sh for delete/overlay files -export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh \ No newline at end of file +export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh + +# declare overlay directory +export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-ubuntu-config overlay-luckfox-ubuntu-ultra" diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico-IPC.mk index 1f05df9df..05b2c65ba 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico-IPC.mk @@ -111,4 +111,7 @@ export RK_ENABLE_ROCKCHIP_TEST=y export RK_PRE_BUILD_OEM_SCRIPT=luckfox-buildroot-oem-pre.sh # specify post.sh for delete/overlay files -export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh \ No newline at end of file +export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh + +# declare overlay directory +export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-buildroot-init overlay-luckfox-buildroot-shadow" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Mini_A-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Mini_A-IPC.mk index cd5e3ec42..5dad636e1 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Mini_A-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Mini_A-IPC.mk @@ -112,3 +112,6 @@ export RK_PRE_BUILD_OEM_SCRIPT=luckfox-buildroot-oem-pre.sh # specify post.sh for delete/overlay files export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh + +# declare overlay directory +export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-buildroot-init overlay-luckfox-buildroot-shadow" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Mini_B-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Mini_B-IPC.mk index c76ab296c..6b021feb0 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Mini_B-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Mini_B-IPC.mk @@ -112,3 +112,6 @@ export RK_PRE_BUILD_OEM_SCRIPT=luckfox-buildroot-oem-pre.sh # specify post.sh for delete/overlay files export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh + +# declare overlay directory +export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-buildroot-init overlay-luckfox-buildroot-shadow" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Plus-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Plus-IPC.mk index 1ac2fef0e..10c5d01fc 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Plus-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Plus-IPC.mk @@ -113,3 +113,6 @@ export RK_PRE_BUILD_OEM_SCRIPT=luckfox-buildroot-oem-pre.sh # specify post.sh for delete/overlay files export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh + +# declare overlay directory +export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-buildroot-init overlay-luckfox-buildroot-shadow" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1106_Luckfox_Pico_Max-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1106_Luckfox_Pico_Max-IPC.mk index 443f491d4..58edd642c 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1106_Luckfox_Pico_Max-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1106_Luckfox_Pico_Max-IPC.mk @@ -111,4 +111,7 @@ export RK_ENABLE_ROCKCHIP_TEST=y export RK_PRE_BUILD_OEM_SCRIPT=luckfox-buildroot-oem-pre.sh # specify post.sh for delete/overlay files -export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh \ No newline at end of file +export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh + +# declare overlay directory +export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-buildroot-init overlay-luckfox-buildroot-shadow" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1106_Luckfox_Pico_Pro-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1106_Luckfox_Pico_Pro-IPC.mk index 29c298011..8ea9ed25b 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1106_Luckfox_Pico_Pro-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1106_Luckfox_Pico_Pro-IPC.mk @@ -111,4 +111,7 @@ export RK_ENABLE_ROCKCHIP_TEST=y export RK_PRE_BUILD_OEM_SCRIPT=luckfox-buildroot-oem-pre.sh # specify post.sh for delete/overlay files -export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh \ No newline at end of file +export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh + +# declare overlay directory +export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-buildroot-init overlay-luckfox-buildroot-shadow" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico-IPC.mk index e84112530..d285edcee 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico-IPC.mk @@ -115,3 +115,6 @@ export RK_PRE_BUILD_OEM_SCRIPT=luckfox-ubuntu-oem-pre.sh # specify post.sh for delete/overlay files export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh + +# declare overlay directory +export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-ubuntu overlay-luckfox-ubuntu-config" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Mini_A-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Mini_A-IPC.mk index 9c9384a08..64736a283 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Mini_A-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Mini_A-IPC.mk @@ -115,3 +115,6 @@ export RK_PRE_BUILD_OEM_SCRIPT=luckfox-ubuntu-oem-pre.sh # specify post.sh for delete/overlay files export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh + +# declare overlay directory +export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-ubuntu overlay-luckfox-ubuntu-config" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Mini_B-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Mini_B-IPC.mk index c5de252bb..22a6fcda5 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Mini_B-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Mini_B-IPC.mk @@ -115,3 +115,6 @@ export RK_PRE_BUILD_OEM_SCRIPT=luckfox-ubuntu-oem-pre.sh # specify post.sh for delete/overlay files export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh + +# declare overlay directory +export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-ubuntu overlay-luckfox-ubuntu-config" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Plus-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Plus-IPC.mk index d0f191f24..7aaf61554 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Plus-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Plus-IPC.mk @@ -115,3 +115,6 @@ export RK_PRE_BUILD_OEM_SCRIPT=luckfox-ubuntu-oem-pre.sh # specify post.sh for delete/overlay files export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh + +# declare overlay directory +export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-ubuntu overlay-luckfox-ubuntu-config" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1106_Luckfox_Pico_Max-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1106_Luckfox_Pico_Max-IPC.mk index b27dce5b0..7b58a5b03 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1106_Luckfox_Pico_Max-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1106_Luckfox_Pico_Max-IPC.mk @@ -114,4 +114,7 @@ export RK_ENABLE_ROCKCHIP_TEST=y export RK_PRE_BUILD_OEM_SCRIPT=luckfox-ubuntu-oem-pre.sh # specify post.sh for delete/overlay files -export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh \ No newline at end of file +export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh + +# declare overlay directory +export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-ubuntu overlay-luckfox-ubuntu-config" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1106_Luckfox_Pico_Pro-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1106_Luckfox_Pico_Pro-IPC.mk index 3e705daae..8f5c65eed 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1106_Luckfox_Pico_Pro-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1106_Luckfox_Pico_Pro-IPC.mk @@ -114,4 +114,7 @@ export RK_ENABLE_ROCKCHIP_TEST=y export RK_PRE_BUILD_OEM_SCRIPT=luckfox-ubuntu-oem-pre.sh # specify post.sh for delete/overlay files -export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh \ No newline at end of file +export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh + +# declare overlay directory +export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-ubuntu overlay-luckfox-ubuntu-config" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_Mini_B-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_Mini_B-IPC.mk index ab6de6a58..14bf3f8cb 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_Mini_B-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_Mini_B-IPC.mk @@ -112,3 +112,6 @@ export RK_PRE_BUILD_OEM_SCRIPT=luckfox-buildroot-oem-pre.sh # specify post.sh for delete/overlay files export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh + +# declare overlay directory +export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-buildroot-init overlay-luckfox-buildroot-shadow" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_Plus-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_Plus-IPC.mk index 67158aedd..21658019f 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_Plus-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_Plus-IPC.mk @@ -111,4 +111,7 @@ export RK_ENABLE_ROCKCHIP_TEST=y export RK_PRE_BUILD_OEM_SCRIPT=luckfox-buildroot-oem-pre.sh # specify post.sh for delete/overlay files -export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh \ No newline at end of file +export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh + +# declare overlay directory +export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-buildroot-init overlay-luckfox-buildroot-shadow" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Max-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Max-IPC.mk index 551f40911..c3fe3375c 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Max-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Max-IPC.mk @@ -112,3 +112,6 @@ export RK_PRE_BUILD_OEM_SCRIPT=luckfox-buildroot-oem-pre.sh # specify post.sh for delete/overlay files export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh + +# declare overlay directory +export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-buildroot-init overlay-luckfox-buildroot-shadow" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Pro-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Pro-IPC.mk index 6541f84db..3d96eeb9d 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Pro-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Pro-IPC.mk @@ -111,4 +111,7 @@ export RK_ENABLE_ROCKCHIP_TEST=y export RK_PRE_BUILD_OEM_SCRIPT=luckfox-buildroot-oem-pre.sh # specify post.sh for delete/overlay files -export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh \ No newline at end of file +export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh + +# declare overlay directory +export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-buildroot-init overlay-luckfox-buildroot-shadow" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Busybox-RV1106_Luckfox_Pico_Pro_Max-IPC_FASTBOOT.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Busybox-RV1106_Luckfox_Pico_Pro_Max-IPC_FASTBOOT.mk index a2ba4622f..54160d2a7 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Busybox-RV1106_Luckfox_Pico_Pro_Max-IPC_FASTBOOT.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Busybox-RV1106_Luckfox_Pico_Pro_Max-IPC_FASTBOOT.mk @@ -138,7 +138,7 @@ export RK_PRE_BUILD_OEM_SCRIPT=luckfox-rv1106-tb-pre-oem.sh export RK_ENABLE_FASTBOOT=y # declare overlay directory -export RK_POST_OVERLAY=overlay-luckfox +export RK_POST_OVERLAY=overlay-luckfox-fastboot # enable tiny meta only support cmdline overlay export RK_TINY_META=n diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/etc/init.d/S50sshd b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/etc/init.d/S50sshd new file mode 100755 index 000000000..e5b9c4451 --- /dev/null +++ b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/etc/init.d/S50sshd @@ -0,0 +1,48 @@ +#!/bin/sh +# +# sshd Starts sshd. +# + +# Make sure the ssh-keygen progam exists +[ -f /usr/bin/ssh-keygen ] || exit 0 + +umask 077 + +start() { + chown root:root /var/empty/ + # Create any missing keys + /usr/bin/ssh-keygen -A + + printf "Starting sshd: " + /usr/sbin/sshd + touch /var/lock/sshd + echo "OK" +} +stop() { + printf "Stopping sshd: " + killall sshd + rm -f /var/lock/sshd + echo "OK" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? + diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/etc/init.d/S99hciinit b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/etc/init.d/S99hciinit new file mode 100755 index 000000000..2b2f67a06 --- /dev/null +++ b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/etc/init.d/S99hciinit @@ -0,0 +1,27 @@ +#!/bin/sh + +check_hciconfig() { + if command -v hciattach &> /dev/null; then + if lsmod | grep -q "aic8800_fdrv"; then + hciattach -s 1500000 /dev/ttyS1 any 1500000 flow nosleep& + sleep 2 + if hciconfig -a | grep -q "hci0"; then + hciconfig hci0 up& + else + echo "hci0 not found or not available." + fi + else + echo "aic8800_fdrv not found." + fi + fi +} + +case $1 in + start) + check_hciconfig + ;; + *) + exit 1 + ;; +esac + diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/etc/init.d/S99python b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/etc/init.d/S99python new file mode 100755 index 000000000..0a3cb49b2 --- /dev/null +++ b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/etc/init.d/S99python @@ -0,0 +1,55 @@ +#!/bin/sh +# +# python Starts python code. +# + +# Make sure the python progam exists +[ -f /usr/bin/python ] || exit 0 + +umask 077 + +main_path="/root/main.py" +boot_path="/root/boot.py" + +start() { + # Run python progam + if [ -f $main_path ]; then + echo "running $main_path..." + python $main_path + else + if [ -f $boot_path ]; then + echo "running $boot_path..." + python $boot_path + else + echo "$main_path and $boot_path not exist ,pass..." + fi + fi + echo "OK" +} +stop() { + printf "Stopping python: " + killall python + echo "OK" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? + diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/etc/init.d/S99rtcinit b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/etc/init.d/S99rtcinit new file mode 100755 index 000000000..32cc126f3 --- /dev/null +++ b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/etc/init.d/S99rtcinit @@ -0,0 +1,16 @@ +#!/bin/sh + +case $1 in +start) + if [ "$(hwclock | grep "1969")" ]; then + echo "RTC time calibration" + date -s 2024-01-01 + hwclock -w + else + echo "RTC does not require time calibration" + fi + ;; +*) + exit 1 + ;; +esac diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/etc/init.d/S99usb0config b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/etc/init.d/S99usb0config new file mode 100755 index 000000000..37bf52dc7 --- /dev/null +++ b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/etc/init.d/S99usb0config @@ -0,0 +1,67 @@ +#!/bin/sh + +TARGET_IP="172.32.0.93" + +USB_KEYWORD="android_work: sent uevent USB_STATE=" +USB_MODE_PATH="/proc/device-tree/usbdrd/usb@ffb00000/dr_mode" + +MAX_RETRIES=10 +retries=0 + +usb0_config() { + if [ "$(cat /proc/device-tree/usbdrd/usb@ffb00000/dr_mode)" == "peripheral" ]; then + current_ip=$(ifconfig usb0 | grep -o 'inet addr:[^ ]*' | awk -F ':' '{print $2}') + echo "current_ip = $current_ip" + echo "TARGET_IP = $TARGET_IP" + + while [[ "$current_ip" != "$TARGET_IP" && $retries -lt $MAX_RETRIES ]]; do + sleep .5 + echo "luckfox : set usb0 ip" + ifconfig usb0 "$TARGET_IP" + current_ip=$(ifconfig usb0 | grep -o 'inet addr:[^ ]*' | awk -F ':' '{print $2}') + echo $current_ip + retries=$((retries + 1)) + done + + if [[ "$current_ip" != "$TARGET_IP" ]]; then + echo "usb0 config error" + else + echo "usb0 config success" + fi + else + echo "usb0 is using host mode" + fi +} + +usb_reset() { + while true; do + last_line=$(dmesg | grep "$USB_KEYWORD" | tail -n 1) + + if [[ "$last_line" == *"DISCONNECTED"* ]]; then + echo "Detected USB DISCONNECTED." + /etc/init.d/S50usbdevice restart + usb0_config + #elif [[ "$last_line" == *"CONFIGURED"* ]]; then + # echo "Detected CONFIGURED. No action required." + #else + # echo "No relevant USB_STATE found." + fi + + sleep 5 + done +} + +case $1 in +start) + # check peripheral + usb_mode="$(cat $USB_MODE_PATH)" + if [ "$usb_mode" = "peripheral" ]; then + usb0_config + usb_reset & + fi + ;; +stop) ;; +*) + exit 1 + ;; +esac diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/etc/profile b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/etc/profile new file mode 100755 index 000000000..d90ab5e34 --- /dev/null +++ b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/etc/profile @@ -0,0 +1,24 @@ +export PATH="/bin:/sbin:/usr/bin:/usr/sbin" + +export EDITOR='/bin/vi' + +#export PS1='[\u@\h \W]# ' +if [ "$PS1" ]; then + if [ "`id -u`" -eq 0 ]; then + #export PS1='# ' + export PS1='[\u@\h \W]# ' + else + #export PS1='$ ' + export PS1='[\u@\h \W]$ ' + fi +fi + +# Source configuration files from /etc/profile.d +for i in /etc/profile.d/*.sh ; do + if [ -r "$i" ]; then + . $i + fi +done +unset i + + diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/usr/bin/iomux b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-init/usr/bin/iomux new file mode 100755 index 0000000000000000000000000000000000000000..f31c9dd86651d116a9416dbd031482b07d10b07b GIT binary patch literal 7588 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/dev/null; then + echo "The dialog is not installed " + exit + fi + + if ! command -v dtc &>/dev/null; then + echo "The dtc is not installed" + exit + fi + + # get media class dev + if [[ -e /dev/mmcblk0p4 ]]; then + LUCKFOX_CHIP_MEDIA_CLASS="emmc" + LUCKFOX_CHIP_MEDIA=/dev/mmcblk0p4 + elif [[ -e /dev/mmcblk1p4 ]]; then + LUCKFOX_CHIP_MEDIA_CLASS="sdmmc" + LUCKFOX_CHIP_MEDIA=/dev/mmcblk1p4 + luckfox_set_pin_parameter "SDMMC" 1 + elif [[ -e /dev/mtdblock3 ]]; then + LUCKFOX_CHIP_MEDIA_CLASS="spi_nand" + LUCKFOX_CHIP_MEDIA=/dev/mtdblock3 + else + LUCKFOX_CHIP_MEDIA_CLASS="unknown" + echo "Do not know the storage medium of Luckfox!" + exit + fi + +} + +# -- Static Overlay -- +function luckfox_sha256_convert() { + local sha256_hash=$1 + local formatted_hash="" + + for ((i = 0; i < ${#sha256_hash}; i += 8)); do + formatted_hash+="0x${sha256_hash:$i:8} " + done + + echo "$formatted_hash" +} + +function luckfox_update_fdt() { + # get fdt_header + local origin_fdt_size_hex origin_fdt_size + dd if=$LUCKFOX_CHIP_MEDIA of=$LUCKFOX_FDT_HDR_DTB bs=1 skip=0 count=2048 >/dev/null 2>&1 + + # get size + if [ ! -f $LUCKFOX_FDT_HDR_DTB ]; then + echo "$LUCKFOX_FDT_HDR_DTB can't be found!" + return + fi + origin_fdt_size_hex=$(fdtdump $LUCKFOX_FDT_HDR_DTB | grep -A 5 "fdt {" | grep "data-size" | awk '{print $3}' | tr -d ';<>') + origin_fdt_size=$(printf "%d\n" "$origin_fdt_size_hex") + + # get fdt dtb + dd if=$LUCKFOX_CHIP_MEDIA of=$LUCKFOX_FDT_DTB bs=1 skip=2048 count="$origin_fdt_size" >/dev/null 2>&1 + + # create fdt dump + if [ ! -f $LUCKFOX_FDT_DTB ]; then + echo "$LUCKFOX_FDT_DTB can't be found!" + return + fi + fdtdump $LUCKFOX_FDT_DTB >$LUCKFOX_FDT_DUMP_TXT +} + +function luckfox_fdt_overlay() { + #region + local fdt_overlay_dtbo="$1" + local fdt_dtb_size fdt_size fdt_size_hex fdt_hash_data + + fdtoverlay -i $LUCKFOX_FDT_DTB -o $LUCKFOX_FDT_DTB "$fdt_overlay_dtbo" >/dev/null 2>&1 + fdt_dtb_size=$(ls -la $LUCKFOX_FDT_DTB | awk '{print $5}') + + kernel_offset=$(fdtdump $LUCKFOX_FDT_HDR_DTB | grep -A 2 "kernel {" | grep "data-position" | sed -n 's/.*<\(0x[0-9a-fA-F]*\)>.*/\1/p') + fdt_offset=$(fdtdump $LUCKFOX_FDT_HDR_DTB | grep -A 2 "fdt {" | grep "data-position" | sed -n 's/.*<\(0x[0-9a-fA-F]*\)>.*/\1/p') + + kernel_offset_dec=$((kernel_offset)) + fdt_offset_dec=$((fdt_offset)) + result_dec=$((kernel_offset_dec - fdt_offset_dec)) + + if [ $result_dec -lt "$fdt_dtb_size" ]; then + echo "Kernel will be affected !" + fi + + dd if=$LUCKFOX_FDT_DTB of=$LUCKFOX_CHIP_MEDIA bs=1 seek=2048 count="$fdt_dtb_size" >/dev/null 2>&1 + + # fdt header + if [ ! -f $LUCKFOX_FDT_DTB ]; then + echo "$LUCKFOX_FDT_DTB can't be found!" + return + fi + fdt_size=$(ls -la $LUCKFOX_FDT_DTB | awk '{print $5}') + fdt_size_hex=$(printf "%x\n" "$fdt_size") + fdt_hash_data=$(luckfox_sha256_convert "$(sha256sum $LUCKFOX_FDT_DTB | awk '{print $1}')") + fdt_header_content=" +/dts-v1/; +/plugin/; + +&{/images/fdt}{ + data-size=<0x$fdt_size_hex>; + hash{ + value=<$fdt_hash_data>; + }; +}; +" + echo "$fdt_header_content" >$LUCKFOX_FDT_HDR_OVERLAY_DTS + dtc -I dts -O dtb $LUCKFOX_FDT_HDR_OVERLAY_DTS -o $LUCKFOX_FDT_HDR_OVERLAY_DTBO + if [ ! -f $LUCKFOX_FDT_HDR_OVERLAY_DTBO ]; then + echo "$LUCKFOX_FDT_HDR_OVERLAY_DTBO can't found!" + return + fi + fdtoverlay -i $LUCKFOX_FDT_HDR_DTB -o $LUCKFOX_FDT_HDR_DTB $LUCKFOX_FDT_HDR_OVERLAY_DTBO >/dev/null 2>&1 + dd if=$LUCKFOX_FDT_HDR_DTB of=$LUCKFOX_CHIP_MEDIA bs=1 seek=0 count=2048 >/dev/null 2>&1 + #endregion +} + +# Load the device tree dynamically +function luckfox_load_dynamic_dts() { + local dtbo_node_name + + if [ ! -d ${LF_CUSTOM_DTS_PATH}/dtbo/ ]; then + exit 1 + #echo "Can't find ${LF_CUSTOM_DTS_PATH}/dtbo dir !" + fi + + for dts_file in ${LF_CUSTOM_DTS_PATH}/dtbo/*.dts; do + #Get DTBO name + dtbo_node_name="$(basename "$dts_file" .dts)" + #Check DTBO path + if [ -d "${SYS_OVERLAYS_PATH}/${dtbo_node_name}" ]; then + echo "Node is exist" + continue + fi + + #DTS->DTBO + dtc -I dts -O dtb ${LF_CUSTOM_DTS_PATH}/dtbo/${dtbo_node_name}.dts -o \ + ${LF_CUSTOM_DTS_PATH}/dtbo/${dtbo_node_name}.dtbo + + if [ ! -f "${LF_CUSTOM_DTS_PATH}/dtbo/${dtbo_node_name}.dtbo" ]; then + echo "${dtbo_node_name}.dts to dtbo error!" + continue + else + mkdir -p ${SYS_OVERLAYS_PATH}/${dtbo_node_name} + fi + #Load and enable DTBO + cat ${LF_CUSTOM_DTS_PATH}/dtbo/${dtbo_node_name}.dtbo > \ + ${SYS_OVERLAYS_PATH}/${dtbo_node_name}/dtbo + echo 1 >${SYS_OVERLAYS_PATH}/${dtbo_node_name}/status + + rm ${LLF_CUSTOM_DTS_PATH}/dtbo/${dtbo_node_name}.dtbo + done +} + +#Overwrite the disk device tree (requires restart) +function luckfox_load_static_dts() { + local dtbo_node_name + if [ ! -d ${LF_CUSTOM_DTS_PATH}/fdt_overlay/ ]; then + echo "Can't find ${LF_CUSTOM_DTS_PATH}/fdt_overlay dir!" + fi + + for dts_file in ${LF_CUSTOM_DTS_PATH}/fdt_overlay/*.dts; do + #Get DTBO name + dtbo_node_name="$(basename "$dts_file" .dts)" + + #DTS->DTBO + dtc -I dts -O dtb ${LF_CUSTOM_DTS_PATH}/fdt_overlay/${dtbo_node_name}.dts -o \ + ${LF_CUSTOM_DTS_PATH}/fdt_overlay/${dtbo_node_name}.dtbo + + if [ ! -f "${LF_CUSTOM_DTS_PATH}/fdt_overlay/${dtbo_node_name}.dtbo" ]; then + echo "${dtbo_node_name}.dts to dtbo error!" + continue + fi + + # load to disk + luckfox_update_fdt + luckfox_fdt_overlay ${LF_CUSTOM_DTS_PATH}/fdt_overlay/${dtbo_node_name}.dtbo + rm ${LUCKFOX_FDT_OVERLAY_DTBO} + + done +} + +case $1 in +start) + luckfox_load_dynamic_dts + ;; +stop) + luckfox_tools_check + luckfox_load_static_dts + ;; +*) + exit 1 + ;; +esac diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-config/usr/bin/luckfox-config b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-config/usr/bin/luckfox-config new file mode 100755 index 000000000..8a793af82 --- /dev/null +++ b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-config/usr/bin/luckfox-config @@ -0,0 +1,2754 @@ +#!/bin/bash +export LUCKFOX_CHIP_MODEL +export LUCKFOX_CHIP_MEDIA +export LUCKFOX_CHIP_MEDIA_CLASS + +LUCKFOX_DYNAMIC_DTS=/tmp/.overlay.dts +LUCKFOX_DYNAMIC_DTBO=/tmp/.overlay.dtbo + +LUCKFOX_FDT_DTB=/tmp/.fdt.dtb +LUCKFOX_FDT_OVERLAY_DTS=/tmp/.fdt_overlay.dts +LUCKFOX_FDT_OVERLAY_DTBO=/tmp/.fdt_overlay.dtbo +LUCKFOX_FDT_HDR_DTB=/tmp/.fdt_header.dtb +LUCKFOX_FDT_HDR_OVERLAY_DTS=/tmp/.fdt_header_overlay.dts +LUCKFOX_FDT_HDR_OVERLAY_DTBO=/tmp/.fdt_header_overlay.dtbo + +LUCKFOX_FDT_DUMP_TXT=/tmp/.fdt_dump.txt +LUCKFOX_PIN_DIAGRAM_FILE=/tmp/.pin_diagram.txt +LUCKFOX_CHANGE_TXT=/tmp/.change.txt + +LUCKFOX_CFG_FILE=/etc/luckfox.cfg + +# return +LF_OK=0 +LF_ERR=1 +LF_NONE=2 +LF_GUI_ENABLE=0 + +function luckfox_config_init() { + # check command + if ! command -v dialog &>/dev/null; then + echo "The dialog is not installed " + exit + fi + + if ! command -v dtc &>/dev/null; then + echo "The dtc is not installed" + exit + fi + + if ! command -v iomux &>/dev/null; then + echo "The iomux is not installed" + exit + fi + + # get chip model + LUCKFOX_CHIP_MODEL="$(cat /proc/device-tree/model)" >/dev/null 2>&1 + + # cteate cfg file + if [ ! -f $LUCKFOX_CFG_FILE ]; then + touch $LUCKFOX_CFG_FILE + fi + + # get media class + if [ ! -f $LUCKFOX_PIN_DIAGRAM_FILE ]; then + if [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Plus" ]; then + luckfox_pico_plus_pin_diagram_file + elif [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Pro" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Max" ]; then + luckfox_pico_pro_max_pin_diagram_file + elif [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico" ]; then + luckfox_pico_pin_diagram_file + elif [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Mini A" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Mini B" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Mini" ]; then + luckfox_pico_mini_pin_diagram_file + elif [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Ultra" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Ultra W" ]; then + luckfox_pico_ultra_pin_diagram_file + fi + fi + + # get media class dev + if [[ -e /dev/mmcblk0p4 ]]; then + LUCKFOX_CHIP_MEDIA_CLASS="emmc" + LUCKFOX_CHIP_MEDIA=/dev/mmcblk0p4 + elif [[ -e /dev/mmcblk1p4 ]]; then + LUCKFOX_CHIP_MEDIA_CLASS="sdmmc" + LUCKFOX_CHIP_MEDIA=/dev/mmcblk1p4 + luckfox_set_pin_parameter "SDMMC" 1 + elif [[ -e /dev/mtdblock3 ]]; then + LUCKFOX_CHIP_MEDIA_CLASS="spi_nand" + LUCKFOX_CHIP_MEDIA=/dev/mtdblock3 + else + LUCKFOX_CHIP_MEDIA_CLASS="unknown" + echo "Do not know the storage medium of Luckfox!" + exit + fi + + # init + luckfox_update_fdt >/dev/null 2>&1 + + # Save Change + if [ -f $LUCKFOX_CHANGE_TXT ]; then + rm $LUCKFOX_CHANGE_TXT + fi + touch $LUCKFOX_CHANGE_TXT +} + +function luckfox_load_cfg() { + local group right_group + local multi_pins_group=() + local pin value pattern + local status + + local i2c_speed spi_cs_enable spi_miso_enable spi_speed + local pwm_main pwm_sub uart_main uart_sub i2c_main i2c_sub spi_main spi_sub + local compatible_device + + if [ ! -f $LUCKFOX_CFG_FILE ]; then + touch $LUCKFOX_CFG_FILE + fi + # To obtain all the reusable GPIO pin functions + while IFS= read -r line; do + if [[ "$line" == *"| |"* ]]; then + group=() + right_group=() + + IFS='-' read -r -a group <<<"$(echo "$line" | cut -d'|' -f1)" + IFS='-' read -r -a right_group <<<"$(echo "$line" | cut -d'|' -f3)" + group+=("${right_group[@]}") + + for pin in "${group[@]}"; do + if [[ "$pin" == *"UART"*"_RX"* ]]; then + multi_pins_group+=("$(echo "$pin" | sed -E 's/(UART[0-9]+_M[0-9]+)_.*$/\1/g' | sed 's/^ //')") + elif [[ "$pin" == *"PWM"* ]]; then + multi_pins_group+=("$(echo "$pin" | sed -E 's/(PWM[0-9]+_M[0-9]+).*$/\1/g' | sed 's/^ //')") + elif [[ "$pin" == *"I2C"*"_SCL"* ]]; then + multi_pins_group+=("$(echo "$pin" | sed -E 's/(I2C[0-9]+_M[0-9]+)_.*$/\1/g' | sed 's/^ //')") + elif [[ "$pin" == *"SPI"*"_CLK"* ]]; then + multi_pins_group+=("$(echo "$pin" | sed -E 's/(SPI[0-9]+_M[0-9]+)_.*$/\1/g' | sed 's/^ //')") + fi + done + fi + done <"$LUCKFOX_PIN_DIAGRAM_FILE" + + # RGB + value=$(luckfox_get_pin_cfg "RGB_ENABLE") + if [ "$value" == 1 ] || [ -z "$value" ]; then + if [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Ultra" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Ultra W" ]; then + # set pins mark + luckfox_set_pin_mark "GPIO1_D0" 1 + luckfox_set_pin_mark "GPIO1_D1" 1 + luckfox_set_pin_mark "GPIO1_C2" 1 + luckfox_set_pin_mark "GPIO1_C3" 1 + luckfox_set_pin_mark "GPIO1_C1" 1 + + luckfox_set_pin_mark "GPIO1_C6" 1 + luckfox_set_pin_mark "GPIO2_A7" 1 + luckfox_set_pin_mark "GPIO2_A6" 1 + luckfox_set_pin_mark "GPIO1_D3" 1 + luckfox_set_pin_mark "GPIO1_C0" 1 + luckfox_set_pin_mark "GPIO1_D2" 1 + + luckfox_set_pin_mark "GPIO1_C7" 1 + luckfox_set_pin_mark "GPIO2_B0" 1 + luckfox_set_pin_mark "GPIO2_B1" 1 + + luckfox_set_pin_mark "GPIO1_C4" 1 + luckfox_set_pin_mark "GPIO1_C5" 1 + luckfox_set_pin_mark "GPIO2_A1" 1 + luckfox_set_pin_mark "GPIO2_A0" 1 + luckfox_set_pin_mark "GPIO2_A5" 1 + luckfox_set_pin_mark "GPIO2_A4" 1 + luckfox_set_pin_mark "GPIO2_A2" 1 + luckfox_set_pin_mark "GPIO2_A3" 1 + else + echo "Only Luckfox Pico Ultra /Luckfox Pico Ultra W support RGB" + fi + fi + + # CSI ( Priority is lower than RGB ) + value=$(luckfox_get_pin_cfg "CSI_ENABLE") + if [ -z "$value" ]; then + if [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Ultra" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Ultra W" ]; then + luckfox_set_pin_mark "I2C4_M1_SCL" 1 + luckfox_set_pin_mark "I2C4_M1_SDA" 1 + luckfox_set_pin_mark "I2C4_M0_SCL" 1 + luckfox_set_pin_mark "I2C4_M0_SDA" 1 + fi + fi + + # FBTFT + value=$(luckfox_get_pin_cfg "FBTFT_ENABLE") + if [ "$value" == 1 ]; then + echo "FBTFT enable" + if [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Plus" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico" ]; then + luckfox_set_pin_mark "GPIO1_A2" "$value" + luckfox_set_pin_mark "GPIO1_C0" "$value" + luckfox_set_pin_mark "GPIO1_C1" "$value" + luckfox_set_pin_mark "GPIO1_C2" "$value" + luckfox_set_pin_mark "GPIO1_C3" "$value" + luckfox_set_pin_mark "GPIO0_A4" "$value" + luckfox_fbtft_app 1 "sitronix,st7789v" + elif [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Pro" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Max" ]; then + luckfox_set_pin_mark "GPIO2_B1" "$value" + luckfox_set_pin_mark "GPIO1_C0" "$value" + luckfox_set_pin_mark "GPIO1_C1" "$value" + luckfox_set_pin_mark "GPIO1_C2" "$value" + luckfox_set_pin_mark "GPIO1_C3" "$value" + luckfox_set_pin_mark "GPIO2_B0" "$value" + luckfox_fbtft_app 1 "sitronix,st7789v" + else + echo "FBTFT Not supported in this Luckfox-Pico Model!" + fi + elif [ "$value" == 0 ]; then + if [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Plus" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico" ] || + [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Pro" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Max" ]; then + echo "Reset fbtft pins" + #luckfox_fbtft_app 0 + fi + fi + + # SDMMC + value=$(luckfox_get_pin_cfg "SDMMC_ENABLE") + + if [ -z "$value" ]; then + if [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Plus" ]; then + luckfox_set_pin_mark "GPIO3_A1" 1 + luckfox_set_pin_mark "GPIO3_A3" 1 + luckfox_set_pin_mark "GPIO3_A2" 1 + luckfox_set_pin_mark "GPIO3_A4" 1 + luckfox_set_pin_mark "GPIO3_A5" 1 + luckfox_set_pin_mark "GPIO3_A7" 1 + luckfox_set_pin_mark "GPIO3_A6" 1 + fi + else + luckfox_sdmmc_app "$value" + fi + + # Create global variables by comparing cfg files + for pin in "${multi_pins_group[@]}"; do + + # delete * + if [[ "$pin" == "*"* ]]; then + pin=$(echo "$pin" | sed 's/^.//') + fi + + value=$(grep "${pin}_STATUS=" $LUCKFOX_CFG_FILE | cut -d '=' -f 2) + # PWM + if [[ "$pin" == *"PWM"* ]]; then + pattern=".*PWM([0-9]+)_M([0-9]+).*" + if [[ $pin =~ $pattern ]]; then + pwm_main="${BASH_REMATCH[1]}" + pwm_sub="${BASH_REMATCH[2]}" + fi + + if [ -n "$value" ]; then + luckfox_pwm_app "$value" "$pwm_main" "$pwm_sub" + fi + fi + + # UART + if [[ "$pin" == *"UART"* ]]; then + pattern=".*UART([0-9]+)_M([0-9]+).*" + if [[ $pin =~ $pattern ]]; then + uart_main="${BASH_REMATCH[1]}" + uart_sub="${BASH_REMATCH[2]}" + fi + + if [ -n "$value" ]; then + luckfox_uart_app "$value" "$uart_main" "$uart_sub" + fi + fi + + # I2C + if [[ "$pin" == *"I2C"* ]]; then + pattern=".*I2C([0-9]+)_M([0-9]+).*" + if [[ $pin =~ $pattern ]]; then + i2c_main="${BASH_REMATCH[1]}" + i2c_sub="${BASH_REMATCH[2]}" + fi + + i2c_speed=$(grep "${pin}_SPEED=" "$LUCKFOX_CFG_FILE" | cut -d '=' -f 2) + + if [ -n "$value" ]; then + luckfox_i2c_app "$value" "$i2c_main" "$i2c_sub" "$i2c_speed" + fi + fi + + # SPI + if [[ "$pin" == *"SPI"* ]] && [[ "$(luckfox_get_pin_cfg "FBTFT_ENABLE")" != 1 ]]; then + pattern=".*SPI([0-9]+)_M([0-9]+).*" + if [[ $pin =~ $pattern ]]; then + spi_main="${BASH_REMATCH[1]}" + spi_sub="${BASH_REMATCH[2]}" + fi + spi_speed=$(luckfox_get_pin_cfg "${pin}_SPEED") + spi_miso_enable=$(luckfox_get_pin_cfg "${pin}_MISO_ENABLE") + spi_cs_enable=$(luckfox_get_pin_cfg "${pin}_CS_ENABLE") + + if [ -z "$spi_cs_enable" ]; then + spi_cs_enable=1 + luckfox_set_pin_cfg "${pin}_CS_ENABLE" 1 + fi + + if [ -z "$spi_miso_enable" ]; then + spi_miso_enable=1 + luckfox_set_pin_cfg "${pin}_MODE" 1 + fi + + if [ -n "$value" ]; then + luckfox_spi_app "$value" "$spi_main" "$spi_sub" "$spi_cs_enable" "$spi_miso_enable" "$spi_speed" + fi + fi + done + +} + +# ------------------- Pin Diagram --------------------- +function luckfox_pico_pro_max_pin_diagram_file() { + cat >$LUCKFOX_PIN_DIAGRAM_FILE <$LUCKFOX_PIN_DIAGRAM_FILE <$LUCKFOX_PIN_DIAGRAM_FILE <$LUCKFOX_PIN_DIAGRAM_FILE <$LUCKFOX_PIN_DIAGRAM_FILE <>"$LUCKFOX_PIN_DIAGRAM_FILE" + fi +} + +function luckfox_set_pin_cfg() { + local parameter_name="$1" + local parameter_value="$2" + + if grep -q "$parameter_name=" "$LUCKFOX_CFG_FILE"; then + sed -i "s/^$parameter_name=.*/$parameter_name=$parameter_value/" "$LUCKFOX_CFG_FILE" + else + echo "$parameter_name=$parameter_value" >>"$LUCKFOX_CFG_FILE" + fi +} + +function luckfox_set_pin_mark() { + local pin="$1" + local action="$2" + + #if grep -o -q "*$pin" "$LUCKFOX_PIN_DIAGRAM_FILE" ; then + # return + #fi + + if [ "$action" == 1 ]; then + pin=$(echo "$pin" | tr -d ' ') + sed -i "s/ \($pin\)/\*\1/" $LUCKFOX_PIN_DIAGRAM_FILE + elif [ "$action" == 0 ]; then + if [[ "$pin" == \** ]]; then + pin="${pin:1}" + fi + sed -i "s/\*\($pin\)/ \1/" $LUCKFOX_PIN_DIAGRAM_FILE + fi +} + +function luckfox_get_pin_cfg() { + local setting="$1" + value=$(grep "${setting}=" $LUCKFOX_CFG_FILE | cut -d '=' -f 2) + echo "$value" +} + +# ---------------------- APP ------------------------- +# -- General -- +function luckfox_sha256_convert() { + local sha256_hash=$1 + local formatted_hash="" + + for ((i = 0; i < ${#sha256_hash}; i += 8)); do + formatted_hash+="0x${sha256_hash:$i:8} " + done + + echo "$formatted_hash" +} + +function luckfox_get_device_name() { + local device_node="$1" + local device_node_name + + device_node_name=$(grep "$device_node =" $LUCKFOX_FDT_DUMP_TXT | awk '{print $3}' | sed 's/["";]//g') + echo "$device_node_name" +} + +function luckfox_get_pinctrl_addr() { + local pinctrl_node="$1" + local search_num="$2" + + local phandle_value + if [ -z "$search_num" ]; then + search_num=3 + fi + + phandle_value=$(grep -A "$search_num" "$pinctrl_node {" $LUCKFOX_FDT_DUMP_TXT | grep 'phandle' | awk '{print $3}' | sed 's/[<>;]//g') + echo "$phandle_value" +} + +function luckfox_get_pin_mode() { + local input="$1" + local reset_action="$2" + local flag + + IFS=' ' read -r -a phandle_values <<<"$input" + for phandle_value in "${phandle_values[@]}"; do + pins_value=$(grep -B1 "phandle = <$phandle_value>" "$LUCKFOX_FDT_DUMP_TXT" | grep "rockchip,pins" | sed -e 's/^.*<\(.*\)>.*$/\1/') + + if [ -n "$pins_value" ]; then + IFS=' ' read -r -a pins_array <<<"$pins_value" + for ((i = 0; i < ${#pins_array[@]}; i += 4)); do + gpio_bank_hex=${pins_array[i]} + gpio_num_hex=${pins_array[i + 1]} + gpio_mode_hex=${pins_array[i + 2]} + + gpio_bank=$((gpio_bank_hex)) + gpio_num=$((gpio_num_hex)) + gpio_mode=$((gpio_mode_hex)) + + current_gpio_mode_raw="$(iomux "$gpio_bank" "$gpio_num")" + current_gpio_mode=$(echo "$current_gpio_mode_raw" | sed 's/.*= \([0-9]*\)/\1/') + + if [ "$gpio_mode" == "$current_gpio_mode" ]; then + flag=1 + fi + done + echo "$flag" + return + fi + done + +} + +function luckfox_set_pin_mode() { + #region + local input="$1" + local reset_action="$2" + + IFS=' ' read -r -a phandle_values <<<"$input" + for phandle_value in "${phandle_values[@]}"; do + pins_value=$(grep -B1 "phandle = <$phandle_value>" "$LUCKFOX_FDT_DUMP_TXT" | grep "rockchip,pins" | sed -e 's/^.*<\(.*\)>.*$/\1/') + + if [ -n "$pins_value" ]; then + IFS=' ' read -r -a pins_array <<<"$pins_value" + for ((i = 0; i < ${#pins_array[@]}; i += 4)); do + gpio_bank_hex=${pins_array[i]} + gpio_num_hex=${pins_array[i + 1]} + gpio_mode_hex=${pins_array[i + 2]} + + gpio_bank=$((gpio_bank_hex)) + gpio_num=$((gpio_num_hex)) + gpio_mode=$((gpio_mode_hex)) + + if [ "$reset_action" == 1 ]; then + iomux "$gpio_bank" "$gpio_num" 0 + else + iomux "$gpio_bank" "$gpio_num" "$gpio_mode" + fi + done + else + luckfox_result_handle $LF_NONE "phandle" + fi + done + #endregion +} + +# -- Dynamic Overlay -- +function luckfox_dtbo_overlay() { + local overlay_node="$1" + local overlay_content="$2" + + if [ -z "$overlay_content" ]; then + "overlay_content" + fi + echo "$overlay_content" >$LUCKFOX_DYNAMIC_DTS + + dtc -I dts -O dtb $LUCKFOX_DYNAMIC_DTS -o $LUCKFOX_DYNAMIC_DTBO + if [ -d /sys/kernel/config/device-tree/overlays/"$overlay_node" ]; then + echo 0 >/sys/kernel/config/device-tree/overlays/"$overlay_node"/status + else + mkdir -p /sys/kernel/config/device-tree/overlays/"$overlay_node" + fi + cat $LUCKFOX_DYNAMIC_DTBO >/sys/kernel/config/device-tree/overlays/"$overlay_node"/dtbo + echo 1 >/sys/kernel/config/device-tree/overlays/"$overlay_node"/status + + # delete temp files + #rm $LUCKFOX_DYNAMIC_DTS + #rm $LUCKFOX_DYNAMIC_DTBO +} + +# -- Static Overlay -- +function luckfox_update_fdt() { + # get fdt_header + local origin_fdt_size_hex origin_fdt_size + dd if=$LUCKFOX_CHIP_MEDIA of=$LUCKFOX_FDT_HDR_DTB bs=1 skip=0 count=2048 >/dev/null 2>&1 + + # get size + if [ ! -f $LUCKFOX_FDT_HDR_DTB ]; then + luckfox_result_handle $LF_NONE $LUCKFOX_FDT_HDR_DTB + return + fi + origin_fdt_size_hex=$(fdtdump $LUCKFOX_FDT_HDR_DTB | grep -A 5 "fdt {" | grep "data-size" | awk '{print $3}' | tr -d ';<>') + origin_fdt_size=$(printf "%d\n" "$origin_fdt_size_hex") + + # get fdt dtb + dd if=$LUCKFOX_CHIP_MEDIA of=$LUCKFOX_FDT_DTB bs=1 skip=2048 count="$origin_fdt_size" >/dev/null 2>&1 + + # create fdt dump + if [ ! -f $LUCKFOX_FDT_DTB ]; then + luckfox_result_handle $LF_NONE $LUCKFOX_FDT_DTB + return + fi + fdtdump $LUCKFOX_FDT_DTB >$LUCKFOX_FDT_DUMP_TXT +} + +function luckfox_fdt_overlay() { + #region + local fdt_content="$1" + local fdt_dtb_size fdt_size fdt_size_hex fdt_hash_data + + if [ -z "$fdt_content" ]; then + luckfox_result_handle $LF_NONE "fdt_content" + return + fi + echo "$fdt_content" >$LUCKFOX_FDT_OVERLAY_DTS + # fdt overlay + dtc -I dts -O dtb $LUCKFOX_FDT_OVERLAY_DTS -o $LUCKFOX_FDT_OVERLAY_DTBO + if [ ! -f $LUCKFOX_FDT_OVERLAY_DTBO ]; then + luckfox_result_handle $LF_NONE $LUCKFOX_FDT_OVERLAY_DTBO + return + fi + + fdtoverlay -i $LUCKFOX_FDT_DTB -o $LUCKFOX_FDT_DTB $LUCKFOX_FDT_OVERLAY_DTBO >/dev/null 2>&1 + fdt_dtb_size=$(ls -la $LUCKFOX_FDT_DTB | awk '{print $5}') + + kernel_offset=$(fdtdump $LUCKFOX_FDT_HDR_DTB | grep -A 2 "kernel {" | grep "data-position" | sed -n 's/.*<\(0x[0-9a-fA-F]*\)>.*/\1/p') + fdt_offset=$(fdtdump $LUCKFOX_FDT_HDR_DTB | grep -A 2 "fdt {" | grep "data-position" | sed -n 's/.*<\(0x[0-9a-fA-F]*\)>.*/\1/p') + + kernel_offset_dec=$((kernel_offset)) + fdt_offset_dec=$((fdt_offset)) + result_dec=$((kernel_offset_dec - fdt_offset_dec)) + + if [ $result_dec -lt "$fdt_dtb_size" ]; then + luckfox_result_handle $LF_ERR "Kernel will be affected !" + fi + + dd if=$LUCKFOX_FDT_DTB of=$LUCKFOX_CHIP_MEDIA bs=1 seek=2048 count="$fdt_dtb_size" >/dev/null 2>&1 + + # fdt header + if [ ! -f $LUCKFOX_FDT_DTB ]; then + luckfox_result_handle $LF_NONE $LUCKFOX_FDT_DTB + return + fi + fdt_size=$(ls -la $LUCKFOX_FDT_DTB | awk '{print $5}') + fdt_size_hex=$(printf "%x\n" "$fdt_size") + fdt_hash_data=$(luckfox_sha256_convert "$(sha256sum $LUCKFOX_FDT_DTB | awk '{print $1}')") + fdt_header_content=" +/dts-v1/; +/plugin/; + +&{/images/fdt}{ + data-size=<0x$fdt_size_hex>; + hash{ + value=<$fdt_hash_data>; + }; +}; +" + echo "$fdt_header_content" >$LUCKFOX_FDT_HDR_OVERLAY_DTS + dtc -I dts -O dtb $LUCKFOX_FDT_HDR_OVERLAY_DTS -o $LUCKFOX_FDT_HDR_OVERLAY_DTBO + if [ ! -f $LUCKFOX_FDT_HDR_OVERLAY_DTBO ]; then + luckfox_result_handle $LF_NONE $LUCKFOX_FDT_HDR_OVERLAY_DTBO + return + fi + fdtoverlay -i $LUCKFOX_FDT_HDR_DTB -o $LUCKFOX_FDT_HDR_DTB $LUCKFOX_FDT_HDR_OVERLAY_DTBO >/dev/null 2>&1 + dd if=$LUCKFOX_FDT_HDR_DTB of=$LUCKFOX_CHIP_MEDIA bs=1 seek=0 count=2048 >/dev/null 2>&1 + #endregion +} + +function luckfox_fdt_clear() { + # delete temp file + local files=( + "$LUCKFOX_FDT_DUMP_TXT" + "$LUCKFOX_FDT_DTB" + "$LUCKFOX_FDT_OVERLAY_DTS" + "$LUCKFOX_FDT_OVERLAY_DTBO" + "$LUCKFOX_FDT_HDR_DTB" + "$LUCKFOX_FDT_HDR_OVERLAY_DTS" + "$LUCKFOX_FDT_HDR_OVERLAY_DTBO" + ) + + for file in "${files[@]}"; do + if [ -e "$file" ]; then + rm "$file" + fi + done +} + +# -- Time Setting -- +function luckfox_timezone_settings() { + dialog --msgbox "Developing" 10 30 +} + +function luckfox_time_synchronization() { + dialog --msgbox "Developing" 10 30 +} + +# -- Compatible Devices -- +function luckfox_compatible_Pico_LCD() { + #region + local action="$1" + local spi_device_name spi_pinctrl_addr spi_action + + if [ "$action" == 1 ]; then + luckfox_pwm_app 0 11 1 + luckfox_pwm_app 0 10 1 + luckfox_pwm_app 0 0 0 + luckfox_pwm_app 0 2 2 + luckfox_pwm_app 0 4 2 + luckfox_pwm_app 0 5 2 + luckfox_pwm_app 0 6 2 + luckfox_pwm_app 0 1 0 + luckfox_pwm_app 0 10 2 + luckfox_uart_app 0 3 1 + + if [ "$LUCKFOX_CHIP_MEDIA_CLASS" == "sdmmc" ] && [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Plus" ]; then + luckfox_result_handle $LF_ERR "The sdmmc system cannot drive the LCD" + elif [ "$LUCKFOX_CHIP_MEDIA_CLASS" == "spi_nand" ] && [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Plus" ]; then + luckfox_sdmmc_app 0 + luckfox_pwm_app 0 9 0 + luckfox_pwm_app 0 11 0 + luckfox_uart_app 0 5 0 + + luckfox_spi_app 1 0 0 1 0 + luckfox_gpio_app 1 c 6 up + luckfox_gpio_app 1 c 7 up + luckfox_gpio_app 1 d 1 up + luckfox_gpio_app 3 a 6 up + luckfox_gpio_app 3 a 7 up + luckfox_gpio_app 3 a 5 up + luckfox_gpio_app 3 a 2 up + + elif [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Pro" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Max" ]; then + luckfox_uart_app 0 1 1 + luckfox_i2c_app 0 4 0 + + luckfox_spi_app 1 0 0 1 0 + luckfox_gpio_app 1 c 6 up + luckfox_gpio_app 1 c 7 up + luckfox_gpio_app 1 d 1 up + luckfox_gpio_app 2 a 4 up + luckfox_gpio_app 2 a 5 up + luckfox_gpio_app 2 a 0 up + luckfox_gpio_app 2 a 2 up + elif [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico" ]; then + luckfox_spi_app 1 0 0 1 0 + luckfox_gpio_app 1 c 6 up + luckfox_gpio_app 1 c 7 up + luckfox_gpio_app 1 d 1 up + luckfox_gpio_app 4 b 1 up + luckfox_gpio_app 4 b 0 up + luckfox_gpio_app 4 a 6 up + luckfox_gpio_app 4 a 3 up + else + luckfox_result_handle $LF_ERR "The "$LUCKFOX_CHIP_MODEL" does not support this compatible device" + fi + fi + #endregion +} + +function luckfox_compatible_Pico_ePaper() { + #region + local action="$1" + local spi_device_name spi_pinctrl_addr spi_action + + if [ "$action" == 1 ]; then + luckfox_pwm_app 0 0 0 + luckfox_pwm_app 0 2 2 + luckfox_pwm_app 0 4 2 + luckfox_pwm_app 0 5 2 + luckfox_pwm_app 0 6 2 + luckfox_pwm_app 0 1 0 + + luckfox_spi_app 1 0 0 1 0 + fi + #endregion +} + +function luckfox_compatible_Pico-UPS-B() { + #region + local action="$1" + if [ "$action" == 1 ]; then + luckfox_pwm_app 0 0 1 + luckfox_pwm_app 0 11 2 + luckfox_i2c_app 1 3 1 1000000 + fi + #endregion +} + +function luckfox_compatible_Pico_ResTouch_LCD() { + local action="$1" + local spi_device_name spi_pinctrl_addr spi_action + + if [ "$action" == 1 ]; then + luckfox_pwm_app 0 8 1 + luckfox_pwm_app 0 0 0 + luckfox_pwm_app 0 2 2 + luckfox_pwm_app 0 1 0 + luckfox_pwm_app 0 10 2 + luckfox_uart_app 0 3 1 + luckfox_uart_app 0 4 1 + + luckfox_spi_app 1 0 0 0 1 + if [ "$LUCKFOX_CHIP_MEDIA_CLASS" == "sdmmc" ] && [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Plus" ]; then + luckfox_result_handle $LF_ERR "The sdmmc system cannot drive the use of SD cards and touch functions!" + elif [ "$LUCKFOX_CHIP_MEDIA_CLASS" == "spi_nand" ] && [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Plus" ]; then + luckfox_sdmmc_app 0 + luckfox_uart_app 0 5 0 + luckfox_i2c_app 0 0 2 + luckfox_result_handle $LF_OK + elif [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Pro" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Max" ]; then + luckfox_uart_app 0 1 1 + luckfox_i2c_app 0 4 0 + luckfox_i2c_app 0 3 0 + luckfox_result_handle $LF_OK + else + luckfox_result_handle $LF_ERR "The "$LUCKFOX_CHIP_MODEL" does not support this compatible device" + fi + + fi +} + +function luckfox_compatible_OLED_Module() { + local action="$1" + + if [ "$action" == 1 ]; then + luckfox_pwm_app 0 11 1 + luckfox_pwm_app 0 10 1 + luckfox_pwm_app 0 8 1 + luckfox_pwm_app 0 0 1 + luckfox_pwm_app 0 11 2 + luckfox_pwm_app 0 4 2 + luckfox_pwm_app 0 5 2 + luckfox_uart_app 0 4 1 + + luckfox_spi_app 1 0 0 0 0 + luckfox_i2c_app 1 3 1 + fi +} + +function luckfox_compatible_Pico_OLED() { + local action="$1" + + if [ "$action" == 1 ]; then + luckfox_uart_app 0 3 1 + luckfox_pwm_app 0 0 0 + luckfox_pwm_app 0 0 1 + luckfox_pwm_app 0 11 2 + + luckfox_spi_app 1 0 0 0 0 + luckfox_i2c_app 1 3 1 + + if [ "$LUCKFOX_CHIP_MEDIA_CLASS" == "sdmmc" ] && [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Plus" ]; then + luckfox_result_handle $LF_ERR "The sdmmc system cannot drive the key1 " + elif [ "$LUCKFOX_CHIP_MEDIA_CLASS" == "spi_nand" ] && [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Plus" ]; then + luckfox_sdmmc_app 0 + luckfox_uart_app 0 5 0 + luckfox_gpio_app 1 d 1 up + luckfox_gpio_app 3 a 7 up + elif [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Pro" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Max" ]; then + luckfox_uart_app 0 1 1 + luckfox_gpio_app 1 d 1 up + luckfox_gpio_app 2 a 5 up + elif [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico" ]; then + luckfox_gpio_app 1 d 1 up + luckfox_gpio_app 4 b 0 up + else + luckfox_result_handle $LF_ERR "The "$LUCKFOX_CHIP_MODEL" does not support this compatible device" + fi + fi +} + +function luckfox_compatible_DHT11() { + #region + local action="$1" + local dht11_action + + if [ "$action" == 1 ]; then + # disable pwm + luckfox_pwm_app 0 11 1 + dht11_action=okay + else + dht11_action=disabled + fi + + local dtbo_content=" +/dts-v1/; +/plugin/; + +&{/dht11_sensor}{ + status=\"$dht11_action\"; +}; +" + luckfox_dtbo_overlay "dht11" "$dtbo_content" + #endregion +} + +function luckfox_compatible_app() { + local compatible_device="$1" + local action="$2" + local device + local compatible_group=() + + # Set up an inventory of adaptable hardware + if [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico" ]; then + compatible_group=(Pico_LCD Pico_ePaper Pico_UPS_B OLED_Module Pico_OLED DHT11) + elif [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Plus" ] && [ "$LUCKFOX_CHIP_MEDIA_CLASS" == "sdmmc" ]; then + compatible_group=(Pico_ePaper Pico_UPS_B OLED_Module DHT11) + elif [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Plus" ] && [ "$LUCKFOX_CHIP_MEDIA_CLASS" == "spi_nand" ]; then + compatible_group=(Pico_LCD Pico_ePaper Pico_UPS_B Pico_ResTouch_LCD OLED_Module Pico_OLED DHT11) + elif [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Pro" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Max" ]; then + compatible_group=(Pico_LCD Pico_ePaper Pico_UPS_B Pico_ResTouch_LCD OLED_Module Pico_OLED DHT11) + fi + + for device in "${compatible_group[@]}"; do + if [ "$device" == "$compatible_device" ]; then + luckfox_compatible_"${compatible_device}" "$action" + return + fi + done + luckfox_result_handle "$LF_ERR" "This compatible device $compatible_device is not supported!" +} + +# -- Advanced Options -- + +function hex_add() { + local hex1=$1 + local hex2=$2 + + local dec1=$(printf "%d" 0x"$hex1") + local dec2=$(printf "%d" 0x"$hex2") + local sum_hex=$(printf "%X" $((dec1 + dec2))) + + echo "$sum_hex" +} + +function hex_shift() { + local hex=$1 + local shift_amount=$2 + + # 将十六进制数转换为十进制 + local dec=$(printf "%d" 0x$hex) + + # 计算移位数 + local shift=$((shift_amount * 2)) + + # 进行移位操作 + local shifted=$((dec << shift)) + + # 将结果转换回十六进制并输出 + printf "%X\n" $shifted +} + +function luckfox_gpio_app() { + local gpio_bank="$1" + local gpio_group="$2" + local gpio_number="$3" + local gpio_pull_mode="$4" + + local reg_addr_base reg_addr data + + PULL_MODE_DATE_NORMAL=30000 + PULL_MODE_DATE_UP=30001 + PULL_MODE_DATE_DOWN=30002 + + # GPIO Bank + RV1106_GPIO0=ff388038 + RV1106_GPIO1=ff5381C0 + RV1106_GPIO2=ff5481D0 + RV1106_GPIO3=ff5581E0 + RV1106_GPIO4=ff568070 + + #Group + A_OFFSET=0 + B_OFFSET=4 + C_OFFSET=8 + D_OFFSET=c + + case $gpio_bank in + 0) + reg_addr_base="$RV1106_GPIO0" + ;; + 1) + reg_addr_base="$RV1106_GPIO1" + ;; + 2) + reg_addr_base="$RV1106_GPIO2" + ;; + 3) + reg_addr_base="$RV1106_GPIO3" + ;; + 4) + reg_addr_base="$RV1106_GPIO4" + ;; + *) + echo "input error!" + exit + ;; + esac + + case $gpio_group in + a) + reg_addr=0x$(hex_add $reg_addr_base $A_OFFSET) + ;; + b) + reg_addr=0x$(hex_add $reg_addr_base $B_OFFSET) + ;; + c) + reg_addr=0x$(hex_add $reg_addr_base $C_OFFSET) + ;; + d) + reg_addr=0x$(hex_add $reg_addr_base $D_OFFSET) + ;; + *) + echo "input error!" + exit + ;; + esac + + case $gpio_pull_mode in + normal) + data=0x$(hex_shift $PULL_MODE_DATE_NORMAL "$gpio_number") + ;; + up) + data=0x$(hex_shift $PULL_MODE_DATE_UP "$gpio_number") + ;; + down) + data=0x$(hex_shift $PULL_MODE_DATE_DOWN "$gpio_number") + ;; + *) + echo "input error!" + exit + ;; + esac + + io -4 "$reg_addr" "$data" +} + +function luckfox_pwm_app() { + #region + local action="$1" + local pwm_main="$2" + local pwm_sub="$3" + + local pwm_device_name pwm_pinctrl_addr + pre_action=$(luckfox_get_pin_mode "$(luckfox_get_pinctrl_addr "pwm${pwm_main}m${pwm_sub}-pins")") + + # status + if [ "$action" == 1 ]; then + local pwm_action=okay + luckfox_check_pin_diagram "PWM${pwm_main}_M${pwm_sub}" + pwm_pinctrl_addr=$(luckfox_get_pinctrl_addr "pwm${pwm_main}m${pwm_sub}-pins") + else + local pwm_action=disabled + pwm_pinctrl_addr="" + fi + luckfox_set_pin_mark "PWM${pwm_main}_M${pwm_sub}" "$action" + + # device addr + pwm_device_name=$(luckfox_get_device_name "pwm${pwm_main}") + + local dtbo_content=" +/dts-v1/; +/plugin/; + +&{$pwm_device_name}{ + pinctrl-0=<$pwm_pinctrl_addr>; + status=\"$pwm_action\"; +}; +" + # dtb overlay + luckfox_dtbo_overlay "pwm${pwm_main}m${pwm_sub}" "$dtbo_content" + if [ "$action" == 1 ]; then + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "pwm${pwm_main}m${pwm_sub}-pins")" 0 + elif [ "$action" == 0 ] && [ "$pre_action" == 1 ]; then + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "pwm${pwm_main}m${pwm_sub}-pins")" 1 + fi + + # update cfg + luckfox_set_pin_cfg "PWM${pwm_main}_M${pwm_sub}_STATUS" "$action" + + #endregion +} + +function luckfox_check_uart() { + #region + local uart_mode="$1" + local uart_main="$2" + + # Set UART1 in Luckfox Pico Ultra W + if [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Ultra W" ]; then + if [ "$uart_mode" == 0 ] && [ "$uart_main" == 1 ]; then + luckfox_result_handle "$LF_ERR" "BlueTooth is enable,Can't enable UART1" + fi + fi + #endregion +} + +function luckfox_uart_app() { + #region + local action="$1" + local uart_main="$2" + local uart_sub="$3" + + local uart_device_name uart_pinctrl_addr + local pre_action + pre_action=$(luckfox_get_pin_mode "$(luckfox_get_pinctrl_addr "uart${uart_main}m${uart_sub}-xfer")") + + # status + if [ "$action" == 1 ]; then + local uart_action=okay + luckfox_check_pin_diagram "UART${uart_main}_M${uart_sub}_TX" "UART${uart_main}_M${uart_sub}_RX" + luckfox_check_uart 0 "$uart_main" + uart_pinctrl_addr=$(luckfox_get_pinctrl_addr "uart${uart_main}m${uart_sub}-xfer") + else + local uart_action=disabled + uart_pinctrl_addr="" + fi + luckfox_set_pin_mark "UART${uart_main}_M${uart_sub}_TX" "$action" + luckfox_set_pin_mark "UART${uart_main}_M${uart_sub}_RX" "$action" + # device addr + uart_device_name=$(luckfox_get_device_name "serial${uart_main}") + + local dtbo_content=" +/dts-v1/; +/plugin/; + +&{$uart_device_name}{ + pinctrl-0=<$uart_pinctrl_addr>; + status=\"$uart_action\"; +}; +" + # dtb overlay + luckfox_dtbo_overlay "uart${uart_main}m${uart_sub}" "$dtbo_content" + if [ "$action" == 1 ]; then + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "uart${uart_main}m${uart_sub}-xfer")" 0 + elif [ "$action" == 0 ] && [ "$pre_action" == 1 ]; then + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "uart${uart_main}m${uart_sub}-xfer")" 1 + fi + + if [ -f "/dev/ttyS${uart_main}" ]; then + rm /dev/ttyS"${uart_main}" + fi + # update cfg + luckfox_set_pin_cfg "UART${uart_main}_M${uart_sub}_STATUS" "$action" + #endregion +} + +function luckfox_check_i2c() { + #region + local i2c_mode="$1" + local i2c_main="$2" + + local ts_status + # Set GPIO + if [ "$i2c_mode" == 0 ]; then + #check TP status + if [ "$i2c_main" == 3 ]; then + if [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Ultra" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Ultra W" ]; then + ts_status=$(luckfox_get_pin_cfg "TS_ENABLE") + if [ "$ts_status" == 1 ]; then + luckfox_result_handle "$LF_ERR" "TouchScreen is enable,Can't config I2C3" + else + local dtbo_content=" +/dts-v1/; +/plugin/; + +&{/i2c@ff460000/touchscreen}{ + status=\"disabled\"; +}; +" + luckfox_dtbo_overlay "TouchScreen_I2C" "$dtbo_content" + fi + fi + fi + #check CSI status + if [ "$i2c_main" == 4 ]; then + csi_status=$(luckfox_get_pin_cfg "CSI_ENABLE") + # process default status + if [ -z "$csi_status" ]; then + # CSI I2C is not enabled on Ultra models by default + if [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Ultra" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Ultra W" ]; then + "$csi_status" = 0 + else + "$csi_status" = 1 + fi + fi + + if [ "$csi_status" == 1 ]; then + luckfox_result_handle "$LF_ERR" "CSI is enable,Can't config I2C4" + fi + fi + # Set CSI or TS + elif [ "$i2c_mode" == 1 ]; then + # Enable TS + if [ "$i2c_main" == 3 ]; then + if [ "$(luckfox_get_pin_cfg "I2C3_M0_STATUS")" == 1 ] || + [ "$(luckfox_get_pin_cfg "I2C3_M1_STATUS")" == 1 ] || + [ "$(luckfox_get_pin_cfg "I2C3_M2_STATUS")" == 1 ]; then + luckfox_result_handle "$LF_ERR" "I2C3 is enable,Can't config TouchScreen" + fi + fi + # Enable CSI + if [ "$i2c_main" == 4 ]; then + if [ "$(luckfox_get_pin_cfg "I2C4_M0_STATUS")" == 1 ] || + [ "$(luckfox_get_pin_cfg "I2C4_M1_STATUS")" == 1 ] || + [ "$(luckfox_get_pin_cfg "I2C4_M2_STATUS")" == 1 ]; then + luckfox_result_handle "$LF_ERR" "I2C4 is enable,Can't config CSI" + fi + fi + fi + #endregion +} + +function luckfox_i2c_app() { + #region + local action="$1" + local i2c_main="$2" + local i2c_sub="$3" + local i2c_speed + + #check + luckfox_check_i2c 0 "$i2c_main" + + if [ -z "$4" ]; then + i2c_speed=5000000 + else + i2c_speed="$4" + fi + + local i2c_device_name i2c_pinctrl_addr + local pre_action + pre_action=$(luckfox_get_pin_mode "$(luckfox_get_pinctrl_addr "i2c${i2c_main}m${i2c_sub}-xfer")") + + # status + if [ "$action" == 1 ]; then + luckfox_check_pin_diagram "I2C${i2c_main}_M${i2c_sub}_SDA" "I2C${i2c_main}_M${i2c_sub}_SCL" + i2c_pinctrl_addr=$(luckfox_get_pinctrl_addr "i2c${i2c_main}m${i2c_sub}-xfer") + local i2c_action=okay + else + i2c_pinctrl_addr="" + local i2c_action=disabled + fi + + # device addr + i2c_device_name=$(luckfox_get_device_name "i2c${i2c_main}") + + local dtbo_content=" +/dts-v1/; +/plugin/; + +&{$i2c_device_name}{ + status=\"$i2c_action\"; + clock-frequency = <$i2c_speed>; + pinctrl-0 = <$i2c_pinctrl_addr>; +}; +" + # dtb overlay + luckfox_dtbo_overlay "i2c${i2c_main}m${i2c_sub}" "$dtbo_content" + if [ "$action" == 1 ]; then + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "i2c${i2c_main}m${i2c_sub}-xfer")" 0 + elif [ "$action" == 0 ] && [ "$pre_action" == 1 ]; then + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "i2c${i2c_main}m${i2c_sub}-xfer")" 1 + fi + + # update cfg + luckfox_set_pin_cfg "I2C${i2c_main}_M${i2c_sub}_STATUS" "$action" + luckfox_set_pin_cfg "I2C${i2c_main}_M${i2c_sub}_SPEED" "$i2c_speed" + luckfox_set_pin_parameter "I2C${i2c_main}_M${i2c_sub}_SPEED" "$i2c_speed" + # mark + luckfox_set_pin_mark "I2C${i2c_main}_M${i2c_sub}_SDA" "$action" + luckfox_set_pin_mark "I2C${i2c_main}_M${i2c_sub}_SCL" "$action" + + #endregion +} + +function luckfox_check_spi() { + #region + local spi_mode="$1" + local spi_main="$2" + + # Set GPIO + if [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Plus" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico" ] || + [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Pro" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Max" ]; then + fbtft_status=$(luckfox_get_pin_cfg "FBTFT_ENABLE") + spi0m0_status=$(luckfox_get_pin_cfg "SPI0_M0_STATUS") + if [ "$spi_mode" == 0 ] && [ "$spi_main" == 0 ]; then + if [ "$fbtft_status" == 1 ]; then + luckfox_result_handle "$LF_ERR" "FBTFT is enable,Can't config SPI0" + else + local dtbo_content=" +/dts-v1/; +/plugin/; + +&{/spi@ff500000/fbtft@0}{ + status=\"disabled\"; +}; +" + luckfox_dtbo_overlay "FBTFT_SPI" "$dtbo_content" + fi + # Set FBTFT + elif [ "$spi_mode" == 1 ] && [ "$spi_main" == 0 ]; then + if [ "$spi0m0_status" == 1 ]; then + luckfox_result_handle "$LF_ERR" "SPI0M0 is enable,Can't config FBTFT" + fi + fi + fi + #endregion +} + +function luckfox_spi_app() { + #region + local action="$1" + local spi_main="$2" + local spi_sub="$3" + local cs_action="$4" + local miso_action="$5" + local spi_speed + if [ -z "$6" ]; then + spi_speed=50000000 + else + spi_speed="$6" + fi + + luckfox_check_spi 0 "$spi_main" + + local spi_device_name + local spi_pinctrl_addr="" + + # Prevent being repeatedly disabled + local pre_action pre_miso_action pre_cs_action + pre_action=$(luckfox_get_pin_mode "$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-clk")") + pre_miso_action=$(luckfox_get_pin_mode "$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-miso")") + pre_cs_action=$(luckfox_get_pin_mode "$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-cs0")") + + # set cfg + if [ "$action" == 1 ]; then + # check + if [ "$cs_action" == 1 ]; then + luckfox_check_pin_diagram "SPI${spi_main}_M${spi_sub}_CS0" + fi + if [ "$miso_action" == 1 ]; then + luckfox_check_pin_diagram "SPI${spi_main}_M${spi_sub}_MISO" + fi + luckfox_check_pin_diagram "SPI${spi_main}_M${spi_sub}_MOSI" + luckfox_check_pin_diagram "SPI${spi_main}_M${spi_sub}_CLK" + # phandle + spi_pinctrl_addr+=$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-clk") + spi_pinctrl_addr+=" " + spi_pinctrl_addr+=$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-mosi") + if [ "$cs_action" == 1 ]; then + spi_pinctrl_addr+=" " + spi_pinctrl_addr+=$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-cs0") + fi + if [ "$miso_action" == 1 ]; then + spi_pinctrl_addr+=" " + spi_pinctrl_addr+=$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-miso") + fi + # status + local spi_action=okay + + elif [ "$action" == 0 ]; then + # status + local spi_action=disabled + fi + + # create dtc + spi_device_name=$(luckfox_get_device_name "spi${spi_main}") + if [ "$action" == 1 ]; then + dtbo_content=" +/dts-v1/; +/plugin/; + +&{$spi_device_name}{ + status=\"$spi_action\"; + pinctrl-0 = <$spi_pinctrl_addr>; +}; + +&{$spi_device_name/spidev@0}{ + status=\"$spi_action\"; + spi-max-frequency = <$spi_speed>; +}; +" + elif [ "$action" == 0 ]; then + dtbo_content=" +/dts-v1/; +/plugin/; + +&{$spi_device_name}{ + status=\"$spi_action\"; +}; + +&{$spi_device_name/spidev@0}{ + status=\"$spi_action\"; +}; +" + fi + + # dtb overlay + luckfox_dtbo_overlay spi"${spi_main}"m"${spi_sub}" "$dtbo_content" + + # update pin fun + if [ "$action" == 1 ]; then + if [ "$pre_miso_action" == 1 ] && [ "$miso_action" == 0 ]; then + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-miso")" 1 + elif [ "$miso_action" == 1 ]; then + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-miso")" 0 + fi + + if [ "$pre_cs_action" == 1 ] && [ "$cs_action" == 0 ]; then + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-cs0")" 1 + elif [ "$cs_action" == 1 ]; then + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-cs0")" 0 + fi + + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-clk")" 0 + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-mosi")" 0 + elif [ "$action" == 0 ]; then + if [ "$pre_action" == 1 ]; then + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-clk")" 1 + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-mosi")" 1 + fi + + if [ "$pre_miso_action" == 1 ]; then + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-miso")" 1 + fi + + if [ "$pre_cs_action" == 1 ]; then + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-cs0")" 1 + fi + fi + + # update cfg show cfg in " luckfox-config show " + luckfox_set_pin_cfg "SPI${spi_main}_M${spi_sub}_STATUS" "$action" + luckfox_set_pin_cfg "SPI${spi_main}_M${spi_sub}_CS_ENABLE" "$cs_action" + luckfox_set_pin_cfg "SPI${spi_main}_M${spi_sub}_MISO_ENABLE" "$miso_action" + luckfox_set_pin_cfg "SPI${spi_main}_M${spi_sub}_SPEED" "$spi_speed" + luckfox_set_pin_parameter "SPI${spi_main}_M${spi_sub}_SPEED" "$spi_speed" + + # mark + if [ "$cs_action" == 1 ] && [ "$action" == 1 ]; then + luckfox_set_pin_mark "SPI${spi_main}_M${spi_sub}_CS0" "$action" + else + luckfox_set_pin_mark "SPI${spi_main}_M${spi_sub}_CS0" 0 + fi + + if [ "$miso_action" == 1 ] && [ "$action" == 1 ]; then + luckfox_set_pin_mark "SPI${spi_main}_M${spi_sub}_MISO" "$action" + else + luckfox_set_pin_mark "SPI${spi_main}_M${spi_sub}_MISO" 0 + fi + luckfox_set_pin_mark "SPI${spi_main}_M${spi_sub}_CLK" "$action" + luckfox_set_pin_mark "SPI${spi_main}_M${spi_sub}_MOSI" "$action" + #endregion +} + +function luckfox_usb_app() { + #region + local usb_mode="$1" + + # update fdt + luckfox_update_fdt + + # fdt overlay content + local fdt_content=" +/dts-v1/; +/plugin/; + +&{/usbdrd/usb@ffb00000}{ + dr_mode =\"${usb_mode}\"; +}; +" + # fdt overlay + luckfox_fdt_overlay "$fdt_content" + + # update cfg + luckfox_set_pin_cfg "USB_MODE" "$usb_mode" + + #endregion +} + +function luckfox_csi_app() { + #region + local action="$1" + # update fdt + luckfox_update_fdt + + local i2c_pinctrl_addr + # create fdt overlay content + if [ "$action" == 1 ]; then + luckfox_check_i2c 1 4 + i2c_pinctrl_addr=$(luckfox_get_pinctrl_addr "i2c4m2-xfer") + local csi_action=okay + else + local csi_action=disbaled + fi + + if [ "$action" == 1 ]; then + local i2c_content=" +/dts-v1/; +/plugin/; +&{/i2c@ff470000}{ + status=\"$csi_action\"; + pinctrl-0 = <$i2c_pinctrl_addr>; +}; +" + else + local i2c_content=" +/dts-v1/; +/plugin/; +&{/i2c@ff470000}{ + status=\"$csi_action\"; +}; +" + fi + + # fdt overlay + luckfox_fdt_overlay "$i2c_content" + + # update cfg + luckfox_set_pin_cfg "CSI_ENABLE" "$action" + luckfox_set_pin_parameter "CSI_ENABLE" "$action" + + luckfox_set_pin_mark "I2C4_M0_SCL" 0 + luckfox_set_pin_mark "I2C4_M0_SDA" 0 + luckfox_set_pin_mark "I2C4_M1_SCL" 0 + luckfox_set_pin_mark "I2C4_M1_SDA" 0 + + #endregion +} + +function luckfox_rgb_check_params() { + local params=("$@") + + for param in "${params[@]}"; do + if [[ -z "$param" ]]; then + echo "Error: Parameter is empty." + return 1 + fi + + if ! [[ "$param" =~ ^[0-9]+$ ]]; then + echo "Error: Parameter '$param' is not a number." + return 1 + fi + done +} + +function luckfox_rgb_app() { + #region + local action="$1" + local rgb_mode="$2" + local rgb_clk="$3" + local rgb_h="$4" + local rgb_v="$5" + local rgb_hb="$6" + local rgb_hf="$7" + local rgb_vb="$8" + local rgb_vf="$9" + local rgb_h_len="${10}" + local rgb_v_len="${11}" + local rgb_h_active="${12}" + local rgb_v_active="${13}" + local rgb_de_active="${14}" + local rgb_pclk_active="${15}" + + local gpio0_phandle reset_gpio_action enable_gpio_action + + local pre_action + + pre_action=$(luckfox_get_pin_mode "$(luckfox_get_pinctrl_addr "lcd-pins")") + # create fdt overlay content + if [ "$action" == 1 ]; then + if [ "$rgb_mode" == "reset" ]; then + reset_gpio_action=okay + enable_gpio_action=disabled + elif [ "$rgb_mode" == "enable" ]; then + reset_gpio_action=disabled + enable_gpio_action=okay + else + luckfox_result_handle $LF_ERR "Wrong rgb_mode!" + return 1 + fi + + luckfox_rgb_check_params "$rgb_clk" "$rgb_h" "$rgb_v" "$rgb_hb" "$rgb_hf" "$rgb_vb" "$rgb_vf" "$rgb_h_len" "$rgb_v_len" "$rgb_h_active" "$rgb_v_active" "$rgb_de_active" "$rgb_pclk_active" + if [[ $? -ne 0 ]]; then + luckfox_result_handle $LF_ERR "Wrong rgb_params!" + return 1 + else + # decimal to hex + rgb_clk_hex=$(printf '0x%x\n' "$rgb_clk") + rgb_h_hex=$(printf '0x%x\n' "$rgb_h") + rgb_v_hex=$(printf '0x%x\n' "$rgb_v") + rgb_hb_hex=$(printf '0x%x\n' "$rgb_hb") + rgb_hf_hex=$(printf '0x%x\n' "$rgb_hf") + rgb_vb_hex=$(printf '0x%x\n' "$rgb_vb") + rgb_vf_hex=$(printf '0x%x\n' "$rgb_vf") + rgb_h_len_hex=$(printf '0x%x\n' "$rgb_h_len") + rgb_v_len_hex=$(printf '0x%x\n' "$rgb_v_len") + rgb_h_active_hex=$(printf '0x%x\n' "$rgb_h_active") + rgb_v_active_hex=$(printf '0x%x\n' "$rgb_v_active") + rgb_de_active_hex=$(printf '0x%x\n' "$rgb_de_active") + rgb_pclk_active_hex=$(printf '0x%x\n' "$rgb_pclk_active") + + fi + + luckfox_check_pin_diagram "GPIO1_D0" "GPIO1_D1" "GPIO1_C2" "GPIO1_C3" "GPIO1_C1" \ + "GPIO1_C6" "GPIO2_A7" "GPIO2_A6" "GPIO1_D3" "GPIO1_C0" "GPIO1_D2" \ + "GPIO1_C7" "GPIO2_B0" "GPIO2_B1" \ + "GPIO1_C4" "GPIO1_C5" "GPIO2_A1" "GPIO2_A0" "GPIO2_A5" "GPIO2_A4" "GPIO2_A2" "GPIO2_A3" + + if [ "$rgb_h" -gt 640 ] || [ "$rgb_h" -gt 640 ]; then + local cma_action=okay + else + local cma_action=disabled + fi + + local rgb_action=okay + else + local rgb_action=disabled + local cma_action=disabled + fi + + # create fdt_content + local fdt_content=" +/dts-v1/; +/plugin/; + +&{/syscon@ff000000/rgb}{ + status=\"$rgb_action\"; +}; + +&{/panel}{ + status=\"$rgb_action\"; +}; + +&{/reserved-memory/linux,cma}{ + status=\"$cma_action\"; +}; + +" + # Get GPIO0 phandle + #gpio0_phandle=$(luckfox_get_pinctrl_addr "gpio@ff380000" 11) + + local lcd_time_content=" +/dts-v1/; +/plugin/; + +&{/panel/display-timings/timing0}{ + clock-frequency = <$rgb_clk_hex>; + hactive = <$rgb_h_hex>; + vactive = <$rgb_v_hex>; + hback-porch = <$rgb_hb_hex>; + hfront-porch = <$rgb_hf_hex>; + vback-porch = <$rgb_vb_hex>; + vfront-porch = <$rgb_vf_hex>; + hsync-len = <$rgb_h_len_hex>; + vsync-len = <$rgb_v_len_hex>; + hsync-active = <$rgb_h_active_hex>; + vsync-active = <$rgb_v_active_hex>; + de-active = <$rgb_de_active_hex>; + pixelclk-active = <$rgb_pclk_active_hex>; +}; +" + + # fdt overlay + luckfox_fdt_overlay "$fdt_content" + if [ "$action" == 1 ]; then + luckfox_fdt_overlay "$lcd_time_content" + elif [ "$action" == 0 ] && [ "$pre_action" == 1 ]; then + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "lcd-pins")" 1 + fi + + # update cfg + luckfox_set_pin_cfg "RGB_ENABLE" "$action" + if [ "$action" == 1 ]; then + luckfox_set_pin_cfg "RGB_MODE" "$rgb_mode" + luckfox_set_pin_cfg "RGB_CLK" "$rgb_clk" + luckfox_set_pin_cfg "RGB_HACTIVE" "$rgb_h" + luckfox_set_pin_cfg "RGB_VACTIVE" "$rgb_v" + luckfox_set_pin_cfg "RGB_HBACKPORCH" "$rgb_hb" + luckfox_set_pin_cfg "RGB_HFRONTPORCH" "$rgb_hf" + luckfox_set_pin_cfg "RGB_VBACKPORCH" "$rgb_vb" + luckfox_set_pin_cfg "RGB_VFRONTPORCH" "$rgb_vf" + luckfox_set_pin_cfg "RGB_HSYNC_LEN" "$rgb_h_len" + luckfox_set_pin_cfg "RGB_VSYNC_LEN" "$rgb_v_len" + luckfox_set_pin_cfg "RGB_HSYNC_ACTIVE" "$rgb_h_active" + luckfox_set_pin_cfg "RGB_VSYNC_ACTIVE" "$rgb_v_active" + luckfox_set_pin_cfg "RGB_DE_ACTIVE" "$rgb_de_active" + luckfox_set_pin_cfg "RGB_PCLK_ACTIVE" "$rgb_pclk_active" + + luckfox_set_pin_parameter "RGB_MODE" "$rgb_mode" + luckfox_set_pin_parameter "RGB_CLK" "$rgb_clk" + luckfox_set_pin_parameter "RGB_HACTIVE" "$rgb_h" + luckfox_set_pin_parameter "RGB_VACTIVE" "$rgb_v" + luckfox_set_pin_parameter "RGB_HBACKPORCH" "$rgb_hb" + luckfox_set_pin_parameter "RGB_HFRONTPORCH" "$rgb_hf" + luckfox_set_pin_parameter "RGB_VBACKPORCH" "$rgb_vb" + luckfox_set_pin_parameter "RGB_VFRONTPORCH" "$rgb_vf" + luckfox_set_pin_parameter "RGB_HSYNC_LEN" "$rgb_h_len" + luckfox_set_pin_parameter "RGB_VSYNC_LEN" "$rgb_v_len" + luckfox_set_pin_parameter "RGB_HSYNC_ACTIVE" "$rgb_h_active" + luckfox_set_pin_parameter "RGB_VSYNC_ACTIVE" "$rgb_v_active" + luckfox_set_pin_parameter "RGB_DE_ACTIVE" "$rgb_de_active" + luckfox_set_pin_parameter "RGB_PCLK_ACTIVE" "$rgb_pclk_active" + fi + + luckfox_set_pin_parameter "RGB_ENABLE" "$action" + + # set pins mark + luckfox_set_pin_mark "GPIO1_D0" "$action" + luckfox_set_pin_mark "GPIO1_D1" "$action" + luckfox_set_pin_mark "GPIO1_C2" "$action" + luckfox_set_pin_mark "GPIO1_C3" "$action" + luckfox_set_pin_mark "GPIO1_C1" "$action" + + luckfox_set_pin_mark "GPIO1_C6" "$action" + luckfox_set_pin_mark "GPIO2_A7" "$action" + luckfox_set_pin_mark "GPIO2_A6" "$action" + luckfox_set_pin_mark "GPIO1_D3" "$action" + luckfox_set_pin_mark "GPIO1_C0" "$action" + luckfox_set_pin_mark "GPIO1_D2" "$action" + + luckfox_set_pin_mark "GPIO1_C7" "$action" + luckfox_set_pin_mark "GPIO2_B0" "$action" + luckfox_set_pin_mark "GPIO2_B1" "$action" + + luckfox_set_pin_mark "GPIO1_C4" "$action" + luckfox_set_pin_mark "GPIO1_C5" "$action" + luckfox_set_pin_mark "GPIO2_A1" "$action" + luckfox_set_pin_mark "GPIO2_A0" "$action" + luckfox_set_pin_mark "GPIO2_A5" "$action" + luckfox_set_pin_mark "GPIO2_A4" "$action" + luckfox_set_pin_mark "GPIO2_A2" "$action" + luckfox_set_pin_mark "GPIO2_A3" "$action" + #endregion +} + +function luckfox_ts_app() { + #region + local action="$1" + local ts_reg_hex="$2" + + luckfox_check_i2c 1 3 + + # update fdt + luckfox_update_fdt + + #ts_reg_hex=$(printf '0x%x\n' "$ts_reg") + + local i2c_pinctrl_addr tp_action tp_rst_pinctrl_addr tp_irq_pinctrl_addr + # create fdt overlay content + if [ "$action" == 1 ]; then + i2c_pinctrl_addr=$(luckfox_get_pinctrl_addr "i2c3m2-xfer") + tp_rst_pinctrl_addr=$(luckfox_get_pinctrl_addr "tp-rst") + tp_irq_pinctrl_addr=$(luckfox_get_pinctrl_addr "tp-irq") + local ts_action=okay + else + local ts_action=disbaled + fi + + # TouchScreen device tree overlay + # Just support GT911 now + + # I2C device tree overlay + if [ "$action" == 1 ]; then + local fdt_content=" +/dts-v1/; +/plugin/; +&{/i2c@ff460000}{ + status=\"$ts_action\"; + pinctrl-0 = <$i2c_pinctrl_addr $tp_irq_pinctrl_addr $tp_rst_pinctrl_addr>; +}; + +&{/i2c@ff460000/touchscreen}{ + status=\"$ts_action\"; + reg=<$ts_reg_hex>; +}; +" + elif [ "$action" == 0 ]; then + local fdt_content=" +/dts-v1/; +/plugin/; +&{/i2c@ff460000}{ + status=\"$ts_action\"; +}; + +&{/i2c@ff460000/touchscreen}{ + status=\"$ts_action\"; +}; +" + fi + + # fdt overlay + luckfox_fdt_overlay "$fdt_content" + + # update cfg + luckfox_set_pin_cfg "TS_ENABLE" "$action" + luckfox_set_pin_parameter "TS_ENABLE" "$action" + + #endregion +} + +function luckfox_fbtft_app() { + #region + local action="$1" + local fbtft_compatible="$2" + local spi_device_name + + local spi_main=0 + local spi_sub=0 + local pre_action pre_cs_action pre_miso_action + + # check + luckfox_check_spi 1 0 + + pre_action=$(luckfox_get_pin_mode "$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-clk")") + pre_miso_action=$(luckfox_get_pin_mode "$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-miso")") + pre_cs_action=$(luckfox_get_pin_mode "$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-cs0")") + + #ts_reg_hex=$(printf '0x%x\n' "$ts_reg") + if [ "$action" == 1 ]; then + if [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Plus" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico" ]; then + luckfox_check_pin_diagram "GPIO1_A2" "GPIO1_C0" "GPIO1_C1" "GPIO1_C2" "GPIO1_C3" "GPIO0_A4" + elif [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Pro" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Max" ]; then + luckfox_check_pin_diagram "GPIO2_B1" "GPIO1_C0" "GPIO1_C1" "GPIO1_C2" "GPIO1_C3" "GPIO2_B0" + else + luckfox_result_handle "$LF_ERR" "This Luckfox-Pico Model does not support FBTFT setting!" + return + fi + + spi_pinctrl_addr+=$(luckfox_get_pinctrl_addr "spi0m0-clk") + spi_pinctrl_addr+=" " + spi_pinctrl_addr+=$(luckfox_get_pinctrl_addr "spi0m0-mosi") + spi_pinctrl_addr+=" " + spi_pinctrl_addr+=$(luckfox_get_pinctrl_addr "spi0m0-cs0") + + local fbtft_action=okay + elif [ "$action" == 0 ]; then + local fbtft_action=disabled + fi + + spi_device_name=$(luckfox_get_device_name "spi0") + + if [ "$action" == 1 ]; then + local fdt_content=" +/dts-v1/; +/plugin/; + +&{$spi_device_name}{ + status=\"$fbtft_action\"; + pinctrl-0 = <$spi_pinctrl_addr>; +}; + +&{$spi_device_name/fbtft@0}{ + status=\"$fbtft_action\"; + compatible=\"$fbtft_compatible\"; +}; + +&{$spi_device_name/spidev@0}{ + status=\"disabled\"; +}; +" + elif [ "$action" == 0 ]; then + local fdt_content=" +/dts-v1/; +/plugin/; + +&{$spi_device_name}{ + status=\"$fbtft_action\"; +}; + +&{$spi_device_name/fbtft@0}{ + status=\"$fbtft_action\"; +}; +" + fi + + # fdt overlay + # luckfox_fdt_overlay "$fdt_content + luckfox_dtbo_overlay "FBTFT" "$fdt_content" + + # update pin fun fbtft: miso_action = 0 cs_action = 1 + if [ "$action" == 1 ]; then + if [ "$pre_miso_action" == 1 ]; then + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-miso")" 1 + fi + + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-cs0")" 0 + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-clk")" 0 + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-mosi")" 0 + elif [ "$action" == 0 ]; then + if [ "$pre_action" == 1 ]; then + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-clk")" 1 + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-mosi")" 1 + fi + + if [ "$pre_miso_action" == 1 ]; then + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-miso")" 1 + fi + + if [ "$pre_cs_action" == 1 ]; then + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "spi${spi_main}m${spi_sub}-cs0")" 1 + fi + fi + + # update cfg + if [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Plus" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico" ]; then + luckfox_set_pin_mark "GPIO1_A2" "$action" + luckfox_set_pin_mark "GPIO1_C0" "$action" + luckfox_set_pin_mark "GPIO1_C1" "$action" + luckfox_set_pin_mark "GPIO1_C2" "$action" + luckfox_set_pin_mark "GPIO1_C3" "$action" + luckfox_set_pin_mark "GPIO0_A4" "$action" + elif [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Pro" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Max" ]; then + luckfox_set_pin_mark "GPIO2_B1" "$action" + luckfox_set_pin_mark "GPIO1_C0" "$action" + luckfox_set_pin_mark "GPIO1_C1" "$action" + luckfox_set_pin_mark "GPIO1_C2" "$action" + luckfox_set_pin_mark "GPIO1_C3" "$action" + luckfox_set_pin_mark "GPIO2_B0" "$action" + fi + + luckfox_set_pin_cfg "FBTFT_ENABLE" "$action" + luckfox_set_pin_parameter "FBTFT_ENABLE" "$action" + #endregion +} + +function luckfox_sdmmc_app() { + #region + local action="$1" + local emmc_device_name + + local pre_action + pre_action=$(luckfox_get_pin_mode "$(luckfox_get_pinctrl_addr "sdmmc0-clk")") + + if [ "$action" == 1 ]; then + if [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Plus" ] && [ "$LUCKFOX_CHIP_MEDIA_CLASS" == "spi_nand" ]; then + luckfox_check_pin_diagram "GPIO3_A6" "GPIO3_A7" "GPIO3_A5" "GPIO3_A4" "GPIO3_A2" "GPIO3_A3" "GPIO3_A1" + fi + local emmc_action=okay + elif [ "$action" == 0 ]; then + local emmc_action=disabled + fi + + # device addr + emmc_device_name=$(luckfox_get_device_name "mmc1") + + local dtbo_content=" +/dts-v1/; +/plugin/; + +&{$emmc_device_name}{ + status=\"$emmc_action\"; +}; +" + # dtb overlay + luckfox_dtbo_overlay "sdmmc" "$dtbo_content" + if [ "$action" == 1 ]; then + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "sdmmc0-clk")" 0 + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "sdmmc0-cmd")" 0 + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "sdmmc0-bus4")" 0 + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "sdmmc0-det")" 0 + #elif [ "$action" == 0 ] && [ "$pre_action" == 1 ]; then + elif [ "$action" == 0 ]; then + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "sdmmc0-clk")" 1 + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "sdmmc0-cmd")" 1 + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "sdmmc0-bus4")" 1 + luckfox_set_pin_mode "$(luckfox_get_pinctrl_addr "sdmmc0-det")" 1 + fi + + # update cfg + luckfox_set_pin_cfg "SDMMC_ENABLE" "$action" + luckfox_set_pin_parameter "SDMMC_ENABLE" "$action" + + #mark + if [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Plus" ] && [ "$LUCKFOX_CHIP_MEDIA_CLASS" == "spi_nand" ]; then + luckfox_set_pin_mark "GPIO3_A6" "$action" + luckfox_set_pin_mark "GPIO3_A7" "$action" + luckfox_set_pin_mark "GPIO3_A5" "$action" + luckfox_set_pin_mark "GPIO3_A4" "$action" + luckfox_set_pin_mark "GPIO3_A2" "$action" + luckfox_set_pin_mark "GPIO3_A3" "$action" + luckfox_set_pin_mark "GPIO3_A1" "$action" + fi + #endregion +} + +# ---------------------- GUI Handler ---------------------- +function luckfox_result_handle() { + local status="$1" + local log="$2" + + if [ "$status" == $LF_OK ]; then + return + elif [ "$status" == $LF_ERR ]; then + if [ -n "$log" ]; then + if [ "$LF_GUI_ENABLE" == 1 ]; then + dialog --msgbox "$log" 10 30 + else + echo "[luckfox-config] error:${log}" + fi + else + if [ "$LF_GUI_ENABLE" == 1 ]; then + dialog --msgbox "error" 10 30 + else + echo "[luckfox-config] error" + fi + fi + exit + elif [ "$status" == $LF_NONE ]; then + if [ -n "$log" ]; then + if [ "$LF_GUI_ENABLE" == 1 ]; then + dialog --msgbox "Could not find $log" 10 30 + else + echo "[luckfox-config] error:Could not find ${log}" + fi + fi + exit + fi +} + +function luckfox_get_option_str() { + local search_param="$1" + local group=() + local right_group=() + local option_group=() + local option_str="" + + while IFS= read -r line; do + if [[ "$line" == *"| |"* && "$line" == *"$search_param"* ]]; then + group=() + right_group=() + + IFS='-' read -r -a group <<<"$(echo "$line" | cut -d'|' -f1)" + IFS='-' read -r -a right_group <<<"$(echo "$line" | cut -d'|' -f3)" + group+=("${right_group[@]}") + for pin in "${group[@]}"; do + if [ "$search_param" == "UART" ]; then + if [[ "$pin" == *"$search_param"*"_RX"* ]]; then + option_group+=$(echo "$pin" | sed -E 's/(UART[0-9]+_M[0-9]+)_.*$/\1 x /g') + fi + elif [ "$search_param" == "PWM" ]; then + if [[ "$pin" == *"$search_param"* ]]; then + option_group+=$(echo "$pin" | sed -E 's/(PWM[0-9]+_M[0-9]+).*$/\1 x /g') + fi + elif [ "$search_param" == "I2C" ]; then + if [[ "$pin" == *"$search_param"*"_SCL"* ]]; then + option_group+=$(echo "$pin" | sed -E 's/(I2C[0-9]+_M[0-9]+)_.*$/\1 x /g') + fi + elif [ "$search_param" == "SPI" ]; then + if [[ "$pin" == *"$search_param"*"_CLK"* ]]; then + option_group+=$(echo "$pin" | sed -E 's/(SPI[0-9]+_M[0-9]+)_.*$/\1 x /g') + fi + fi + done + fi + done <"$LUCKFOX_PIN_DIAGRAM_FILE" + + for element in "${option_group[@]}"; do + option_str+="$element" + done + + echo "$option_str" +} + +function luckfox_pico_show_pin_diagram() { + if [ -f $LUCKFOX_PIN_DIAGRAM_FILE ]; then + dialog --title "Luckfox Pin Diagram" --no-collapse --textbox $LUCKFOX_PIN_DIAGRAM_FILE 100 100 + else + luckfox_result_handle "$LF_NONE" "$LUCKFOX_PIN_DIAGRAM_FILE" + fi +} + +# ---------------------- Main GUI ------------------------- +function luckfox_show_menu() { + # Only support Luckfox Pico Ultra /Luckfox Pico Ultra W + if [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Ultra" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Ultra W" ]; then + while true; do + option=$(dialog --title "$LUCKFOX_CHIP_MODEL Config" \ + --menu "Choose an option" 80 50 6 \ + 1 "Advanced Options" \ + 2 "About Luckfox" \ + 2>&1 >/dev/tty) + + case $option in + 1) luckfox_advanced_options ;; + 2) luckfox_about ;; + *) luckfox_exit ;; + esac + done + else + while true; do + option=$(dialog --title "$LUCKFOX_CHIP_MODEL Config" \ + --menu "Choose an option" 80 50 6 \ + 1 "Compatible Devices" \ + 2 "Advanced Options" \ + 3 "About Luckfox" \ + 2>&1 >/dev/tty) + + case $option in + 1) luckfox_compatible_devices ;; + 2) luckfox_advanced_options ;; + 3) luckfox_about ;; + *) luckfox_exit ;; + esac + done + fi +} + +function luckfox_compatible_devices() { + local action + + option=$(dialog --title "Compatible Devices" \ + --menu "Choose an option" 80 50 6 \ + 1 "Pico_LCD" \ + 2 "Pico_ePaper" \ + 3 "Pico_UPS_B" \ + 4 "Pico_ResTouch_LCD" \ + 5 "OLED_Module" \ + 6 "Pico_OLED" \ + 7 "DHT11" \ + 2>&1 >/dev/tty) + + case $option in + 1) device="Pico_LCD" ;; + 2) device="Pico_ePaper" ;; + 3) device="Pico_UPS_B" ;; + 4) device="Pico_ResTouch_LCD" ;; + 5) device="OLED_Module" ;; + 6) device="Pico_OLED" ;; + 7) device="DHT11" ;; + *) luckfox_show_menu ;; + esac + + action=$(dialog --menu "$device Startup Confirmation" 10 40 2 1 "Yes" \ + 0 "No" \ + 2>&1 >/dev/tty) + if [ -z "$action" ] || [ "$action" == 0 ]; then + luckfox_compatible_devices + fi + luckfox_compatible_app "$device" "$action" + echo "Change the compatible status of $device to $action." >>"$LUCKFOX_CHANGE_TXT" + +} + +function luckfox_advanced_options() { + if [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Ultra" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Ultra W" ]; then + while true; do + option=$(dialog --title "Advanced Options" \ + --menu "Choose an option" 80 50 6 \ + 1 "PWM" \ + 2 "UART" \ + 3 "I2C" \ + 4 "SPI" \ + 5 "USB" \ + 6 "CSI" \ + 7 "RGB" \ + 8 "TouchScreen" \ + 2>&1 >/dev/tty) + + case $option in + 1) luckfox_PWM ;; + 2) luckfox_UART ;; + 3) luckfox_I2C ;; + 4) luckfox_SPI ;; + 5) luckfox_USB ;; + 6) luckfox_CSI ;; + 7) luckfox_RGB ;; + 8) luckfox_TS ;; + *) luckfox_show_menu ;; + esac + done + else + while true; do + option=$(dialog --title "Advanced Options" \ + --menu "Choose an option" 80 50 6 1 "PWM" \ + 2 "UART" \ + 3 "I2C" \ + 4 "SPI" \ + 5 "USB" \ + 6 "CSI" \ + 7 "FBTFT" \ + 8 "SDMMC" \ + 2>&1 >/dev/tty) + + case $option in + 1) luckfox_PWM ;; + 2) luckfox_UART ;; + 3) luckfox_I2C ;; + 4) luckfox_SPI ;; + 5) luckfox_USB ;; + 6) luckfox_CSI ;; + 7) luckfox_FBTFT ;; + 8) luckfox_SDMMC ;; + *) luckfox_show_menu ;; + esac + done + fi +} + +function luckfox_about() { + luckfox_pico_show_pin_diagram +} + +function luckfox_exit() { + luckfox_fdt_clear + + # echo Setting change + + clear + exit +} + +# ---------------------- Sub GUI ------------------------- +# Advanced Options +function luckfox_PWM() { + local pwm_enable pwm_main pwm_sub + local option pattern + + local pwm_option_str + pwm_option_str=$(luckfox_get_option_str "PWM") + + if [ -z "$pwm_option_str" ]; then + dialog --msgbox "No PWM Pins" 10 30 + fi + + option=$(dialog --title "PWM Config" \ + --menu "Choose an option" 100 30 10 $pwm_option_str 2>&1 >/dev/tty) + if [ -z "$option" ]; then + luckfox_advanced_options + fi + + pattern=".*PWM([0-9]+)_M([0-9]+).*" + if [[ $option =~ $pattern ]]; then + pwm_main="${BASH_REMATCH[1]}" + pwm_sub="${BASH_REMATCH[2]}" + fi + + pwm_enable=$(dialog --menu "PWM${pwm_main}_M${pwm_sub} Config" 10 40 2 \ + 0 "disable" \ + 1 "enable" \ + 2>&1 >/dev/tty) + if [ -z "$pwm_enable" ]; then + luckfox_advanced_options + else + luckfox_pwm_app "$pwm_enable" "$pwm_main" "$pwm_sub" + echo "Set PWM${pwm_main}_M${pwm_sub} enable status : $pwm_enable." >>"$LUCKFOX_CHANGE_TXT" + fi + luckfox_advanced_options +} + +function luckfox_UART() { + local uart_enable uart_main uart_sub + local option pattern + + local uart_option_str + uart_option_str=$(luckfox_get_option_str "UART") + + if [ -z "$uart_option_str" ]; then + dialog --msgbox "No UART Pins" 10 30 + fi + + option=$(dialog --title "UART Config" \ + --menu "Choose an option" 10 30 4 $uart_option_str 2>&1 >/dev/tty) + if [ -z "$option" ]; then + luckfox_advanced_options + fi + + pattern=".*UART([0-9]+)_M([0-9]+).*" + if [[ $option =~ $pattern ]]; then + uart_main="${BASH_REMATCH[1]}" + uart_sub="${BASH_REMATCH[2]}" + fi + + uart_enable=$(dialog --menu "UART${uart_main}_M${uart_sub} Config" 10 40 2 \ + 0 "disable" \ + 1 "enable" \ + 2>&1 >/dev/tty) + if [ -z "$uart_enable" ]; then + luckfox_advanced_options + else + luckfox_uart_app "$uart_enable" "$uart_main" "$uart_sub" + echo "Set UART${uart_main}_M${uart_sub} enable status : $uart_enable." >>"$LUCKFOX_CHANGE_TXT" + fi + luckfox_advanced_options +} + +function luckfox_I2C() { + local i2c_enable i2c_speed i2c_main i2c_sub + local option pattern + + local i2c_option_str + i2c_option_str=$(luckfox_get_option_str "I2C") + + if [ -z "$i2c_option_str" ]; then + dialog --msgbox "No I2C Pins" 10 30 + fi + + option=$(dialog --title "I2C Config" \ + --menu "Choose an option" 10 30 4 $i2c_option_str 2>&1 >/dev/tty) + if [ -z "$option" ]; then + luckfox_advanced_options + fi + + pattern=".*I2C([0-9]+)_M([0-9]+).*" + if [[ $option =~ $pattern ]]; then + i2c_main="${BASH_REMATCH[1]}" + i2c_sub="${BASH_REMATCH[2]}" + fi + + i2c_enable=$(dialog --menu "I2C${i2c_main}_M${i2c_sub} Config" 10 40 2 \ + 0 "disable" \ + 1 "enable" \ + 2>&1 >/dev/tty) + if [ -z "$i2c_enable" ]; then + luckfox_advanced_options + fi + + if [ "$i2c_enable" == 1 ]; then + i2c_speed=$(dialog --inputbox "I2C${i2c_main}_M${i2c_sub} Speed:" 10 30 2>&1 >/dev/tty) + if [ -z "$i2c_speed" ]; then + luckfox_advanced_options + fi + elif [ "$i2c_enable" == 0 ]; then + i2c_speed=0 # default + fi + + luckfox_i2c_app "$i2c_enable" "$i2c_main" "$i2c_sub" "$i2c_speed" + echo "Set I2C${i2c_main}_M${i2c_sub} enable status : $i2c_enable." >>"$LUCKFOX_CHANGE_TXT" + echo "Set I2C${i2c_main}_M${i2c_sub} speed : $i2c_speed." >>"$LUCKFOX_CHANGE_TXT" + luckfox_advanced_options +} + +function luckfox_SPI() { + local spi_enable spi_speed spi_main spi_sub spi_cs_enable spi_miso_enable + local option + + local spi_option_str + spi_option_str=$(luckfox_get_option_str "SPI") + + if [ -z "$spi_option_str" ]; then + dialog --msgbox "No SPI Pins" 10 30 + luckfox_advanced_options + fi + + option=$(dialog --title "SPI Config" \ + --menu "Choose an option" 10 30 4 $spi_option_str 2>&1 >/dev/tty) + if [ -z "$option" ]; then + luckfox_advanced_options + fi + + pattern=".*SPI([0-9]+)_M([0-9]+).*" + if [[ $option =~ $pattern ]]; then + spi_main="${BASH_REMATCH[1]}" + spi_sub="${BASH_REMATCH[2]}" + fi + + spi_enable=$(dialog --menu "SPI${spi_main}_M${spi_sub} Enable Config" 10 40 2 \ + 0 "disable" \ + 1 "enable" \ + 2>&1 >/dev/tty) + if [ -z "$spi_enable" ]; then + luckfox_advanced_options + fi + + if [ "$spi_enable" == 1 ]; then + spi_speed=$(dialog --inputbox "SPI${spi_main}_M${spi_sub} Speed:" 10 30 2>&1 >/dev/tty) + if [ -z "$spi_speed" ]; then + luckfox_advanced_options + fi + + spi_cs_enable=$(dialog --menu "SPI${spi_main}_M${spi_sub} CS0 Enable Config" 10 40 2 \ + 0 "disable" \ + 1 "enable" \ + 2>&1 >/dev/tty) + if [ -z "$spi_cs_enable" ]; then + luckfox_advanced_options + fi + + spi_miso_enable=$(dialog --menu "SPI${spi_main}_M${spi_sub} MISO Enable Config" 10 40 2 \ + 0 "disable" \ + 1 "enable" \ + 2>&1 >/dev/tty) + if [ -z "$spi_miso_enable" ]; then + luckfox_advanced_options + fi + elif [ "$spi_enable" == 0 ]; then + spi_speed=10000000 + spi_cs_enable=1 + spi_miso_enable=1 + fi + luckfox_spi_app "$spi_enable" "$spi_main" "$spi_sub" "$spi_cs_enable" "$spi_miso_enable" "$spi_speed" + echo "Set SPI${spi_main}_M${spi_sub} enable status : $spi_enable." >>"$LUCKFOX_CHANGE_TXT" + echo "Set SPI${spi_main}_M${spi_sub} cs-pin enable status : $spi_cs_enable." >>"$LUCKFOX_CHANGE_TXT" + echo "Set SPI${spi_main}_M${spi_sub} miso-pin enable status : $spi_miso_enable." >>"$LUCKFOX_CHANGE_TXT" + echo "Set SPI${spi_main}_M${spi_sub} speed : $spi_speed." >>"$LUCKFOX_CHANGE_TXT" + luckfox_advanced_options +} + +function luckfox_USB() { + while true; do + option=$(dialog --title "USB Mode Config" \ + --menu "Choose an option" 10 30 3 \ + 1 "device" \ + 2 "host" \ + 2>&1 >/dev/tty) + case $option in + 1) + luckfox_usb_app peripheral + echo "Set USB Mode : peripheral." >>"$LUCKFOX_CHANGE_TXT" + dialog --msgbox "USB Effective after restart" 10 30 + luckfox_advanced_options + ;; + 2) + luckfox_usb_app host + echo "Set USB Mode: host." >>"$LUCKFOX_CHANGE_TXT" + dialog --msgbox "USB Effective after restart" 10 30 + luckfox_advanced_options + ;; + *) luckfox_advanced_options ;; + esac + done + + luckfox_advanced_options +} + +function luckfox_CSI() { + local csi_enable + csi_enable=$(dialog --menu "CSI Enable Config" 10 40 2 \ + 0 "disable" \ + 1 "enable" \ + 2>&1 >/dev/tty) + if [ -z "$csi_enable" ]; then + luckfox_advanced_options + fi + luckfox_csi_app "$csi_enable" + dialog --msgbox "CSI Effective after restart" 10 30 + echo "Set CSI enable status : $csi_enable." >>"$LUCKFOX_CHANGE_TXT" + luckfox_advanced_options +} + +function luckfox_RGB() { + local rgb_enable rgb_mode_str + + rgb_enable=$(dialog --menu "RGB Enable Config" 10 40 2 \ + 0 "disable" \ + 1 "enable" \ + 2>&1 >/dev/tty) + if [ -z "$rgb_enable" ]; then + luckfox_advanced_options + fi + + if [ "$rgb_enable" == 1 ]; then + rgb_mode_str="reset" + + if [ -f "$LUCKFOX_RGB_PARAMS" ]; then + touch "$LUCKFOX_RGB_PARAMS" + fi + + # init params + init_rgb_clk=$(luckfox_get_pin_cfg "RGB_CLK") + init_rgb_h=$(luckfox_get_pin_cfg "RGB_HACTIVE") + init_rgb_v=$(luckfox_get_pin_cfg "RGB_VACTIVE") + init_rgb_hb=$(luckfox_get_pin_cfg "RGB_HBACKPORCH") + init_rgb_hf=$(luckfox_get_pin_cfg "RGB_HFRONTPORCH") + init_rgb_vb=$(luckfox_get_pin_cfg "RGB_VBACKPORCH") + init_rgb_vf=$(luckfox_get_pin_cfg "RGB_VFRONTPORCH") + init_rgb_h_len=$(luckfox_get_pin_cfg "RGB_HSYNC_LEN") + init_rgb_v_len=$(luckfox_get_pin_cfg "RGB_VSYNC_LEN") + init_rgb_h_active=$(luckfox_get_pin_cfg "RGB_HSYNC_ACTIVE") + init_rgb_v_active=$(luckfox_get_pin_cfg "RGB_VSYNC_ACTIVE") + init_rgb_de_active=$(luckfox_get_pin_cfg "RGB_DE_ACTIVE") + init_rgb_pclk_active=$(luckfox_get_pin_cfg "RGB_PCLK_ACTIVE") + + LUCKFOX_RGB_PARAMS=$(mktemp) + dialog --no-cancel --form "Enter RGB Parameters" 15 50 0 \ + "Clock :" 1 1 "$init_rgb_clk" 1 15 10 0 \ + "Hsync-Active:" 2 1 "$init_rgb_h_active" 2 15 10 0 \ + "Vsync-Active:" 3 1 "$init_rgb_v_active" 3 15 10 0 \ + "DE-Active :" 4 1 "$init_rgb_de_active" 4 15 10 0 \ + "PCLK-Active :" 5 1 "$init_rgb_pclk_active" 5 15 10 0 \ + 2>"$LUCKFOX_RGB_PARAMS" + IFS=$'\n' read -d '' -r rgb_clk rgb_h_active rgb_v_active rgb_de_active rgb_pclk_active <"$LUCKFOX_RGB_PARAMS" + rm -f "$LUCKFOX_RGB_PARAMS" + + LUCKFOX_RGB_PARAMS=$(mktemp) + dialog --no-cancel --form "Enter RGB Parameters" 15 50 0 \ + "Hactive :" 1 1 "$init_rgb_h" 1 15 10 0 \ + "Vactive :" 2 1 "$init_rgb_v" 2 15 10 0 \ + "HBack-Porch :" 3 1 "$init_rgb_hb" 3 15 10 0 \ + "HFont-Porch :" 4 1 "$init_rgb_hf" 4 15 10 0 \ + "VBack-Porch :" 5 1 "$init_rgb_vb" 5 15 10 0 \ + "VFont-Porch :" 6 1 "$init_rgb_vf" 6 15 10 0 \ + "Hsync-Len :" 7 1 "$init_rgb_h_len" 7 15 10 0 \ + "Vsync-Len :" 8 1 "$init_rgb_v_len" 8 15 10 0 \ + 2>"$LUCKFOX_RGB_PARAMS" + IFS=$'\n' read -d '' -r rgb_h rgb_v rgb_hb rgb_hf rgb_vb rgb_vf rgb_h_len rgb_v_len <"$LUCKFOX_RGB_PARAMS" + rm -f "$LUCKFOX_RGB_PARAMS" + + dialog --msgbox "All parameters are valid." 15 50 + + luckfox_rgb_app 1 "$rgb_mode_str" "$rgb_clk" \ + "$rgb_h" "$rgb_v" \ + "$rgb_hb" "$rgb_hf" \ + "$rgb_vb" "$rgb_vf" \ + "$rgb_h_len" "$rgb_v_len" \ + "$rgb_h_active" "$rgb_v_active" \ + "$rgb_de_active" "$rgb_pclk_active" + echo "Set RGB enable status : $rgb_enable." >>"$LUCKFOX_CHANGE_TXT" + else + luckfox_rgb_app 0 + echo "Set RGB enable status : $rgb_enable." >>"$LUCKFOX_CHANGE_TXT" + fi + + dialog --msgbox "RGB Effective after restart" 10 30 + luckfox_advanced_options +} + +function luckfox_TS() { + local ts_enable ts_mode ts_reg_hex + + ts_enable=$(dialog --menu "TouchScreen Enable Config" 10 40 2 \ + 0 "disable" \ + 1 "enable" \ + 2>&1 >/dev/tty) + if [ -z "$ts_enable" ]; then + luckfox_advanced_options + fi + + if [ "$ts_enable" == 1 ]; then + ts_mode=$(dialog --menu "Touch GT911 Enable Config" 10 40 2 \ + 0 "i2c_addr: 0x14" \ + 1 "i2c_addr: 0x5d" \ + 2>&1 >/dev/tty) + if [ -z "$ts_mode" ]; then + luckfox_advanced_options + elif [ "$ts_mode" == 0 ]; then + ts_reg_hex="0x14" + elif [ "$ts_mode" == 1 ]; then + ts_reg_hex="0x5d" + fi + fi + + luckfox_ts_app "$ts_enable" "$ts_reg_hex" + echo "Set TouchScreen enable status : $ts_enable." >>"$LUCKFOX_CHANGE_TXT" + echo "Set TouchScreen Reg : $ts_reg_hex." >>"$LUCKFOX_CHANGE_TXT" + luckfox_advanced_options +} + +function luckfox_FBTFT() { + local fbtft_enable + fbtft_enable=$(dialog --menu "FBTFT Enable Config" 10 40 2 \ + 0 "disable" \ + 1 "enable" \ + 2>&1 >/dev/tty) + if [ -z "$fbtft_enable" ]; then + luckfox_advanced_options + fi + + if [ "$fbtft_enable" == 1 ]; then + fbtft_mode=$(dialog --menu "FBTFT MODE Config" 10 40 2 \ + 0 "st7789v/st7789vm" \ + 2>&1 >/dev/tty) + if [ -z "$fbtft_mode" ]; then + luckfox_advanced_options + elif [ "$fbtft_mode" == 0 ]; then + fbtft_compatible="sitronix,st7789v" + fi + fi + + luckfox_fbtft_app "$fbtft_enable" "$fbtft_compatible" + dialog --msgbox "FBTFT Effective after restart" 10 30 + + echo "Set FBTFT enable status : $fbtft_enable." >>"$LUCKFOX_CHANGE_TXT" + echo "Set FBTFT compatible : $fbtft_compatible." >>"$LUCKFOX_CHANGE_TXT" + luckfox_advanced_options +} + +function luckfox_SDMMC() { + local sdmmc_enable + if [ "$LUCKFOX_CHIP_MEDIA_CLASS" != "spi_nand" ]; then + dialog --title "SDMMC Config" --msgbox "Only spi_nand storage media support SDMMC Config" 10 30 + luckfox_advanced_options + fi + + sdmmc_enable=$(dialog --menu "SDMMC Enable Config" 10 40 2 \ + 0 "disable" \ + 1 "enable" \ + 2>&1 >/dev/tty) + if [ -z "$sdmmc_enable" ]; then + luckfox_advanced_options + fi + luckfox_sdmmc_app "$sdmmc_enable" + echo "Set SDMMC enable status : $sdmmc_enable." >>"$LUCKFOX_CHANGE_TXT" + luckfox_advanced_options +} + +# ---------------------- RUN ------------------------- +if [ "$1" == "load" ]; then + LF_GUI_ENABLE=0 + if [ -f $LUCKFOX_PIN_DIAGRAM_FILE ]; then + rm $LUCKFOX_PIN_DIAGRAM_FILE + fi + luckfox_config_init + luckfox_load_cfg + echo "Complete configuration loading" +elif [ "$1" == "show" ]; then + luckfox_config_init + cat $LUCKFOX_PIN_DIAGRAM_FILE +elif [ "$1" == "update" ]; then + luckfox_update_fdt +elif [ "$1" == "rgb_switch" ]; then + # for Luckfox Pico Ultra Boot Key + luckfox_config_init + LF_GUI_ENABLE=0 + if [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Ultra" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Ultra W" ]; then + if [ "$(luckfox_get_pin_cfg "RGB_HACTIVE")" == "480" ]; then + # 480 -> 720 + echo "****************************************************" + echo "***Switch the RGB screen resolution to 720 x 720.***" + echo "****************************************************" + luckfox_csi_app 1 + luckfox_rgb_app 1 "reset" "30000000" \ + "720" "720" \ + "44" "46" \ + "18" "16" \ + "2" "2" \ + "0" "0" \ + "0" "1" + elif [ "$(luckfox_get_pin_cfg "RGB_HACTIVE")" == "720" ]; then + # 720 -> 480 + echo "****************************************************" + echo "***Switch the RGB screen resolution to 480 x 480.***" + echo "****************************************************" + luckfox_csi_app 1 + luckfox_rgb_app 1 "reset" "16500000" \ + "480" "480" \ + "10" "50" \ + "8" "8" \ + "4" "10" \ + "0" "0" \ + "0" "1" + elif [ -z "$(luckfox_get_pin_cfg "RGB_HACTIVE")" ]; then + echo "****************************************************" + echo "***Switch the RGB screen resolution to 480 x 480.***" + echo "****************************************************" + luckfox_csi_app 1 + luckfox_rgb_app 1 "reset" "16500000" \ + "480" "480" \ + "10" "50" \ + "8" "8" \ + "4" "10" \ + "0" "0" \ + "0" "1" + fi + else + luckfox_result_handle "$RK_ERR" "This Luckchip Pico Model does not support RGB switch." + fi +elif [ -z "$1" ]; then + LF_GUI_ENABLE=1 + luckfox_config_init + luckfox_show_menu +fi diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox/etc/fstab b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-fastboot/etc/fstab similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox/etc/fstab rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-fastboot/etc/fstab diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox/etc/inittab b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-fastboot/etc/inittab similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox/etc/inittab rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-fastboot/etc/inittab diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox/usr/bin/rz b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-fastboot/usr/bin/rz similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox/usr/bin/rz rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-fastboot/usr/bin/rz diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox/usr/bin/sz b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-fastboot/usr/bin/sz similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox/usr/bin/sz rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-fastboot/usr/bin/sz diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/bin/dtc b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/bin/dtc new file mode 100755 index 0000000000000000000000000000000000000000..6449247415bf702789ec1c042d92426fc27107f1 GIT binary patch literal 335248 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≻2OvK2!ryUw_^ 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

4d-fmetv}VaNUQW^a>^+t> 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

113J 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

SZw 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 roZFhVR?>B5+{U&tO7}Unc06yT8`T?pn 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 bdAWMyG(ojIzUSidJ%NAP{(DjwXmb1ij^TIn literal 0 HcmV?d00001 diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/bin/fdtdump b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/bin/fdtdump new file mode 100755 index 0000000000000000000000000000000000000000..dd7141557237cb570cf6929a21410e58e7061f90 GIT binary patch literal 43272 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 literal 0 HcmV?d00001 diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/bin/fdtoverlay b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/bin/fdtoverlay new file mode 100755 index 0000000000000000000000000000000000000000..7ffda3733ded1a6bed9210a31646f891eebab9a2 GIT binary patch literal 42740 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 F{RfP%f#CoE literal 0 HcmV?d00001 diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/bin/iomux b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/bin/iomux new file mode 100755 index 0000000000000000000000000000000000000000..c41e4883c43e604dc8eb4cbd9ee2244964b36f37 GIT binary patch literal 12176 zcmeHNdypK(eeRjrz1`EE?pC_f14)QI>tuw*?mdxCFSwJ?2_-_}A#gAzb91|Mw`1+? zZgytHNf4|UDi9Y{RBRQdj1%NMFpf#E%QA)tBI0sk#}2kIszN5hK7(bPfYG4>Nkk5p z@9Un~n>(no`6E^NL%r4AzsJ|V?&_2nnxLOc=IWCSS~BYvzy&ayo~GNw>~G0+>(?F7FQ^)g-no{@TpWklvv zn)oh^Ge&(GG4UowUB(^=dJ$PKOY2CJ&?lj1oB+>Aeb9z7@MYA^cqQbFf$rK9UJmU0 z0?Q{6uY*2Z|5?ZwS)OfcFE~T(g0e}ze)iuwUihE@_ux^F0Q2#p(Ck_d3eYM7GM+vW8GqZdScpCXddGxF zAU5hxeQF?bP&)|Ph#%CinmqH=$;mUnJo#=^6D=JNooGotbi(MkZ(L7({x!T|uP&Wz z*TyF&|ErMDLFrO2|e#ZOM2`SGN-Y*{(^^zqlk;eFq_=j-CJvx83#?j2k=cqqTlx-Ea3 zwJv|iI+qtK_2)|y^Nji9vA2@OqJbT6AL#%0Qw`eL{N$P8lV`1Sj#wFcsqa*w{LCp$ zOrE*%BqZZv*}{R;>Zb?xJw4qvZHSL78vMlI7i;xQ)v?I0WAiCZ3+m|kfI8YxM`Zkv zvuI#le$imKF7a63>6C_+Xnm({_ghqV5>M#2V{CBEVBe`!cT7xnUpKxkAL(A4UpO#%CVuh>^g`U{#K|#BZ$0Zwo;m$yueA=(9e?Rvr|;B+ zU(Zk8T<3I;)7qTp*X0}hQonlB7&wGy-RnH*^rGz6$+Lre;zd9jD_fqAy%jeCo#X2g z&ntZ2=?KQ2z4~`=>f_=t`t>kveE-dmhTl&&(VB951ir+x(ns4D}cLIoD0{T(_8W&1KFtnt2e0EvJz3N-4GMpdIeoS+4DY zAFYn9oh7r>%|ljkSIQ~o?6F%?H?zNOd%(Vnw+w@d3nu70WI zZi;QObFETO!?d_!%QahfEYGEv=PpTYNG;D%S#_-u8~OjYzI^1|g;uhqwxnzQ-KI1&H^ee$sa# zr_aGX9rrrS-0Z;@Gt`+~J-n)GXy_Kv--S9X+Zu9&wgO~yb-G{F&5HHMwR(M4WNxHc zYtiOu3yg)@1==EgiS`jZKF32n5l2LbL5wN=wji*7btzH$>GG!_oG!mq;@_>w@AB<& zZg3npH^L>_Bz_5oUrCPxN9yPdTne(N&?HEXTCJh9nnl$1?T3~awt4pDKwbE4Oc&~J zLX2qf@8C%zdh9|-Bav7q5XdfNrqz8Hy6ESSXdhj$lyE)zEVAe!B-)B4^ns(FK|$@3 zmICO;NEF*&5xt-4kIm;}N8-^7Xe%DOSXz!Qm6qc_q~*I%RA1CQ2wZeO1jfSVe$r1P zF)nD?N%{fOi&|XLB_xrH<{n1Y)DSrqspmd4{!^5UycB8tA;cnnlH7kNE)uu-RL2z; z7s&%;Uyc|r0$INw$t5r_i|sT-J?VMXzX7E&(I2Jk4ay#; zjEVjXWgV3LfHEffQOdSa_A|IYhOmt4h z*j~zhL>UwP7-h53QiF}unCNd%_84)eDPzJT6%i{SF=iprnCLB}ICT0_QePppg47{W zU8H_YYCWk}Nez%Wr1R$*llya33_fa_EPkJz&Csc$?;i|{BxjRPRvG6 zH+&7!pCvf6Mg3QhP$(x|lc;BT4u|ApBGCYBGIne=M0NOhiP+EUe*zI&p~>fNPQ^Di zmZ&`qVf@NQzHy@N?@?QPbDVE>L*0L)KztzK0hJWS<;dzE1n4dh{;SpU93fi_8j3`X z{rI$rHGptkY6Y#yb!n0yNIwRNUI(bQAhDV#;~3UGL#-{54oJjB6r=EsEPO4J1_;_v zWNO_DAbCRm70F6KR!)Oxb3}5%9Bpos(YUyAd1Es_w_1}(v_`h#3#qRb%#4r9EYcr8H5QnkJx4>+Q1Rl%B);d3emn4>P0gAt3G*zN^qVDX!&_Uk?Ca+) zP;fMx@MgcX&$jf0p5h)Yq4OLjAe8k zC7%Pv5Z^j}*=4uAS_B5nZk)j5=)DGWiniB| z$Xp0-PuX@edAfS8m%~>tjaY;LE%yc0DG9283iI17Wp`P*T*U{1vpvw5mJSPJ2EtQG z7fYU<$>Je|ScYhb3z5F>fl$Qpd>FsJAEra;8A|t%9ZGk^xI%01Xh+cN(2Wq%H!)ri zT8Hdc2Ge)~I#F}V$wPNLId**u4o-d8s?OyiQk@Qg2 zDdgOOwcBpLwN%;VmaVL>87Wqkw%sjSWj9~);3>+Z_Yudt!*?F<=*o2W+%amoo?U6r zx>a6=r24NidLnJ^LmaYke+az;wp2vP`cGA4u^2n zq7Uj^MNl3W12}R6<&U@Nl*d$AH;cOi(?Nw!(Hyo$ox&bb%;zdfTjq^|X|j^)RN#mN+vWr#Z`;0Gg7p3vNk^2Ciuz!2aa?qJ?d49_J%APXyZO=4Fu>0%S&UzZpd4e z90ld-hTX&E-QDS2=PH&cxapi@73{3H0fR+JzB)RD+^S^r8*r($dv)4cIb2SqM^fn> zU8yu)9U}1z>0#u(Yw%j(HMGHw+LaMIZ50aXY^jKOQuJI%E2U}?uipqvdU^205^Px6 zUFmWKFHzPjRg^GW8pV|h%>b9iWlgaJh7BAo9{ zp_f8Yv_@?;1i4ams9+1%@<$S=+JI!yDRPka+Le+hnk?n+of=e(F{C-$%~Gl?tJ$R{ zg{0XCn$KCDL# zutW(h1<&WdFxxp_Yn{~H6<)Mz;$9#yH%!kOnW_r6XhE}TglVw>?1*4RGq>)*W?5D9LZzJN8p~G!SI{Fy}jb;a^Q{|dwT{$ z-KNStzv5$3-iHNK@$_$S=UwA@O8{4^#>=C4x#y?ckS7J|3_|hrlZ4!#E1oA4Lhf%B z&)W*MA62~k@Cy20isz|=y0ce2PZorDCLZYJ&8fUkS9&-a2t4CpFyzSuT$LK{pJ3qZ zLh0wryr;&?@03_y1ftiv_Cb) zfHFj@KLeCFBHo&04+rB<1bdKt3OT-W(^^b?E9CTORA`i*EdLXs!W_x(3+dZ@4YQ!W zV0`F+)6ES+pbz?!pZv9f5;^t#$oWR7&?x`I5b!!~ulPI%LVDu)?x@fp$nz~yp{aHs zO+K*CS4sti=gXx+llUW_VivUbcuk*_rx*dR;rUvDdnDAJD)_JZJllIK_~$}A+u!TY zA3pzQ!Sjrcf%pT+Ilm~;aQjAlFkg9+_GpO5Ewgw5JkR+Ug8t!|o(j$4=O6-J!$}+M z1@o7;d++&3X2J6oV#*%JkB>eN_W6GZ+HXbP;@8L9MDDr%1bo5Q^Q7iw@aoK}QFMV% zVgB$QlKu5T{kx(zzf}JQJn?LA@ILdO5F21G;MEBt0DfTm{}B4%eb#Uy$^Yc=ERsPJ z^X2^Dd7uijrTvKz-w(yxA^uYV6mqU6uYeEcZwljg_Y6HxP=fwVqJIy9@AK;?|L`>Z z0`ZUFgZVla8;ftwz#j%51lE6K20soyXipOD`AtZl0{*ulp5+thieUcD(HDq?;Q7At zV}yN?xEOr6y}v?v{%?w5F2?)P8TuaZ;pgoG&;LIh^YNR(2Z8nP4B=V-;0%2keDFTc z)f>d_8T#cMzCNA7( zig5Ss-*dxcwU{+c*`R^z`mf$>Zr*;SX$teoo3{5~y>*i?w`|+7v45MnV_@L=%{$GV z{TsJ!hI-~7j{1T>58*FE>W@V=3I9Vhpy8LOgmE zzNIpRlGFZ}#D6(Whq@&*ZxwU!d1v@&=vqz=RcWYgqV~_JX@+)Qy~*zs`6sHdj$@$y zWfhW&jJs#lvxbm+6_w`$3VyJSOM#jWDV6e~BPfof<7 zcO(Ij8>fIqX9Xn181EWiDPq&?;!NcC4s@rvLUF0s3EzfmKF+&pL9Jfu@PZyJarBY- zf63|oiz>qZ`UN=pO8bFJDV0o>mlt2;uwE{7~tr8^Z@rk{r4Jhl+zx4g!RCM+eaG=Zy=KHAcH`h zsYsbp$M_B+Y?Y-D$%DXk2MqGS9^KP`ruqnQkA!eRTU%z}#;|?7LT!O1I#eueTkF5p>*%g? z_CEXUv(G;J>@(b3#eE~j>58I=(4Qu}f>>sf5V=U_C96VMgf&-qgbigqMGsjX;%AyW z(g3R@Dzbe2)k3VlT9I%ML{tH6W;wD#j3=Na0viOd++xB{NJEf`JRwvz@yE)UK>zKJ z_1%C;C=YLc8e|h#pG`512WWtiS5Fn!Jn&ejKfJm(<=G9(=l`j2@6G9xUKmh>vNAv+ zAoO<`G9`dyzz9GLAoRy}iveCh?+_7bI^Zh6Xuvgqo&f$0H4>={+sZQWYmrU@z@+kT z6h4Oox&j;k>YNR@2`~U~BY=O`19|}x01<$EfCmuzD+pzfvhNrkF#$lEO$G2T18{}R z32`0L?qm?^w0>q9N;1vNAf#|N`Paux|5FkdMl3b+ z6OsA=-Ap_@Nde*vBTPnK2jl_lCVh;V8onz;BJgp5E`Te|vhd_`6G=nb84wMa0=NOt zAK(In{stq{!$hKx(&hQr$w=hqkg)tPGd~b%Y8ai_NE4^8(8lyP*|&mN<$XuNI;T2n zdV;I)V>d>-!*EZW8eu6fF1A!pSeG}gQ{M9{AZKXzb?+CgD0}JMeIi1M zr7YT&IS5tZV7jHfGz_rVJ4X=LSN9&%q`wzMN^%p&Vc=O)qcXzIBy>Dk#e$Q(NwsB_U-OT6;cvHio_2CAB#!LILz`h;C}}C=9u^&f&UftOHF(>(gzS2I8Nlx zv?69;V&7xpE*oru3BAn3M?;_FG$9^0@w>r45JAyn;=_TjME#IHnc!cE!Vo?T`rUxw z66#Mp$|s|o@q+DlMg8}nEaNZnZ&3aL`XB0#27C6(5Q2KM{BFp51;#Bk@kJ;f(L)HX z6D%)Bc@PWnt0r!T{H2gzVB&j${{aEaW8y1epEB5Iril-RybiP%(ys^bTHxc%@=>V& z7xZ_9iF3ldghloZ6W@ULdt-cb6Mq-{gVA2GiTAV#@d@nf0iF7;M1K#Z8EX~sZP2F& z#t&VT<)a{P75WqE|6`~(5%y;sCjYZYx1jR}Onesje+569k>yj7&c%3hZ6^O|wAYk= z(H>_Z?-2A0)xQ(vABE{N1Lcok@!w$9{{i@4!Ot~@@@9hnkKp&1_#U+X4Eq0P6CVjh zntj;!fRFr-fIb)chU{4jd^DWDr^){c(tmanVxftjfV>6p@4Y7e9n#OhAM&RXjL)ph zi}rmQ{94%j=mPvB*mIOwe;y5E{>6&6U?J@NA~s!6QR-LC{=&XpOnvVFeHHBYm06yM z_MU)0ph?MpE%-;mJ_RNo3wg!2kN+kA2S^t{|Iqm6qMg5hd8S!D2J(kN zc!+-!oV{*ZjX1^ZOYhigp!*C79S z$PdlG=TW~btiC8Ix#ji+^Ghl!%NACal!%hiQ?4qRIcwppTjo|&&RRI-s-k%d=Fgf^ zHhtbKqwGJIl+0LMRx*3;{IYp-m&_8gXI7TXnNhS+~!) zy8i zWtDTn`y7T}!bkOG?F(8|+;#i(1@r!m$sk|gqC7da<#$P1#UhxQ{!&s_IdfL|rHxCv zq)OiMvW2teSB7gR8O&jYjimkVD4Vy)u*Gjn!^~v3)I3b4k{Ju;SC-A4Uty>tozJ8% znqNsjnjadCuu2uP%HUqVtpcM+l5E(RNHZ4PjxNvTJmv8GMy21BVxGw^%$;98uWZJw zkS$Bl@yfYn^Ni*$n)t=&Xfz%(}g-yaZNXXbczJYi`AyurkR$9bsv{?3+Yq!38h0&JM|mB)c?c!90W? z$rUP)h#^;I*>?Dpo;hpYB{+kToZ@o+n%4NOaMO~8!18iv#O5Rlc^C3*D-;64CubNv zROe!k(4YAwbLUqskVWNXGj5X^c*m@T3l|ujGi^TW_Hu*}6kISXtXferW7fQRroS-` zUqs6;s9FLQ7A`ECe~VEQfpX!zGKeZ$$eCxjylgg9f~xcGqPtcuSTv7mDEb+GID65& zd1Bt&=`;FQEa*RkIhc?6fnwZfpI$trWMKasF%tQrlAQinS&ctUC^&!czffvm#MS@9 z|Kn{M|7%#%D>5G4;a;`W+=pQKhxUqCINBijC|jrq~mWV~V}~1g2ME zPsDTz?jV@P;qHOyP>dbZvDi~F#YSolQyt^RG#zI{rno?XtHDy9)a zJjgT>XDy~KoUxc(h&n8HC^ zOfd-@1^t@$;_ARrwd0uONWUK~M_&9f`pEJlj@F$&#t+4e*|Yq+PM<#hUHq@_{us); z!t$1|{Q35aJU@lyPlV-v2+Mzs{Nj-vO(D7UVPzkO<#&hWw}$06hvnCY<=2JftC0_H zya>y; z`!DV1iQnKyfQRhd7?!UO%YPh}-yN3U8kXN2mR}#1Ul*3I4$H3y%P$MdSB2#lhvmz| z@^g?6AG;gF%BF1xTc>MFhib%k;vW>EjwU1d`e0T8!z9q$4y>;xq zXlk}?al)LSKmAnDzbj}PtEAsuoK)`Eu@Lpfpq?A`Zbp6* z;KL@dOUx15%15fYV~Zs_=x+~Bv}<~1L)X!6J?L)>F7rh*1BKk z_!(`U3`Et(DQ5;KUfX`vYpaj-=I+Y$cs=DKQve=-V@o`=sSWNp<|qjI5AVp^Qe?O2 z(;9Nd2K}!Et9{orSlZ&PUg-ED^wRW+`z=zlYG^jL@d4lHeIArmpHg&Bx1j$C^h48q z`-HdPpry?XO&%nZ5{lJ-7;ezKRslec53FAg=_D5oW+1gjDvP<{w~juWS4|4-o4DVp(V7e||D zgYqp_-GP2y9xP7iyGzNy!=~N|2e;R~me6Uh7kUp2KJ1Hbv`YJD1>Iiz{znsRd#$pC zjNtt~(U_H(pqK9u8UJeP*W6wN$y!&vQ>i7rO8-6jwf>}|&e=2Xh;7b-)(FknX0Z+{ z?W+&jR*~w+I@74WJgGe+JE_<`64w**xdWdGU^x_rg27-okd~$^=>>XxanOIyN#WgB zuPqi?KQ+AC;#5cL1!!v_s2|sBxtXn+Wq4_}zT;T?1D5pOvTP>Gw$*FULKG%%JITJL zi}WXaoA-)7Z#6j3KWm%A67<&vV!Z!ov}f(x|9#R8_Jm#5HkajZO_8bgEy_yEfd#GD zp>DpZ-SV%s_Vxy4L(u=|NyU4%L8(6bf5Wr*q-OGn4F8tZKAYZIS60OyP&O$w`FggV z2Hj_$RK2nFPH#dzqHAfkgRcbvF^uHGrUW=}*Xgc80wau+NM8EIrQ94XyWtDz& zK&d&~q|}JM_5<;4j+m1TqMu{e_|{w)+$*Etesy;fs_TiICDtSeg<&Xj!JJ53W4)6~AwW%GvZaqrx3cjyT=qYa| z_b7hDr|uV-9=&}>jy_aMxbcMW{!*{xwl$S+>6~iOqjeS5Q$_iXpg$rYyyp&bR;YpX z@ai*-X|O`j?>!+rr!K^U`etmBw>c3RoQh+Mrn}*#XM%+Z*1ZX+c{1qETjo>t3XeE4 zEy1y)0)Fh$mA7(WP0pvCCp64zr&p=5HHg0JF-IaS9$npBzQf`@QBT|Wn;3P<(VJ+D zN6_D$c0TY>t;qD2df?HptkwmDNH2grG$)tquA|2KO`z z#prcm@UO@V5A8*tKiA~mBGN5-tQ_0Rf(dnKMRn`$9gH1)f=W?)y^?bpzF|W&aY=io z1nqKEJE5)AgT@HofRRr)XoD?=V-`mSW4yV=mNtvU+BiV=J^MsnZE;GsTH4{Q7LG$Z z+K&*O<*4{!`JWMG&W^O{%iw?A!1cp)y3OYbFPQpN{cTnpD{nn$GVTQ$L+iHUT z0pPJWrbwQQQqFru2jTf!vnb%)TLX{!sVRF)H~pc_j1}5S753S4{7|zB`-o>ax;G!U zqE7afhc;_(BKADvcwRiiRZ!Cx*BW!>d`FDe)u^p;Zf7$^$OU%+J5(-1f6wV zgU-t+v*ZWoZy|tQeK-g6%)z!4d7ZtKNfi9)PnbN~iaV zUTL~Wr_b&@Zb{V+%t&$8b50l|X*>RiFK?G!KhebbF`%>!^W!vp5^?bLp#O#A!fQhe zUz1|3A6_dw%Akx=b+a4u$&L98Dd<;}9zFUIjFI-#UC?dzaV0hOpml?`Ry^g=`=He~ zj*qIfVim9*(uzB^E5ke0X^RJBiF)C&L*sPl+ON5_(2mHv0^F(pvZh)N()yOK7qnWi zH-gtK%~)({ao7fA4X*d;#w`D(S$N}jRq31I&Ffn%D#vG8v!V;{_w{*tF)+_@tNxBp z-FK+z9pAzFb-I#U-7c~RWclk~YjLOp(h9({S4y$yxq5H?)fR{5ljHnuvo-bG1MfA7 z9^c5>>5%ab(pRftGt;q+GuJ3v@|&`Py8E_7>yFV@(<%p=mDKUALRb%q6*;=LmL3lM zHka<`jC1%!IoJF~j&~buGyb8?+y`~l*Pzyu=Pa<#wl*ck3j3&7kLUrd%SC2Xn=7)1 z-c!FjRef5ldTE4@I}Hog!qv*jsuGmr3W6vYCmK^`b{b4ro1#FqCs8zw(tD|NDH7($;ds(bl4eHXmxwuCiji>n_K?;a5wl^PsX?qLia0t{5BPsMExavQ0a!QaKX=Tcf7diNwS0><$cmjq*G8-pknT7r(xLr8 z@*IQSh-uibm1Cxol6`Em&tEUn)39?`&}y}`!KST+7xz(l$85T2!!`$26dukRAI3Hh zt#3U&t+tQ3Gq@gdTk9>!N^Za8;*?`eil@1$Vhb&GGqh5kPpH)sMGwv!uiWVjOlG7V zb4Z0mIrUL)S!n)3#tnz}b_#K~RpXhgnJF-EpBh;806s0JuGT`IZ{i5Fw z_0U+$Dm~KFy-xJ|w%%KMxJkJ(MgJD_J6?B;Q8q3q4*0)0?XFX*8Q+xE>5y^k^yYI_ ztp!e=_3lX)g8RcR(ic8!w{UMOeIe+NlVhb~thm=Pd?4We>QqsR<)HAMm1B0i$%1hc zyYAbfy(OM?)I^|1o@3ftcU^*RL9ITCYkamw=W6Vop-JN@;W-NnsG?Pl^23{}b?Zi( z9)n#`!2jrJYfVC(N4IeB_cJ> z>W(e;u|fZ@I0f74ZDXr_u3f^z^EJ=fHk`FDp0DZWIN4?|LyO-AZMs$NeZR&I!GTua zJ>^TmxeL4DeZlx*J4!RfkmR8M^Ps(Wr!Qh(p}syb;Lkoq&wDrMonGpr)r99?O^z)p zXxp)0m{zCCz4xDjitfhA;H}_NUjpKnO-s-nJ1|f6%xtaAVGH_S3gTQ1j_1)j*VNTG zb8Awcr-R<&%%lkk%HDN8Wj|K8BRro^n@+BWgYM#l;_@8>dh_Ii8Lwv?%4t=s84VFw zc>?~~r((zE=^3TtTbE6qQ8vD{U@}(H;JPx_ogOTOuNSntuVg;xzdpFGl=0x2;1Q(U z+p6+rA{I9jV%LB(N}Na!`2C1s?c;gASP9PF8UPV3_(j>5v;;Z0Z;ftgH_l) z^DL1YbhHTVetFZ-Klp&JPva`w9z5<_*AiiSxg{d9XYpgjUH37j(AO$YPSOYJ(~z5g zauiyKffeVJ;-m{nF+ow=QkuuJ^YReajVFzoN8ybwdn&b@?hFL|e-0ceO~8zGvmZOZ^>yssQ{eQaSO#V5 z88{CqPbH$x`M`u)cz1=e2Dbt5>VV&N(wOmR%kpbe9-;&FVU)6@afH4Pcu+%BXc)gd zj+2GE&GzwDoIIY=SA%0`z^*&CTjiZkW#9w5{U3!g);}B=->O6+wjc3!^MP-6pl^cV z^<~(LdXf;W+lBWS;`nww6Xz(^Zdf~_O;fyjTC1kG2I5o+t5(%*$6o4Wy;0i-?F!Jp z^pi?9rQ`;@(+^|CEU0h|p_V~^RzPpJxF#Ui6FG%BVtZh`D3i#hR zY0*7(w1ZY1@ZW!e>t8nf?d(X7CybN7l9oCn`@94Q^6Pn1!p^#o4kYhoKj zpI!&^bc_n-%a5qKaWzf>TRV&${k9GV z>eO~rmp-M}(`T&TH+9CUfPHjS;N-u@tUUM$nx+o+$3fYrb>)u1kE>=Wkq{p-BJPP`k2iKc3c7?T5S-ciEB{MzX@Z#?(GunmjeD9Td@8> z+7|&OZ#U-ThXK#@&}n;`u3U!OyTJW&t=SQnP&`bhGzDkjZv)C2o4&Yinx2o^n*w>o zg-HK^+Rl~;agDC@3i#hS{+Fh%`j#fwTFmi<*?RJvq|%^&RiL_5RAc-D(@H;S8mxaL z$I6DDcZURlm94do>-mxvt8SC`%vAx=V(px+D;a}}v$0|Y{eMR!nO0XIZ$54hi^sRf zc+7i>)}`kDG&=_TC5T1zm8Mlq@=;^QXw(lD zR+&4lEokpZow8cPIV0eoa$Ku{1#7c)OD=W*$F**_uT||bS{rw@7%jx8B`E{tYL$K5 zgI$)X6L$9SW%QOl`TIb5owkv?bjJNhk1y5L6u0fqje{3pB`MyDgRIzHPK1fFNhQR)&`*54# zctP7JRt-X1f5N?tx2|WcRt>)g{!KG=lxL5T%W(E6sIp-^tSdE)^$^DG?b;gqM(b+y z`6+E>0Jjl`nzcBL(2Dk2`x=20$!K_q+Tw`NaCluKW45C9sJaO{SCVHs=9CWA z?bV~O%X|$jI%t(gY#XzoYZ1!t1+Va)X|Pq(CN7+$82hbUK{4;obWoDKquNM&ooVK& zF#)GWV-3)9GIX}<)m=G3|8U4U1K$c_U7&CA*02FlrLaL+Jq+5=3v9Syxbgt@>Z^w| zXm9eyAmCSzE8d)jL+!40+;dI@rM+3pQ@lURczXq6Y93>`vuCSjv$Qy^wl;?*a7R!7 zQUfdMz`5x+UOD7V!VMnJ0{Zzi;ydeQ+_?D&XocD}SU>d2S|oG~)ARodzt$$fpZ)7##F8=0)e z1HAXbh(CasY-8Ni5f4|Mw{fTZ^(%?b`y%$fUi{Js`+jGOP5T!2&>B`BRr|i_CA|}F z1mV#u==rf7Ilwr6<;Psuxl$AEUbzm>JpW;{70-Z55tmcYpXukZXFY$U>^)f7sqHk^ z)(S*u_7!`D?eP0Hk1gQ$HLK?8KkB@aqrscw6h7A|JTF#oY`;2hMD3yHSr+sUKA!;X z`=ZarSygylUq{!w+d9QWA9Rc@@ZDWJx!ofs)Y(QYE-oKwd|GAR_ z25bdz?TbRcrZw-DQOei6t}bGR6(iObvNjUt>dfoekaw(9@!j)o1sI^anBxVj=$S+%H5~KzvQ$f zH3H|d0=>ik;c08?q=QP|z71F4wlx|zM)u7+PNr;Aqk((KBMnz>E1A%vc#{66NI2zAD!?slhyUf%7Tg%A zeN~*Wqi_$L6OH<3pJPS6Z*}4mvKhyv?T?n|A60pOhKG+*SY0>-O?wvA?QC9)Do4w z*Qclryp255loTyIpOr_HC%MLyCq+D3&L@;sJfSS#(g|xwr!joCLrc?=N>*&6d(0p? zn@Iai((HJK#MzZ?-o0=)6}r*+8c%lo4J_~QUw`^k(_*}zb2Fe{^O5m({o&2aa7Uep z)A?%L4aG-9wYeiZ{5wzKRMS7=z-TGe0;x8=8}4R!Za=boGR{xe%aRDpW@~j}N=`lQ zW^hATs9V9 z+E!msU{X$8dYQLWk!h#X`dLQ-h+d z=tX9PwrbB=dy$2o8P-*fjgC_*^6eX)r`-9XpX&f`Y&!gFprcjS(W^*!l|_100{D9C ziSR^&W2x?tE9%L5cdHf|)llWIubHgVha8yK9scywI8$$TR{K)E##qLP{Y}@kXCQL? zD-fIT0M7W>ZwC@ye8gvO(5lt;NMWh|qI^`jwR%~(GRU!dwXf-G#$t|(Rj+Nj0nZJL z)u6*)aEh&PuSz==rTiV1*>Esntpdy7&JXKw(0@0qv#!CAFz?iJw9CkN>>VH89HZM% zukuuHy-G?bKebfn&9uYhPLX{dkG|(05#FEbbH-rYBPL@t=RLjlREPhaQ`(wib^XSK z(>8$S-QHWqln(zFxV`u%v`Rdv>P7O7?r-g41#bJG)o1n5M=ZGK{|4t5?zt)gVwH8H zRod()Jc->~FK>VzAV z7!}t6buD}sD?yBCYEr9zZZgUmPqsFR{@>K+mVS*m7=||c zO+@ZK^Kca-!$T6g?_k919N9f+3GaurK3t{f5o@?s-`DYgq>R1)aQhqaUOi&%UB%W_ z9sU(3EveSEa}SiJEND2~UX7Bwpy|UW3sWrmJW!TBEpUs`fwwPy#jTncP<1AD>EZUp zCiR62)GSbEW|DVFu@ydlE94G7Xk8=HsL#xko7;j{TG!kUZ!;)+PTa3^)OVk;-EYLx zJ|_;hdvmQT?k=V$9d7sJGPeS`1m;%p>5=Q8b#>%M*9K~|@MPqRMla)*4%Z*SJ}8Ly z9H!~97a~x)ejTDFZq?;(c6mKHUeU8k2bH!oA&wtx8=WnC8!ffFU*COZ_fkWbA6i@+ z5wFmCw2X8-2?T#xyooU_aswlIhd<|J6?X2fn&~N#7;l&5?@bf+$Td;eLwES!J;D8O z6yBz&sQ;jel&?=%Qg_N{*O)UWFng(Q?v|!Q?Fm(`7X_X}<%8=hqFgy6 z<;vuu;&eS9Wv=IJ7^~l%D1Td7oZmaE0UX-&)K$Ko^&?aECgtf4l$M`puT>Z4_ep8^ zAek0Ss4q^5NJsolqNn#f5xvH~B6jiIx~F}Sd$(aUcGf%A7NRFfC|!R7UaNBrjj`MY z+XR1^yUAK@$-wUYyt*o8qp~VZx3A6DW3cZNt2l$PE}fwD@B3-WCKpC#&DVxi)|^T``|7B+;SL|H;#}F`|KWJdTIcFzbt!mqAN*zATkG`1BU2k(>F~m& z4uAb|%t!B44UV<8Roj}1a0>45pE<6i&O8`{sFG5Auu1g&t^xZx$5uQi{Bl>3?r2lA z=ncb)#Z$^4*P4ma_6u8R`-N{stzEnQqK=i4ddpj^d8j>aMc+eFt64j7dm5g(v89{w z6gl|IHE#{b09`oS9oeIbZL9P3I@sx+GzGA>gz(7D> zyt94Sj`xoNp8)Q~yWRPKR?R(L=~e6W zreLodfmyHQIlP69>MJ~DXvGO52MBzJ6;K9fz`JL6BMk?>pCrdulKTp@wS9(nauBd(r;`&fLn2VVo~XMFD`gWtL`^BA*v3uctf!`Jv0FDmE28DID@ zlYa8sb6~nqjC|+|KqUh>{@h}0-|VykYH zKi&u5A^tb{j_X6^1vm(A#`!$-XVi~)C{*4$#Q5EsOUvUQ4wdKPJHy4HLZn9hm}Q~z z#VEhxqHCMw4?Gbn--_>mXa8IOUj9p{{Fo1R46C1sHdL`_d#Jn-c4qf}LW~IOru@xB zt576KR%bxrANx8Tpj1tTk;%d-?y0~>x7`@Yso)L`N;!yW7At<9K{)b3w={Ge3X;WQ z{~a-h^)Z=P{)T!M#qkRh)n3WOV!w-Jime@(V=VI4o?WkIWz}jy@No>mhqZS+9nBF1 z9%~U1yjSE1OR(CJp>yY3(%25k1E_}??n zUqo}1N@ZhOK*)%BgXAFUJCjnsK)!1mJ~F3*;EixO*d1#(3_}#j!g?3NWHhrD>kJq! zhFOR8G^lQ7UDh;YW0`eZ529Kev+>pjWIHjNVAWvUF3hG_M}jwzS&wxr7*d$c6g}(~ z_E)>k_7^lBxf&nANd8in5;+8)YUFqLv_xKuPeZ=vPqrD^zkZ z<2uTZe)tf{1t>0X(XKzUSe9HY?l~GlA|Fv=$m~Mib%M1z??-l|Vr8{YG36Kvl$xy| zy7AK%C`qCSE)w)3_w+@xLF>V$*@=OGSpMqSNToj|+zhw|(CYw1F$z2ZK`D(;Y@DLj z0_O2fUf{4 z{2jb2lxXsO2RH&qEf-fBlvBWt1Jw0UftJ1=3Q*BI;iK<^#=(&tk&54m&q?S6)IX1c zK8C61gRd`WO3gQ@Elu4=NvEk5Fm)h}y$_3PA0>;5bpg!{=>9uiFv=LMuAFD9f{?2) z(L;?*QWt@_^A>U%&5QyE1t>M-lg)HjGT2NunEC=_Gu@TG zpmY(+MGPB@u!F5dD)}c=%mhiPVX>iPivoNW^)&M{SlNn zECoJ!K_K-p1RjIOIX;7crUBy0h5AQ1W9|aRIjMe% zew;^34*}?+i}5*8y$hd{lw6^DU;!4tdP#BReJma*)FEc^N0$`K+SW>O7uHjClF4%P z5|&D{0oxK3GqA|E5y4_Q(1nQaq1xk7N0FTa{l+0xYTB?i8Uy#Z9Jq(TvlP&W{Zt>9 zBd1KXOY1zYGw`iJ>C=EHvOO6?(iY_2Ch1mKZMh`v0=ff`@FdjOfaVl_pjf=WZ62mcD}va^f@Eo5h1KQccPVO<4*DhLGat;2xQ&ALNlx(gz@`j$x>WYVyz zsPCGzks-bWOmNWXMK^?K;M;5REeO%zqI4Rz@j!^?M*KEu&zUr~ao(hD4DrF`ip)`}Pj5phoL ztIpsw#XW{nGZ)4(`WPqIj2!f@4^+2zWGpI1|uMZEI#vsERX!if;jk_>aky zl*|Fqs7(?#4qDP>Bsdv?wWI=Bp&#R^@mw~3G7_}5%UQ?;@2Yi7YEe znf$=$ixCdV@C6D#rFaA)FOCp6Sj9lkK@}i$dmJiFMT4Q!Y##)aT;pIB7k0368wV@5 zaj<$X~gRqg@wTR_i0H zdAWbcV%8G*0b1=VwQ)q=4Ik|%rMW~Bg$y-Li0XB=DqzX-gqSQ(h{^JVm@H3-$?}Al zEKi8Z#tE_aJqYSg7)QLdsOsd7N3P_eb23~sA}e|mD2zf*W}NoKC%U~F3E*i7*v^-l=sq)n*;2o~zM(D%- zF|hKCr`-wy4R)`zx+GevK%=?_lW}O~d4=nOZ5&jaVstJOe0@PvYDR!4J2yqkV&|?$ zTfB=_pM-l((Q6Hn_(35~$N1X$oTV!y8iJ{chU?bNb+f_6Lb zxumh*PHhzRd;s`;qz!}NBeXcuRs(+qAa!?zbiXlzBjz&P@eLHO2Sm_ZF0B*AzXyCf zK$<4XFbz)|jpUmnJ187z&I4H>50&!7FKp@PDZU&@mA&A@{VME7&yx0QReREY@xa{xX}?x=0J*s+ z_au$>YgI?mRt3O^17xSqsL~&<2R;cPJAFo#{%|+&I|0(BXH_}RaW`Wh2xZQya*D4& z@uL7O+iUm;Ulse`?J`eT#)0ua`-lrxIc)UtNH3gmWFPxMZIvT*SnW;S--P@>0#pw8 zVRZ=m_!00A09O2_EofuOcL4ZT0OT5Uk+y?25Z z;WY*%7AhFDi*W~|Y2h!2{!jRTDcPLojA1rLw>?H*UVvyHXiCiy2$JKqN0sy31>DB| z{Srg&d@e#>;OPJvTR%4RE(U%DpvMM?f`VcT85m3drpj1)Bk=11mbbugNi5w70%PeX zC}kg@oTVPL^4Jh=^a+Y2LGngJ<$Q1$Q}hb#P^8KmRk=jWft;BDxkPMK@HqX4|#8@o#>t~1Al?E2VtByRS$=bJ*frA?rt)=%LC#bKm=Yx6Pr~T zflmT&0mukktFo%P^2RQGu&}(3{i-y^+lDcI1>4U6%Y@$=W4dXK@65B+BA8^NwsMM% z*D~3dvM6VqbD-0Pu`Uic@8Blmf=6hNgNyStU2;u?t8mom5Nk~Nzo`q+!uA5@%u9xK zlfdRd2b7x6L)Lvs&7g(ipqK+7C-6(EyaX!(J``Z*4cse+g%$$86`*B86otHHYHY*} z405MDluX6u3%XpoE=g^0;Ub>_2T-!X{gDf;!_VBuOp%Iuozen8)gFei|xw6P`4@(V1gyzVd zkSuHu!bgW0I(*mz7mA?aJRNOXW0;ysWxhn0>H*Rk!_;0>qzU-<04pCI3{!`4gLn@3 zFXVg8MyWpXMPYcH0Q-Yb@Nz>b9>-Gv2u7EyapWoiHkDlL(iH~R)4(4FbY<7BFuJC$ zoY1ud+FhY`W;J!?6gxNVR~jMhGjM+d=)!;C<{O*=<=iMVI{ys{4gf4)p`Rfmz;%Vz zAENSbGz_2y{nxnAq(4nk??$|{I<%<39xGwhG~c@ zH#_Um9`*sS>&qd#4pF_d>(5ZIs>$KP>o^v_eQJQ%1WE)#4)0j zFxS2pbYasmqIPoiBkm?+MEeLq}htD-AuLd}-1oB5@UIAP_2#8I4u~>)~9lem>1!5f_ zl>)lW0Of07jR5U&b_M6|IZ%=&WO!Z&+G*Irz-fOOdo(;0QPg_{=P%?pS+SKf`dW$# zhHV3(zGkU%LvT=Tn{Btjz$r$1_^ye3 zI;_;tG}5*y#_CW2x%mLuUN>VUC;@&QX|!!OwHs~wJK&1}GMaZcqxn4hY4piscyTpK zp9M(k&qsse8$h}m;h^=`qhuXG4#MZi@Jpm}5dMkGKZtM;zD4FR5stzcWKIE6DM*fj zl|BT}?tpxb!YSOO(dr0HmSv!YM!}c`TrDPRD`(14z%~eC#1(m%mYQ3Qr)Mc#RAu~f zt3ydh*#?1bbqvj(!o@LGl}C(}xu_MZ%A2B;`6!H2V=lz9cw^!V+e`4~pdwGEn=?YU z`H5Jbq{V}Z-14PD|9F6mNL%bDN#p!Kr?_dX4}k9?Z9b55N-~Y}PvH9i+6xd*zkS|NNn1I`CM<7& z7(QHB)-hd_Ni5~8F?MAG;lz!Gl08vjwp8**v@1>8sK_nOaWrxipfU_MDsqcs#gzD! zG#;<^EAgx|9JD-uRC2%Kp_1c)j|IrX<3Xj{aq!&={ANH8ADZM!`vQnEVt=d1$2MzG zxEdgX`ge+*Gla*kG2o|#9|3>bI8fC}hp^PopAKz4tZB2PqPfsZ7O-QTUq z310&I2GZEo-AWp}S^<0kK>HHn>Cd-AIQn7u^LHS!wTm75PyWm&Aa58-K7|U|Qc2oG z`tut~A;;)pG;%*c`tzGg3~m2B@MlP)l5Z*UHsNF7yGi31Z8G@I0&gLWif>Z7QSl_i ziY@@{1vE*Q>VXES=OS2gCumea;s`#Nd5E5{J(sQie}hqOP^2 zrn&_Tl z4BB4cUjVwi4Zhc*fON3ulvJwLf`ab>1E#|(`lCPcU5XbJ`yF8H{tSrSAH#>^K76s@fSC(Rw4Ae+9A0zWb zff^prIj^4$tHC!$Snp1(Q+-i>(RI16*Bl^iNyG(Hcoj|z+_j+yKQDNpZR6b&TRr^f zUc-;d!GZtb>}*x~(Y;EMAC#f!zyN?8nBOU}9GF{x&mfHkzfXyy!S4lr7eHGAIrNVa z5X8<_#EVXJQwjzSjV8drRvW}fpP17f0aZ3l6=l=6C}Y_)L;Z3#!;m~jNo3Ref&YUv zHa%BKV$;pQe+00dk1v88IXdV%&g&#~|r`G^_9f8zrGFQk;os-LW1e zDPTzgICx~}iA*NI@+er@Ep`b3S!k6Y@Y;EhX;==*m6_}c%CHq^V^kIMV&`y7V>~D!O2(5{^z)Jwy52(iGUI}kb4sWMc6sLEC;H*6% zNSc8?HdHw9Zz{ZLgWo9f6!2$H=w9J@Y`3He1B`u)A7ak}qzVI!eT)kc+QtQkcX$Jo z0*-KR;5`5l^XG_xiictffaU@0Ef|a(MJ{3Y1OFY_cpE*)(Ed5#D*=UTIcVb*HJZJ6 z3Z~^_LHkI=rb1&ut_9bd082ac{TEuj&_~rV0G*-N>_m}R3>c{N7=!xKVctij-2mw@ zUm)`-rF;n1ki*=;wm%19CCqm->QOXYMQa3&CS81iMklI7$x*ZVnqer0 zb(>FdY~|>J`3_cb54f)YLk%A?OH21r(&$@1LZw3hm7CK(N)BUb6xTI?HUZTr_gAAW z<4nNw1*M=d&RGt%Ja5HML}$*)JIVE##y@nZ)V$ga6G=YgJlC7eWkYOVKopxhm(SM5 z0=<$XM(%UPbnaz9?*YW{%2hir$M6&2b)=OGtwU0ZF3}Dd3m}_TH&QnrufX^(G_C`&@xfP z=I%Ac8E0?V94^ooV<0X0VCjp^qalv1ag$DMa45k$LuBI8f(iVS9Ff=HAs&#F8dft# zy?V*MGE|iy}d>~XSG0TlXHg@ofpyR_RrxRQpVMhT+7-cA}M(ISeH2ihIB`EA! zi&57;kuO+eLwYV~N=>3CWbRMW{h;JR$!vf$_a|92+en~S0%G|1SNkmTFlc4KZvtd@ zM{A!O#+_&JLF`v%Ae6VJ<_?6$jDHNnutN^^3Ja`%H301eAiqP8A3{od7%S>RTsyo4ijz%5^8t7K&sJCBs!W<>g=wQ(1gyFlJ=NBErCl)?2tb_L>7lN!E8rM&-{b?ZtLsLyt5bnZ1f+A4 zX)nt+_tN>>~dOs=0B_EphK|Q7BkEmdb%ac8+>;lNV4G_hrA5RWu@k2nD0(AWI zq(WOE9TK<8F`7A%J#no{uMwjI*X(Z3a0s4kW%-dt%Mx(b+L=h4h8)( zfEEYcI9qvwr%l3UEY3leo+u7IfC&|$dZM56c&?ns%AZj+R<5ISTh|~L$W1iG-V7a)x10qHIW$>Gsa`QFLgXIP!rG_UE!xA&)iZB8? z7XqT##!R^)+yL}iKqt;C^SU7v>5Uhpd7z8G3>v3P>FeMEZ%FBkt%me;dBJ-(#M~Z| zo<6WAm_7vhXOiXvNiXEaPQzLm1Sx^<%49~oj{?4#6$eP5zxI%Wkp;8|AV&7Pr+ocm zB=ADgq?h!P{pUZdeG_T0lvnN@UI4a+6xhovZC4BIO~6RGAG}%V>w)ZOd_W7)1)WH! zhdFfjP@o@zZ#Te_g7VN_j+0k=1N~l!q3(kU9BR0rwiProT@j+;m+$wOv`HZv_!>>x z><}#;yL*$iBt-KF%X!d3OM?uBw0+_sXs1OP-tq&u4R48(yRKexx<}>E*z}fYdChHj zOSHUwN%vV%-5v54c}pV_`A(avp|`Bq&|^Q}6z%-7T) z1iJo=D$o^g)lr2L(DN7|#(1lag#n=Fr1}R?A@NqI=*W{D*1GgUbBlrYldn}J@=Yqo z0HbR>>alD@3nc;~N<)1)5!e#?K9;NnHH+QZ=D z8-Ty%q9YoOMbjsoS<%md;w2|D275o`L?mC1m`wibv86x^#H{LvuFB)><0BqG^_0aM)#%>egJv| z5W_RmSZVT=^BmVe!UR))<4TdIjmWNOfw4i* zo(~-iu{^sCyPO`92DBR>ir4p-ccqLWKyv`{Ih1mR91ZN-I`h>nH=E*z4QYXs*Jau# zppOOr2!OT&$ZTY$6XBufZe;Ex@&_O*ka-;7;J-Y)$mrFjTNYr(t7=%JdvJU*+2Ulf z7OQe_UP1krD3F8mCNdiVUCAK_X9ut?0Q^O8BKEYyQp%txr5WsQe)SapJ`?RDS6XEd zAF7L9SZM}Fl0!srLPws(5J=D5(;MCiic-TjFQs|Yy0iKbwDC1Snm0{;rR+4&7LsV* zv;vwp0Q4Nd%J*c_-JgIIh1JFhkXL5ua$A@Jlza9lzKN3=O|Ahzdjnz~gr()+;c-*q z0cgX?y%D-xbh*$0Rlcz?QzV`N*E(?RGP&R|4jatK9{h(|@`1H{_JZ@Sdar}~BM~{+ z34LfA#`hegO3f&YptL~L09v33>hUBkEf6K2!A%7^ktA9mI*t~&1?UWtcsUTALWy?) zT?CNtM8?E0{5}Ts5t3-97|$ml)c~y~i6Pf5XgtZ{iQDlmxcO2a?t!$G7Cz^c*91v*PPm)anYwdACG-5yOB+bs$(h@2y42$e%PH!dlc!&RT{^DXc}k{DQC+RlgwYgqkRY zQNT$xP6|j_4*}{DsZAu5H8yEW`u<<+y?2-$#nJCS;mp}{Hm^3XHt%W`cUK9au!X~!SuCSl?-uwIgclUW}wyV0jy1Kf$x~HdSjs#RHG6icllYq)^8sA){z2+-GiYC=- zps0l`r-~-^su#Uc$%>(vO<5LaS}}YI_r#;fZ0Ulk6+`lB{9Fb`iF+epl3O@*Xb#~! zsg!)Kek;-??!|->_hLecdoiKJy_itqUQB>RFD8_@7ZWPAdPw)w@1er(#e_<&9@1m# zB(G90Bc#XMpf7Q6Axut{ZWOb73!y{l%J|I#b!5lAA{4xNP}zlu_|1dL_C2JkxFYX{>nx0M)UC3fkD+o}4pPaxbRCM6t`QeLCHmUk0wB>klFm2i@5 ztu{?-t76tx!hV|w@ER{dY;nI8^GOaZ)|kcLi)UJXM=sxVGqGb&BY$UKgcW_P(fRLh zxEZ5&DJJaf*GY|O?Kl<|ZiHgUuI3`|!K?B`UEG_@2Pt1l@9?@&r(d1+$>B;yaKg8hZuyo)vw(}dkROw{A1D)7 z^c<8Yz#a#xKZ%t>)^DIoouXE_j`M?0B>RA+x=6=^Q!-c5|5WFdDk7CCkd0Lc+sek|0+_m? z`x{QiLv2iMMPa_#e=v70g!t3HM3cUW;og*eWMf(#=3Bjx(+Ex7+8fsuT=HT`UkNitnuxGA^wV- zIyL@CWvAH%tMR8wn~@S-5CY$1s@T_BUvLE;fsO+9^>7(JA`_#c2BJ zBuP9P>?ojIN`7tu`ZUm!M3Soitk?>!t3fva_JM=&3!`lWzgcYM*!o{adIkraym zHC!ci^5}V>c^RX=e5`tr3r+Nj{NP(!m7PGwuiIem{{V)`F+Z?*uCfbH z0!Hh}(wXoNvkm1BZ4MeiMjMb?J;eD^Cqht6vS!*CAs%`4<4b6jbQr~DYtvyZB&Wlx zP3rL3$eSU#8Y!=iRgdd%-$Gy*#~Z?5H>t!yp!)&kTByHnGw3OxI(;~H{rj6I(cPFpYB37WKD8q?h42wIR@O3si`&l4-JRO`BW9eRHj z22WKw3->apT+6%d$*`N?(s_tmfYI98TT+(v!)2!W6J$IDq)Nx} zWP#?%9W-z&G~pi%(bombcs~qu*xKg&-&5jkz~+1%f%p)x>Hc#Pp8}~Blu7~tlcDSA zV~RINi^n)cVC zX?=SsBdM3v-*E%Ew7=m`lyzNxuDL-EP3i=!%g=2S^8n~nV6L1;{Ky_W6KgZE{#W$t z*TjE5YzLZfjan!CYvxaTAZ1}9{A=b(1(jQcO;AzU;3VIVTPhW8ezg{{S+W28M z9*(fp!t-Q428_{i?R(VbYb)(UJLIdy+P}#ACt!;;9eC9Ps50@`VyywJ4nTmGpLZi5 zIDyQQ|5`yxi_cDS+W}jAjw3M!C=-t@KK1lS2hdUvQZ#WTt)sk(=O}%<1nQE8a#CQ2 zZ{LSLha$6p;5Q)J-_#Ci^be4)kgz@DF-55Vq{^R1Wv8#IB-IIN9~iz01hpWCl2{Iu zi6`oZvI^`dARZhKOMot#CQl6>l@u+A*THfeV1wff5~l$+I4&Tu9!UL^Qb~&xkSmU& z+%F*7CC&dcf^vE_I0yQbl(+&2z6tUj64wLK6(F~f*a%d=9LsZ~>=m#;7b$jTu(t$h zl-&#KJ%Ej}$4EQ^*eH9J#4|wZjaZQUdKINZ_4~)H_>M=2jWBa|Tl?v-T1raiA}khY zeW`>}d)wXUeDW3`#NXf(SX>m`+d}PY)b%p3g{=nn9}5?3KrjG-$}K(wz*nv%JLt++S_km(gB_-@WZ~N*YPLwjD5_BAih|{fg5-;WSkbB{RAD8h z6t7$1(GiX;!4%Z zhQ*YU6S-1g`BEVHQXp2URS)}vvu#XViUTT2@K!4lc*in0d%RLd;+-o1eL^QVw`vba zCxe~Eeh<|jf4G_}fbWFtT-{|K^wClc<9OsxYczZ3|h?>9&sEkrH3l*ENVnYbfq{avu{ z0Fku6hs14w&D!sdL#i$r>Uk=73O#Jreg%e?0h_h|o5Y)d&DtN3cppf8NU3BMpmk07 zFa#<7o1`%;ai584e@SR5ulf~e`@olaJ5KoNoi0f2d_gK&@7<7Lj>NFq&(Xceogn@O z-M$4EL;948KLLVkLCQuG?SNn-NIQvUA@_kyBGC^t{1l|&m%6;krC+=FFJY9^>GbGB zkohp_(dk3M+i~nr;|8Yh}61*#3ewP3P-B+cCed( zNR_`t;yEEw;$sqj1e&#~P>m^FGU(9frzbQaaTpnT^jo7Lbt{>PH>|>lE!D6-0x|d_ zbxrik{-`1|A-2Qb3IsaG*H5BX$Ow>WBsK@iR3zFK$`)XAfoNBd9Z75_WPgx-N$d@T z_fdy-iGF~5xuUzlSVPX!u}Y68IZX90#g7VY&kOW5CORh1u{DnTbe zypi1N0Ndwzgv7%@nYe7T=NYi4f$DAw%YkW94M|y92kWe{s4v;tWe_g)!vKPARvt~5 z$a0&uQ({TKigQ-dadTptimz2A-h|}2--K*2_a9kEU!aE`|9!O_TO0+Ug`DL zF8p9ubj^hmvo zTb;rJJP~{k!f5wIa3kdSlVsxX;!lz(oqUo^>Ex4SN++KrQ#$!1nbOH8$&^k$Nv3r2 zNiwCAPm(F!?TvO%1YZD&KS`#;W63AUl+Jh~rQvAzSnxBFefC&T<-HQ^kM$IZn(}7J zdd1jh_8b!4X!lrfO9)nCjFsrq9mZHCldq8}oqUZXM-K?*FKflO{CMtMop<+VIcMyl4dJYbLzuO~Slb|!Se&s&+D36&TTLHpQ10{G z!X6WY)bM(~uO@8IC(OX!8C-)2Z_z{0l72IkKH)Z0Zp$|0r`#9NT9mIUy`KLf+yy^y zmYJL*cdj5rykk#aHca6@4NiZ9K7MHD65jD^r1aYamN$V?eP7}aZu|b9;2#5Bmr>ib z$Sdt2^F8-4Vhqcq9w2ocGQ$pJ61P?&squI1Y_3D}b*Y5%kso|O>EIJGW>91r5WYg@ z57|!nH91z4wb+|6P55ew+7Sj3eO+jrL`_BW;2<)#LCh9Fpbem}lGqc7R)QQvVi{2L zdx~kN#S3pIB}?gxX|bl^ebA)Bz6p)n(kElu%9ysA7OEY|XN24f8ER+ed6@NDGwZ3F zF#*#9{sys`S+Dim)F(%w#n*u_3YdI3O(}+OJ|0@C7mB{;-X@zsW-pMs8V0$fjJOKMx|6zj zZV8c3M0nm${P36ZZSBd<0D~01>x$aS$01!QNy(;)fkX z@!&~_`;os75NJ>RP!h|5thl0=psWHr3aELX!q(5uWj>HBUDT3C{qRW1lgq4w`8dE_ z<_r?20p>CnkXR3-{u+x?`?N}}JCSk+;sO40s(sxLekfs=L%b69D}X?|jar!B1Z2e( zeFw^&V0QqBkQ*P4h+rj|zwv{N#;Npqko*S#)8|PNKLxVlGNpb2_B@bULt(WqQOcXU z6BaxJzVNqx(2uzOgCX?q$t5dt(<)L7Aa%|Os#zEPz2OIkt9EtJ>xh00unzhIiFW|& zo4=6w2=E$P;5%Jqb9tk`k`$_-q2DB^Ig4U$1YU|^ zHQJt`v^fu}z?-0HRKA(eXwcm;-zN!;cLN@YX~hgLE6YfI7TTK~xN$-wM~}g@dgQ(> ze2sj~Z3_nFyThJzY*>tDuakd3LB9K9#29j<>6#>`-3#}Eronw_LbKZJ!{u7+h4K(Z z^1I`F7bjf)YI;!SlT6c|mF&FtN-1@gUv~U>)~eW*k5WRZ`ubr9cxU;eHD+6|Un5Yp zV%gEqCTpCI2OkI2Domg49{FwouIJ0OiV5d9+7j?xfGtjf7M|;f!Fq4YiNe>rNHMDP zQLy!XHH_YJE(Zandm7F5=#K(F0;tm~q*tS;zXJxl)DP}qUj6YG)A%1r#1b;E@PpD4N==4%CHYqX!AOwrkhmVmiYuB64RpaC=EfT*4B0ahJBZ>Eb)Y}CDbqCP+E{c2z(JsVA4v^|s zw3#@{INF%anKp5Mm;3?!-`rvxMm)ciFT=!NH#lK+(AB<4evUZ@_C&-KK#m80bQ zM=$ZhTVw9&2{(7vGQPNXb2JW$9IYqE&gEZ>3mlph;KdyoK?Tmp6wwfA)Kj?fsH^Ydt`MR>pJJ!`+0!T)Oon(N?B@f) zD3Gg2Yyd{hjoCx7cLaNb>e$Q;Vq64rJBeF?)JkL~ZPkYl817KC`299Ds5{(nU&R1D zk({>};7~(*XMC}qV|5-`u46=M?|2y6`R{L-2hFT=j6Yn~d6>F>1k~#NA$}M9 zP0@5KaEw1ofuX7&_W;6Kh|;pNv)t9EHO z;SPS66d10GK@?%U;i@rQ=+~&q;d%xS(yE+sJfq*qZ&LA$JtE%O^;*Wxwe9TAwPiM{ z#3Gk7PRp9baa#8`oUqd(KXVZF3%}x*_!YQJM$1di#o3eE)Wxis3wzfqei=oIbwAVj z8+>h+wP9s)F+a?RxD%DZ=|!gmbo`zu#s-Qx|Zy30bP2Bat^yJ79vJF^WRU# zT|nw-T9r7FLVTUf|188nXG_QW*;^=SrvDY}F92rxe~|c#5ShMu0{R1H`c@LnKW?n)_Lcl3^M4vKP8=4<3_<4bnOAG^J?5Em;*i_ znmUi8Vd}hH!50D6d3>fpop%`c!NArw3TpiZ^&X3ev8$=L-p|N67!=lV4X)$X!Tt>( zyc&(9%gaDPByw-i5*Qb$F*L~n%H=<>lfu6t_f??TPG|keIQ|U&0nnw5M?Dd)R1E#dB4~t?K9G8b zOVS$Kn0yU_b|VgqT}z8*LdRYT9r~Pg_$~~ZSk}f244v=`XbK}Y6c%!Q#aaSimQx>{ zl2fNjv7hVBWFJ`G%i4stw^k_1KWPtC$D{hEn229xV29n=@yTx4x`Eni0JGzhy|Uw2 z(2*j^j!$kSJI)2236zgi=;X086&+6 z`m9I?q2SMr^bgRF0cY}OjaEt9GC*aPo_Wql(?ENHwi4_!k2d-H(;Y8XoK%nZPK0(C znFj-be$3?z5~m1h2H8O3QXs1m(JUw%!EOek1t5=+ctFTvkoQUaw~)O-x+h~KAky2d zyOH<`(6$Ohp5(7U+Zs;?XqqVY1%gvSjwW#wkQGy;7hF#VI~9n&19BCKOMy16 zUgccg@$elP+$CXJxZX|X9e^!dpCR!ykQI}yUS9@#5vciuvUcz1h0l}J3hF6jxM0Tm z659Q3G%Kdrt(l9Wi*@UrQr*e2>l>)yg*(NRVHh?Mvj;T!YEMkl-PqEYZ+c9lbf{=H z8opg(TK?Yc$(UPTeUVhSQz?2q_TcCkZ*BgJrProa=30vQXVBtTiuFMjTV%dTo8JIz zk@-G}cL7^uiaQjyTV#F${jXxwBGY5J_611lb}j%oCH|+Ehe!ukQI}4-&eu* z1ZwW4Y}|b}l9Y|lM27TRgT4}7*gN4Y2;0JRXUt@4VnY4SUbulQ#SVRc#M;NzeGIvn zl}eXp!Y=MOnlQR*)Hg}Qwwh`>V;Z=9fyXP>0h+jA5O-hj z8R(ACcL4fzTsbRx6ybGWg|r)xItSrNFRsL})PFT3ZOR-?Wv;Wl@pnR7$cts_1-q-! zuemWRV$}(6VI|$bdt+eQmH++*#X)DKE6hr#Qq_q-g&wG0G5S52E(5&?*jz_Xub3ec zOA9mFm1eX%$keW_i@jG_mpllrUE8kfXvkz9o|zG^HY2_O{pUbxDrzJ~T#Z;W;+7EY z_w%kPx|MQf#JAzr#>BCTfv%v)boaQ{T~uT{_$wnvD5}94)`<(V$t3ZEFsJNk{mRo3`E0v(4qCWN&lw3{AN7!J~0wrADr%YrXYO6vUMPGBJ=i563OUrx(09SJ9D3z3sOKmyS zYcdXS{H=FsXfL+fK4lG#-SH^d%X!pdtF|9|j|Iy3M%v=>5;qTQ7Eqzlyo;@vmVoXe zlH~8wBo)5~dJs^lFY@kcHJ$@{D&QP#H>3R+{9d42drURBx?ObZzgKV%uYcPX)AKMq z1K1YR?@7E3*cQ{DNqh*@G*Q%IXt(y3x+O>#3HoXf&?ehj`U2KZ0oz)tnTme_wzbqs zq8X^sI^G0@X;PXtN4w$ZwjLB_wZL*W39B%ml$I~fOxSpFKvgIHxe}AKeqVjJwVC?! zer^g-%ikd3&eU7?$gpFmzXy=1x86$eY$n(=pyDCQZ=-!)Z!zeOA{`-;wk^E_L6-t% z>TS)e>p)il&eRKx_Bi-YfNt#&Hq+sDk%blp-Kb)lgs;HxB4C?@ACmY0u>HYLN&FqC z(Jg7-)Z-*b7YW)i_?iT17cV`Hgh0D^%_N!tGj$J%ZlFf@u+G$_q+|`fFs;FBM;c;N zr&fEDyBVvgmHg+pHmowOzKUb4e6U#6C+1!yb03XohEvSk*I@2FP>thH?TNXkw94EQ z(V-8hI1vw>GFqg0ptD4hYfqUjjnSPpTjv$ zF$bm%pqGoZ1EQv9S$KHg0lgMzlP1zD+>BT;t^OKNduI0lnLh%;Tgg;|){~<~;zOw) z#WcgAhi}G&I}@gqm-;g_Z6(5#Ud=PF#d>AMQj4?&S-R3&?KSgReeMeh67?t0rf@>@ z9FKpB8fOFc$cCq~oeV+ij=FyhD$*k1Ftd`(m z@?MAj8jzYp@#I;SrrT~kE;$6EuM77I-iYuj%G%SC-&5jkz@C=;g~UgIJuUesiO&Ep z+@4}G(Crj5gYfKPubB2&LSrBv08JVj57(XjIU2o3BBS+OHQt>!U4+?og63~n-|PLF9PBs6;R{Fr94+Uct?n3dzL8{r9c8FajLm^`UVRcN)zc{suULmG>f`gXk{4=Q z*A;B*6=Bf%+4}hWtR#lo404=Jn~N~${Oq>+3_!ql0JPo=H4nHSVB|{xk~&h!5MoNRu;12Wk z{4M_B$HH=)xy_dYv2qQc;W|~m9u2x8RfR=B@Np8F}J0nn*{SKNd@6u&|$Ii9PN zLt7$AlN%pH|3$!Cpo&LLLaR5(XMZm;8E=#K24K>o8LW+k zsNN2c;ecs0lf>pir0eb^76VyHnxx9vH;q*P(NMn*)MXl7WvTaIDfTmmsh!(Gyo}t7 zfM6!btt7rDWCF-fNc>pH2#^;^JTF9_&i(_5-vL<(o1_m=vS%Ib$Nx{E{vGI6#8Kli zx)8d(2a5Ytr8fUFEWZMQHvhXxbPCZ9bRUUvLbUlmmBbVvH5m~Hgf6VR!K`^|t?CuMHc(x#LA9sKAisiS)CA^V4b zY49|Op9+y~za{ai5NZ8S68`|QDj!Lw%9(@~z;x>&(G5(JZt7yGHyJ{oIHcwx5(|Y$ z-Q^_q6C$0#&( zig6L8o+j}mka`U!1t*)JGuR;f5tP^Q$X%$xs9f3YwIBb&BfL=CcVf^P+8jgtV!!gW zUnMWPY*4;DBK|=uzU>{BvcK_n7=92ltx9P{gCnK1JC$th%QxK*`+2Dw5F65(T$PDV z&Vi3c_h~v`R|QPVoq$af&2$2`qMDW;1y9RwFsn|$e#o8TmJq(domA+KzWVOCtM87x z`tG=^?~c3r?zk%~I_~Pbi^XsMf&kQ zzoL8{X-4rWTy6zyo2l9>{uoxjw&iL_QF!Y@pAYC%KCUEHN1i$Pyv>D%@)P@ zg_k~+OG)}zuBr1_;f+rdKD?WO;G4Qgr$8hxrH`_Vw(JK*RF0R@+v=l?_{%&|uaCPQ zvHVj)3{Erlw_tZa5tO2hv5a=i^F^deS`(tHva~{0F0-t}9{z?hox}6XI;6nfm~jzM zu5);Pncl|q&ILaSuurP`6;5ODJAg>L3#$4|Ak^&-S3RxrqOHl1x>x0Lcnc4j+I4#Y zZ4YP2!Chp?Ytnb+9|tRC9#VI@p~WUUMAjqGz}?6kRQ{ z4s%EDyOCADfG|uCrw=W%9;}c?mp}~FOX1ITc_Kl*Vfr3p{5i(S;>=|^PSHI3b)oWW zvC}lkcnw3n!he6mQPi8!_VKiC)$k{}`aK}Et61%uz~OA>1d+7npJv6oAPomn+Fzbt zD~0BRZYh#pte@U}KcqcCcNIySoYNoz43Jfm;Q3c2!NW24-i~#wV#9shc{9+Z?g;~ejyNR}0@o+BdKA5a{ z8%PUa#YdAE33%0?)2}*4J{i!=qRGStX>|s9r$b#hG^bQMRllQfjz2tqClI~gZV#vx z?3%9UA}iY&h6=Apc=sZh= zfYsD(&UOyynLz0+|E8wqnbhQ$m#QvBlW|rT;l|Zf-l@8-M8ai&)m1)LycAiKX;StSX-1o=5osh0ayx53k*J!gNI>BjdkOHZImjrPF?pfj+89U9QL z&WqllWX)GmbfbK|Oh56vvFj3uWqO%u;}ngwO5IA`rY_^fL|8A`Ghw|X&w9xeDPgRa z8EdOvT#Wh~L=M~5knB}3qTk0rC+1#UN0(d7{Ru)f-QJD+jAzX2o}u5x+=lp_n`soR zaq+jt#ornie`{R)t#R=e7RBEh7k?Y#cWxG{u#3M9Q)mY7+{n-kip6|+&t$v!TjS#I z_*B_VDignMqjW?3y3KJ)$FJKQLVD!GBE+xToS}65ijAa}eaK}(nM~08k@6Ip`SRWi zq(^?nWum=XQ(T%k9j)u_dwU{#^~W%Kmn)g7-=8p5p=751Pf#nBEUoV#S*2uUy?ts= z$(nlm(w>qH^&vsOPRZu_ZQyNGvc29uv!`UYm(>r-27G4F1_Sj6??HEyzI}6!_c5-8 z@`$pOaQT|KysUokG`LOV1WypZxHt-)CdrE`DySD}@`~ogc#U(gZOI%PZb#>stVyPF<2deQOWrP*dgmvy zV?A}KFj$?YFZ&pM5M1sWq80uShP*;v_AiW^VB5%KWl`xru<9eGL62jd z^(CyPfPAG;zJ4+%@Z4|B?xRB1#GE<3M&0+9-qExd<<=?x6A3t3DarH7WPo1fG;Wi| zB70gVe>W$|Ds`RwZSBnM8x~82M+Y%@*>2_i+4afWgYx1|`#!?;YK}D1-f+GRfl&AL z)@-YCR=L)U8pP#g^;?TUby%hbE*z8>80y4GepWwH73}N8e0>nB*Z8^I^Cjz#GlyjT zP+3n}*7bw4vikjp;5gU5hjMvJ@goOZ8n>a*yg76y>DQ8cFS}4WFK}b(?+H0j0WYh? zW-!SqS)+8W=e%t4A#9PfqA0MIb*;5^($&?((o!e=r!yJPaQYiwuVVSHbysPsgw!a}GV{Gd53fJGd&c5qbk+NB%mwc^NC)>HG87aS*RZ{H_ zX~k>QQ>=aes#Kr`uY>CwK+!8Gp${Ev!e33sW^Y1Zta#z<%*!BZ==zNQO1!Y;skt+fZRH^Q!J`r-5W~ zZ-7p%sm#wL<`t;-Q|c~>`5DNoBwhl_#TC5+<7G`586?ng-TvsY{8%;=E1GRPw;x>@F2xJ0@u|T=FqK!~?0NVzL?gLp) zVt*k|fSf^M9nkqA$nW6a4Uy4HAh$vNJ}~8NknPbc@IEC!{G*>uwY9NsB=2Eh_%M)E z#Kqr|9T-vmPKk0cNBWtT@sL}A(rF;!`a9N@Zf%LX*F}p-981<}W$$a$`_@Hz?sqAa z^MPnB$Q>kZ0Xk0uX~aK%OE8O02l)lmXT)|9$cH4}6><$oW-I1fAle90N1{^5eIS!b zj1%$%$bKYt6Y?U+MI_D^@)pR?NjwUaeh9*vJ^CmA{jF)DIEv|{F(BPQRU=5v9CG=6 zKz0ZH>@xHlJ{Icm3%I0C=EJH%J^UWFL@oNSrBT5y|9?i-<3QLmhnvX|h0r1IMz)8OT7Tm@e#U1G9QTe! zf5(wpzX58|9#A!hu}A3ZIU%uPe+BGSg$n4t0~H;*Z4nwj-L6uI($mPDUV_Y4(w3?tIeui$E6n z)2Ul`YYOJtYs#x`=fvb|ru)wDt%gs5a7@gnhwkn}nEXoeed~B|27`v<^bRo3w z#x=VFHV}CpJj*d3nyb|dyJG?C@&dvs&=w=~vK*gkMM%-%G^&)GLY=W?RZ$(clSmJ| zS!g>dm3goP2k3$N4!!#pkZJ_^l*A`MxwxW9P^!1V2tel?kZqx!OTlO^$ZV*a1JOc| zr6l$evM0z|5^I3)c(l>1tJPaxBeyku4EfiQe{Bzss^ffT4BJg~4#LUyqB~(a1gR2` zSWA5@HXVXS&U{*?iSfq5dQ|ot%4#w#tegT>`!EY>zbEkarb**cnV%E!Q^!L+6}?Xc zQb&MXM&cr%TwKwALAf35MxgUjkQGp`qF{6x$m>vF1fm;2{P{cv7V-m-Mv!_S{3+VV z9J^AcP$RWQ=J4v%T^VO5c1a09Bq9NNv2IqoW~N9NG|_LrGM)9=A% zj?-z<_*CW#o^z)D33W7jcL1pmK^BtO8YmZ6RLsfwXQ% z3zNboBXKR1E5z~y$kQYq6w8ao!UXXaiD-K)3zX`+ zQ-tTL&-s5fCilH-X!KiQ@pY^|Qp4$hZrEyoR5{3U63c*caYdt`91pezDBTQ1;dCDV zuYhn7u=$Q45{oeJa4ykK5Pm?;Z9vftMTF7t{42nY?F@sg1 zI267@j^d}bu~gJ@tX>pWhbV&L6}X*RZ1_U)R6w0SDfdp9Y4N#}k%_+B7Y4e|tu z$APF9f5P+`U~;lM&>Fx*RFkLzyrNH7v+JfQXLQ|8u-ROOknohy?!$crfNDEY zd`jrv?ZW5jyBQHz+a~x7)Uuiuz%v>+Q93wj~%&5WMu%lJ^ z?y+?=kvi+_9*%gA?2H|_-aWLPP}iP4q5t7}8mkb9gCFrxjnlur-Pc$j*X(Q2Rj0_W)|R`;%pYutL4a8HHkVqp(7@{ULm} z0nKaZwUlcL&z$WBICAJ?WIqCgH_<8u;GZH={_R4u)=&DWb*-G%G6EikOS?tl(6Y>Z zJG%A>bh)M$MWsuP)8!XPeFiAj?~B*E+CBn*4=@et94)&Lxj?96b(*ubK+q5kSc`-@ zL#N5*fH*s;-sXp0xS#k021V*q{tZJ>F$?u%CFItWYNTEzqxKUit*Pn0LA4)4&Uxf$ zb@bvUInR)z`1s+V9K;pXQPtpulPVeZ3yq$q0v9N>MsGKZ3Pp`!F&NDxqGJ_h4zy1dOkfizPdBHTvuEpF{K;=4Po~Hpe z3cOo1`RV$gLVPp8Hy7=8x^;cfD841&3xHw|z6%1|Rk;NG0?|%G-UUI!3-H|neuHRx zQuadEj2FP40%|8?G`)FYesHg(;)k91Kz7c+{HVR5a@Sm zdPuYjnG7ZJa_;$tRy`msnuX?T} z=X_Ys15y`*Y#?#DkTXDTCh=V%$AbKj#1DYdTR|9Cp-%JYj`q`f=fPTMy$(&=r}AjK zYmDzhbjHTi_`uZARce$6*{c#YevItwj4 zH~N=kbz3B9ozBx0izE#UB8w2+!AuETf~j@^D!*AN=4})qz7BqnX#WLmL{KH#Md0g2 zQ{_EDo$9_3{5sL3!$?QF7yK@u_=!qlnbYJI@TW!l1lkx!8@4lk0$A6Lb+j?yqk!69 zVBoG63S3NqzF?S?o=V0VfcZ1 z?Nr=%vFo8v$oVr+98}?F&g$7k*a8Ssj0=s>qbM{)vPNhn*&3ne6lU8kThS=83WG?p zH^gXUb1~F6N;v<7(pnJwtgyV@R31o<2IM=N~7Hh%b#&A*%_@A$=*tX$&FwysL?1YIs9N2+d)tzFL&$b(2WPT zG6(~^AMl2a!O_EC#T95X-K{--<&U-sY>oUY-xeb2lkwy5Ro@5i&4soqJHdbqa40c@1rUhC<;^j#R|m?AsI0?aTw`t8=Nm({GD{bIRdx>wEO>np0q8>YRl zuszoB<8~@AS84Yrno@eWM)q72V-rYcT(Uco6`wGVp3hA6ccl3n^z5rb5}vR|H8YYM zfC^0@PnxUtgN_wR^T$(0ng=>dB-QqGrRw?$=*~c$W{PJ_*TX>%5J?lo&yDnL&?|rz zyB&VkX!n5M1=Q}r7#`aNzvhV-Y?^o+`a{47-N^jH+=Q*TI!zM4w4Qy7%wLN^eg9%S zMa&}Kr)l9$+)bLK52pHhC-|u`A#e{WqnP znczqW9hwP#1ktx3^;UTrv)Dwi6#jhyn+OggaflF21ZzmF6rzdX3=*dSMGqom&_v+& z<@H{?S9CR*UpfzHFU%h9V5-Y8)vf9k%>)0iF1QHE>w!8=1D}~?Zv?##2y14#S>PCo z6o%Y*oz_aWW`PR^Wow-_ksP^mQYe`OSS@?uzG$l8|Ky-zEH6VHH&^ig?@e;j2vqR@ zVo(k%xT0C)Y#RJ~wxH|6TU^A~quo{;ShtM777bc$T-`GJ1=3#kz147@VVrsiac^jR zv}i;;lFsN?iF>ieT|kAViZkq>;m<%H7fHg-tat&gKY+dk)D>aMv)mBhg*z5VZj795 zv{qwBN$b*jTuGDP9=zf^*0&E!llEiaDG>qOM@s(z6l^_ioKCJB2)Y!g z)3noPv+;4Dt3=XN)^F4OEub5K5t`84>BeCFzRoen+X1$}k^2$QAJDA%@av>B9Mu(3etTo6836Yh%;nfg8i$V2U^vHPG6Z^9hl zbsY|a1zvVRW8U8u@WQk&D+h9PuliY><94T3(hYZzqth~yP2BN%&egDQu9Ca?iv4cb zH&2x@TWxo;*>+^cn!~l)!fvcNTALfMJr5u*HQlyZLhWRXI~;U^7J%Ncn~)wXkE-SK zp~AW?^Po)7z_8s`5c@@ATPXyGL^T==)v67oOL~>)^RB^Rk*x>3Vap|RVOT2(p|;|k z%!Q#_I@;Te3*C;ileuG9Et#1WT!J0LRy)cwpts-b_bF!NMDUuMgu2Q>RC(H7Xao_P zSEiqnn5kzv!6h}JK8fF|)gmuCsbH%Xi@_yRRBo)!Y+hC(7O(7KF5N#4$voTabRT}6 zhURa$ll(Doo;_X$n}#cF2DGT~xmC*C4s;v9D|?2^tb!k^kQa=@KPL66KCef|J^7sq zA)$WaTY2&CRLmBy4tLU3RH`Q|sdpfK6~Vhp_?+bRlrq*T=&9qO*Eiv*N0Hg`VYNFR z`ullUky>u&$wY-a9vbO*Xz*M;;nDlwKAs=N$MYAeusa?a#mDna-k>A-@qzs8B``AXJz>)K9zqQ>GY#qD$`eq{4ceosr3%h*{8Tv*>TTwX=Vv(hj!dkWG}Sio=T=d zJMO7uCbZ+8N|uIp+*8TQ(2jd5SrgiEPbC{dJMO7ub7;psm23~~xTlicUPj01I8FB; z*m3GBC47wx-_R4GdFjV=5i#?9*g3u@!gmI<8|N?`&n{Y5thVVB;059=Kl5KWBcITg zEc;pV2T6FDw_%;)sDDXHd6^@S)$D#`HygyVyz25AlJ3Qmr0e;(E3EcYJ$_lcM6Sbs zjt1-_(0jt=2TeV*R{?E%XzI=5ajip9KlA^O4WR&oyq?-;09k0}I0!PugRX-!?rC-uzBNwj?(2(AW2K%#jJ9VwNm zG@Zzf3Y6mQJXdKUaTwBvYL9g$Af%?xPqdbf?IqH#Hm^HkhU#9|;!mhv!FPC#c(Pv1-wYexn*SE+;;AAlEs)gL|yd ztNQxrnS?ON`JGpUgIp!dkBC&_=e#V0r*sTvOecL};;Ute`h~-&pDN){w|~Kg+qn!?s#Yk1ft%aAP+7 zvN4;CiXom^SK@!AUY%V(*bwwK9|Y83G-iV&QmEp-G#@2fij`69n;LGZ!E1-gk4~-_|CR zsU6mH(>4tc({tlD4iB!YXOu884yf}K|7Y4jq3N??YY*a`T@ViDN$0u6 zax#lSRY;!aI*@1nIesi%l0@k(laRSpE;|+%hw-h=NChEjn^-<$Px9xhi<((sZ(BmJ zah|`R&zs#i(72-9`OA>VBTI(`@t||&ae3l;%GLysHf)o!?C zq*pv#YFr!?i77^Luy%0&bofaR4xWB<|xvnR2$2OB~Yr-9koPGR@Q{ zV??@bI!4TyI6VF3?%!m6l0@lv@D5MfYPO1r&6~6}j$JLejNEJ>FKI1wfWZrAW<8C$ z!M1ESVs1L>aKo%~(+RK3j59>#+$4dFfH1}>{-cS&XwoE4D{N!j+$rdREw~_^u z+5aHKD5fO$k8uRa6q<)yM;9jw<}Me4bSoN92c=dbakzL~X8H0EgRaGBkQ zjF-wpn2C=Iy18md4a4$bt$J`=s!0M)ZBj#F*AAYfY?&voC*EutjT($-lTe30vN4`? zhTbmbWDs_=M%2_5FMDKQ-5=(f9k-}usEat?{7=zk(;+0ahsKvAe0Ihan9(*3pIu21 z=+22966;5p)=BT!%x5bEKpT}4qXC{`!cZ6(orF2txUhBom_%%0m$1lok<$^~ zY8#s+JO05^Tp05>Ba;09cPvr`hYk^nc`1-Lnz2DrI0dJ+Ys z(!9b6S^b&p=_s7!JW}Co%h;Y~a0Q&LtX~QO-qsY!EkIOco5C&-VSeF=ap7>=LIsj7 zn+1iwVfO}Fh37|au&GVLyiHQh!6KPPqbWUf_oK*sA$AQdPcw<-va(!16y4wFmcCLw zS%6!q!sWNS$-;Ch5R$0BP6`z9C_o zCb!5<501;cC=~AxvInE#J-DQnvYQZ#bI#-9lWr>94MIu5YPr;zlg&z}QoLD7hb0|g zcS4)oX%*Zi;aqWS))eI8b%%Kzd*y2FutZeuPQ`Vl?b5j2TeoA$bV0bO$xRovn|5nm zzFX^Ex7vFkjYIvEU&?T|^1~BX9&#I0ILO(EiS<@n@bV$ENjoD!Yt-Caq+ytNY7l#F z-Y@ChTt`L)wob=NTIgW;keFV5nu{?k9Aa|~nJ?T>Oagmsak|p9ibb-Zpk^9SmUEbL zw+#96C4=kp!Ml7_iQhzS#Tl>a>BL0I{KAa==ECZ0@{V4cOp|ri=wvpG)vnJkg_4`) zhQS{Hzjb@!Ca`!nIcW`67~HQeBDKcGwm?L;=347UNp3|#SmxF@m+Nd1-_3RAXR5Ab z#nfFG(+A()XhBeLdxK(wZibU+KQdkrm`#WDGdpii1i`ShFkWf$(uQ-+HDe2FVUVM- z2Up0#qF{3yn0=d$um1e_8t=x}1l=@D96EPQ8tSBl<7qOxOR5~N)b7$|`9;B$LW9OL z+UByRimNSCa}3rWG0U`})VL#bN0Mu${C-AGts!w;vIh!X*iF0KoS0V|_uw0oSbz%7 z9(waQr(k`;OsH_+q5!}Bkvw_gsjIpyt&kRP2&Iyk5e;_sf{Dzz%HZ&xN#bYG;B8kP z0V=!}=Od2`2f5h+gT%KO7R1>ewb+ov9UhkqeQ;8d?|wUZSv9oZlUSac|Km{ppX@$p z_agRBcY_hHJz|@#KZKKmW{H8HGO(|gd0Rm=8Uy8Pe+`w^gm{a=>nr1URevHxMK z4p{boQOTDHr{ewlR~>a^BEEm=@|8#Z|6B*3H86Yi9juCU<+O2eA&vj6FJ zGW()1Jw8fRM;UU87DOqqI9b{oWz%z`QZho0wD{>+QJ4MqqjvpYfFwQ{MRsw2sUoRbRV)q<8sQFr7w>zdbI$_I!Jo$~1=QKmggQ+BMmkKasm6!kO7}-C`rnft!@u&bC_64HA0K5~$?Ahi4i;oCh*J7rtqW`! z{gHo*&CXTHpokd`wYnG)IWuO4mlkV@ZxDSse}UjoSJ-BTr5J(OCVX->u%xsKoyJy2{dcsa|6VYh(v3 zizQm|uFj|!Ef{v<3y*P@mfa(lltrxY?G%=a{~r{6F<%s6ZSnY^saT-K`a9c0x>a4S zu@_<()f=Ywh*F0+(?KdTQh4NosFoC#t!54);|okLsUF1_O2Bi z0c?l`FdRljY3EOq)f@{*jAmJMxYK8tlT<|)`soRTfHC~vA};{xZBc1|ROdXThmz$s zMrxv36=js;L?{ua$C_;jCT(N{>0Y}MnAF)%qE=(lt~L{jtEjWXtU2W|?RX~^j0^E` zycB^VZK%8^AmZv@pQFW?H0jz--D5NNDjh`iUi*JD_kUV~{7+T~$xP~I(J!5_na=k) z^6PF!|39C+|3?${z|vLA57Q!GmM!ya`u-e;8ajR7ybf2Y#zX!76k+T)Jm;@aWN9;p zB|d5Bgy|h4@$?MXjMs|?O(IJ7hkv)IU8l@;!nhxvwDe#+mCcRXdR3I+ zj&7PPi__I@NGz7_%npbe9$wG43>g*72Yu1xzCN@h?^S*kLTd#@YXylc(VGJCz`I&i z-==a*H`Lcih2fDjh0_9xsr_!D!AwxC`MWPFbpu@zwM2;0jKcQmq&su9NJY1<86UMU zC^1dcr2jHSf7AvVuZKEKN?553$?H(_RKZLWmaKvlViixbC_NI(h5Mric$l6^?IaXY z{Bdqt=!zPIZA8Ye(iPZwhoJ$eIx3&Oc2&Cb#x>yF=VBg+)gq+z(EIBIjUaI$Uo9+Vu~NJM_i#18G^KCerLh`R^XzZp)5<*FpO@ND8r)X<4q=&b$nc z4#k^AK1*Ka!v*G3EHtmtdcU?hVn+it_AnJ~I+|k~k@~UA&GuE*Itr)Ynapu*5m(0L%szAR4gyJU>=ci|Or$bDq&RL^$vuXw zG9huGEX(>1i$t%%jJMnB0LG4g%lKzW?UPVsGBk#TuN=1|stmsqVDJjYNU+I(!7zvS z=?)`a_^|@USQ8aADgJYOXn1&A(5`_QJ|&NGc5}V2#c)Y`gjt%2fUJFP!&C5Fx;f1H z)EItkK~$CYmtf)$M%*nb3D*wbXxXq#<1bu7o9jrFM=cZE@iHp!w_b3;kbd1l&%w>YAMqY2Xrgx9?L| zzKwV-GhLjHvJ-VH#n?=oMQ-S0q&Nx+>vN$HGs_M8qs{cMHyYU=b-NX{mWzHTB4$XD zI866+@pzVsG#^ypCDx4WY`AR2$A5)li-_=W)2SefA(`5UZYf+-pYA{HHDrwIIE<-BL6yaQ6nWj%`s-f7F%JQ5~z{m}q!btRV_k4Mda8tGVLUlbu&@ zXBN|oj&jlJI@5p~8`igWgTwzG6cDcUwVMI#wm^M7Q&p+*nQm~(lu}`i=nA8B4Wq#7 z_?$Yz-yJLWmVa~KjCD#hlXo#O*I1Lo^zO0um`U)Suo8iI`D#q2Nr<}^O&>wp-P^mF zgTk#*R%_vjxo$_{Zt=xyZ`Gn07Kt_??iE>zaMT)=Vr24}fU(MmxOWfeM&WOUrm)TU zQAM~K-)DM9ry9F+HRlIcmL$(I$#EEHA7J1S=t_L+x!Mjb!aJP1H9Aw-QkkiLCiR<@ zZd9eu+sv;%Q~6oUbxb98N1}T{m8@}-D-BZ7a0K&cxHsX=X%QAD^J>2qM(UvP3Vlb( z6*aHR-NN)iX6rDHkP*wFRvB2+e@VKQs<_)>GL_lObZ7O|A?0?6`)rlu41`~$$2I)6 z96=L$Wj3{-JsQ_Rycmeaam9G@i8zYxE5;M_^H?$G7{@tg6V7Ad)If6rE5fDRtNCH8 zuU^<2yDJ0Eje>78@q#D$RE=^JDuAw%I;8AZ_g+tckV80GzJ6_vN~wO%=5 z1WQ<#6C;;MrDt0gE2~60^g^0xf)asv(J~qZb8UJzCL}yu5zcLSRYz6fKDr&o3(o4H zb4R(sBgZJmLJLuS$h~50#dNrae2tVeQ#}*3ZZI2h8H^^q!(rG;lO3yWaGDyTs}`As z(Nk(^Sx;NgBCO!9Hyth?kh%j%>ZKUHMC6J0g))jjtN>VMgv&KoN%7C6IKGsdKQfv* zwo@}HNUtcujx1d=%ek4a zWGH#tp+mf_(Jho{URD*)cIa4|$LLSXR@jCW64GsR%PeC7gRm(_YA2pDad5Y9OCM|K zRn#ksYyPt7t%aY0)$*dlFmVxOGRe2+M{YZc}StJe+EM zLJn$$2e5bol|Q0i5VB3=mMQM`2h$vqGY!E)N=j>nPkyw;x2;-{!oQNvheJ_9U8p#u z@Drvd#SOsdy4T9xJ3I5)sDg|8Ex4J2wNz9xt5x|ia!m~h-R8~ycSC|U6nLX$LaZp3)$A`xxDHH;0#}*^SXK2;XPQag$2y zi5k75ZMp6ijOhV98joV*JdOyDQB{6lfZ<|;uyhUuH3(glGOr$`8rBZj5DS>KxaVZd z;^!=dn2gVf1(x$}_7L5>)8R(dUx!Oqx5v6Zw|0oGx;>g^Pd3W_7kh6XSY>hLk3aW5 zb6;|Ea}!8VYi$Wg)war;*0;qL5Unq$B;n1MZ43~EZ6Ik9K&>K0jFhGrkg_ag0Vzew zH%n7WDN9+t)FP&o#grmtDMc1piY%oRSxQsH-{*7A%yXXv+_vBE@Aublub5}fnKNh3 z%$%7yb7tmw;(j&Ai|BqSjNNbpki{62b1+;;ufSFdd+E)X3E8c@SoBtATF43m3|kGQ zh<^w3-?kzwvh_h$0}f9vG^HO8GE9W#{D<(5ee0`UUb0zQTKXbzhMQ*wSPj~Y<76> z5sN&=sgj!NACJg}tSq9sBc^){f4PE%VsaL|gGNtr4C{6=N9c3TxtC!$J|eN}V6^v% zUDq9mKG5DSu^1EgyB`V;hcV7C#P3s2+*Ep#3S{~CN$nuTpGJ}XWx6dBI~9{^7fHhc zi(bL***n&Q>pskLSi^KuqQbbw9 zLlsyOs4%~r9x(Uxgdgw6DDHi=9Y4>p+CL(-E>ph@Ru_O&R}hLQYmkAR>1fYxIQTVBr23Jr@1#U`|KE<*^$+8tVxkG9z^Qh{A)a z22~H%;vE?D!CZ>A7j{P^K3bdWf1#N;Aj4$|8z>ZyTK4}5kQ1B3-;4gX8`^~ScK zE$)izQQRIZuG&ag(ZR>}F8hc2Qk=@MSXk2cj&;ZC3y!=d_&=}2dZS1zw9NhLgXzJ^ z4)N>_>K8dvukO8Xk>s`^GGSKD6#xds%U?8&IRib6i-`>f6-0(7!dmuAFw_Z zDUgjryAX-u*nI&DV}&4i)FHHC&@W0K$q#NxIM)~{D zf*2ZW;rOLVl6Mb$Ut)#B@=5z+5XsdQRO^~pck$e@QG3Y#Sv3BzSO;iorypD_(7MmN zia7sDS{G>2Yat@a4AXu*B7+`+JiMomxx(3`1Yk&RqAP{cYcGrE zQ*o{?wgbTRkd^u1v2Y6a8fT4(T?l@c{{)I&O{o2RzOlk=U)H zk=RFhS@9fPu8Zq9`1j9oxV_GQ*OOs5?$3XY-KDrU4>|Ffd{e`_nhJUA5B*=DQ#KeyRBpTfK0|JH~b z*ayviBXpNG42(Fep2V8DqzTuqCY%^MsUA?H8)K=D#{5sj5?96Ors^K^;Rga9o5Ve1 z-5-wm-F4vZ8|%rQd4EifNMXt(#7&==|8X4}R#1+fl%o*KJ3WUMiC>0pim@$nS*$Dk z!8}+)gUW}Cp@%;W{*h?>BVq&fj$xJ((@K3u%nietxMXB76E7JO;LH&I+S7Pfpnvp1 zbTRsfj8QNFJ_d1k8b^I8G7)gwz&j{4LcT*W$TG? zR{Xum9x*sGd2owS80&-tWyEkV!_09EV39aR2>%}-Udn&6n5#tpx0r$<2AdtuuB$&2 z%j2ldc{DF}HS_`FMdo^7`YIRLgfc7ijKhRf8}rO`S8f=UGVJt(WWD1LOSZqa3E;$= zZx865oGt?uMmv}^Li7g`Im7&G;Bqww)cY)pli}ExZIaW|S*^_3e+kwLEs%EBstk-~v4iptJGR=6aI3XMvaPn;wp!nQ;Ew@X6hs|ju+w|Titcpg zSK9xM8t|CKVS>Xk3LTP}5gNr=6aHv9&7u>%EP=46$R@{Rtd?hAkvQ{7;%M~S$)%qR z`>)fWD8k-wus(psCH)_xDGW{w{O{@1z$En%@J;?})8Twj0;n-2I-X`Jh$V-TxhOQc ztLRHl>6|=TLRVm({}nBVOdi}Fqmill+{{{2J>O#u{N@O@=+O|PP#InPRX9d)nLkD3 zhtpT4R+KL7KPH*N_;i|D|{!M&a+6y`nbHpuYc|61lwY%ihj<9tVV1~}c*YmSASoB8wA2*4OUYP+z1;4Tcqp zh-1&}h&9dHrVbazeJ(e#8uY&gb%|i`g+~qZKtGXZD=QvvyWVqfZ>e^ENM1)J+^4IIIjRC~zK22p6RCh7GIZhFIF; z?fRq%Md9u?)t4hXh9R-G)o<@sidefs%*arw`3)D9{_jxj=vX++#KLanhPo8CH-0E= z%-{SByCkMHUrL|wf5cM)QhLrix(wy>6Oa`v5UkM>eIfbvh@8j;H0!9Rl+K6urh5#H zO_>I9Zw|`!v}}waBpco&?n`;&!!GKUSus}yVqz1Y14rE73#qg{^uSo87nSkjFg4&F zLbYDS15nuW*RJ1iliSsEDhPuF2}&p}$KnsmbkG-lrJKLuA~T<5y3*f;(`Fp-*WqZ;O%A1F{<>$~QAH3H zx%?g$EeWre)kDV3o+w=%_j9A!{}MJ|W#~lrj$u1kMT1Il;b#T?uv_>d!3@1Tk_>9kBv(GZIq_Kz1D;eh3Ix z$>U*#oC2{6i0N34tLTYS-h~j}*uRiN^gP*lH5vP#k{+mr%r$aG0#;;iPAz`Ac;x? z_J+}rRV%o4^mqbF$Hs6+6=BT~yjo8#!UsSIeNVhh&TSx#d%fa%Y69EFaLvH!$9^=T$Vy^R`=hH;6sj)$Se=4>cKzw zp;zH}t*acjtMHcA>RR>vdvZYg)Xhk$M-VX`Q1^7?aZjG~qI(>j8&e364$-g0&D<2v zM)gIfy_uainhQC8By!yT=j5oIR8#*{IfSVU??UMIfl77LEs!b?b>udklHpCKt2sDv zGSj6M2PZo^sx3?eZL-c39TDtW5u9hkQN=#RaxdW*xYXu*JN_H-|Icp}{w4c1df88! zs$$%@+RC~*+^-AW#nT#c*X|&!y>{nT^T2f8_|fWolGVwLf6h!YfMF4;D+jhI#{$%a zJ;aWkbZ6vX;{YQxZx8uTJRnd-0wdmKAhCV2PjL5T`1|Iw4z}Ig-?W6H5FsoA{nc z>@uXqj&3hhQup!LJefq7JjPMXR(|~BlJcPDD{jB!=jcuBBP*Na)w*2fz>iyfK-lzpOOm)REmRlgB_uaZ6&4rEzG}BFRO>(fkB{#Edmml( z)XLhbil@Sz_OIGp{l9Y5VKhMZ#~@*FHUAQKarjpF(9SF8mjfPDPlg29Y=x=n41eex z4pRJvhY`AA{>03=@M#+DSNX>=7jQ~N@^1zw6Rd$u>jik6>#{=#2WDXUVDZOYO!lyz zqRu^}N3mOgRgV7{7w$>_+G5=r2zrIpYjQ;ohX+9B@)9lpx$@#iNpRFNkQzsTdGy=< z#o1uYUSda+fgIVQjTOelWiFLJkT3^3D3KoMymawng3x2u90}9{xL&4ZX6_#~^+C2^ ziU|=Jr+5%IiuDH>!aBq$#?Be|MVu~~#Ule`IEH+*0Y5841Z*vuT{`yY)dF{H7xh{T zZWPIf>2(>U%k3Y#>?$C7pbcS>bJ%gG@#X#^PxR_pbKVgMaaF4`TQFQIutiJzFv(HA z#_2H7+|zaZhiKc@P~221jZsH_M<$_*f_KJV-X*5GO{S|DVrNa;i`_zbT4l=_bcckTv+7 zgtgBivCPz<1id-A*dpf9dw()6&|vLzg@5YH)IByYTu*b&ea85wzbw8BP`!lFmunlI z)z^b<+{Y>Me@crDJ86OCfk00gZJmmXChMI_e>E19_VQ=ce_}u!M`=?2N3d9clrU?s zJBu@_*rnxpK={_g*OG1b4(-qKJ}AXf6~twntP*bZq>*IO#Kn>Ru`amS%LSVB8!Ej! zpYG>F3ej*V54LmILOe+gg`s=m9r_31o?v0netP;9&zo%No@a*^@#jV0J4^dzpubFa zl(EHVyL;dsVddUO$^Bm1Bq{$e^a;i!Dznf(%nsE}6ducH2#k9~b~l}!PFwSva8;r; z(b@dMO5GNCR5mmi#{aQ$%^Br`s%jJ{rc<6*QL0JJ$| zyy54>{Do8n*E3?#zm=mD(Lu5No6+^3)Nb*C;YgM5fA!0~vDX)LhifkG4#9A6_vpX4 zH=Gjgd4AKESvKtr|4EZ3+#6nons@9Cz0nyy%FY0J&@@$CR`}8<7~r~6MD@`(gn~me z725Z|D}G_Yq8U&$!LB1#Lc6AOU4kLOcg#1UzPYsW*_Zg_s)qhcWc)3@IDkQcq5hVR zj!A3E`3c3@f(x?rC>)Kh>_TDcp4g;^xIK*b1$Iy;XvX@7$Z_jt<&m$9)Y==0$CX!Gz}(QnfJx5QDzO&{*v z$MPPEML&w8lmp`auQAJ{{jbaZ3FCQDE=mh0j~j{z;j#tk-h;xY{kMcpIx_z_;a;!< zq?|Xx`U=n6AO-d?AQOikj6^K`=PccW9I1WW*oyi?CB%7b(tudrBP`e7Vq{etMzw(3 z^!I}iqPPb}o*22&-y;4mo}!fP6D+P@V~8g3UrrW>RXsBh_fPlJr< z;o4;rumGrT+5}o3L?90$WP&Z0X&M`Eh1fFr5S~*lPwZs;Ii8Y<^8BSO!Q}&D1MZ96 zf}4C4e;`<(u5il@1EO*pD9xF5w+<_Wmx0R%SmmhZZllF2a zExH5){#VcisflpJ<2Durgg+#KR?3r`)XSm!T0*<6mu-W-qLAYG&=~@oqB3DoH9&^H z;QyY~AT><7UpqkD-mi>x>p}O2ADW*cb-(3Ri_5MFTcOMiC!oAKR1r>oKNl5Qs4igJ# zx!2aa7}H#?zxp|xRTQOs5fx?d7Ng?mWpG!1Rs4Me|Nr0^5vStV36*2NsJ@B6_?AXz zhhlKfJA6FJ6IU`n9HvfNIN4%xyuyN)Q*m7&@@aWs5aMX60~GE;MEo~A4!`~;yj2Qg zxI17&y};`_?3jgTUl-R;=5TdfLh}=T9lX*XL!X29F4t~R3`1YjUdwq^hvG*>%Vlk? zmYghqa6!#pqD7ol^72s|d2V2SD_{R(OcvFVMAVPz!pfj9dZuQU_pEpoWx zt+925q(VPXKGeq>W&SdFdx5Sh_s!%|7tir-$d0*XbR>=?n-6M;M{;WUo_P@t{AlZ@l8^- zc!Kw=*bAn?e-T{EQ<5yaA5h*9Nq&4+6ZcjIWvI& z5swo@jDJ3!%^{GDFICd`f}q@&YLf*Ri1@x7wh7}2NAX^m6vAvH!fC)-PHm%Ni|5O4 zu>UMF+PW=EWeOl=mKR@d1J|I)MP3sC!zIWv2Xe8k7{~X~Giq>y(7Tc6{$9y&bKTgwjs5@MFl=v%q;A_DM56)aSEBQjAA^u`) zw)v_*2RuflGR4pU{j?u>tpaT^V3r5*_h*uWcWuKb>s(&j5zh_-y=DA8DaP7%WO}}~ z<5KZX7QU@xI?@l$^qrOSLb4(8VtjV&t7eY>HE^4h%Jj1ONM1EP@o6ccmAoEcR!$DS z48!V+>eGW+ePY_z5YILqlu2tm6!*bQ+A9W*@qF9Gz;OJaO!1@2Lei0jFRB<18tQ!f zg;;}m(Vq<||2CDmqC=fEg6>jzxia%T5krNKl?8c?MqYz=y)KnE7;?FC@qG_g4?47^ zi@zNi;qs4bACx*N`sw1wA$~}>Tz6)!do;wKZ%SAqvRn}^Q;`1m_}$j!vbSw3BW1homJv>w6pGTSc~B7wg8L%&iZpdIasm%knise_hAX zZfq)ZRY;F`HyuL)%QQD~pN>nY2JIWT&Rwi=uHW6C+O?exb0_3F}>>igWt=d*JP<9H1d-B@IkSrXE7 zPH|~@=khO^Gg`rmH|h*{rSU)ECcw!Mya;d{FvnuXF9nQ$$Xn+S)+h0;K#oRuFvjuF zm=UBa{=-8_ z@9=Cu+@F(?_g0uD7{{T^4`DomYKt7atFl}9be`Ly_t?pe^%T}q!kcq2{^Q`gLD<1V z0J}D4{7}HGSC)rxDd1rUhs)#Qc!>THjdS%8q&tte0Ur{_!{}O%**c;wF~8}Edj{do zy5#cYk?Wf~@nyX*EssmLOWI4!vr!m+m}p%-Ja0Sl68Sh@Jf=GE;`q_2U9E4(NQpjI zjCkhDBc#KH_PVhCkIz78$B#!nwOkjEr7%c1bc>FXAJ0;%4i&q4Ey)yQdGX+6ljK+2 zx%~%a22K$TaI)cpgHn#LF2TU#kP*nn1Bh#cU*FFBq8ORPSaS8o^LXTK=gPoVqP|jg z9>D9=KBMg1!Ys3S@}M5Z{)^@o7)fj@R*1`U2^g||L*wxT*2krEd^wOjnluFTo#QFv zRv>vui18tvek=vM1j`YzaXP1??wtdYr(v$wbiue>WaD_cr5Iti26A|wVPSfQA7JSZ z0I%zoOU(Os;sV65+*nC!Q0AV8Q<>`r$A`sB#7w-XOq6v&UiQoF4tAf9XB{&BwOfNS z(}oS^Jj%v+Zis&YVYaJVV^Mb*Hx6-|5Qa_I*?JwExmC?+)+cE{emlx5?Rv>_-4q*^ z7b{7}N^@gnDBa_*T5cK~FO8SE60&~D=jOk`=SqanMLK?G=GJJbv*B5vq~`|PIg#;_ z`P%v%oEg}uKB*H-KM;Etvn74etib9WlDQ70E22`|W9hiZfe%)pE-sl*r}8}+eW`N+ z!G~=W9-CRuqw_t_eL($A*e;#cEGV;%>|<-|C-yG$`b?;vRN1F~?6fCt;DL>CbyXEp zEBj2VuKi+NO~qIngV)k)Y@fQx6*YAes_X0eJOTI1*xpY}te;+6Syfq4S2?|Z?;CHL zKB=M(Z)@)}wr+~|`3FZ74=O7L`WCOMa&nCz?(BCG{B7|Klj^5TuDoMxb!~m+lQ&e{2E_QP>Wcas@H+iFCREgpBcf)?9aG2G zOug}jas6&)imJLB#!alKsvKK?2Z~6{gejB8;8{^ScETMvFgNv<8!A3MzNYwwCyH-) zsIK^i@x$)D)2o~KbY*$H$1`s=^|c6?~ZT!UAI-I1OGG=l$UjENhmEu(^Cs2hTc1*e8}*@PB=x}`{1wQpQbnp0a}+@b6?hoSclzI({<^1Fu)8a4E;vNBJLG^VP0 z>=(V zgq4St&T1S#aq>8xP{sTI%RN?)m3nN&nNO>OlU zM3arJ=xnfD6ebiW2ycq3l=_NVm(`@oNg_HEO9M$8cdVm_N{8H4N^TINYMiiDPUX}_ zufDpzqAHtXHcBXkDRjW5*Me(hqX;#D{saOLTUm?4vQ}EclPe}wvc1tsYK5y-TGd4A zWhMKL<`q)NF;A6`t)5gDVE*HqM2PIh%)UM?rrCQdF#D~zpqN;rlD8e5IN971~4WPzb?ydb6f zX-$SoimdU0kE(I18Z2jLq3WKRGzN-UHwD#99^)!&Y-Ol)VR{HwURyWyqOx9uD7Pil zY+1z>RTC@f0=f@lR320sRh^?6q_6ktLXE}x&XReoE2{t}jpb^ObBn+#yVMH>g?b2I*DHwY z+?H%~^s*^Byow%QDp^RugSsH^i&(3c*JPD_@{~!g#=P+r6J39vTv=ODUm27}8p`#Q z@``#%AMPQ{jKh^{7{c24^>(PTg`GILrV93r&`n0+YAc_B!J++ya0f<2utv1@I&yI3 z#2^NX$__+QeU+F_wDz;z(6KF_rW0Bx?br92VWy|Lps+XgmnlN z(yXJgwUw;4X%jKtjIXMAq7L)fH0X2{2CZ@O>@eEFWbmjUu6*T_DxR2#SvA`&<#kQu z46E9rJLB z(4{yuurNp;DlcswNyeeK97mvOJxXbmH=0+v+@uN}1f-jUi(zW`J&~oshKiy90r)Dg0>SG!*!3G zD1;l(QI%Tuni}Y~;SA});as7HMcN8jQyhKttAQQg06zGYcdVYYSD0K zzq@>=X=}2JSQI&+$4N#~>B?C1S86s;Cu+$q)VJle9!ySJ7Dwzo4;QtB1xg@NtGa{; zTr+cU*9zg-pz9JhGRfGh`r4Vq(*~`ncJ_B|pkgQ@G{lu#_keQm=PVplp1u!%5n|_+JDfg$D;>M9$Q%#5GfaHj%dkUdYdT}o>PgMw4#-~ zVn@Tl8(&-T#3Z(l^e(ofL}_0Y@j^i+P$t@mm{>H*gQvi*79#l6>p;o14 zx_n)&mXil)vNbuW657OJMvQ#hhHP23vy-wzVFUfJvC;*ctvJndx+z&nYiJWYUW|7t z99}?lGPRhYC7b>KR3-ubv`iWwj`y=#xm{vhKj(Lu!qUoUI+JdRaMD zn^3jY8mhvW1e;6mWVz~=an@F0NFS|&b54RrNwv9zqHM%eOIZT6Dw(u$Q0+D#fIDp83NaU&&6RH{THl&DmR zMu5VcPMia4(&FN*S({kTjMgV!W45m)4kpaEBEyy`D@Nlmd5QT^VrwEY!fe&(5{=f# zQbZn1L`ISI7KSK^Fp7-uq8e@`@12a~9s;6gCK{P*V`8mC3G!v;wIH#QajO|8VtVF4 z94E_%ncu``c90HfB&Gy0$KsH?WSKb@KTFc{@fj|)WOzJwE(Y|u*phf;q*)SQMxtf$ z1As)L>>nefB_M5&Da-RrG+YyvAkk`@)!I1DWe+!7uu`w zv40`rUt-(CsfDb>NTjAVt^Til5dPX<5sQr0JOovusD~YDuOBHjdr8H%=Fc4T4>9Qx zf3?BmfH{l@@kdPq@@D8XLf6#bh(Yp$EAQ!56Oq8cUOj4}61o*3UqU^oQ>NX3y;c*B z)dAyvW&(n$XgG0O_=c2{AY>&c z&8o=vBjEo1$e}1iITSq-Wkp5L146X^%%R9(5*?0gk3#;|C}>N}X%b03=OQzZ3baN- zWkE=CTo_#vjg&EO2?J^JfNUelFq*81B2*THM5fKrZ8rbS$^^og%RBF8fF$p{t<6+s#<3L zF|sNmT|lde`Nz{BNDoKT41ZjE$K%h4WJ+R+u0;Hmk4MVPf594a~n z3T3gn=m(_!LD8O~Yz-R0mN={%zE>BmEkcE^1+7&|v!Q4clW!?{J>b|{_=`fIeo?qO z%u%o<4(m7yw$x!u?KII^xT_EivkM&T&|z8&j}=DedFB{!c)B0%uRuBW6z*q^`wI^g zqU#(iJWS|V;R!xY6s~}ab4K zBVA8)g{UXM!HtEp3L6U}qs)RrphjWJ6dgL!byi`t?=mBiBM`a0P#abTEpw{tISO*F z>t>cA0Vx91UEp=EcJWmsw z^pJ_%a7DtkeK;+@B*&*>rmlIvU z@PqLnlNX(v@?A>sl+x|+;uf%l$??GiZ0({ z^!K_P>;enpV3#9+I>eP|+(?ZJ2951qTA6NVmo`4ym|TYVbzL?)4rWWiFA5O(i-Hy4 zEld>!#RV!l&(?{ML2XH9RY_1~in8U{QgEh#I(tTvS`qOu#|lm`moo+D`8Z#&9Fmyj zUBFDb=Zr2d1p@6UI7pg<1;+|(gD4-fwBS`nyjrjU5oSZdj|ly!U~_@!g4tZK05eS!zzmWEq3LLKK?^yy6l^R&m){8fxFTiA?9efz;HxD0YQa*?RO?HyB@XKp za8AJj(k?Dof`<~e=KWh9Q2&+EWe4%rt;!sG`7eea;&>hc6g(|C}PXPR;r6SX*JJu-8sS8`CFuK*S3MpF)O zr4~0KL{}y_H{7mC{wN7EdhMqOabxCBrjvVcBML3mdCeCiMnQTtBGXGX)G90Yuumafn35Nw&lmRU_Wo>-OSG_oqW zhR@(<&L?J3)LF^pNsMZ%lB@Yx4JyA*M1yeK6KxczEpgl}n}PZz7tOx}Drg(Qm0Fx_ z8^M(c&b7_L#1e8_lGu*5eO8Wzi57BfNo?R^8x67{@na%>47zNYNpFM{t0g7HYDq{- z9cf^g2x)Tyiu8SN(Py&Lvc4h&Bpi} zj!bA_d&JvG+#a9J%AB2;tNsu(H}MT3zL8iMa*%);*b;|z9Z0aH4jXDCn@80&ikp{c+X}}r?i20G_7O_0Cf`}E7mEolj(w3NMDYFo5qd9n#=1Pt#LntEU&*0$k^t_Z z*fEkomyg9xGR;XQEisZn+rj3rBldH~|2%epIUI=nn$WLf2W<`qV~1Q0Mo3FQdPsTO zOwDdMaFA#p)0P-XVVimry#>R}R)49n6$BAC`EUB5d(%G(pMp7xxNIlW$WlZig{wlO z+2QZ>bEbMVUe7OiJ(roCU;z-}X#~j%V7&#&GBwph6l$QSn~(fCbdk(8^YL(!xB2@h z-vR#!AM*_|wUVFrXCSQPM48w89gtcV)IqU;$_~G#HNA^-{I2vN&iIGY?+|(?eI$+Y z1rA2AYEA!wGyX3?#~EJ;ON7wP_@+7cpE*_jb8c(8^DH7!C5)me(3-o8rT`jxSMCgE zJ0rb~`2n#ljl`~~wzVa3DH3nXjf^(iG%<#;UAf1JIG!ts=>=k9?fm@=fQ+$&>FRU~nYNI3 zwsGLbY+)a2f%6g~Z;$OI_gYJjyWIqHQbw>zGgwW{@X_c%LWUs|&zP(0% zrIxHlxIx$PV&`G_12<|`i6yl}l^_bf!_oM&lRamTSxV8C#+FmG<+0VlxFF=E%E>Nq z1XZReu@BceKcv}b=4(m~+2!Y9^B$#n4-QdRQ#TC&V!#AD42Ty2s1h^aL5T5%@%S@- zLUgJW#xr+60^%=BaNT!-znDFGvA>CaOP!qzk!wRg z*2Yvz3Vx$?q#tD+Ey4+ZgvihNfK&^SyIGi8PUg!~D^h+PJlHEzs|c@3tz)e4pcrNi z5munK=v%C*x1xKaq1qR0iNgj4e~|Oa$agsbe>ZZL)A!j(qb4?u(H6F43mmw@&1{Tr zA!19kEyUijfhfYL1dPr^(9O>%BaE|+(M3@p7Dbz*W{TH+nQ12H5#TJ0oE0L;OOd=S z>Z-FPf)`H>GaDm2Bevy`&6Y@e1g#|Em8ei|RcUrcJ^&@+*1+kk`M|qv2S|!)S|WJ; z7>ujP?5Lk}p2D?gfaOG*jqpuN#5PFh)a5LwrR4Bi>zHI_L>pMwTbwH!tmmVgT0j=n z+0=11TPo~8>ELd@*Z~biolq5TABxLHc4}_QUq&axviunZcCs^q!qyW}+E)~XeI=r- zkU~|aC_9cU&tFGg?fDn*kj68s^Y_7BVh-lF(`zENBq(@ViL$%|1$P`#Hb+5?QWPAa zp=w5Ltj=GbPpw~{znK|sVJ7HC`A7ITlK-20wBfP*bA--;r(gFBN~_+Q^+@XHyvMXi zG+Hyj^Z?&vc$3s@kG#pYe3P1M1s4=-C!(yBZIS(?+8@CiZp5D46FC@xWE>F~1f2_6 zCWj&?s9~qbgsO#I8KfPiT^1q&1_2hy)bwG{^fTC{cxD*_NPtQu$;!xD#;uKPXRcDI zDGB6lbOg8hjhJz$Wn)N>&clBeAy317`FPM z)j#R7@aSa9>mM5VfGJUot3_Z+72~Q9m@>t<1*dlfv%8|d%gzvC1Yze%B9ekgO3Ol^ z3^z%x=!HMm_jLl{6?gO$88|4lQZ=s(Bt%|P%_zp}uF{(W=hn|F$IcwCbW0ogZ!qwuWU!Odk#0b!yT$zK%8ajHkE1+a; z$pcK}bYsbq8@_60SF1O|>^A=ZRPl1GzqS!gXYN0aZO zYFLCLNCsN$cOFsNgru zb2#gr!2t^#r6@D4CjJsZ0~)XX?gqHaVU=PG{~R{4kDbN zX2c@*1EF>QS@Qy8UWhFTO#X&gBT6jUNS#vT?v4tdquGkPWfXVy;?THVf3$x2_ z8?n&2EDOYTy*13>*SsM`s(lloz$w#~J~KkZ{? zJ?A&M^-$SR8s%tnDo#4bwD4 zmod$<=zf}T`=bX59pnj!&>;+bK}36qFl^vCiW0MgDPd4Cr95HBXH#BT|hZ=h+<9Wx^#iQS;FsKVCh&roTs%+@HrCL`j= zDG>?n0v*jMBxX>vwjrs`&5_q=7rYjM#mv3{K0713h}uPzoF+NO5Qhjvo{9W{k$-@l zAFuW3&!WDZ0f^)%>zT+bGD3ds49PJQ36-(X7Ux1X!>%6z$BzsMX-%4&bQ!y|E>?I4 zjEHHH@nJ8Ul9!E1rsLo8zwKRPheI{t>6a7R2tqH2e3L?dGqO1t5|@bm14|H#7#RbW zGh{p9LbHtP`DNy;>+k5x#|=%7A?Q`_!c*-DXK(Kc488$QbpM@Nl;~q zQr|qdEpm?iLvi%Wqhu;JW(3FXfO;6H%?S)K_*v8=iV~(4HCj=UwMC6kR8a7UIUAqF z*>x7TOmKcMv5L^D#O8!Q)o#uphy6U!2On;H4yIrbA#Ws(LJ+z6O zWz4pr_O6|b)dQJ#*z4ZOw76v@c%nmNFFjThxvAGO?5AJI#A+pYAu}sKR_hTvD}P?T z>o`X;$I0V3dB~(OKYxYeW>(~{%#YVWB1pF~|5Yq5$$v%u8d6~Bup!BHd%BH|#}q96-YS~ptMWEt?Vt%yrT64vIz5mFDyoe+k=I7E z-~G(~^ntW9tqy<~;io9%fxL4;xGi%aWAUD@rEy~5JdXx6X6Ev+!Q2d(+HI&q>7$hX zX!_l>j)lvyHP0D%Ld??x3`rk41Q(*8 zyiV$lVJ+Mt<&6TjM;n;Ng`{TNH5LVK@aJ-u!-b^i4eD2AThMJP-AzK;DjJKDwfNtM zwZt;E_#0RfR-lUwl&2~E4{YmyNN=UPerx*2gnpcUP4`XAYw7JBT;)PuqU1QCt#t6i z37xIKRq3^4vX;(vJ0mSluOMng`rAZ7^fl@A@Ye?+5#8d@rV?^<4hnFJ`wdv+<=P#F zm&oj;bW`Weom08*<8*_0A9QrkH>N>YB7_|r^g>n&ve{`m=x37*=TpEh`fQEVjA=-{ zOyAnesqHDJ7J@1flv@UoR!K{NZ%L6`3!J9Wd5^=5x}C87nU$$#GF+G1%*W=`kKqkw z@z)`gJFhB!H5`LiUY!mm;RVh|i)8f4!h6gX{QR>THfInE}(#wGCAavB2HvY@b|4U{{khHM0j4eFdFIEXRSEI}-c66f5ISnO4k zjUBwsCXa&>MuzaQC8xkUa@v?>Th3uUQgVUN1*Ww9t2t+54(u`6&DxlAkjroV;m`zD z>cg;7-^rxMbI#%6>Y)jXd4Jwx%dnhZhE={))`t(XOiAwjXOR@##Lc#vWru&%xjC6AHmF`{g7XC%JP z8U5>tJ)AE2!_)~>iJ+qM9t+`0l}yHa7z}z{VP#^cwP+${U1AfNZ6Zn_E6dP%$sJ5agLdV$^p{FOn?{R*2<9q>D1M`K}xWq>NX;5X9D zZ8QgI9?rym9Ue!q`R;0d19-uH+JU^o^W_0^gz1hj7U%Tbvi&I2i3rH5V%%C^)3 zuz)csC}(?uvYBYs?kq0;XT_G$ov@4|*n_1aa${_6EdG=lDRX0+8Gf3!z-GE1hQa*+ zkrYMp;0K$3sS$&0DYEgW!7`f}YlumpA+{C8Gh5Yxu|3wRS2DC3uxgNUG@@=mWMi`^ zZl|JMSTt-sE{NsOr0YqMY~H$=i3>PnFjA>GX@Pz%wq>2;rzQ3S$gfxsO3z)3c0dS& z=q9s+3kMgH*~H>7n@C9L4ztN+!jzD$@Z;u$mi+{x{kn*q-cOm+CQ;`Vi@|r=VDWkl_{T4^7*%26Mjiuo@>|AmV}GNiz^$6X=KnF&Dt7VK#A7Rg6} zT<9>P3Y}_|(6z;P$8)~~lNIK%h_o9C9fHm@VUascDFi_lVT20EO!vxdAlzp{rr1uS zjAh6X$9*t|N6ZeMACmJHk!*2*LWzS&Wo9Ur*y#{pH`pN@(ylRwU~yzXNeQ438HDshD(ywg9y6eo}(ffQ3!(~w}h-$r@bD3AJx%pQNQ z4{e;nR^RLY8=}d1kAJ|Ld3(sqR@D)B#oX%PsQ<2|J)#t-2^$jGHb;I&N5jt|=K}w! zph^T4D*EQgHf|YhBcb)#ZRXZf8TQS9V$X0tL)xSin9D8hPys^m2yKt-jwGou0_~3M zi`Z4!KClTQgcbZcdnw#rW?+{_2e8Ekvq8GU!N|WO8l>hx@ z=|jfStHii4FEbqxx|wgLUKPMwA%XBBoIqpKkmmA@JIpb$Uv41Q^ z%^GYs+f^Eah^8s6Ay9gzs~lk%<5+dQ4*6X-Ce*AQyi_7>2aGWJEBsb_68}M)<3AE@ zfiWbg5=B|7QBb9dvc{00$`obQYfqw44ze~T+w4JBb2M=Z>?suH8(ctbuml_BxhWtF zqA|ZTCO2|7ijmrwE-B_^i5snPB1jN7O5;XpoElj+OLSRDH$vk$2}Q(wFf)=3wENa3 z*CuHtY)bARxQjUt^9;$3C1xc3d82Vq05l9_(IVj2-OG;GDXgKsla!5(_+vyjRY`Xp^2w;cV9^b0qf| z9wF3dMFnkiipSkcaK!!~C6P#xi0vml6sLM0!4dp@JUO-xC&w^D(N)4(W+o4k*&89G zY0mYhCUKr5_XoMCs~;eiFtrVi?A+~Kk8aQXS@Ti5Vj>hBiEa!F@vA5rW&>f#uo}V2E%)k&&Cmj=%Fu@2WDAfe8caUI&Cg{A&lA=#e z#;%X|MCh7N;ZN_I@#nKcpfmU+Mu(~}^2SYHEDV6;-mqzpu0Y~94;)d99YjAJSwU~ris&YH2FP*e)68-?;3nyC z9IE(p9Ly%}&2aMQ{KKBZVjS)mxC{ccYM?dJ#`3pC4sq%`6!|SD=>EN+9LvmaQ5Yz4 z|6cRFp2>l*W=`X{iX=ZDSsazXV#+MOpDi>VWG9XxMslJG!mI#z(zu9)+d35`rY=B?Vxrr79TG*bwW& z3>|@b9x*P|Cx9tYj9V9vd<-;?eSssG)StQjGeCT1XebddC5my0ZvHH222yh+ACEI+ z;`&e$U`iC@k^obx80%($d`Wf+xrfaD;LR-R)C-zYuW&4SCDl@7trjCFT&y8VhjkGl zq;%lBCAE|3cBbCskosn-jqazm)IlN-rcS4@htN#N-YB^IcBTRCOz);QZg=`19f&6j zPxIpJ%%WL1w4xmu;`$A; z_UA2mPI6^H86BZSBUBWZ1cf-3Iz|4c7>n0T@bEDfWR%xgrnpEoi<7{?^ch~(YtP^y znc87UE^#=t#yFf@VO(JN&CEqQRE2YqH`3p&KXW?W&Wzfb4(C>w&iS!OVP@tnrE`C2 z-YYza^GY7b9tPQ_d^|SEQ8r;DclYFs+P1tM>SEUngvo+VOq%nMTCVv$Y<4)7*uQu< z=+$NcF6^O@LIj5giCARW zOjG7%-imxVb0#Bba%I3WGh3K?7*g-#V`tu**=u^HEpH!@`|^Ip>i88i2&(b`p<(6_ zWR+%DzS8W{p(%%CkFt!`vIK*@#Ers*O~j4TI2s=2Y+j??3Ls=T9A|BG;$UO_d8?l@ z%k|pl_oRS;Rgl#zpc|}(73Ymjnavq2%cgN@w>k4BE9On4V-%CgM53E7a9-uD;!HOPt%2igDn9&UQ(K!CV_wmSJR3o^~@`^}kk8Gjm1@2<=2B)k(D`Za*x z%$&~f#S}pr+h{AF!{yauBt0gD0jz~t8MM}+yrcM5c%uN~y-~2E zKsuUfB^AW8ifmePn|X<%t>7fyFJRgWXJVc(vx;Q8=twkDi7+^lXrvMaMR5G~<{n@% z4&)w&MT`3wwDHYJX7Y%p#~{h{k7#;pRBg@OLAo8eO?KzWvXh28M=V~Fk#0`QxX@Ox zt55>F3fnmGv=yFIn2aTY@-q;0SK+g{%Qjq-H`}_r!FLM0(Pd#*jG}A1;^hkugU3NW zX0YHiQ!f6Q!(EOu`SC8l?SfAJTO?;k0E1b`9f4VeEBG#kw!+;MYIosVd?m$O;485Q zAtYi|GV~ukH|Vl4v%2i)8odL4<*wWCUI;MRS4eQ5dr<`vkA`$Ji-;u?JhOxStS&Ei z!7ZO+af-a$WupMHAH1;ZD_w(_SGukhK$kx*Z}+sLlmoL*v%XWs;k5`4o7OISSsnX3 z)k>q*N@G{l?r>Djc7?ZhMfu=AKi0LKZ;xp2dV$dwx-MZ|EiYW9?bxyA_G``UcdzF_ z9SoB?z(X`tJ!2}US;_Vsg&a|VqeLh0V2$A+)S>=!zTjob&YD6=SVw?ZJ7|0U%n80? zVH9Fkf@gNr*Q~I{hAJXOTfwi{$9`RaH%ef+iMLSrPhv1$NJdnIeT4$I7hYh~i!51l zA5D(8R*Y6^ZE=O$YI*$L(F7=RKF_yRs>pso)zluz@f3z{n|W+AN)mOd9#N4>mLmCedml+q=;J z(auQK0yoV^%q%blo3&lnIc^w_Q0FJ*Egn#6+|}BEZ!dnZ4E<2T7}{Z}6Dxx}?9Tl` zJi{6<)+i`rI2>W)aq5;~dQ|Yz1X`;)UYTZh5#%V(!0`vvCaxDZMS#)<0P3e)_WYD6 zwKNq~rl{;j4QGtV9<3&x0V=}tqrp?)<$6tkvV4T_yP*kg7a6du2(S~W;CXgb5ir;s~`YXnxVKq zcL?v}SP(^UA=$Lrz#G~^%uw8)?T95ph$SSRB9`MotKexKgC2%c$n87^J=6TN!D9=F$UqTtGIK7rZe`;J2bGsF7N1RDY}WALqzmEQ zXckvOU)D@qea0S1|6VdVLm5u+?6UX-Px!w_c2E#xAz_?NMkK4%(b<;XjZ34H-ux1R zNs+L{evGJN=6CL7H_qI>N(aQNiP=0?!5>gKYKIfbMA>0Ls7jT}&WeI6Q&hJ13WH|8 z-4V6RD+O?~CXNs~l91lEH|WXz_*4T_m?E;_1X zi4&wcK}L^&5jX^^g4xNrOgcA-xH823D;`Yeqa!RzE~U$VX>x1QpNc7YD^o(he7yBy zD_-t_`2cy5DmfK(F5Bfx;W$rDeNG{Ihu4x6qSz451^bE=MPsta6$y9oRWWZ*JsRwpcVIVv)5FXv*=6j$O z`jod30=65fvw2Mj6L3ybaF}T}Uef~knuu}=Zf57q=SiaZIj=JARm25{b!Ow36l7dN zdR_|BpV^$VHAj}z+jCl(#TlMp!myF^CvZ?3$&%Uxvyp%^*Y=z}^4ybifC&!dyv;1% z#=CaV^!f@Nb2{e?p))xbg!BUQR{cV4AL842aHEAZcu^SRWGNrPRV^$2W}Jt5jHA%X zoXz@v8?%}hw6xC|!zmzcZ!yb)x&wv++czE>t>e)scIRygU=e}P``3%D{XG?Ly7;r$_r3dV{@#v<+5 zcKD8m3N@ZVUS?b^=%0KVf1aL=+k`mlav?I4hLKnTT>1pdA8b3YEs96;@8}K8d;`oy ze+m+9RG0igm~j3Sj4Oxe$;Yx8GLo7?>M$lQ{$Z$??5`tVY*&vm$Cw=Ms&H}+zt|(+ zkACanbJ;=NCVE}zdA$;Cmw8??aq3Ps!)HU$xLvX|iX*MK0=*BGAtLaaN6Q{|IMkmh1bNJ<9H9v4#15#$cWqL>r$A^@D?pN zUQeg6DcG0`CqJA9^6mzt!t2HGs<7F4W=`J9JRIreTg>+69YnAxzbW4=!NF|a3Er14 zw|OBk-d~3W*}ejtiQua#4-_3K^6=T+p#J!Z&Qu1;vB`m}r7JNe9Eu!|$gNy&bC_^> zbVU?92CGmHE3k(EgBuskTX0>5S7lnFa^Zy+tZ-@Qd~_D-WFh{;G{4r!#R(i@!W9K` z%ADnidtBIpUAqPqa~RjZa8&Iig0opi3-FR&9?3rx#|ix{xY5Vs`*JX!^D)fk`Iwa9 zflD4rn&W(T74H(l#!DVgnv)VdkvvK4>7+L;)CtX)F?dmfsd^eWclln|a}jKe%!2TI zMXWi7^T<4bd_Ib+RSgiHr`P1*8JY&~n1D^+5`&Sw5n}Q%mJM!#nPaw^ZN_ZJxho!q zI%Ujh(~jVA9JRxHZq7^FH?dp`QLgPc5hd0y)ZiH48HpJQ+zObF679heNOKr3qt*?4 z>|M9XZuE?#Y-95fD$ZhZEJj6Okj6;03c-dH&Z0J@7C~{gD+2=zlYmf+ap*C&P9bU*1mNV!5RKc-^}t?_%L42`>6kQMr=qMGuvNCl<0YShx)qKJ5D@DqCVr z0`JP&lz_1|KM7N4JKCT*(ULIjIH6!@w$MOYk`yB<2(Cz)m9Udg*~vvoSZ@~)Y{CSI ztF$ZFQ2071+NddImZsLAb@pKs$sEG=KK69b&AEM~TP?ED0*~%y^x_MAN8il6#yo6V zoXLoTx+4;=9&E;*g6v}0=mwG>g2x)05|U;O7#)Hu8!aR73c&OZizAr9*}0}EcRt}= z`Qq+6b@N6OBrMYGmbO*>q1>$wJG4zt+T1k6Ge3<4e9F5{sf(FCIA>I!| z7neouPVY^deegVZ-JlgtI}-aacALZ*8M}eM_;<#ld}~Ya8=L(3I!$>k)@$ek!{1PT z#1}s(fIJ^d%LA}ZJO{fvSP7RGIv5{1#&2H$>v55D0gR8l;@4Uv5Aee^ar`*>@aKE{ z%B$xc2w=^aQxt!`hmURI$7zZ`-^pUOek2PZGr>FY!A5WrJ9(JulJ0yXrfg((ehyPeMHPgBla@E|>aq`saCF zy{CY8a0D>rI~Gd69PqoH_&a^}pwG>ScW?wS<#qb#A-|sic0bnV&jI`v{Md6@Kg{n$ zC_kouoCc!&G=4$|X8gFTY_v^3Ap|r2R0t;jqCjo)=gXX8JI;Q0{D_>~k!e#&ok2$pynjN$kY%=n?7w9&|q{D+0$`yh|| zvA!6;AQV5mQ~cio{`#k~6v){73)Q^7v?DS(6;+Fv?3s)ao z3CK_7Z4JTmLH|?0qY+Q~6@Ytu+LLd06aFFKdja2P<5~VQfc2;R&V^vc55V`}UHltJ z?|!TgmS+&+U3;^<{7$|8^2CI_3vjr64*+)MYeV`nz+CT9zTW`;7T`xL{2t)<0S~Zn z0(RMLeLeXGJ?Xmveh%<6HvSWU{{;AE3*QR3UqAh}Jn31UMU0f6mY3fsckq3ncR$zO z{3f~nG=1?c9bq?rd0wISFwzrdc_M(vUxFXMVXi;rS093>b)tU}@KcDt9tkKv>zCg$ z*Po`}8iEx16~*PpG=!CANh>D|xi1HbjHKc%m^GYga7 zf)L!(Md8WxSKzt)Zim$Q)WMuj8Sm^T5BAd}OR{_6-`G7+tS$iyk{0;;DeklDP z0lWE*^f3+u)?Oq1M*%zgBntb4<>R)8{;&H$svpvqg|; z`KkQNLonl;Lom~~gkZ+kd_)rCkEX8=!Hho_f|>q&2xfc{+FyT~{)!OX1MTr7o(kCgsFN=NejW2~E5b~_Boto^+(y7Z zv--^V9|Qgb=39<`gntG2TL2!nFqX!_kE@Az4E6@>B^H77mjiwo@LmgF2iW~ce;eTY zdux9n{oS47M*%KD{_OIMp91)Y#jwFFJQMKis1G&?6#b9=k?>N$FQecN{vp%f z=y^>xemme#UZ?gE>3;?ImF{SB8-E<|8_5423ts^I(QC8yUx0!4>(@XBZ2S#?A1K!G znEY-9{4(bA@izWJz?Hppd}jPOz-6HStc|Y+T#fp7_5A|iiC4i!vhfQ5{}kh8G2~$S zRe<|_CM(Ydz~8$%OTQg(#V0&jNs)dJVD~FV;2pp}LH$4^;ddq!FYT#IT1i6q@=ow| zfPa5;wmhE!{3Y5E1GpNCnrkfmvw;8R+HCuN6YxB=my3TD@QW~Z z*I4@h4Y&gB=k(z%z#m0_XteRC0RI5>x8K6=19m@_CzC|`BmcV*X8n8&u={nv_<3Cj zCjISzztZ3H1|m%Q`v89(_3i3!B;es2d%h0%*P-$2AYk_^M&KOazd?Ske0eF<2ij``;wbMmfUiY<<1IV@ z@Mka{46$%2U_Yc^6989ZyxDEz>j3`-$~w@(F9QA}${)Aze84ZFe_a;Q{FVd$F&e|w z*FOP%7nPH=@tXmcfF4yU^8FO>`zS1mEbuZgn!kFOV!VB#cv@fP0+9zSMceVx~<-s5M3pTM`#D{IT^CzX$_ z!Z%Or@Fn|k)#XoARgb~PP4NxI+PdyMETciBiW^J`%@MYMlar$*$ z_hsJfx7}Te^4=5cYAYZbQ_4p(-G_O{JY~PXsVq9g+3&1tjDAd<>D|}6A&dPCefCq& z_>g86u-|>g=cw_S)-jdJ2VbPU^yj$oO-+7%SVipg&FSEy!k74{vxsEBfgB3E@BM0J zbr9jAuQvxDIt~P&l-Z9L3tRhbU#<0y-~GMlYraU%kMznXc$s)?@O5ANwM}qw-`#Yd z*kqQM{uFA*Pjb3+71?jbI+Xq9sL+4NCr2IWpZON7BkS-LQ{fx>7OIqNLgm;mqBP~@ zcb5)&;I8t!9vo7xZ75$wN2BsPwbBTZ93Kx26i&K?MCr#ug+Qx7Q`F*PwyHVkbamC` z_S2~4Lmqx`&;$408A>YO0d`5t%ZER3r?KR@)| z!FQJT@2#Iem+pm+zIx^N4u7CLJG?+%4lcth#@H`OPeKD^D^071Lrg{eL`On>x#(l* z(0V5Alr2B^jxmg%zSfFWhKlBwvB%at)hUT9ro>LF=@c7oDU2YUBx5Oq&v;9wS^b}k zFSawa6z)=^O{Z27P_?KEBQdg?g3ms)ftXk$l&0f1eFdlA&vw0viRz}{d*mX0MLoVm zTR)*gq$sPTv>)%DHW3u#t16z*4^%VD|EIC@2bHUc!uWkrL9lpQScuIl(gg8h1R=*GiUzYJM)sGZmm|%MB36B`&g&``oe#Y#h2W zx;jr9-ngd6pXy-^w^9&bmt+Rdkyn_sbc>>=IYERGjz!C~Xi) z6g*TjFyyv*poi(5x_2;2Y?8?t_d0aGGQ%;onE|#;n|1uEspK}=(C!sJ+BI%dCNkUi z)x?JFu~ydF&D&5vP0LqbximUmK99}XZ4+S;IfzelnzYQEs+-NHP@y>X4(HWDGwtS@ zY=LhBDvsN>uV(FkIXaJ}rc$DTv{sp3H;g=%%X6}PnuCu{mq+e(ndyasX4zjc04}Dt z#`wC<{)>x8wrDxbrv2O=sJ+1+p&D~otTTQc-H{)8= zmF2@Ss4}tord5~r@*A%HQy-hjERng)j$>gkmu$uILh$Qdck^WNq7Z_t`w370U8!+MZHefss&QvZtt4+0-9jFGKR0S3FYE_il zY!;37fb!+n&zDuNDORt0y_c8cre05^t7<2ktXT))r4^bD&Meg{q;(tXPcl^+vc;G10aVy37j3qC3|Im+_9GpJe z?MwjNSrLB|06nTq$e$EB?uO#%r-_{9LTYjfUhZ{q9LE_gbPmJC01o;<NaQ%qup#R0!OOiR1~_Z4Fx*$4dB{;4yL_7AI8%pQ2WXGqRh++UKm~WZcP?yX zVi^wX7ouGeIPQ?|{R{4E$*CVW?uI@WZeMW^UhWTKU}LK~XYQ{lp$Gj-07v_O61hG* zYnQS;7%_l@ei1p2GyT1b$J;@cUq$GpT+Z@O4sfpeH_3@VCnA6wg{b`^gMJrD*P$`> z^PX_0J)x)TBa-6ce<|GUjNyH~JHYL~A>3CRg`VZ<0Z#uywz#abHxG_GHNd_2%uaC& zTgTwI7Y4YWukI8#>F^l5-_Ayy+hzW~Y^b^90e#T<0q(<3b_yL$rQkU3;D~$pOt^0^ zduk(F3~>E}9XmgEr0d|x-0-mfhsL1RqLX5LFQOffi&zV6?CEJ?_e61D=S3b|-xFfw Pxcg6?D6Y9sGLQZZ_bPKV literal 0 HcmV?d00001 diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/etc/fstab b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/etc/fstab new file mode 100755 index 000000000..35cceba67 --- /dev/null +++ b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/etc/fstab @@ -0,0 +1,4 @@ +# UNCONFIGURED FSTAB FOR BASE SYSTEM +/dev/mmcblk0p7 / ext4 rw 0 0 +/dev/mmcblk0p5 /oem ext4 defaults 0 0 +/dev/mmcblk0p6 /userdata ext4 defaults 0 0 diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/etc/rc.local b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/etc/rc.local new file mode 100755 index 000000000..91630be16 --- /dev/null +++ b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/etc/rc.local @@ -0,0 +1,11 @@ +#!/bin/bash + +/usr/bin/filesystem_resize.sh +/usr/bin/wifi_bt_init.sh +/usr/bin/luckfox_switch_rgb_resolution & +/etc/init.d/S50usbdevice start +luckfox-config load +if [ -n "$(hwclock | grep "invalid")" ]; then + date -s 2024-01-01 + hwclock -w +fi diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/etc/udhcpd.conf b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/etc/udhcpd.conf new file mode 100644 index 000000000..a9f82f01b --- /dev/null +++ b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/etc/udhcpd.conf @@ -0,0 +1,116 @@ +# Sample udhcpd configuration file (/etc/udhcpd.conf) + +# The start and end of the IP lease block + +start 192.168.0.20 #default: 192.168.0.20 +end 192.168.0.254 #default: 192.168.0.254 + + +# The interface that udhcpd will use + +interface eth0 #default: eth0 + + +# The maximim number of leases (includes addressesd reserved +# by OFFER's, DECLINE's, and ARP conficts + +#max_leases 254 #default: 254 + + +# If remaining is true (default), udhcpd will store the time +# remaining for each lease in the udhcpd leases file. This is +# for embedded systems that cannot keep time between reboots. +# If you set remaining to no, the absolute time that the lease +# expires at will be stored in the dhcpd.leases file. + +#remaining yes #default: yes + + +# The time period at which udhcpd will write out a dhcpd.leases +# file. If this is 0, udhcpd will never automatically write a +# lease file. (specified in seconds) + +#auto_time 7200 #default: 7200 (2 hours) + + +# The amount of time that an IP will be reserved (leased) for if a +# DHCP decline message is received (seconds). + +#decline_time 3600 #default: 3600 (1 hour) + + +# The amount of time that an IP will be reserved (leased) for if an +# ARP conflct occurs. (seconds + +#conflict_time 3600 #default: 3600 (1 hour) + + +# How long an offered address is reserved (leased) in seconds + +#offer_time 60 #default: 60 (1 minute) + +# If a lease to be given is below this value, the full lease time is +# instead used (seconds). + +#min_lease 60 #defult: 60 + + +# The location of the leases file + +#lease_file /var/lib/misc/udhcpd.leases #defualt: /var/lib/misc/udhcpd.leases + +# The location of the pid file +#pidfile /var/run/udhcpd.pid #default: /var/run/udhcpd.pid + +# Everytime udhcpd writes a leases file, the below script will be called. +# Useful for writing the lease file to flash every few hours. + +#notify_file #default: (no script) + +#notify_file dumpleases # <--- usefull for debugging + +# The following are bootp specific options, setable by udhcpd. + +#siaddr 192.168.0.22 #default: 0.0.0.0 + +#sname zorak #default: (none) + +#boot_file /var/nfs_root #default: (none) + +# The remainer of options are DHCP options and can be specifed with the +# keyword 'opt' or 'option'. If an option can take multiple items, such +# as the dns option, they can be listed on the same line, or multiple +# lines. The only option with a default is 'lease'. + +#Examles +opt dns 192.168.10.2 192.168.10.10 +option subnet 255.255.255.0 +opt router 192.168.10.2 +opt wins 192.168.10.10 +option dns 129.219.13.81 # appened to above DNS servers for a total of 3 +option domain local +option lease 864000 # 10 days of seconds + + +# Currently supported options, for more info, see options.c +#subnet +#timezone +#router +#timesvr +#namesvr +#dns +#logsvr +#cookiesvr +#lprsvr +#bootsize +#domain +#swapsvr +#rootpath +#ipttl +#mtu +#broadcast +#wins +#lease +#ntpsrv +#tftp +#bootfile diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/filesystem_resize.sh b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/filesystem_resize.sh new file mode 100755 index 000000000..a310e24f8 --- /dev/null +++ b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/filesystem_resize.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# Check if the filesystem has been resized previously +if [ ! -f /etc/.filesystem_resized ]; then + # Perform filesystem resize + sudo resize2fs /dev/mmcblk0p5 + sudo resize2fs /dev/mmcblk0p6 + sudo resize2fs /dev/mmcblk0p7 + + # Create a marker file indicating filesystem resize has been done + sudo touch /etc/.filesystem_resized + + echo "Filesystem resized successfully." +fi + +if [ ! -f /etc/.filesystem_swap ]; then + sudo fallocate -l 1G /swapfile + sudo chmod 600 /swapfile + sudo mkswap /swapfile >/dev/null + sudo swapon /swapfile >/dev/null + echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab >/dev/null + + sudo touch /etc/.filesystem_swap + echo "Swap successfully." +fi diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/luckfox_switch_rgb_resolution b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/luckfox_switch_rgb_resolution new file mode 100755 index 0000000000000000000000000000000000000000..cc8577b96eb3bfc0808b42df1f7f387c12285c87 GIT binary patch literal 12388 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 literal 0 HcmV?d00001 diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/udhcpc b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/udhcpc new file mode 100755 index 0000000000000000000000000000000000000000..7d2cecd42f7e11d92ab78472d95882595fb3d643 GIT binary patch literal 18628 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 literal 0 HcmV?d00001 diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/wifi_bt_init.sh b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/wifi_bt_init.sh new file mode 100755 index 000000000..37c277b7d --- /dev/null +++ b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/wifi_bt_init.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +if [ "$(cat /proc/device-tree/model)" == "Luckfox Pico Ultra W" ]; then + systemctl stop wpa_supplicant + if [ -d /oem/usr/ko ]; then + cd /oem/usr/ko + if [ -z "$(ifconfig | grep "wlan0")" ]; then + insmod cfg80211.ko + insmod libarc4.ko + insmod ctr.ko + insmod ccm.ko + insmod aes_generic.ko + insmod aic8800_bsp.ko + sleep 0.2 + insmod aic8800_fdrv.ko + sleep 2 + insmod aic8800_btlpm.ko + else + # wait systemctl + sleep 0.5 + fi + else + echo "Missing ko files!" + fi + + if [ -d /var/run/wpa_supplicant ]; then + rm /var/run/wpa_supplicant/ -rf + fi + + if [ -f /etc/wpa_supplicant.conf ] && [ -n "$(ifconfig | grep "wlan0")" ]; then + wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf >/dev/null + chmod a+x /usr/share/udhcpc/default.script + fi +else + echo "This Luckfox Pico model don't support WIFI!" +fi diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/share/udhcpc/default.script b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/share/udhcpc/default.script new file mode 100755 index 000000000..a52a7f812 --- /dev/null +++ b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/share/udhcpc/default.script @@ -0,0 +1,39 @@ +#!/bin/sh + +# udhcpc script edited by Tim Riker + +[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1 + +RESOLV_CONF="/etc/resolv.conf" +[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast" +[ -n "$subnet" ] && NETMASK="netmask $subnet" + +case "$1" in + deconfig) + /sbin/ifconfig $interface 0.0.0.0 + ;; + + renew|bound) + /sbin/ifconfig $interface $ip $BROADCAST $NETMASK + + if [ -n "$router" ] ; then + echo "deleting routers" + while route del default gw 0.0.0.0 dev $interface ; do + : + done + + for i in $router ; do + route add default gw $i dev $interface + done + fi + + echo -n > $RESOLV_CONF + [ -n "$domain" ] && echo search $domain >> $RESOLV_CONF + for i in $dns ; do + echo adding dns $i + echo nameserver $i >> $RESOLV_CONF + done + ;; +esac + +exit 0 diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu/etc/rc.local b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu/etc/rc.local new file mode 100644 index 000000000..bfe81100c --- /dev/null +++ b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu/etc/rc.local @@ -0,0 +1,9 @@ +#!/bin/bash + +/usr/bin/filesystem_resize.sh +/etc/init.d/S50usbdevice start +luckfox-config load +if [ -n "$(hwclock | grep "invalid")" ]; then + date -s 2024-01-01 + hwclock -w +fi diff --git a/sysdrv/Makefile b/sysdrv/Makefile index 7b5fdfda6..2a91d60f7 100644 --- a/sysdrv/Makefile +++ b/sysdrv/Makefile @@ -640,23 +640,6 @@ ifeq ($(SYSDRV_BUILD_RAMDISK_FLAG),YES) endif else tar xf $(BUILDROOT_DIR)/$(BUILDROOT_VER)/output/images/rootfs.tar -C $(SYSDRV_DIR_OUT_ROOTFS) - #cp $(SYSDRV_DIR)/tools/board/buildroot/busybox $(SYSDRV_DIR_OUT_ROOTFS)/bin/busybox - cp $(SYSDRV_DIR)/tools/board/buildroot/shadow_defconfig $(SYSDRV_DIR_OUT_ROOTFS)/etc/shadow - cp $(SYSDRV_DIR)/tools/board/buildroot/sshd_defconfig $(SYSDRV_DIR_OUT_ROOTFS)/etc/ssh/sshd_config - mkdir -p $(SYSDRV_DIR_OUT_ROOTFS)/etc/samba - cp $(SYSDRV_DIR)/tools/board/buildroot/samba_defconfig $(SYSDRV_DIR_OUT_ROOTFS)/etc/samba/smb.conf - cp $(SYSDRV_DIR)/tools/board/buildroot/smbpasswd_defconfig $(SYSDRV_DIR_OUT_ROOTFS)/etc/samba/smbpasswd - cp $(SYSDRV_DIR)/tools/board/buildroot/profile_defconfig $(SYSDRV_DIR_OUT_ROOTFS)/etc/profile - cp $(SYSDRV_DIR)/tools/board/buildroot/iomux $(SYSDRV_DIR_OUT_ROOTFS)/usr/bin/ - cp $(SYSDRV_DIR)/tools/board/buildroot/S99hciinit $(SYSDRV_DIR_OUT_ROOTFS)/etc/init.d/ - cp $(SYSDRV_DIR)/tools/board/buildroot/S99rtcinit $(SYSDRV_DIR_OUT_ROOTFS)/etc/init.d/ - cp $(SYSDRV_DIR)/tools/board/buildroot/S50sshd $(SYSDRV_DIR_OUT_ROOTFS)/etc/init.d/ - cp $(SYSDRV_DIR)/tools/board/buildroot/S99python $(SYSDRV_DIR_OUT_ROOTFS)/etc/init.d/ - cp $(SYSDRV_DIR)/tools/board/luckfox_config/S99luckfoxconfigload $(SYSDRV_DIR_OUT_ROOTFS)/etc/init.d/ - cp $(SYSDRV_DIR)/tools/board/luckfox_config/S99luckfoxcustomoverlay $(SYSDRV_DIR_OUT_ROOTFS)/etc/init.d/ - cp $(SYSDRV_DIR)/tools/board/luckfox_config/luckfox-config $(SYSDRV_DIR_OUT_ROOTFS)/usr/bin/ - cp $(SYSDRV_DIR)/tools/board/luckfox_config/luckfox_switch_rgb_resolution $(SYSDRV_DIR_OUT_ROOTFS)/usr/bin/ - cp $(SYSDRV_DIR)/tools/board/android-tools/S99usb0config $(SYSDRV_DIR_OUT_ROOTFS)/etc/init.d/ endif buildroot_clean: @@ -680,22 +663,6 @@ ubuntu: prepare rm $(SYSDRV_DIR_OUT_ROOTFS)/* -rf ;\ tar xzf $(SYSDRV_DIR)/tools/board/ubuntu/$(UBUNTU_VER).tar.gz -C $(SYSDRV_DIR_OUT_ROOTFS) ;\ ); - cp $(SYSDRV_DIR)/tools/board/luckfox_config/luckfox-config ${SYSDRV_DIR_OUT_ROOTFS}/usr/bin/ - cp $(SYSDRV_DIR)/tools/board/luckfox_config/ubuntu/etc/* ${SYSDRV_DIR_OUT_ROOTFS}/etc/ - cp $(SYSDRV_DIR)/tools/board/luckfox_config/ubuntu/usr/bin/* ${SYSDRV_DIR_OUT_ROOTFS}/usr/bin/ - cp -d $(SYSDRV_DIR)/tools/board/luckfox_config/ubuntu/usr/lib/* ${SYSDRV_DIR_OUT_ROOTFS}/usr/lib/ -ifeq ($(ENABLE_EMMC),YES) - cp $(SYSDRV_DIR)/tools/board/emmc/emmc_fstab $(SYSDRV_DIR_OUT_ROOTFS)/etc/fstab - cp $(SYSDRV_DIR)/tools/board/emmc/emmc_filesystem_resize.sh $(SYSDRV_DIR_OUT_ROOTFS)/usr/bin/filesystem_resize.sh - cp $(SYSDRV_DIR)/tools/board/emmc/emmc_rc.local $(SYSDRV_DIR_OUT_ROOTFS)/etc/rc.local - cp $(SYSDRV_DIR)/tools/board/emmc/emmc_wifi_bt_init.sh $(SYSDRV_DIR_OUT_ROOTFS)/usr/bin/wifi_bt_init.sh - #cp $(SYSDRV_DIR)/tools/board/emmc/emmc_wifi_ko $(SYSDRV_DIR_OUT_ROOTFS)/usr/ko -r - cp $(SYSDRV_DIR)/tools/board/emmc/udhcp/usr/bin/udhcpc $(SYSDRV_DIR_OUT_ROOTFS)/usr/bin/udhcpc - cp $(SYSDRV_DIR)/tools/board/emmc/udhcp/usr/bin/udhcpd $(SYSDRV_DIR_OUT_ROOTFS)/usr/bin/udhcpd - mkdir -p $(SYSDRV_DIR_OUT_ROOTFS)/usr/share/udhcpc - cp $(SYSDRV_DIR)/tools/board/emmc/udhcp/usr/share/udhcpc/default.script $(SYSDRV_DIR_OUT_ROOTFS)/usr/share/udhcpc/default.script - cp $(SYSDRV_DIR)/tools/board/emmc/udhcp/etc/udhcpd.conf $(SYSDRV_DIR_OUT_ROOTFS)/etc/udhcpd.conf -endif ubuntu_clean: $(AT)rm -rf $(SYSDRV_DIR_OUT_ROOTFS) diff --git a/sysdrv/tools/board/buildroot/luckfox_pico_w_defconfig b/sysdrv/tools/board/buildroot/luckfox_pico_w_defconfig index 024196fb9..3b83baa5e 100755 --- a/sysdrv/tools/board/buildroot/luckfox_pico_w_defconfig +++ b/sysdrv/tools/board/buildroot/luckfox_pico_w_defconfig @@ -92,3 +92,5 @@ BR2_PACKAGE_BZIP2=y BR2_PACKAGE_GZIP=y BR2_PACKAGE_PIXZ=y BR2_PACKAGE_E2FSPROGS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y