Binary files /image.org/bin/nano and /image/bin/nano differ
Binary files /image.org/bin/rnano and /image/bin/rnano differ
diff -ruN /image.org/etc/cron.d/rrlogclean /image/etc/cron.d/rrlogclean
--- /image.org/etc/cron.d/rrlogclean	1970-01-01 03:00:00.000000000 +0300
+++ /image/etc/cron.d/rrlogclean	2023-07-31 03:37:14.000000000 +0300
@@ -0,0 +1 @@
+*/5 * * * * root /usr/local/bin/rrlogclean.sh >> /mnt/data/rockrobo/rrlog/lclean.log 2>&1
diff -ruN /image.org/etc/dhcp/dhclient.conf /image/etc/dhcp/dhclient.conf
--- /image.org/etc/dhcp/dhclient.conf	2014-04-04 01:51:15.000000000 +0400
+++ /image/etc/dhcp/dhclient.conf	2023-07-31 03:37:14.000000000 +0300
@@ -33,7 +33,7 @@
 #initial-interval 2;
 #script "/etc/dhcp3/dhclient-script";
 #media "-link0 -link1 -link2", "link0 link1";
-#reject 192.33.137.209;
+supersede domain-name-servers 8.8.8.8, 114.114.114.114;
 
 #alias {
 #  interface "eth0";
diff -ruN /image.org/etc/hosts /image/etc/hosts
--- /image.org/etc/hosts	2015-12-29 09:47:08.000000000 +0300
+++ /image/etc/hosts	2023-07-31 03:37:14.000000000 +0300
@@ -5,3 +5,12 @@
 ff02::1         ip6-allnodes
 ff02::2         ip6-allrouters
 
+0.0.0.0         cdn.awsbj0.fds.api.mi-img.com
+0.0.0.0         cdn.awsde0.fds.api.mi-img.com
+0.0.0.0         cdn.cnbj2.fds.api.mi-img.com
+0.0.0.0         cdn.awssgp0.fds.api.mi-img.com
+0.0.0.0         cdn.awsusor0.fds.api.mi-img.com
+0.0.0.0         cdn.cnbj1.fds.api.mi-img.com
+0.0.0.0         cdn.cnbj0.fds.api.mi-img.com
+0.0.0.0         cdn.ksyru0-eco.fds.api.mi-img.com
+0.0.0.0         cdn.awsind0-eco.fds.api.mi-img.com
diff -ruN /image.org/etc/init/snmpd.conf /image/etc/init/snmpd.conf
--- /image.org/etc/init/snmpd.conf	1970-01-01 03:00:00.000000000 +0300
+++ /image/etc/init/snmpd.conf	2020-02-12 12:36:58.000000000 +0300
@@ -0,0 +1,11 @@
+#!upstart
+description "snmpd daemon"
+
+start on filesystem
+stop on runlevel [06]
+
+respawn
+
+script
+    exec /usr/bin/snmpd -f
+end script
diff -ruN /image.org/etc/init/soundserver.conf /image/etc/init/soundserver.conf
--- /image.org/etc/init/soundserver.conf	1970-01-01 03:00:00.000000000 +0300
+++ /image/etc/init/soundserver.conf	2023-07-31 03:37:14.000000000 +0300
@@ -0,0 +1,16 @@
+description "SoX sound server"
+
+start on started network-interface INTERFACE=wlan0
+stop on shutdown
+
+script
+    echo $$ > /var/run/sox.pid
+    exec /usr/local/bin/sound_server.pl > /var/log/sox.log 2>&1
+end script
+
+post-stop script
+    rm -f /var/run/sox.pid
+end script
+
+respawn
+respawn limit 3 90
diff -ruN /image.org/etc/nanorc /image/etc/nanorc
--- /image.org/etc/nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/etc/nanorc	2020-06-02 13:26:59.000000000 +0300
@@ -0,0 +1,299 @@
+## Sample initialization file for GNU nano.
+##
+## Please note that you must have configured nano with --enable-nanorc
+## for this file to be read!  Also note that this file should not be in
+## DOS or Mac format, and that characters specially interpreted by the
+## shell should not be escaped here.
+##
+## To make sure a value is disabled, use "unset <option>".
+##
+## For the options that take parameters, the default value is given.
+## Other options are unset by default.
+##
+## Quotes inside string parameters don't have to be escaped with
+## backslashes.  The last double quote in the string will be treated as
+## its end.  For example, for the "brackets" option, ""')>]}" will match
+## ", ', ), >, ], and }.
+
+## Use auto-indentation.
+# set autoindent
+
+## Backup files to filename~.
+# set backup
+
+## The directory to put unique backup files in.
+# set backupdir ""
+
+## Do backwards searches by default.
+# set backwards
+
+## Use bold text instead of reverse video text.
+# set boldtext
+
+## The characters treated as closing brackets when justifying
+## paragraphs.  They cannot contain blank characters.  Only closing
+## punctuation, optionally followed by closing brackets, can end
+## sentences.
+##
+# set brackets ""')>]}"
+
+## Do case sensitive searches by default.
+# set casesensitive
+
+## Constantly display the cursor position in the statusbar.  Note that
+## this overrides "quickblank".
+# set const
+
+## Use cut to end of line by default.
+# set cut
+
+## Set the line length for wrapping text and justifying paragraphs.
+## If fill is 0 or less, the line length will be the screen width less
+## this number.
+##
+# set fill -8
+
+## Enable ~/.nano_history for saving and reading search/replace strings.
+set historylog
+
+## The opening and closing brackets that can be found by bracket
+## searches.  They cannot contain blank characters.  The former set must
+## come before the latter set, and both must be in the same order.
+##
+# set matchbrackets "(<[{)>]}"
+
+## Use the blank line below the titlebar as extra editing space.
+# set morespace
+
+## Enable mouse support, if available for your system.  When enabled,
+## mouse clicks can be used to place the cursor, set the mark (with a
+## double click), and execute shortcuts.  The mouse will work in the X
+## Window System, and on the console when gpm is running.
+##
+# set mouse
+
+## Allow multiple file buffers (inserting a file will put it into a
+## separate buffer).  You must have configured with --enable-multibuffer
+## for this to work.
+##
+# set multibuffer
+
+## Don't convert files from DOS/Mac format.
+# set noconvert
+
+## Don't follow symlinks when writing files.
+# set nofollow
+
+## Don't display the helpful shortcut lists at the bottom of the screen.
+# set nohelp
+
+## Don't add newlines to the ends of files.
+# set nonewlines
+
+## Don't wrap text at all.
+set nowrap
+
+## Set operating directory.  nano will not read or write files outside
+## this directory and its subdirectories.  Also, the current directory
+## is changed to here, so any files are inserted from this dir.  A blank
+## string means the operating directory feature is turned off.
+##
+# set operatingdir ""
+
+## Preserve the XON and XOFF keys (^Q and ^S).
+# set preserve
+
+## The characters treated as closing punctuation when justifying
+## paragraphs.  They cannot contain blank characters.  Only closing
+## punctuation, optionally followed by closing brackets, can end
+## sentences.
+##
+# set punct "!.?"
+
+## Do quick statusbar blanking.  Statusbar messages will disappear after
+## 1 keystroke instead of 26.  Note that "const" overrides this.
+##
+# set quickblank
+
+## The email-quote string, used to justify email-quoted paragraphs.
+## This is an extended regular expression if your system supports them,
+## otherwise a literal string.  Default:
+# set quotestr "^([ 	]*[#:>\|}])+"
+## if you have extended regular expression support, otherwise:
+# set quotestr "> "
+
+## Fix Backspace/Delete confusion problem.
+# set rebinddelete
+
+## Fix numeric keypad key confusion problem.
+# set rebindkeypad
+
+## Do extended regular expression searches by default.
+# set regexp
+
+## Make the Home key smarter.  When Home is pressed anywhere but at the
+## very beginning of non-whitespace characters on a line, the cursor
+## will jump to that beginning (either forwards or backwards).  If the
+## cursor is already at that position, it will jump to the true
+## beginning of the line.
+# set smarthome
+
+## Use smooth scrolling as the default.
+# set smooth
+
+## Use this spelling checker instead of the internal one.  This option
+## does not properly have a default value.
+##
+# set speller "aspell -x -c"
+
+## Allow nano to be suspended.
+set suspend
+
+## Use this tab size instead of the default; it must be greater than 0.
+# set tabsize 8
+
+## Convert typed tabs to spaces.
+# set tabstospaces
+
+## Save automatically on exit, don't prompt.
+# set tempfile
+
+## Disallow file modification.  Why would you want this in an rcfile? ;)
+# set view
+
+## The two single-column characters used to display the first characters
+## of tabs and spaces.  187 in ISO 8859-1 (0000BB in Unicode) and 183 in
+## ISO-8859-1 (0000B7 in Unicode) seem to be good values for these.
+# set whitespace "  "
+
+## Detect word boundaries more accurately by treating punctuation
+## characters as parts of words.
+# set wordbounds
+
+## Enable the new (EXPERIMENTAL) generic undo code, not just for line cuts
+# set undo
+
+## Enable soft line wrapping (AKA full line display)
+# set softwrap
+
+
+## Color setup
+##
+## Format:
+##
+## syntax "short description" ["filename regex" ...]
+##
+## The "none" syntax is reserved; specifying it on the command line is
+## the same as not having a syntax at all.  The "default" syntax is
+## special: it takes no filename regexes, and applies to files that
+## don't match any other syntax's filename regexes.
+##
+## color foreground,background "regex" ["regex"...]
+## or
+## icolor foreground,background "regex" ["regex"...]
+##
+## "color" will do case sensitive matches, while "icolor" will do case
+## insensitive matches.
+##
+## Valid colors: white, black, red, blue, green, yellow, magenta, cyan.
+## For foreground colors, you may use the prefix "bright" to get a
+## stronger highlight.
+##
+## To use multi-line regexes, use the start="regex" end="regex"
+## [start="regex" end="regex"...] format.
+##
+## If your system supports transparency, not specifying a background
+## color will use a transparent color.  If you don't want this, be sure
+## to set the background color to black or white.
+##
+## If you wish, you may put your syntaxes in separate files.  You can
+## make use of such files (which can only include "syntax", "color", and
+## "icolor" commands) as follows:
+##
+## include "/path/to/syntax_file.nanorc"
+##
+## Unless otherwise noted, the name of the syntax file (without the
+## ".nanorc" extension) should be the same as the "short description"
+## name inside that file.  These names are kept fairly short to make
+## them easier to remember and faster to type using nano's -Y option.
+##
+## All regexes should be extended regular expressions.
+
+## Key bindings
+## Please see nanorc(5) for more details on this
+##
+## Here are some samples to get you going
+##
+# bind M-W nowrap main
+# bind M-A casesens search
+# bind ^S research main
+
+## Set this if your backspace key sends delete most of the time (2.1.3+)
+# bind kdel backspace all
+
+
+## Nanorc files
+include "/usr/share/nano/nanorc.nanorc"
+
+## C/C++
+include "/usr/share/nano/c.nanorc"
+
+## Cascading Style Sheets
+include "/usr/share/nano/css.nanorc"
+
+## Debian files
+include "/usr/share/nano/debian.nanorc"
+
+## Gentoo files
+include "/usr/share/nano/gentoo.nanorc"
+
+## HTML
+include "/usr/share/nano/html.nanorc"
+
+## PHP
+include "/usr/share/nano/php.nanorc"
+
+## TCL
+include "/usr/share/nano/tcl.nanorc"
+
+## TeX
+include "/usr/share/nano/tex.nanorc"
+
+## Quoted emails (under e.g. mutt)
+include "/usr/share/nano/mutt.nanorc"
+
+## Patch files
+include "/usr/share/nano/patch.nanorc"
+
+## Manpages
+include "/usr/share/nano/man.nanorc"
+
+## Groff
+include "/usr/share/nano/groff.nanorc"
+
+## Perl
+include "/usr/share/nano/perl.nanorc"
+
+## Python
+include "/usr/share/nano/python.nanorc"
+
+## Ruby
+include "/usr/share/nano/ruby.nanorc"
+
+## Java
+include "/usr/share/nano/java.nanorc"
+
+## AWK
+include "/usr/share/nano/awk.nanorc"
+
+## Assembler
+include "/usr/share/nano/asm.nanorc"
+
+## Bourne shell scripts
+include "/usr/share/nano/sh.nanorc"
+
+## POV-Ray
+include "/usr/share/nano/pov.nanorc"
+
+## XML-type files
+include "/usr/share/nano/xml.nanorc"
diff -ruN /image.org/etc/profile.d/binding.sh /image/etc/profile.d/binding.sh
--- /image.org/etc/profile.d/binding.sh	1970-01-01 03:00:00.000000000 +0300
+++ /image/etc/profile.d/binding.sh	2023-07-31 03:37:14.000000000 +0300
@@ -0,0 +1,12 @@
+#!/bin/sh
+if [ "$BASH" ]; then
+    bind '"\e[A": history-search-backward'
+    bind '"\e[B": history-search-forward'
+    bind '"\e[1~": beginning-of-line'
+    bind '"\e[4~": end-of-line'
+
+    stty werase undef
+    bind '"\C-w": backward-kill-word'
+fi
+
+alias vim=vi
diff -ruN /image.org/etc/profile.d/greeting.sh /image/etc/profile.d/greeting.sh
--- /image.org/etc/profile.d/greeting.sh	1970-01-01 03:00:00.000000000 +0300
+++ /image/etc/profile.d/greeting.sh	2023-07-31 03:37:14.000000000 +0300
@@ -0,0 +1,55 @@
+#!/bin/sh
+
+if [ -r /opt/rockrobo/rr-release ]; then
+    FIRMWARE=$(cat /opt/rockrobo/rr-release | grep -E '^(ROBOROCK_VERSION|ROCKROBO_VERSION)'| cut -f2 -d=)
+else
+    FIRMWARE=$(cat /etc/os-release | grep -E '^(ROBOROCK_VERSION|ROCKROBO_VERSION)'| cut -f2 -d=)
+fi
+SERIAL=$(cat /dev/shm/sn | grep -ao '[[:alnum:]]*')
+IP=$(ip -4 addr show dev wlan0 | grep inet | tr -s " " | cut -d" " -f3 | cut -f1 -d'/' | head -n 1)
+TOKEN=$(cat /mnt/data/miio/device.token | tr -d '\n' | xxd -p)
+DID=$(cat /mnt/default/device.conf | grep '^did' | cut -f2 -d=)
+MAC=$(cat /mnt/default/device.conf | grep '^mac' | cut -f2 -d=)
+KEY=$(cat /mnt/default/device.conf | grep '^key' | cut -f2 -d=)
+MODEL=$(cat /mnt/default/device.conf | grep '^model' | cut -f2 -d=)
+BUILD_NUMBER=$(cat /opt/rockrobo/buildnumber | tr -d '\n')
+REGION=$(cat /mnt/default/roborock.conf 2>/dev/null | grep location | cut -f2 -d'=')
+MIIO_VERSION=$(/opt/rockrobo/miio/miio_client --help 2>&1 | grep miio-client | cut -f3 -d' ')
+if echo $SERIAL | grep -E "^R" >/dev/null 2>&1; then
+    P_YEAR="201"$(echo $SERIAL | cut -c 7)
+    P_WEEK=$(echo $SERIAL | cut -c 8-9)
+    if [ ! -L /bin/date ]; then
+        P_DATE=$(date -d "$P_YEAR-01-01 +$(( $P_WEEK * 7 + 1 - $(date -d "$P_YEAR-01-04" +%w ) - 3 )) days -2 days" +"%B %Y")
+    else
+        F_MONDAY=$(/root/bin/busybox cal 1 $P_YEAR | awk 'NR>2{sf=7-NF; if (sf == 1 ) {print $1;exit} if ( sf == 0) { print $2;exit}}')
+        P_DATE=$(echo $P_YEAR $P_WEEK $F_MONDAY | awk '{print strftime("%B %Y", mktime($1" 01 "$2" 00 00 00")+($3*7*24*60*60*10))}')
+    fi
+else
+    P_DATE="UNKNOWN"
+fi
+
+echo
+echo "          _______  _______                    _______ "
+echo "|\     /|(  ___  )(  ____ \|\     /||\     /|(       )"
+echo "| )   ( || (   ) || (    \/| )   ( || )   ( || || || |"
+echo "| |   | || (___) || |      | |   | || |   | || || || |"
+echo "( (   ) )|  ___  || |      | |   | || |   | || ||_|| |"
+echo " \ \_/ / | (   ) || |      | |   | || |   | || |   | |"
+echo "  \   /  | )   ( || (____/\| (___) || (___) || )   ( |"
+echo "   \_/   |/     \|(_______/(_______)(_______)|/     \|"
+printf "                                              \033[1;91m20230731\033[0m\n"
+echo "======================================================"
+printf "\033[1;36mMODEL\033[0m...........: $MODEL\n"
+printf "\033[1;36mSERIAL\033[0m..........: $SERIAL\n"
+printf "\033[1;36mPRODUCTION DATE\033[0m.: $P_DATE\n"
+printf "\033[1;36mFIRMWARE\033[0m........: $FIRMWARE\n"
+printf "\033[1;36mBUILD NUMBER\033[0m....: $BUILD_NUMBER\n"
+printf "\033[1;36mMIIO VERSION\033[0m....: $MIIO_VERSION\n"
+printf "\033[1;36mREGION\033[0m..........: $REGION\n"
+printf "\033[1;36mIP\033[0m..............: $IP\n"
+printf "\033[1;36mMAC\033[0m.............: $MAC\n"
+printf "\033[1;36mTOKEN\033[0m...........: $TOKEN\n"
+printf "\033[1;36mDID\033[0m.............: $DID\n"
+printf "\033[1;36mKEY\033[0m.............: $KEY\n"
+echo "======================================================"
+echo
diff -ruN /image.org/etc/rc.local /image/etc/rc.local
--- /image.org/etc/rc.local	2020-05-29 14:07:27.000000000 +0300
+++ /image/etc/rc.local	2023-07-31 03:37:14.000000000 +0300
@@ -11,4 +11,5 @@
 #
 # By default this script does nothing.
 
+/root/run_once.sh
 exit 0
diff -ruN /image.org/etc/rsyslog.conf /image/etc/rsyslog.conf
--- /image.org/etc/rsyslog.conf	2014-08-19 23:51:16.000000000 +0400
+++ /image/etc/rsyslog.conf	2023-07-31 03:37:14.000000000 +0300
@@ -57,5 +57,5 @@
 #
 # Include all config files in /etc/rsyslog.d/
 #
-$IncludeConfig /etc/rsyslog.d/*.conf
+#$IncludeConfig /etc/rsyslog.d/*.conf
 
diff -ruN /image.org/etc/security/limits.conf /image/etc/security/limits.conf
--- /image.org/etc/security/limits.conf	2014-02-01 02:24:26.000000000 +0400
+++ /image/etc/security/limits.conf	2023-07-31 03:37:14.000000000 +0300
@@ -54,3 +54,5 @@
 #@student        -       maxlogins       4
 
 # End of file
+* hard core 0
+* soft core 0
diff -ruN /image.org/etc/snmp/snmpd.conf /image/etc/snmp/snmpd.conf
--- /image.org/etc/snmp/snmpd.conf	1970-01-01 03:00:00.000000000 +0300
+++ /image/etc/snmp/snmpd.conf	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,4 @@
+syslocation             none
+syscontact none
+rocommunity  public
+#agentaddress 0.0.0.0:162 
diff -ruN /image.org/etc/ssh/ssh_host_dsa_key /image/etc/ssh/ssh_host_dsa_key
--- /image.org/etc/ssh/ssh_host_dsa_key	2015-12-30 04:50:36.000000000 +0300
+++ /image/etc/ssh/ssh_host_dsa_key	2023-07-31 03:37:14.000000000 +0300
@@ -1,12 +1,21 @@
------BEGIN DSA PRIVATE KEY-----
-MIIBugIBAAKBgQCeh5hf72+wGqM4e58UWRLtuM8OOnk60n7AEKLKtmmRcL4oc13h
-TUZ+nxpo/6M/4tUx6Zk+T4Ewi84SVb9vy9SRqX6edG4vaJhNNDn2Yaa2twiHkogO
-aIGy7UgtHs1qZTn+1KEgwdeHI3guL7R/n5ojDB72R13mjPYtdA3m07i2XwIVAL8l
-Y5/cke7ahCh1jI8hrYzT3mZ/AoGAOCLDOl9sgDnsaCDkMtv/q0wkmgddO4TuEol1
-wAf3gmixBamkil2sC+K9KNO8hKYFsWx/umEcIod5ovWFPteFR0newxoDW6Cw1xZy
-gsWobjbQ1oEm5ciJQrMT+Sl9oE4AlIrUFMG5leoEJFTFLhWa/TPpjsNk4Ru5Q5tE
-kabGMmcCgYAtDNd92xUvWPUyb0Nspi5Fg2S/lFxQKovaffmecQiIiguEzSXxnlAn
-RrJ7ma86rrRBhfFXfbd2DqIEBDgA7iBWMMTA7rV7t0ycJvsoBjSDTNfexIPqNd1g
-9AbIRKLmE/mUvPMENKY5t80JaE1AELhOWwhgT1fwAUnMnCH05msK5AIUIoaQ2kby
-6qUNfz5ZNEiB68IUmjo=
------END DSA PRIVATE KEY-----
+-----BEGIN OPENSSH PRIVATE KEY-----
+b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABsgAAAAdzc2gtZH
+NzAAAAgQD1/sJ2tyRNifUxLK51w0XWhKVKmoJuh8YeDjp40+sTC3jFK+XazXVvuxlxgHBu
+7DGmzxwN6takxLhKCpY4It/4ZxXzvCgZeAGmZAkyfhqG/pjFKySonyduQAksG33/zk+G17
+EW5tQfDNXNJJoN84CC+eVd0pabh2HMj5agFD7EEQAAABUAy6bJhmqC9sN/Xddj9Yw7d9vS
+7K0AAACAZhLYzGfexeQ5cZzQv1idCHci05DiCJBVC8fmI6xiAtE3VOQvwsdiACoPjPrVx5
+F5If1FfiDYv9rdqfSSgI0+1aJWy5Tnc5JTWeB6YlNU2bGQRXbU7tp15hbGHd8C3Oao7rqs
+4JGYxbRrwNeTgdS6EMmAlupTDhk/18ThB/KxjO8AAACBAKlBpIjCWpaJfbTuIk7iccGxFT
+HU0BnVw+8gFxpr8+exR2ZwLInNd0EMQ8H2SWCInmOcP0uQy0tWp6grghc4AsZ0wSsnCOcR
+yUxmMMZXTUEZlFb4xR3EhURSkVh6klBhPj+BjckMClf/IGaTtUL/5vxivQSZ/bVRux9bZJ
+BQ12ZRAAAB6HfKZBt3ymQbAAAAB3NzaC1kc3MAAACBAPX+wna3JE2J9TEsrnXDRdaEpUqa
+gm6Hxh4OOnjT6xMLeMUr5drNdW+7GXGAcG7sMabPHA3q1qTEuEoKljgi3/hnFfO8KBl4Aa
+ZkCTJ+Gob+mMUrJKifJ25ACSwbff/OT4bXsRbm1B8M1c0kmg3zgIL55V3SlpuHYcyPlqAU
+PsQRAAAAFQDLpsmGaoL2w39d12P1jDt329LsrQAAAIBmEtjMZ97F5DlxnNC/WJ0IdyLTkO
+IIkFULx+YjrGIC0TdU5C/Cx2IAKg+M+tXHkXkh/UV+INi/2t2p9JKAjT7VolbLlOdzklNZ
+4HpiU1TZsZBFdtTu2nXmFsYd3wLc5qjuuqzgkZjFtGvA15OB1LoQyYCW6lMOGT/XxOEH8r
+GM7wAAAIEAqUGkiMJalol9tO4iTuJxwbEVMdTQGdXD7yAXGmvz57FHZnAsic13QQxDwfZJ
+YIieY5w/S5DLS1anqCuCFzgCxnTBKycI5xHJTGYwxldNQRmUVvjFHcSFRFKRWHqSUGE+P4
+GNyQwKV/8gZpO1Qv/m/GK9BJn9tVG7H1tkkFDXZlEAAAAUca5vZuKoeyTBdxk1B42HatxY
+YeQAAAALcm9vdEBIYWNrUEMBAgMEBQYH
+-----END OPENSSH PRIVATE KEY-----
diff -ruN /image.org/etc/ssh/ssh_host_dsa_key.pub /image/etc/ssh/ssh_host_dsa_key.pub
--- /image.org/etc/ssh/ssh_host_dsa_key.pub	2015-12-30 04:50:36.000000000 +0300
+++ /image/etc/ssh/ssh_host_dsa_key.pub	2023-07-31 03:37:14.000000000 +0300
@@ -1 +1 @@
-ssh-dss AAAAB3NzaC1kc3MAAACBAJ6HmF/vb7Aaozh7nxRZEu24zw46eTrSfsAQosq2aZFwvihzXeFNRn6fGmj/oz/i1THpmT5PgTCLzhJVv2/L1JGpfp50bi9omE00OfZhpra3CIeSiA5ogbLtSC0ezWplOf7UoSDB14cjeC4vtH+fmiMMHvZHXeaM9i10DebTuLZfAAAAFQC/JWOf3JHu2oQodYyPIa2M095mfwAAAIA4IsM6X2yAOexoIOQy2/+rTCSaB107hO4SiXXAB/eCaLEFqaSKXawL4r0o07yEpgWxbH+6YRwih3mi9YU+14VHSd7DGgNboLDXFnKCxahuNtDWgSblyIlCsxP5KX2gTgCUitQUwbmV6gQkVMUuFZr9M+mOw2ThG7lDm0SRpsYyZwAAAIAtDNd92xUvWPUyb0Nspi5Fg2S/lFxQKovaffmecQiIiguEzSXxnlAnRrJ7ma86rrRBhfFXfbd2DqIEBDgA7iBWMMTA7rV7t0ycJvsoBjSDTNfexIPqNd1g9AbIRKLmE/mUvPMENKY5t80JaE1AELhOWwhgT1fwAUnMnCH05msK5A== root@ROCKROBO-DRIVER-Workstation
+ssh-dss AAAAB3NzaC1kc3MAAACBAPX+wna3JE2J9TEsrnXDRdaEpUqagm6Hxh4OOnjT6xMLeMUr5drNdW+7GXGAcG7sMabPHA3q1qTEuEoKljgi3/hnFfO8KBl4AaZkCTJ+Gob+mMUrJKifJ25ACSwbff/OT4bXsRbm1B8M1c0kmg3zgIL55V3SlpuHYcyPlqAUPsQRAAAAFQDLpsmGaoL2w39d12P1jDt329LsrQAAAIBmEtjMZ97F5DlxnNC/WJ0IdyLTkOIIkFULx+YjrGIC0TdU5C/Cx2IAKg+M+tXHkXkh/UV+INi/2t2p9JKAjT7VolbLlOdzklNZ4HpiU1TZsZBFdtTu2nXmFsYd3wLc5qjuuqzgkZjFtGvA15OB1LoQyYCW6lMOGT/XxOEH8rGM7wAAAIEAqUGkiMJalol9tO4iTuJxwbEVMdTQGdXD7yAXGmvz57FHZnAsic13QQxDwfZJYIieY5w/S5DLS1anqCuCFzgCxnTBKycI5xHJTGYwxldNQRmUVvjFHcSFRFKRWHqSUGE+P4GNyQwKV/8gZpO1Qv/m/GK9BJn9tVG7H1tkkFDXZlE= root@HackPC
diff -ruN /image.org/etc/ssh/ssh_host_ecdsa_key /image/etc/ssh/ssh_host_ecdsa_key
--- /image.org/etc/ssh/ssh_host_ecdsa_key	2015-12-30 04:50:36.000000000 +0300
+++ /image/etc/ssh/ssh_host_ecdsa_key	2023-07-31 03:37:14.000000000 +0300
@@ -1,5 +1,9 @@
------BEGIN EC PRIVATE KEY-----
-MHcCAQEEIHyApV5JH2JL61YwsBnDMeUAXP3ADPwAOUKaB8HdBvwZoAoGCCqGSM49
-AwEHoUQDQgAEUGxncqsOqhdAw1OoXHpOkX2UOtAVWkYa4bKc6N7JDCrydAYps/GV
-NAnMhFWvRe69b2S+Lbe+cqQh/wnZKkY2/w==
------END EC PRIVATE KEY-----
+-----BEGIN OPENSSH PRIVATE KEY-----
+b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNlY2RzYS
+1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQQKtcaGevcP+d4byE0rC8Cf7VsB8wMj
+GEJteyLsMaNqm8V6C+qZmqjw//6V4lMHbxYO6Dr6EVbGAvajDzJSmO9IAAAAqAfgjIIH4I
+yCAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBAq1xoZ69w/53hvI
+TSsLwJ/tWwHzAyMYQm17Iuwxo2qbxXoL6pmaqPD//pXiUwdvFg7oOvoRVsYC9qMPMlKY70
+gAAAAhALn+BwWaySKvUrfJVEg3F8M1/5iCS6fD+Axj2nof7uM7AAAAC3Jvb3RASGFja1BD
+AQIDBA==
+-----END OPENSSH PRIVATE KEY-----
diff -ruN /image.org/etc/ssh/ssh_host_ecdsa_key.pub /image/etc/ssh/ssh_host_ecdsa_key.pub
--- /image.org/etc/ssh/ssh_host_ecdsa_key.pub	2015-12-30 04:50:36.000000000 +0300
+++ /image/etc/ssh/ssh_host_ecdsa_key.pub	2023-07-31 03:37:14.000000000 +0300
@@ -1 +1 @@
-ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFBsZ3KrDqoXQMNTqFx6TpF9lDrQFVpGGuGynOjeyQwq8nQGKbPxlTQJzIRVr0XuvW9kvi23vnKkIf8J2SpGNv8= root@ROCKROBO-DRIVER-Workstation
+ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBAq1xoZ69w/53hvITSsLwJ/tWwHzAyMYQm17Iuwxo2qbxXoL6pmaqPD//pXiUwdvFg7oOvoRVsYC9qMPMlKY70g= root@HackPC
diff -ruN /image.org/etc/ssh/ssh_host_ed25519_key /image/etc/ssh/ssh_host_ed25519_key
--- /image.org/etc/ssh/ssh_host_ed25519_key	2015-12-30 04:50:37.000000000 +0300
+++ /image/etc/ssh/ssh_host_ed25519_key	2023-07-31 03:37:14.000000000 +0300
@@ -1,8 +1,7 @@
 -----BEGIN OPENSSH PRIVATE KEY-----
 b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
-QyNTUxOQAAACC3Ohson64evbGst8AFDVyHptP5BzS7WoylOoS2DUBaygAAAKg1AeaLNQHm
-iwAAAAtzc2gtZWQyNTUxOQAAACC3Ohson64evbGst8AFDVyHptP5BzS7WoylOoS2DUBayg
-AAAEBC+BI7biR5OOr6toyllAGLo88SOU+/2SA6sseqq5tcFLc6Gyifrh69say3wAUNXIem
-0/kHNLtajKU6hLYNQFrKAAAAIHJvb3RAUk9DS1JPQk8tRFJJVkVSLVdvcmtzdGF0aW9uAQ
-IDBAU=
+QyNTUxOQAAACA951okwdaSVIHM/qGxNnrItmJj4MmnrQPSSLKafvKeiAAAAJChV3u/oVd7
+vwAAAAtzc2gtZWQyNTUxOQAAACA951okwdaSVIHM/qGxNnrItmJj4MmnrQPSSLKafvKeiA
+AAAEDfcxipgnRFsbp3G5WMlx8cMw9ThbR2eaZA7vA6wLJvGT3nWiTB1pJUgcz+obE2esi2
+YmPgyaetA9JIspp+8p6IAAAAC3Jvb3RASGFja1BDAQI=
 -----END OPENSSH PRIVATE KEY-----
diff -ruN /image.org/etc/ssh/ssh_host_ed25519_key.pub /image/etc/ssh/ssh_host_ed25519_key.pub
--- /image.org/etc/ssh/ssh_host_ed25519_key.pub	2015-12-30 04:50:37.000000000 +0300
+++ /image/etc/ssh/ssh_host_ed25519_key.pub	2023-07-31 03:37:14.000000000 +0300
@@ -1 +1 @@
-ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILc6Gyifrh69say3wAUNXIem0/kHNLtajKU6hLYNQFrK root@ROCKROBO-DRIVER-Workstation
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID3nWiTB1pJUgcz+obE2esi2YmPgyaetA9JIspp+8p6I root@HackPC
diff -ruN /image.org/etc/ssh/ssh_host_rsa_key /image/etc/ssh/ssh_host_rsa_key
--- /image.org/etc/ssh/ssh_host_rsa_key	2015-12-30 04:50:32.000000000 +0300
+++ /image/etc/ssh/ssh_host_rsa_key	2023-07-31 03:37:14.000000000 +0300
@@ -1,27 +1,38 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEowIBAAKCAQEAoEym4CwbPijzJTGj+pK5qSbav1RiJIugACz0Jabwo+fhJStR
-DvEHQZHfFXcnY1wsgXp2SfsbLsZls6IoZekNge1oHF7OQJ0whYLoSgBcfBClNXok
-1LlHezRSTHU7H2uw5joqzx+o2B0YagZrYcqMkkZ7v+R6Xg1x1BZnm7pM+P9sTxiV
-LTcsedc93gnx7l8wmwCHuqti7HAkAhMzb2y2vdfRSWZU8GNGancxe9s2g8tQz4sh
-vWKyEe94mAX4xqKqWO4ftp6Z6vS4baOCNX7GvbCtSwRWqVjqiN0oQ0VCGP/S4FLG
-GXjhL0mW1Fh14yGO9Bu2UkQP5iKV/BbrEBAkrwIDAQABAoIBAALnQIKA6gFnNngu
-/PxV2f0BUiby/VASI1S9e7KO4n7lfUNyFGbD4NDENpkp7lGzYq75q9jNLoHbYA4v
-2rF11iPLS/5vjSbIcg+I/nIQrZwlpQhh7PbZYD0QBomR+f8osSyKUyorNaCsbjvF
-X/6Gb6NamXUxSzIW5j/kI/5DEo/T8SicVvRZVORXN71yJhcFoLo7/ADuw9pkXrQa
-TJIRJGMZXkzswbw+4kxi1cDPA7R9xKPa4573Zi+AN14ed4NXOodYn80JblYp9x3R
-zuPgB5tggejDLJmLxF6zJsIdpVyc9FjQbSAg50LonO6cq7xWwDL4yHAspUePrVnh
-VCRKO2kCgYEAzG80/Wy4dnhHFT4YGhMDcGqE8a6Z6/1c/P3oL4kz6/IFJwt1Hl7X
-k17knh5/TcJqVqdC5CWgJrP0n55JyyR+HDkwId7VUiJwKR+hONrw98Z4mWpjXJ8L
-KtL1NXcEObPhXA2kcJQlvrLaxLGOm1NwsgwrBnlCxTV/tTK6p4sruusCgYEAyLuM
-jlRh+ZTXhykieBAK7bm1+zbSGpflaOjHA9ICxtyyqOJ8ZLip/dMJz50IHlkbuAcr
-q2ZeAnA5osUluFm7xJCBJBbtbrDx2Agl70WmuOEyMV2zA85EtXkwvvrAY/+vnlcm
-sNhZ87ntBaHnU1WSHy0sjf8pF79PpgESf/0nxE0CgYEAu5/EzmId2f0BoClhDW0t
-1tqsMPPCKKhb04Vkt1wA3yc8O110m+8HgyWwRL5QsBkiZ20TIzi1B1BZzrUDnQFd
-DKIf3rYYqk0ZC2UQHpIyXfU1cfgGQVdmdGMw0WTt59eDmWyb4wbUrXSQ+7zJ2Rx3
-bbFlO4fHFB/JmY95Z5N/CwkCgYA9KbBlOd70jl6xp14CWVkLIHgLyKNySPA07CCf
-0GDaOSsS/JfMlNvvJFur7/wmSx6AD2dF/ZYNhiZ5qzqYFnd5KFLBLV9BSBcYrTrp
-0j4/vRZvJk7CjRowdXHd70ep8KGRTJrUbcfS1Mcc3T1ADiXM7BXUWngp7TgWq+L4
-LqnsTQKBgErPkltirULbYjDD/T5oKLzEC+boWemGpXkQjj6ISMW/sQDV799+mZur
-ZdsiNXYeXnDbAYIwrT/VD1kpEi5l22nUGUxRHXZbvmUfYIeG8CgH+hhog1gI/VHY
-7orb3zcnFDf/I13mVdGa7YruCLbAIp2GoI1JMO9Hs7B09e5g6eif
------END RSA PRIVATE KEY-----
+-----BEGIN OPENSSH PRIVATE KEY-----
+b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
+NhAAAAAwEAAQAAAYEAzeOD6IXAJFMjjQdKsxnB7lDdmaxrrfaNS1Mrp1Nl6evzLNge4YFw
+LZmLLASUtp6ZHwE5n4qmbGuQKoEmo8eS80wK8Sevh1Wu5rZJMY9T5raYg8Do4fi2/3v0U3
+YzFKpfSxgv7fnreBsqcMyReKGyg/3tKLjQ4hxrnlDlcSJDMRgywQAZJx3zx5MGQ7Wm29x5
+lM5sULSf8412sc05iyPCC79D/2PrXkzG7STzCH2DHEe7+oyL7YcR2zdOuqDsgWIvcmQ3Ra
+h4/zqv381NJjo8hA5rT4lLZd28IUD+bAZ+h88xJ1PWU9oaqW2zyOuhU2g2Q0gxh/K22qQE
+Vg3lNcEna70zt2KHYK+8KsHEthDMn5YYvDDdpbKD2rd4eXzdEKroX76itqFGLMelHfkDaz
+hLZ2kgdkkq81Uf2zK1fK+Ou1Lj0YOr0T7hvjTxNbsb7UdyL0FQkdox25mfTvi0ymYW92gy
+yJsaI7UOjp69WpzFlDTpCEAQWGTZoTk5uCQiymOzAAAFiGU2hwdlNocHAAAAB3NzaC1yc2
+EAAAGBAM3jg+iFwCRTI40HSrMZwe5Q3Zmsa632jUtTK6dTZenr8yzYHuGBcC2ZiywElLae
+mR8BOZ+KpmxrkCqBJqPHkvNMCvEnr4dVrua2STGPU+a2mIPA6OH4tv979FN2MxSqX0sYL+
+3563gbKnDMkXihsoP97Si40OIca55Q5XEiQzEYMsEAGScd88eTBkO1ptvceZTObFC0n/ON
+drHNOYsjwgu/Q/9j615Mxu0k8wh9gxxHu/qMi+2HEds3Trqg7IFiL3JkN0WoeP86r9/NTS
+Y6PIQOa0+JS2XdvCFA/mwGfofPMSdT1lPaGqlts8jroVNoNkNIMYfyttqkBFYN5TXBJ2u9
+M7dih2CvvCrBxLYQzJ+WGLww3aWyg9q3eHl83RCq6F++orahRizHpR35A2s4S2dpIHZJKv
+NVH9sytXyvjrtS49GDq9E+4b408TW7G+1Hci9BUJHaMduZn074tMpmFvdoMsibGiO1Do6e
+vVqcxZQ06QhAEFhk2aE5ObgkIspjswAAAAMBAAEAAAGADUJuclZ6zga/WWEeLHP84K47N0
+m6vZS3+3aQbybt1Kd/cmSQyJEfelr9yDNF/eTaPlGZNm8lfKyzYiljJapqtQSGsoqNwWIr
+8MEjQZqAxXD+WC3fpv3vkHtD0ZmL0fQ5ot/HO8TxUeYzUNm73KWn64bk888YlMH5JFRYEn
+XUbKBUVHL/K7JqysWV4l0b2+Onvi+fxirRH6GoApdm8fu25C7IivVnvnD6DA0UdyLY2MS9
+6criEBq3dFjBgeoZ5n3o1sG2MFcuzloTP0Mep8gi5rpmDRafEb8NtHhaLhPXeynCw20osY
+Q5hoOOQNTuaNo0MKkQ5V3dXVEIFpBJayVsxA8bBRzEuQjUauarju47FTPiUoIgPCvdk3Y6
+AFdwCzKuMGkH+sjvzQzXfZvkhdkJbtUNrXLmLB/7I6LFaaDLGr9dOu3R82g8wiUEp2P98E
+Ih1M/jyFqqY/WYw1Rc58/9JIqhQV9n2a4DQVcamT5CsV3C0NfOiIpThfW4UwKrP9bBAAAA
+wQDJVWQjn2aFtCg4QoUDnnbPib1XE+78rGowYOtguFRGGvbEQfnmDMJiIOAHd0Igw8ImbD
+sa723tsH9OMrYHhEwGrq+BXZZ3a/D5d7PrDslHMWlwW75ArcucrwpayGcx1qw/1guaU+Ht
+np1qCAJ4SzMn4+tMpIPL0ukUGYWRRw9aAwHZDHpl0a83CU9wrdTxZW1ZHF+epEhxg0dKKk
+bMfGxun1M3kwO7yxEzb/9ABqvL1x5tHXc33o70l7Spn4spiEEAAADBAN3BjRcKSM4QxuMc
+SX55wMoDOSdJ+fyJRQCGNoGMlSxF5o3UinKdXyXvkV1aMVFZLUCwtT3YHQlMIwSGP6oYlG
+NGAp5iHuqA1PTSN2I3C1SOOCzU+BXNKHlF3gNVsfF5/xXh9ae3HBtP9lPCb1EsRMkKUtmI
+XlwAOKLK51w3VoAgTsY92KGzMaLdUK2odno+7c9P2oIhu1mJ/MsRicuGXf0rEYaDxdenQQ
+ShWECOmo7hKxYeqYgv0GLqgi56nEpIIwAAAMEA7a6yoUq9YdXolRzcqSjY9cUIYKe2zXEg
+lVfqgMZ7y8rC/H06FmUvpC4lY5IhaebHVIUIfr7tu0gbFeeP00ze9nBfoFAoYfOynq4EmO
+2RXtOAQhlf++9HcjI7e8Rmhi2NRWFnUUFErQasA05EGEEKYxonBrNlvafXbuDOjCNXMU2D
+jtP8HQO7cjZXHZDY3mLtKv0xJM0KQ3eNRUfBU2ljtNL1GhmuZ0aPBhs9iMw4jI7Oz7jfQD
+5VH9MBknUayecxAAAAC3Jvb3RASGFja1BDAQIDBAUGBw==
+-----END OPENSSH PRIVATE KEY-----
diff -ruN /image.org/etc/ssh/ssh_host_rsa_key.pub /image/etc/ssh/ssh_host_rsa_key.pub
--- /image.org/etc/ssh/ssh_host_rsa_key.pub	2015-12-30 04:50:32.000000000 +0300
+++ /image/etc/ssh/ssh_host_rsa_key.pub	2023-07-31 03:37:14.000000000 +0300
@@ -1 +1 @@
-ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCgTKbgLBs+KPMlMaP6krmpJtq/VGIki6AALPQlpvCj5+ElK1EO8QdBkd8VdydjXCyBenZJ+xsuxmWzoihl6Q2B7WgcXs5AnTCFguhKAFx8EKU1eiTUuUd7NFJMdTsfa7DmOirPH6jYHRhqBmthyoySRnu/5HpeDXHUFmebukz4/2xPGJUtNyx51z3eCfHuXzCbAIe6q2LscCQCEzNvbLa919FJZlTwY0ZqdzF72zaDy1DPiyG9YrIR73iYBfjGoqpY7h+2npnq9Lhto4I1fsa9sK1LBFapWOqI3ShDRUIY/9LgUsYZeOEvSZbUWHXjIY70G7ZSRA/mIpX8FusQECSv root@ROCKROBO-DRIVER-Workstation
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDN44PohcAkUyONB0qzGcHuUN2ZrGut9o1LUyunU2Xp6/Ms2B7hgXAtmYssBJS2npkfATmfiqZsa5AqgSajx5LzTArxJ6+HVa7mtkkxj1PmtpiDwOjh+Lb/e/RTdjMUql9LGC/t+et4GypwzJF4obKD/e0ouNDiHGueUOVxIkMxGDLBABknHfPHkwZDtabb3HmUzmxQtJ/zjXaxzTmLI8ILv0P/Y+teTMbtJPMIfYMcR7v6jIvthxHbN066oOyBYi9yZDdFqHj/Oq/fzU0mOjyEDmtPiUtl3bwhQP5sBn6HzzEnU9ZT2hqpbbPI66FTaDZDSDGH8rbapARWDeU1wSdrvTO3Yodgr7wqwcS2EMyflhi8MN2lsoPat3h5fN0QquhfvqK2oUYsx6Ud+QNrOEtnaSB2SSrzVR/bMrV8r467UuPRg6vRPuG+NPE1uxvtR3IvQVCR2jHbmZ9O+LTKZhb3aDLImxojtQ6Onr1anMWUNOkIQBBYZNmhOTm4JCLKY7M= root@HackPC
diff -ruN /image.org/etc/timezone /image/etc/timezone
--- /image.org/etc/timezone	2015-12-30 06:03:35.000000000 +0300
+++ /image/etc/timezone	2023-07-31 03:37:14.000000000 +0300
@@ -1 +1 @@
-Asia/Shanghai
+Europe/Berlin
diff -ruN /image.org/etc/wgetrc /image/etc/wgetrc
--- /image.org/etc/wgetrc	1970-01-01 03:00:00.000000000 +0300
+++ /image/etc/wgetrc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,135 @@
+###
+### Sample Wget initialization file .wgetrc
+###
+
+## You can use this file to change the default behaviour of wget or to
+## avoid having to type many many command-line options. This file does
+## not contain a comprehensive list of commands -- look at the manual
+## to find out what you can put into this file. You can find this here:
+##   $ info wget.info 'Startup File'
+## Or online here:
+##   https://www.gnu.org/software/wget/manual/wget.html#Startup-File
+##
+## Wget initialization file can reside in /etc/wgetrc
+## (global, for all users) or $HOME/.wgetrc (for a single user).
+##
+## To use the settings in this file, you will have to uncomment them,
+## as well as change them, in most cases, as the values on the
+## commented-out lines are the default values (e.g. "off").
+
+
+##
+## Global settings (useful for setting up in /etc/wgetrc).
+## Think well before you change them, since they may reduce wget's
+## functionality, and make it behave contrary to the documentation:
+##
+
+# You can set retrieve quota for beginners by specifying a value
+# optionally followed by 'K' (kilobytes) or 'M' (megabytes).  The
+# default quota is unlimited.
+#quota = inf
+
+# You can lower (or raise) the default number of retries when
+# downloading a file (default is 20).
+#tries = 20
+
+# Lowering the maximum depth of the recursive retrieval is handy to
+# prevent newbies from going too "deep" when they unwittingly start
+# the recursive retrieval.  The default is 5.
+#reclevel = 5
+
+# By default Wget uses "passive FTP" transfer where the client
+# initiates the data connection to the server rather than the other
+# way around.  That is required on systems behind NAT where the client
+# computer cannot be easily reached from the Internet.  However, some
+# firewalls software explicitly supports active FTP and in fact has
+# problems supporting passive transfer.  If you are in such
+# environment, use "passive_ftp = off" to revert to active FTP.
+#passive_ftp = off
+passive_ftp = on
+
+# The "wait" command below makes Wget wait between every connection.
+# If, instead, you want Wget to wait only between retries of failed
+# downloads, set waitretry to maximum number of seconds to wait (Wget
+# will use "linear backoff", waiting 1 second after the first failure
+# on a file, 2 seconds after the second failure, etc. up to this max).
+#waitretry = 10
+
+
+##
+## Local settings (for a user to set in his $HOME/.wgetrc).  It is
+## *highly* undesirable to put these settings in the global file, since
+## they are potentially dangerous to "normal" users.
+##
+## Even when setting up your own ~/.wgetrc, you should know what you
+## are doing before doing so.
+##
+
+# Set this to on to use timestamping by default:
+#timestamping = off
+
+# It is a good idea to make Wget send your email address in a `From:'
+# header with your request (so that server administrators can contact
+# you in case of errors).  Wget does *not* send `From:' by default.
+#header = From: Your Name <username@site.domain>
+
+# You can set up other headers, like Accept-Language.  Accept-Language
+# is *not* sent by default.
+#header = Accept-Language: en
+
+# You can set the default proxies for Wget to use for http, https, and ftp.
+# They will override the value in the environment.
+#https_proxy = http://proxy.yoyodyne.com:18023/
+#http_proxy = http://proxy.yoyodyne.com:18023/
+#ftp_proxy = http://proxy.yoyodyne.com:18023/
+
+# If you do not want to use proxy at all, set this to off.
+#use_proxy = on
+
+# You can customize the retrieval outlook.  Valid options are default,
+# binary, mega and micro.
+#dot_style = default
+
+# Setting this to off makes Wget not download /robots.txt.  Be sure to
+# know *exactly* what /robots.txt is and how it is used before changing
+# the default!
+#robots = on
+
+# It can be useful to make Wget wait between connections.  Set this to
+# the number of seconds you want Wget to wait.
+#wait = 0
+
+# You can force creating directory structure, even if a single is being
+# retrieved, by setting this to on.
+#dirstruct = off
+
+# You can turn on recursive retrieving by default (don't do this if
+# you are not sure you know what it means) by setting this to on.
+#recursive = off
+
+# To always back up file X as X.orig before converting its links (due
+# to -k / --convert-links / convert_links = on having been specified),
+# set this variable to on:
+#backup_converted = off
+
+# To have Wget follow FTP links from HTML files by default, set this
+# to on:
+#follow_ftp = off
+
+# To try ipv6 addresses first:
+#prefer-family = IPv6
+
+# Set default IRI support state
+#iri = off
+
+# Force the default system encoding
+#locale = UTF-8
+
+# Force the default remote server encoding
+#remoteencoding = UTF-8
+
+# Turn on to prevent following non-HTTPS links when in recursive mode
+#httpsonly = off
+
+# Tune HTTPS security (auto, SSLv2, SSLv3, TLSv1, PFS)
+#secureprotocol = auto
Binary files /image.org/lib/arm-linux-gnueabihf/libgsm.so.1 and /image/lib/arm-linux-gnueabihf/libgsm.so.1 differ
Binary files /image.org/lib/arm-linux-gnueabihf/libgsm.so.1.0.12 and /image/lib/arm-linux-gnueabihf/libgsm.so.1.0.12 differ
Binary files /image.org/lib/arm-linux-gnueabihf/libpng12.so.0 and /image/lib/arm-linux-gnueabihf/libpng12.so.0 differ
Binary files /image.org/lib/arm-linux-gnueabihf/libpng12.so.0.50.0 and /image/lib/arm-linux-gnueabihf/libpng12.so.0.50.0 differ
Binary files /image.org/opt/rockrobo/miio/miio_client and /image/opt/rockrobo/miio/miio_client differ
Binary files /image.org/opt/rockrobo/miio/miio_recv_line and /image/opt/rockrobo/miio/miio_recv_line differ
Binary files /image.org/opt/rockrobo/miio/miio_send_line and /image/opt/rockrobo/miio/miio_send_line differ
Binary files /image.org/opt/rockrobo/resources/sounds/start_greeting.wav and /image/opt/rockrobo/resources/sounds/start_greeting.wav differ
diff -ruN /image.org/opt/rockrobo/rrlog/misc.sh /image/opt/rockrobo/rrlog/misc.sh
--- /image.org/opt/rockrobo/rrlog/misc.sh	2019-07-12 11:43:35.000000000 +0300
+++ /image/opt/rockrobo/rrlog/misc.sh	2023-07-31 03:37:14.000000000 +0300
@@ -1,4 +1,5 @@
 #!/bin/bash
+exit 0
 date >> /dev/shm/misc.log
 cat /dev/jiffies >> /dev/shm/misc.log
 echo "=======/proc/interrupts==========" >> /dev/shm/misc.log
diff -ruN /image.org/opt/rockrobo/rrlog/rrlog.conf /image/opt/rockrobo/rrlog/rrlog.conf
--- /image.org/opt/rockrobo/rrlog/rrlog.conf	2018-01-02 08:54:39.000000000 +0300
+++ /image/opt/rockrobo/rrlog/rrlog.conf	2023-07-31 03:37:14.000000000 +0300
@@ -1,6 +1,6 @@
 MAX_TAR_FILE_SIZE=734003200
 #UPLOAD_METHOD   0:NO_UPLOAD    1:FTP    2:FDS
-UPLOAD_METHOD=2
+UPLOAD_METHOD=0
 #UPLOAD_URL=ftp://ftpuser:passwd@192.168.176.157 
 UPLOAD_URL=https://awsbj0.fds.api.xiaomi.com
 #UPLOAD_URL=http://files.fds.api.xiaomi.com
@@ -11,6 +11,6 @@
 MAX_UPLOAD_SPEED=51200
 ONLY_UPLOAD_ONDOCK=1
 #LEVEL_ERROR = 3U #LEVEL_WARN = 4U #LEVEL_INFO = 6U #LEVEL_DEBUG = 7U #LEVEl_VERBOSE = 8U
-LOG_LEVEL=6
+LOG_LEVEL=3
 #UPLOAD_EN_DEFAULT      0: will not upload log  1: will upload bkbox by default   3:will upload bkbox and EVENTASK 7: upload bkbox and all logs 
 UPLOAD_EN_DEFAULT=0
\ No newline at end of file
diff -ruN /image.org/opt/rockrobo/rrlog/rrlogmt.conf /image/opt/rockrobo/rrlog/rrlogmt.conf
--- /image.org/opt/rockrobo/rrlog/rrlogmt.conf	2018-01-02 08:54:39.000000000 +0300
+++ /image/opt/rockrobo/rrlog/rrlogmt.conf	2023-07-31 03:37:14.000000000 +0300
@@ -1,6 +1,6 @@
 MAX_TAR_FILE_SIZE=734003200
 #UPLOAD_METHOD   0:NO_UPLOAD    1:FTP    2:FDS
-UPLOAD_METHOD=2
+UPLOAD_METHOD=0
 #UPLOAD_URL=ftp://ftpuser:passwd@192.168.176.157 
 UPLOAD_URL=https://awsbj0-files.fds.api.xiaomi.com
 #UPLOAD_URL=http://files.fds.api.xiaomi.com
@@ -11,6 +11,6 @@
 MAX_UPLOAD_SPEED=51200
 ONLY_UPLOAD_ONDOCK=1
 #LEVEL_ERROR = 3U #LEVEL_WARN = 4U #LEVEL_INFO = 6U #LEVEL_DEBUG = 7U #LEVEl_VERBOSE = 8U
-LOG_LEVEL=8
+LOG_LEVEL=3
 #UPLOAD_EN_DEFAULT      0: will not upload log  1: will upload bkbox by default   3:will upload bkbox and EVENTASK 7: upload bkbox and all logs 
 UPLOAD_EN_DEFAULT=0
\ No newline at end of file
diff -ruN /image.org/opt/rockrobo/rrlog/tar_extra_file.sh /image/opt/rockrobo/rrlog/tar_extra_file.sh
--- /image.org/opt/rockrobo/rrlog/tar_extra_file.sh	2018-11-15 05:50:38.000000000 +0300
+++ /image/opt/rockrobo/rrlog/tar_extra_file.sh	2023-07-31 03:37:14.000000000 +0300
@@ -2,10 +2,10 @@
 set -x
 mkdir -p /mnt/data/rockrobo/rrlog
 cd /mnt/data/rockrobo/rrlog
-nice -n 19 gzip core.*
+
 
 cd /var/log
-nice -n 19 tar zcf $RR_UDATA/rockrobo/rrlog/varlog.tar.gz ./*
+
 rm -rf *.gz
 rm -rf *.0
 rm -rf *.1
@@ -15,12 +15,12 @@
 echo "" > /var/log/kern.log
 
 cd /opt/rockrobo
-nice -n 19 tar zcf $RR_UDATA/rockrobo/rrlog/version.tar.gz ./buildnumber ./version_info.txt
+
 cd /mnt/data/rockrobo/
-nice -n 19 tar zcf /mnt/data/rockrobo/rrlog/mt_test.tar.gz MtNavLog.* mtlog.*
+
 rm MtNavLog.*
 rm mtlog.*
 cd /mnt/data/rockrobo/rrlog
-nice -n 19 gzip uart_test.log
-nice -n 19 gzip uart_test_command.txt
-nice -n 19 gzip uart_test_lds_data.log
+
+
+
diff -ruN /image.org/opt/rockrobo/rrlog/toprotation.sh /image/opt/rockrobo/rrlog/toprotation.sh
--- /image.org/opt/rockrobo/rrlog/toprotation.sh	2018-01-02 08:54:39.000000000 +0300
+++ /image/opt/rockrobo/rrlog/toprotation.sh	2023-07-31 03:37:14.000000000 +0300
@@ -1,4 +1,5 @@
 #!/bin/bash
+exit 0
 top -H -d 15 -b >>/dev/shm/topHtmp.log &
 top -d 5 -b >>/dev/shm/toptmp.log &
 FILEH=/dev/shm/topHtmp.log
diff -ruN /image.org/opt/rockrobo/rrlog/topstop.sh /image/opt/rockrobo/rrlog/topstop.sh
--- /image.org/opt/rockrobo/rrlog/topstop.sh	2018-01-02 08:54:39.000000000 +0300
+++ /image/opt/rockrobo/rrlog/topstop.sh	2023-07-31 03:37:14.000000000 +0300
@@ -1,4 +1,5 @@
 #!/bin/bash
+exit 0
 set -x
 mkdir -p /mnt/data/rockrobo/rrlog
 killall toprotation.sh
diff -ruN /image.org/opt/rockrobo/watchdog/ProcessList.conf /image/opt/rockrobo/watchdog/ProcessList.conf
--- /image.org/opt/rockrobo/watchdog/ProcessList.conf	2018-06-15 10:45:45.000000000 +0300
+++ /image/opt/rockrobo/watchdog/ProcessList.conf	2023-07-31 03:37:14.000000000 +0300
@@ -5,5 +5,5 @@
 AppProxy,setsid AppProxy&,0,3,0
 wlanmgr,setsid wlanmgr&,0,3,0
 SysUpdate,setsid SysUpdate&,0,3,0
-miio_client,setsid miio_client -d /mnt/data/miio/ -l 2 >> /mnt/data/rockrobo/rrlog/miio.log 2>&1&,0,1,9
+miio_client,setsid miio_client -d /mnt/data/miio/ -l 0 >> /mnt/data/rockrobo/rrlog/miio.log 2>&1&,0,1,9
 miio_client_helper_nomqtt.sh,setsid miio_client_helper_nomqtt.sh >> /mnt/data/rockrobo/rrlog/miio.log 2>&1&,0,1,0
diff -ruN /image.org/opt/rockrobo/watchdog/ntpserver.conf /image/opt/rockrobo/watchdog/ntpserver.conf
--- /image.org/opt/rockrobo/watchdog/ntpserver.conf	2018-08-17 08:02:02.000000000 +0300
+++ /image/opt/rockrobo/watchdog/ntpserver.conf	2023-07-31 03:37:14.000000000 +0300
@@ -1,2 +1 @@
-#you can add your server line by line
-127.0.0.1
+pool.ntp.org
diff -ruN /image.org/opt/rockrobo/watchdog/rrwatchdoge.conf /image/opt/rockrobo/watchdog/rrwatchdoge.conf
--- /image.org/opt/rockrobo/watchdog/rrwatchdoge.conf	2019-07-12 11:43:35.000000000 +0300
+++ /image/opt/rockrobo/watchdog/rrwatchdoge.conf	2023-07-31 03:37:14.000000000 +0300
@@ -59,7 +59,7 @@
     mkdir -p $RR_UDATA/wlan
     mkdir -p $RR_UDATA/miio
     ldconfig
-    iptables -I INPUT -j DROP -p tcp --dport 22
+#    iptables -I INPUT -j DROP -p tcp --dport 22
     iptables -I INPUT -j DROP -p tcp --dport 6665
     iptables -I INPUT -j DROP -p udp --dport 6665
     $RR_ROOT/scripts/provision.sh
@@ -68,6 +68,8 @@
     ip6tables -P INPUT DROP
     ip6tables -P FORWARD DROP
     ip6tables -P OUTPUT DROP
+ 
+    mountpoint -q $RR_UDATA/rockrobo/rrlog || mount -t tmpfs -o size=5m tmpfs $RR_UDATA/rockrobo/rrlog
 end script
 
 script
@@ -93,7 +95,7 @@
 	chdir $RR_ROOT
 	PATH=$PATH:$RR_ROOT/rrlog:$RR_ROOT/cleaner/bin:$RR_ROOT/wlan:$RR_ROOT/watchdog:$RR_ROOT/miio:$RR_ROOT/firmware
     sysctl -w kernel.softlockup_panic=1 &   
-    ulimit -c unlimited
+    ulimit -c 0
     echo '/mnt/data/rockrobo/rrlog/core.%t.%s.%e' > /proc/sys/kernel/core_pattern 
     exec WatchDoge $RR_ROOT/watchdog >> $RR_UDATA/rockrobo/rrlog/watchdog.log 2>&1
 end script
diff -ruN /image.org/root/.vimrc /image/root/.vimrc
--- /image.org/root/.vimrc	1970-01-01 03:00:00.000000000 +0300
+++ /image/root/.vimrc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,28 @@
+"
+set nocompatible
+set backspace=indent,eol,start
+set nobackup
+set nowritebackup
+set noundofile
+set history=150
+set ruler     
+set showcmd  
+set incsearch
+map Q gq
+inoremap <C-U> <C-G>u<C-U>
+set hlsearch
+set lazyredraw
+set showmatch
+set mat=2
+set incsearch
+set ignorecase
+set magic
+set fileformats=unix,dos,mac
+set mps+=<:> "
+set tabstop=4
+set shiftwidth=4
+set expandtab
+set smarttab
+set softtabstop=4
+set cursorline
+
diff -ruN /image.org/root/run.d/change_root_pass.sh /image/root/run.d/change_root_pass.sh
--- /image.org/root/run.d/change_root_pass.sh	1970-01-01 03:00:00.000000000 +0300
+++ /image/root/run.d/change_root_pass.sh	2023-07-31 03:37:14.000000000 +0300
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+echo "  - Set a password for root"
+echo "root:cleaner" | chpasswd
diff -ruN /image.org/root/run.d/convert2prc.sh /image/root/run.d/convert2prc.sh
--- /image.org/root/run.d/convert2prc.sh	1970-01-01 03:00:00.000000000 +0300
+++ /image/root/run.d/convert2prc.sh	2023-07-31 03:37:14.000000000 +0300
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -f /mnt/default/roborock.conf ]; then
+    cat /mnt/default/roborock.conf | grep 'location=prc' > /dev/null 2>&1
+    if [ "$?" -ne 0 ]; then
+        mount -o remount,rw /mnt/default
+        if [ -w /mnt/default/roborock.conf ]; then
+            echo "  - Change region to Mainland China"
+            cp /mnt/default/roborock.conf /mnt/default/roborock.conf.$(date "+%Y-%m-%d_%H-%M")
+            sed -i 's/location.*/location=prc/' /mnt/default/roborock.conf
+        fi
+        mount -o remount,ro /mnt/default
+    fi
+fi
diff -ruN /image.org/root/run.d/create_custom_user.sh /image/root/run.d/create_custom_user.sh
--- /image.org/root/run.d/create_custom_user.sh	1970-01-01 03:00:00.000000000 +0300
+++ /image/root/run.d/create_custom_user.sh	2023-07-31 03:37:14.000000000 +0300
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+echo "  - Create custom user"
+if [ -f /usr/sbin/newusers ]; then
+    echo "cleaner:cleaner::::/home/cleaner:/bin/bash" | newusers
+    usermod -G sudo cleaner
+else
+    adduser cleaner -s /bin/sh -D -G sudo -g "custom user"
+    echo "cleaner:cleaner" | chpasswd
+fi
diff -ruN /image.org/root/run.d/init_phrases.sh /image/root/run.d/init_phrases.sh
--- /image.org/root/run.d/init_phrases.sh	1970-01-01 03:00:00.000000000 +0300
+++ /image/root/run.d/init_phrases.sh	2023-07-31 03:37:14.000000000 +0300
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+echo "  - Init random_phrases"
+mkdir -p /mnt/data/random_phrases/phrases
+rm -f /mnt/data/random_phrases/phrases.sh
+ln -s /usr/local/bin/phrases.sh /mnt/data/random_phrases/phrases.sh
+crontab -l | { sed '/phrases.sh/d'; echo "*/2 * * * * /mnt/data/random_phrases/phrases.sh"; } | crontab -
diff -ruN /image.org/root/run_once.sh /image/root/run_once.sh
--- /image.org/root/run_once.sh	1970-01-01 03:00:00.000000000 +0300
+++ /image/root/run_once.sh	2023-07-31 03:37:14.000000000 +0300
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+date >> /root/vacuum.txt
+
+mkdir -p /mnt/data/root
+touch /mnt/data/root/.bash_history
+ln -s /mnt/data/root/.bash_history /root/ > /dev/null 2>&1
+
+echo "Run custom scripts" >> /root/vacuum.txt
+
+if [ -d /root/run.d ]; then
+    for FILE in /root/run.d/*.sh; do
+        if [ -r $FILE ]; then
+            echo "RUN - $FILE" >> /root/vacuum.txt
+            . $FILE >> /root/vacuum.txt 2>&1
+        fi
+    done
+    unset FILE
+fi
+
+echo "Delete scripts after execution" >> /root/vacuum.txt
+sed -i -E 's/.*run_once.*//' /etc/rc.local
+rm -rf /root/run_once.sh /root/run.d
+echo "END" >> /root/vacuum.txt
Binary files /image.org/usr/bin/adbd and /image/usr/bin/adbd differ
Binary files /image.org/usr/bin/bbe and /image/usr/bin/bbe differ
Binary files /image.org/usr/bin/curl and /image/usr/bin/curl differ
Binary files /image.org/usr/bin/htop and /image/usr/bin/htop differ
Binary files /image.org/usr/bin/nano and /image/usr/bin/nano differ
Binary files /image.org/usr/bin/play and /image/usr/bin/play differ
Binary files /image.org/usr/bin/rec and /image/usr/bin/rec differ
Binary files /image.org/usr/bin/snmpd and /image/usr/bin/snmpd differ
Binary files /image.org/usr/bin/sox and /image/usr/bin/sox differ
Binary files /image.org/usr/bin/soxi and /image/usr/bin/soxi differ
Binary files /image.org/usr/bin/wget and /image/usr/bin/wget differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/libmad.so.0 and /image/usr/lib/arm-linux-gnueabihf/libmad.so.0 differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/libmad.so.0.2.1 and /image/usr/lib/arm-linux-gnueabihf/libmad.so.0.2.1 differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/libmp3lame.so.0 and /image/usr/lib/arm-linux-gnueabihf/libmp3lame.so.0 differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/libmp3lame.so.0.0.0 and /image/usr/lib/arm-linux-gnueabihf/libmp3lame.so.0.0.0 differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/libsox.so.2 and /image/usr/lib/arm-linux-gnueabihf/libsox.so.2 differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/libsox.so.2.0.1 and /image/usr/lib/arm-linux-gnueabihf/libsox.so.2.0.1 differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_alsa.so and /image/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_alsa.so differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_amr_nb.so and /image/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_amr_nb.so differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_amr_wb.so and /image/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_amr_wb.so differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_ao.so and /image/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_ao.so differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_caf.so and /image/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_caf.so differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_fap.so and /image/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_fap.so differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_flac.so and /image/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_flac.so differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_gsm.so and /image/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_gsm.so differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_lpc10.so and /image/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_lpc10.so differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_mat4.so and /image/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_mat4.so differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_mat5.so and /image/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_mat5.so differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_mp3.so and /image/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_mp3.so differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_oss.so and /image/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_oss.so differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_paf.so and /image/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_paf.so differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_pulseaudio.so and /image/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_pulseaudio.so differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_pvf.so and /image/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_pvf.so differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_sd2.so and /image/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_sd2.so differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_sndfile.so and /image/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_sndfile.so differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_vorbis.so and /image/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_vorbis.so differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_w64.so and /image/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_w64.so differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_wavpack.so and /image/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_wavpack.so differ
Binary files /image.org/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_xi.so and /image/usr/lib/arm-linux-gnueabihf/sox/libsox_fmt_xi.so differ
Binary files /image.org/usr/lib/libid3tag.so.0 and /image/usr/lib/libid3tag.so.0 differ
Binary files /image.org/usr/lib/libid3tag.so.0.3.0 and /image/usr/lib/libid3tag.so.0.3.0 differ
Binary files /image.org/usr/lib/libtwolame.so.0 and /image/usr/lib/libtwolame.so.0 differ
Binary files /image.org/usr/lib/libtwolame.so.0.0.0 and /image/usr/lib/libtwolame.so.0.0.0 differ
diff -ruN /image.org/usr/lib/mime/packages/sox /image/usr/lib/mime/packages/sox
--- /image.org/usr/lib/mime/packages/sox	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/lib/mime/packages/sox	2020-03-09 16:33:02.000000000 +0300
@@ -0,0 +1,5 @@
+audio/basic; /usr/bin/play -t au %s
+audio/x-aiff; /usr/bin/play -t aiff %s
+audio/x-gsm; /usr/bin/play -t gsm %s
+audio/x-wav; /usr/bin/play -t wav %s
+
diff -ruN /image.org/usr/local/bin/phrases.sh /image/usr/local/bin/phrases.sh
--- /image.org/usr/local/bin/phrases.sh	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/local/bin/phrases.sh	2023-07-31 03:37:14.000000000 +0300
@@ -0,0 +1,76 @@
+#!/usr/bin/env bash
+
+LANG=C LC_ALL=C
+DIR='/mnt/data/random_phrases/phrases'
+
+if [ `ls $DIR | wc -l` -eq 0 ]; then
+    echo "sound directory is empty"
+    exit
+fi
+
+if [ -f "/root/bin/busybox" ]; then
+    SHUF="/root/bin/busybox shuf"
+else
+    SHUF=`which shuf`
+fi
+
+if [ -z "$SHUF" ]; then
+    echo "'shuf' not found"
+    exit 2
+fi
+
+HANDSHAKE='21310020ffffffffffffffffffffffffffffffffffffffffffffffffffffffff'
+ID=1
+ATTEMPTS=50
+TOKEN=$(head -c 16 /mnt/data/miio/device.token | xxd -p -c 1000000)
+KEY=$(echo -n $TOKEN | xxd -r -p | md5sum | awk '{print $1}')
+IV=$(echo -n $KEY | xxd -r -p | cat - <(echo -n $TOKEN | xxd -r -p) | md5sum | awk '{print $1}')
+exec 3<>/dev/udp/127.0.0.1/54321
+while [[ (-z "$STATUS" || -z "$VOLUME") && "$ATTEMPTS" -ne 0 ]]; do
+    echo -n $HANDSHAKE | xxd -r -p >&3
+    SHEADER=$(timeout 0.1 dd bs=16 count=1 <&3 2> /dev/null | xxd -p -c 1000000)
+    if [ -z "$STATUS" ]; then
+        MESSAGE=$(echo -n '{"method":"get_status","id":'$ID'}' | openssl aes-128-cbc -e -K $KEY -iv $IV | xxd -p -c 1000000)
+        LENGTH=$(printf '%04x' $((32+${#MESSAGE}/2)))
+        HEADER=$(echo -n ${SHEADER:0:4}$LENGTH${SHEADER:8})
+        CHECKSUM=$(echo -n $HEADER$TOKEN$MESSAGE | xxd -r -p |  md5sum | awk '{print $1}')
+        HEADER=$(echo -n ${HEADER:0:32}$CHECKSUM)
+        PACKET=$HEADER$MESSAGE
+        echo -n $PACKET  | xxd -r -p >&3
+        STATUS=$(timeout 0.1 dd bs=999 count=1 <&3 2> /dev/null | xxd -p -c 1000000)
+    fi
+    if [ -z "$VOLUME" ]; then
+        ID=$((ID+1))
+        MESSAGE=$(echo -n '{"method":"get_sound_volume","id":'$ID'}' | openssl aes-128-cbc -e -K $KEY -iv $IV | xxd -p -c 1000000)
+        LENGTH=$(printf '%04x' $((32+${#MESSAGE}/2)))
+        HEADER=$(echo -n ${SHEADER:0:4}$LENGTH${SHEADER:8})
+        CHECKSUM=$(echo -n $HEADER$TOKEN$MESSAGE | xxd -r -p |  md5sum | awk '{print $1}')
+        HEADER=$(echo -n ${HEADER:0:32}$CHECKSUM)
+        PACKET=$HEADER$MESSAGE
+        echo -n $PACKET  | xxd -r -p >&3
+        VOLUME=$(timeout 0.1 dd bs=999 count=1 <&3 2> /dev/null | xxd -p -c 1000000)
+    fi
+    ID=$((ID+10))
+    ATTEMPTS=$((ATTEMPTS-1))
+    echo -n '>'
+done
+echo ''
+if [ -n "$STATUS" ]; then
+    DECRYPTED=$(echo -n ${STATUS:64} | xxd -r -p | openssl aes-128-cbc -d -K $KEY -iv $IV)
+    STATE=$(echo -n $DECRYPTED | sed 's/.*"state"\s*:\s*\([0-9]\+\).*/\1/')
+    DND=$(echo -n $DECRYPTED | sed 's/.*"dnd_enabled"\s*:\s*\([0-9]\+\).*/\1/')
+    if [[ "$DND" -eq 0 && ("$STATE" -eq 5 || "$STATE" -eq 11 || "$STATE" -eq 17 || "$STATE" -eq 18) ]]; then
+        if [ -n "${VOLUME_OVERRIDE}" ]; then
+            VOLUME="${VOLUME_OVERRIDE}"
+        elif [ -z "$VOLUME" ]; then
+            VOLUME='0.5'
+        else
+            VOLUME=$(echo -n ${VOLUME:64} | xxd -r -p | openssl aes-128-cbc -d -K $KEY -iv $IV | sed 's/.*"result"\s*:\s*\[\s*\([0-9]\+\).*/\1/')
+            VOLUME=$(printf '%03d'  $(((VOLUME - 30) * (100 - 10) / (90 - 30) + 10)) | sed 's/..$/.&/')
+        fi
+        FILE=$(ls $DIR | $SHUF -n 1)
+        echo 'Play phrase' $FILE
+        sox -v $VOLUME $DIR/$FILE -d > /dev/null 2>&1
+    fi
+fi
+exec 3>&-
diff -ruN /image.org/usr/local/bin/rrlogclean.sh /image/usr/local/bin/rrlogclean.sh
--- /image.org/usr/local/bin/rrlogclean.sh	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/local/bin/rrlogclean.sh	2023-07-31 03:37:14.000000000 +0300
@@ -0,0 +1,19 @@
+#!/usr/bin/env bash
+if [ -d /mnt/data/rockrobo/rrlog ]; then
+  items=/mnt/data/rockrobo/rrlog/*
+  for item in $items
+  do
+    if [ -d "$item" ]; then
+      echo "Removing directory '$item'..."
+      rm -fr "$item"
+    elif [ -f "$item" ]; then
+      if [[ "$item" == *".log" ]]; then
+        echo "Shrinking log '$item'..."
+        echo "$(tail -50 "$item")" > $item
+      else
+        echo "Removing file '$item'..."
+        rm "$item"
+      fi
+    fi
+  done
+fi
\ No newline at end of file
diff -ruN /image.org/usr/local/bin/sound_server.pl /image/usr/local/bin/sound_server.pl
--- /image.org/usr/local/bin/sound_server.pl	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/local/bin/sound_server.pl	2023-07-31 03:37:14.000000000 +0300
@@ -0,0 +1,60 @@
+#!/usr/bin/perl
+#
+# Source: https://habr.com/ru/post/435064/
+
+use strict;
+use warnings;
+use IO::Socket::INET;
+
+$| = 1;
+
+my $volume = 1.0;
+my $volume_file = "/mnt/data/sox_volume";
+if (-e $volume_file) {
+    open FILE, $volume_file;
+    $volume = <FILE>;
+    chomp $volume;
+    close FILE;
+    print "restored volume level: $volume\n";
+}
+
+my $socket = new IO::Socket::INET (
+    LocalHost => '0.0.0.0',
+    LocalPort => '7777',
+    Proto => 'tcp',
+    Listen => 2,
+    Reuse => 1
+);
+
+die "cannot create socket $!\n" unless $socket;
+print "server waiting for client connection on port 7777\n";
+
+while(1)
+{
+    my $client_socket = $socket->accept();
+    my $client_address = $client_socket->peerhost();
+    my $client_port = $client_socket->peerport();
+    # print "connection from $client_address:$client_port\n";
+    my $data = '';
+    my $playing = 'False';
+    $client_socket->recv($data, 256);
+    # print "received data: $data\n";
+    my @urls = split /;/, $data;
+    if (scalar(@urls) > 1 && not grep(/^$urls[1]$/, ('', 'None', $volume))) {
+        $volume = $urls[1];
+        open FILE, ">$volume_file";
+        print FILE $volume, "\n";
+        close FILE;
+    }
+    if ($urls[0] ne '' && $urls[0] ne 'None') {
+        system("killall -s 9 play > /dev/null 2>&1");
+        if ($urls[0] ne 'stop') {
+            system("play -q -v " . $volume * 2 . " \"$urls[0]\" &");
+        }
+    }
+    $playing = system("ps aux | grep -e '[ ]play ' >/dev/null") == 0 ? 'True' : 'False';
+    $client_socket->send("playing=$playing;volume=$volume");
+    shutdown($client_socket, 1);
+}
+
+$socket->close();
diff -ruN /image.org/usr/share/nano/asm.nanorc /image/usr/share/nano/asm.nanorc
--- /image.org/usr/share/nano/asm.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/asm.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,17 @@
+## Here is an example for assembler.
+##
+syntax "asm" "\.(S|s|asm)$"
+color red "\<[A-Z_]{2,}\>"
+color brightgreen "\.(data|subsection|text)"
+color green "\.(align|file|globl|global|hidden|section|size|type|weak)"
+color brightyellow "\.(ascii|asciz|byte|double|float|hword|int|long|short|single|struct|word)"
+icolor brightred "^[[:space:]]*[.0-9A-Z_]*:"
+color brightcyan "^[[:space:]]*#[[:space:]]*(define|undef|include|ifn?def|endif|elif|else|if|warning|error)"
+## Highlight strings (note: VERY resource intensive)
+color brightyellow "<[^= 	]*>" ""(\\.|[^"])*""
+color brightyellow start=""(\\.|[^"])*\\[[:space:]]*$" end="^(\\.|[^"])*""
+## Highlight comments
+color brightblue "//.*"
+color brightblue start="/\*" end="\*/"
+## Highlight trailing whitespace
+color ,green "[[:space:]]+$"
diff -ruN /image.org/usr/share/nano/awk.nanorc /image/usr/share/nano/awk.nanorc
--- /image.org/usr/share/nano/awk.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/awk.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,38 @@
+## Here is an example for awk.
+##
+syntax "awk" "\.awk$"
+## records
+icolor brightred "\$[0-9A-Z_!@#$*?-]+"
+## awk-set variables
+color red "\<(ARGC|ARGIND|ARGV|BINMODE|CONVFMT|ENVIRON|ERRNO|FIELDWIDTHS)\>"
+color red "\<(FILENAME|FNR|FS|IGNORECASE|LINT|NF|NR|OFMT|OFS|ORS)\>"
+color red "\<(PROCINFO|RS|RT|RSTART|RLENGTH|SUBSEP|TEXTDOMAIN)\>"
+## function declarations and special patterns
+color brightgreen "\<(function|extension|BEGIN|END)\>"
+## operators
+color green "(\{|\}|\(|\)|\;|\]|\[|\\|<|>|!|=|&|\+|-|\*|%|/|\?:|\^|\|)"
+## flow control
+color brightyellow "\<(for|if|while|do|else|in|delete|exit)\>"
+color brightyellow "\<(break|continue|return)\>"
+## I/O statements
+color brightgreen "\<(close|getline|next|nextfile|print|printf)\>"
+color brightgreen "\<(system|fflush)\>"
+## standard functions
+color magenta "\<(atan2|cos|exp|int|log|rand|sin|sqrt|srand)\>"
+color magenta "\<(asort|asorti|gensub|gsub|index|length|match)\>"
+color magenta "\<(split|sprintf|strtonum|sub|substr|tolower|toupper)\>"
+color magenta "\<(mktime|strftime|systime)\>"
+color magenta "\<(and|compl|lshift|or|rshift|xor)\>"
+color magenta "\<(bindtextdomain|dcgettext|dcngettext)\>"
+
+##
+## String highlighting.  You will in general want your comments and
+## strings to come last, because syntax highlighting rules will be
+## applied in the order they are read in.
+color brightyellow "<[^= 	]*>" ""(\\.|[^"])*""
+
+## Comment highlighting
+color brightblue "(^|[[:space:]])#.*$"
+
+## Trailing whitespace
+color ,green "[[:space:]]+$"
diff -ruN /image.org/usr/share/nano/c.nanorc /image/usr/share/nano/c.nanorc
--- /image.org/usr/share/nano/c.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/c.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,30 @@
+## Here is an example for C/C++.
+##
+syntax "c" "\.(c(c|pp|xx)?|C)$" "\.(h(h|pp|xx)?|H)$" "\.ii?$"
+color brightred "\<[A-Z_][0-9A-Z_]+\>" 
+color green "\<(float|double|bool|char|int|short|long|sizeof|enum|void|auto|static|const|struct|union|typedef|extern|(un)?signed|inline)\>"
+color green "\<((s?size)|((u_?)?int(8|16|32|64|ptr)))_t\>"
+color green "\<(class|namespace|template|public|protected|private|typename|this|friend|virtual|using|mutable|volatile|register|explicit)\>"
+color brightyellow "\<(for|if|while|do|else|case|default|switch)\>"
+color brightyellow "\<(try|throw|catch|operator|new|delete)\>"
+color magenta "\<(goto|continue|break|return)\>"
+color brightcyan "^[[:space:]]*#[[:space:]]*(define|include(_next)?|(un|ifn?)def|endif|el(if|se)|if|warning|error|pragma)"
+color brightmagenta "'([^'\]|(\\["'abfnrtv\\]))'" "'\\(([0-3]?[0-7]{1,2}))'" "'\\x[0-9A-Fa-f]{1,2}'"
+##
+## GCC builtins
+color cyan "__attribute__[[:space:]]*\(\([^)]*\)\)" "__(aligned|asm|builtin|hidden|inline|packed|restrict|section|typeof|weak)__"
+##
+## String highlighting.  You will in general want your comments and
+## strings to come last, because syntax highlighting rules will be
+## applied in the order they are read in.
+color brightyellow "<[^= 	]*>" ""(\\.|[^"])*""
+##
+## This string is VERY resource intensive!
+color brightyellow start=""(\\.|[^"])*\\[[:space:]]*$" end="^(\\.|[^"])*""
+
+## Comment highlighting
+color brightblue "//.*"
+color brightblue start="/\*" end="\*/"
+
+## Trailing whitespace
+color ,green "[[:space:]]+$"
diff -ruN /image.org/usr/share/nano/cmake.nanorc /image/usr/share/nano/cmake.nanorc
--- /image.org/usr/share/nano/cmake.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/cmake.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,19 @@
+## CMake syntax highlighter for GNU Nano
+##
+syntax "cmake" "(CMakeLists\.txt|\.cmake)$"
+
+icolor green "^[[:space:]]*[A-Z0-9_]+"
+icolor brightyellow "^[[:space:]]*(include|include_directories|include_external_msproject)\>"
+
+icolor brightgreen "^[[:space:]]*\<((else|end)?if|else|(end)?while|(end)?foreach|break)\>"
+color brightgreen "\<(NOT|COMMAND|POLICY|TARGET|EXISTS|IS_(DIRECTORY|ABSOLUTE)|DEFINED)\>[[:space:]]"
+color brightgreen "[[:space:]]\<(OR|AND|IS_NEWER_THAN|MATCHES|(STR|VERSION_)?(LESS|GREATER|EQUAL))\>[[:space:]]"
+
+icolor brightred "^[[:space:]]*\<((end)?(function|macro)|return)"
+
+icolor cyan start="\$(\{|ENV\{)" end="\}"
+color magenta "\<(APPLE|UNIX|WIN32|CYGWIN|BORLAND|MINGW|MSVC(_IDE|60|71|80|90)?)\>"
+
+icolor brightblue "^([[:space:]]*)?#.*"
+icolor brightblue "[[:space:]]#.*"
+color ,green "[[:space:]]+$"
diff -ruN /image.org/usr/share/nano/css.nanorc /image/usr/share/nano/css.nanorc
--- /image.org/usr/share/nano/css.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/css.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,9 @@
+## Here is an example for css files.
+##
+syntax "css" "\.css$"
+color brightred     "."
+color brightyellow  start="\{" end="\}"
+color brightwhite   start=":" end="([;^\{]|$)"
+color brightblue    ":active|:focus|:hover|:link|:visited|:link|:after|:before|$"
+color brightblue    start="\/\*" end="\\*/"
+color green         ";|:|\{|\}"
diff -ruN /image.org/usr/share/nano/debian.nanorc /image/usr/share/nano/debian.nanorc
--- /image.org/usr/share/nano/debian.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/debian.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,20 @@
+## Here is an exmaple for apt's sources.list
+## Adapted from http://milianw.de/blog/Syntax-Highlighting-in-Nano
+## (mail@milianw.de).
+##
+syntax "apt/sources.list" "sources\.list(\.old|~)?$"
+# component
+color brightmagenta "^deb(-src)? ((http|file|ftp):/[^ ]+|cdrom:\[[^\]]+\]/|cdrom:\[[-a-zA-Z0-9\._\(\) ]+\]/) [^ ]+ .+$"
+# distribution
+color brightred "^deb(-src)? ((http|file|ftp):/[^ ]+|cdrom:\[[^\]]+\]/|cdrom:\[[-a-zA-Z0-9\._\(\) ]+\]/) [^ ]+"
+# URI
+color brightgreen "(http|file|ftp):/[^ ]+"
+# cdroms
+# [^\]] does not work...
+color brightgreen "cdrom:\[[-a-zA-Z0-9\._\(\) ]+\]/"
+# deb / deb-src
+color yellow "^deb"
+color yellow "^deb-src"
+# comments
+color brightblue "#.*"
+
diff -ruN /image.org/usr/share/nano/fortran.nanorc /image/usr/share/nano/fortran.nanorc
--- /image.org/usr/share/nano/fortran.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/fortran.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,41 @@
+## Here is an example for Fortran 90/95
+
+syntax "fortran" "\.(f|f90|f95)$" 
+
+#color red "\<[A-Z_]a[0-9A-Z_]+\>" 
+color red "\<[0-9]+\>" 
+
+icolor green "\<(action|advance|all|allocatable|allocated|any|apostrophe)\>"
+icolor green "\<(append|asis|assign|assignment|associated|character|common)\>"
+icolor green "\<(complex|data|default|delim|dimension|double precision)\>"
+icolor green "\<(elemental|epsilon|external|file|fmt|form|format|huge)\>"
+icolor green "\<(implicit|include|index|inquire|integer|intent|interface)\>"
+icolor green "\<(intrinsic|iostat|kind|logical|module|none|null|only)>"
+icolor green "\<(operator|optional|pack|parameter|pointer|position|private)\>"
+icolor green "\<(program|public|real|recl|recursive|selected_int_kind)\>"
+icolor green "\<(selected_real_kind|subroutine|status)\>"
+
+icolor cyan "\<(abs|achar|adjustl|adjustr|allocate|bit_size|call|char)\>" 
+icolor cyan "\<(close|contains|count|cpu_time|cshift|date_and_time)\>" 
+icolor cyan "\<(deallocate|digits|dot_product|eor|eoshift|function|iachar)\>" 
+icolor cyan "\<(iand|ibclr|ibits|ibset|ichar|ieor|iolength|ior|ishft|ishftc)\>" 
+icolor cyan "\<(lbound|len|len_trim|matmul|maxexponent|maxloc|maxval|merge)\>" 
+icolor cyan "\<(minexponent|minloc|minval|mvbits|namelist|nearest|nullify)\>" 
+icolor cyan "\<(open|pad|present|print|product|pure|quote|radix)\>" 
+icolor cyan "\<(random_number|random_seed|range|read|readwrite|replace)\>" 
+icolor cyan "\<(reshape|rewind|save|scan|sequence|shape|sign|size|spacing)\>" 
+icolor cyan "\<(spread|sum|system_clock|target|transfer|transpose|trim)\>" 
+icolor cyan "\<(ubound|unpack|verify|write|tiny|type|use|yes)\>"
+
+icolor yellow "\<(.and.|case|do|else|else?if|else?where|end|end?do|end?if)\>"
+icolor yellow "\<(end?select|.eqv.|forall|if|lge|lgt|lle|llt|.neqv.|.not.)\>"
+icolor yellow "\<(.or.|repeat|select case|then|where|while)\>"
+
+icolor magenta "\<(continue|cycle|exit|go?to|result|return)\>"
+
+## String highlighting.  
+icolor yellow "<[^= 	]*>" ""(\\.|[^"])*""
+
+## Comment highlighting
+icolor blue "!.*"
+
diff -ruN /image.org/usr/share/nano/gentoo.nanorc /image/usr/share/nano/gentoo.nanorc
--- /image.org/usr/share/nano/gentoo.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/gentoo.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,55 @@
+## Here is an example for Gentoo ebuilds/eclasses
+##
+syntax "ebuild" "\.e(build|class)$"
+## All the standard portage functions
+color brightgreen "^src_(unpack|prepare|configure|compile|install|test)" "^pkg_(config|nofetch|setup|(pre|post)(inst|rm))"
+## Highlight bash related syntax
+color green "\<(case|do|done|elif|else|esac|exit|fi|for|function|if|in|local|read|return|select|shift|then|time|until|while|continue|break)\>"
+color green "\<(declare|eval|exec|let)\>"
+color green "(\{|\}|\(|\)|\;|\]|\[|`|\\|\$|<|>|!|=|&|\|)"
+color green "-[edfgruwxL]\>"
+color green "-(eq|ne|gt|lt|ge|le|s|n|z)\>"
+## Highlight variables ... official portage ones in red, all others in bright red
+color brightred "\$\{?[a-zA-Z_0-9]+\}?"
+color red "\<(EAPI|ARCH|HOMEPAGE|DESCRIPTION|IUSE|SRC_URI|LICENSE|SLOT|KEYWORDS|(P|R)?DEPEND|PROVIDE|PROPERTIES|RESTRICT|USERLAND)\>"
+color red "\<(S|D|T|PV|PF|P|PN|PR|PVR|A|CATEGORY|DISTDIR|FILESDIR|ROOT|WORKDIR)\>" "\<(AS|C(PP|XX)?|LD)FLAGS\>" "\<C(HOST|TARGET|BUILD)\>"
+color red "\<QA_((TEXTRELS|EXECSTACK|WX_LOAD)(_[a-zA-Z_0-9]+)?|DT_HASH|PRESTRIPPED)\>" "\<WANT_AUTO(CONF|MAKE)\>" "\<AT_M4DIR\>"
+## Highlight portage commands
+color magenta "\<use(_(with|enable))?\> [!a-zA-Z0-9_+ -]*" "inherit.*"
+color brightblue "\<e(begin|end|conf|install|make|qmake[34]|ant|(qa)?warn|infon?|error|log|patch|new(group|user))\>"
+color brightblue "\<e(pause|beep|mktemp|(cvs|svn)_clean|punt_cxx)\>" "\<e(aclocal|auto(reconf|header|conf|make))\>"
+color brightblue "\<built_with_use\>" "\<make_desktop_entry\>" "\<unpack(_(makeself|pdv))?\>"
+color brightblue "\<die\>" "\<use(_(with|enable))?\>" "\<inherit\>" "\<has\>" "\<(has|best)_version\>"
+color brightblue "\<(do|new)(ins|(games)?s?bin|doc|lib(\.so|\.a)?|man|info|exe|initd|confd|envd|pam|menu|icon)\>"
+color brightblue "\<do(python|sed|dir|hard|sym|html|jar|mo)\>" "\<keepdir\>"
+color brightblue "prepall(docs|info|man|strip)?" "prep(info|lib|lib\.(so|a)|man|strip|gamesdirs)"
+color brightblue "\<(doc|ins|exe)?into\>" "\<(f|games)(owners|perms)\>" "\<(exe|ins|dir)opts\>"
+## Highlight common commands used in ebuilds
+color blue "\<make\>" "\<(awk|cat|cd|chmod|chown|cp|echo|env|export|find|e?grep|ln|mkdir|mv|rm|sed|set|tar|touch|unset|xargs)\>"
+## Highlight comments (doesnt work that well)
+color yellow "(^|[[:space:]])#.*$"
+## Highlight strings (doesnt work that well)
+color brightyellow ""(\\.|[^\"])*"" "'(\\.|[^'])*'"
+## Trailing space is bad!
+color ,green "[[:space:]]+$"
+
+## Here is an example for Portage control files
+##
+syntax "/etc/portage" "\.(keywords|mask|unmask|use)(/.+)?$"
+## Base text:
+color green "^.+$"
+## Use flags:
+color brightred "[[:space:]]+\+?[a-zA-Z0-9_-]+"
+color brightblue "[[:space:]]+-[a-zA-Z0-9_-]+"
+## Likely version and slot numbers:
+color magenta "-[[:digit:]].*([[:space:]]|$)"
+color magenta ":[^[:space:]]+([[:space:]]|$)"
+## Accepted arches:
+color white "[~-]?\<(alpha|amd64|arm|hppa|ia64|mips|ppc|ppc64|s390|sh|sparc(-fbsd)?|x86(-fbsd)?)\>"
+color white "[[:space:]][*~-]?\*"
+## Categories:
+color cyan "^[[:space:]]*.*/"
+## Masking regulators:
+color brightmagenta "^[[:space:]]*(=|~|<|<=|=<|>|>=|=>)"
+## Comments:
+color yellow "#.*$"
diff -ruN /image.org/usr/share/nano/groff.nanorc /image/usr/share/nano/groff.nanorc
--- /image.org/usr/share/nano/groff.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/groff.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,24 @@
+## Here is an example for groff.
+##
+syntax "groff" "\.m[ems]$" "\.rof" "\.tmac$" "^tmac."
+## The argument of .ds or .nr
+color cyan "^\.(ds|nr) [^[[:space:]]]*"
+## Single character escapes
+color brightmagenta "\\."
+## Highlight the argument of \f or \s in the same color
+color brightmagenta "\\f." "\\f\(.." "\\s(\+|\-)?[0-9]"
+## Newlines
+color cyan "(\\|\\\\)n(.|\(..)"
+color cyan start="(\\|\\\\)n\[" end="]"
+## Requests
+color brightgreen "^\.[[:space:]]*[^[[:space:]]]*"
+## Comments
+color yellow "^\.\\".*$"
+## Strings
+color green "(\\|\\\\)\*(.|\(..)"
+color green start="(\\|\\\\)\*\[" end="]"
+## Characters
+color brightred "\\\(.."
+color brightred start="\\\[" end="]"
+## Macro arguments
+color brightcyan "\\\\\$[1-9]"
diff -ruN /image.org/usr/share/nano/html.nanorc /image/usr/share/nano/html.nanorc
--- /image.org/usr/share/nano/html.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/html.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,5 @@
+## Here is a short example for HTML.
+##
+syntax "html" "\.html$"
+color blue start="<" end=">"
+color red "&[^;[[:space:]]]*;"
diff -ruN /image.org/usr/share/nano/java.nanorc /image/usr/share/nano/java.nanorc
--- /image.org/usr/share/nano/java.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/java.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,12 @@
+## Here is an example for Java.
+##
+syntax "java" "\.java$"
+color green "\<(boolean|byte|char|double|float|int|long|new|short|this|transient|void)\>"
+color red "\<(break|case|catch|continue|default|do|else|finally|for|if|return|switch|throw|try|while)\>"
+color cyan "\<(abstract|class|extends|final|implements|import|instanceof|interface|native|package|private|protected|public|static|strictfp|super|synchronized|throws|volatile)\>"
+color red ""[^"]*""
+color yellow "\<(true|false|null)\>"
+color blue "//.*"
+color blue start="/\*" end="\*/"
+color brightblue start="/\*\*" end="\*/"
+color ,green "[[:space:]]+$"
diff -ruN /image.org/usr/share/nano/makefile.nanorc /image/usr/share/nano/makefile.nanorc
--- /image.org/usr/share/nano/makefile.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/makefile.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,8 @@
+# unattributed syntax highlighting example from wiki.linuxhelp.net/
+
+syntax "makefile" "Makefile[^/]*$"
+color red "[:=]"
+color magenta "\<(if|ifeq|else|endif)\>"
+color blue "\$+[{(][a-zA-Z0-9_-]+[})]"
+color brightblue "^[^ 	]+:"
+color green "#.*$"
diff -ruN /image.org/usr/share/nano/man.nanorc /image/usr/share/nano/man.nanorc
--- /image.org/usr/share/nano/man.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/man.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,9 @@
+## Here is an example for manpages.
+##
+syntax "man" "\.[1-9]x?$"
+color green "\.(S|T)H.*$"
+color brightgreen "\.(S|T)H" "\.TP"
+color brightred "\.(BR?|I[PR]?).*$"
+color brightblue "\.(BR?|I[PR]?|PP)"
+color brightwhite "\\f[BIPR]"
+color yellow "\.(br|DS|RS|RE|PD)"
diff -ruN /image.org/usr/share/nano/mgp.nanorc /image/usr/share/nano/mgp.nanorc
--- /image.org/usr/share/nano/mgp.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/mgp.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,8 @@
+## Here is an example for Magicpoint presentations
+##
+syntax "mgp" "\.mgp$"
+header "^%include.*"
+icolor green "^%[a-z].*$"
+color cyan "(^|[[:space:]])#.*$"
+color cyan "(^|[[:space:]])%%.*$"
+color ,green "[[:space:]]+$"
diff -ruN /image.org/usr/share/nano/mutt.nanorc /image/usr/share/nano/mutt.nanorc
--- /image.org/usr/share/nano/mutt.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/mutt.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,4 @@
+## Here is an example for quoted emails (under e.g. mutt).
+##
+syntax "mutt"
+color green "^>.*"
diff -ruN /image.org/usr/share/nano/nano-menu.xpm /image/usr/share/nano/nano-menu.xpm
--- /image.org/usr/share/nano/nano-menu.xpm	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/nano-menu.xpm	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,279 @@
+/* XPM */
+static char * nano_menu_xpm[] = {
+"32 32 244 2",
+"  	c None",
+". 	c #E5E5E5",
+"+ 	c #AAE8E8",
+"@ 	c #A4E8E8",
+"# 	c #9BDADA",
+"$ 	c #AEAEAE",
+"% 	c #98E8E8",
+"& 	c #D5D5D5",
+"* 	c #8ECDCD",
+"= 	c #8AA9A9",
+"- 	c #97D6D6",
+"; 	c #DFDFDF",
+"> 	c #77E2E2",
+", 	c #D3D3D3",
+"' 	c #85C4C4",
+") 	c #6C8B8B",
+"! 	c #505050",
+"~ 	c #112B2B",
+"{ 	c #060606",
+"] 	c #070707",
+"^ 	c #BCBCBC",
+"/ 	c #85F0F0",
+"( 	c #DCDCDC",
+"_ 	c #6CAAAA",
+": 	c #515151",
+"< 	c #121212",
+"[ 	c #535353",
+"} 	c #A3E2E2",
+"| 	c #B3BABA",
+"1 	c #3E3E3E",
+"2 	c #0F0F0F",
+"3 	c #010101",
+"4 	c #0C0C0C",
+"5 	c #0E0E0E",
+"6 	c #181818",
+"7 	c #A8E6E6",
+"8 	c #D0E7E7",
+"9 	c #AEECEC",
+"0 	c #9E9E9E",
+"a 	c #424242",
+"b 	c #131313",
+"c 	c #141414",
+"d 	c #365555",
+"e 	c #E3E3E3",
+"f 	c #A0B8B8",
+"g 	c #222222",
+"h 	c #101010",
+"i 	c #080808",
+"j 	c #2D4C4C",
+"k 	c #D7E7E7",
+"l 	c #A3D4D4",
+"m 	c #5D5D5D",
+"n 	c #282828",
+"o 	c #212121",
+"p 	c #2D2D2D",
+"q 	c #323232",
+"r 	c #252525",
+"s 	c #1B1B1B",
+"t 	c #1C1C1C",
+"u 	c #232323",
+"v 	c #292929",
+"w 	c #A2C1C1",
+"x 	c #89EFEF",
+"y 	c #ECECEC",
+"z 	c #8FD3D3",
+"A 	c #A1B3B3",
+"B 	c #686868",
+"C 	c #747474",
+"D 	c #7FB7B7",
+"E 	c #494949",
+"F 	c #3C3C3C",
+"G 	c #5B6D6D",
+"H 	c #B8B8B8",
+"I 	c #93DCDC",
+"J 	c #A4ECEC",
+"K 	c #BECFCF",
+"L 	c #696969",
+"M 	c #2E2E2E",
+"N 	c #333333",
+"O 	c #353535",
+"P 	c #3B3B3B",
+"Q 	c #93B2B2",
+"R 	c #C5E9E9",
+"S 	c #56F5F5",
+"T 	c #828282",
+"U 	c #262626",
+"V 	c #525252",
+"W 	c #344A4A",
+"X 	c #6C6C6C",
+"Y 	c #84C3C3",
+"Z 	c #B5EAEA",
+"` 	c #A1EDED",
+" .	c #CBDEDE",
+"..	c #3D3D3D",
+"+.	c #484848",
+"@.	c #4C4C4C",
+"#.	c #B6B6B6",
+"$.	c #94EEEE",
+"%.	c #CEE8E8",
+"&.	c #2F2F2F",
+"*.	c #799898",
+"=.	c #9EE3E3",
+"-.	c #BEE9E9",
+";.	c #5D6868",
+">.	c #4E4E4E",
+",.	c #555555",
+"'.	c #606060",
+").	c #A2E1E1",
+"!.	c #C0E9E9",
+"~.	c #343434",
+"{.	c #A3A3A3",
+"].	c #A7ECEC",
+"^.	c #507070",
+"/.	c #5B5B5B",
+"(.	c #626262",
+"_.	c #587777",
+":.	c #E1E1E1",
+"<.	c #D1D1D1",
+"[.	c #1D1D1D",
+"}.	c #393939",
+"|.	c #6B6B6B",
+"1.	c #AFEEEE",
+"2.	c #E0E0E0",
+"3.	c #495D5D",
+"4.	c #666666",
+"5.	c #749393",
+"6.	c #AAAAAA",
+"7.	c #191919",
+"8.	c #6B8B8B",
+"9.	c #EBEBEB",
+"0.	c #90CFCF",
+"a.	c #5A5A5A",
+"b.	c #A8A8A8",
+"c.	c #B1EBEB",
+"d.	c #74F2F2",
+"e.	c #808080",
+"f.	c #303030",
+"g.	c #88A7A7",
+"h.	c #B0EBEB",
+"i.	c #89A6A6",
+"j.	c #636363",
+"k.	c #9CBBBB",
+"l.	c #4C7D7D",
+"m.	c #404040",
+"n.	c #3D5C5C",
+"o.	c #C9E8E8",
+"p.	c #202020",
+"q.	c #363636",
+"r.	c #BBDCDC",
+"s.	c #E2E2E2",
+"t.	c #364646",
+"u.	c #436363",
+"v.	c #C7E8E8",
+"w.	c #CECECE",
+"x.	c #0D0D0D",
+"y.	c #324444",
+"z.	c #CEECEC",
+"A.	c #8FCECE",
+"B.	c #2C2C2C",
+"C.	c #7A7A7A",
+"D.	c #C6E8E8",
+"E.	c #9D9D9D",
+"F.	c #090909",
+"G.	c #596767",
+"H.	c #C1EDED",
+"I.	c #799E9E",
+"J.	c #87A6A6",
+"K.	c #A2EDED",
+"L.	c #707070",
+"M.	c #2A2A2A",
+"N.	c #878787",
+"O.	c #B7EAEA",
+"P.	c #526C6C",
+"Q.	c #C2C2C2",
+"R.	c #364A4A",
+"S.	c #8CABAB",
+"T.	c #9BEDED",
+"U.	c #ADEBEB",
+"V.	c #242424",
+"W.	c #273B3B",
+"X.	c #0F1919",
+"Y.	c #111111",
+"Z.	c #CCCCCC",
+"`.	c #B8CECE",
+" +	c #355F5F",
+".+	c #AAC0C0",
+"++	c #1E1E1E",
+"@+	c #2A4040",
+"#+	c #BBE8E8",
+"$+	c #71A7A7",
+"%+	c #649C9C",
+"&+	c #555E5E",
+"*+	c #D2E7E7",
+"=+	c #637575",
+"-+	c #2B2B2B",
+";+	c #89A0A0",
+">+	c #5E6D6D",
+",+	c #7B7B7B",
+"'+	c #8DEFEF",
+")+	c #374F4F",
+"!+	c #7CA3A3",
+"~+	c #294242",
+"{+	c #88A1A1",
+"]+	c #CCE8E8",
+"^+	c #303737",
+"/+	c #526B6B",
+"(+	c #AAE0E0",
+"_+	c #9EEDED",
+":+	c #DDDDDD",
+"<+	c #0B1111",
+"[+	c #97BDBD",
+"}+	c #DAE6E6",
+"|+	c #284242",
+"1+	c #414747",
+"2+	c #6B7777",
+"3+	c #87A2A2",
+"4+	c #89B0B0",
+"5+	c #7B9595",
+"6+	c #A4A4A4",
+"7+	c #B4BDBD",
+"8+	c #1F1F1F",
+"9+	c #ACE2E2",
+"0+	c #648484",
+"a+	c #747979",
+"b+	c #7A7F7F",
+"c+	c #979C9C",
+"d+	c #676767",
+"e+	c #737373",
+"f+	c #757575",
+"g+	c #629B9B",
+"h+	c #DCE6E6",
+"i+	c #DEE2E2",
+"j+	c #949494",
+"k+	c #646464",
+"l+	c #395555",
+"m+	c #8E8E8E",
+"n+	c #B3B3B3",
+"o+	c #ABE4E4",
+"p+	c #98E9E9",
+"q+	c #7CF1F1",
+"r+	c #DCE7E7",
+"s+	c #A9E6E6",
+"t+	c #9BE7E7",
+"u+	c #79EEEE",
+"                                                                ",
+"                                                                ",
+"                                                                ",
+"                                                                ",
+"                . + @ # $             % & * = - ;               ",
+"          > , ' ) ! ~ { ] ^     / ( _ : < ] < < [ }             ",
+"        | 1 2 3 3 { 4 5 6 7 8 9 0 a 2 5 b c 5 c c d e           ",
+"        f g c h i 4 c c j k l m n o p q r s s t u v w           ",
+"        x y z A B c s o C D E F G H I J K L M N O P Q R         ",
+"              S T s U M V W X Y Z       `  .P ..+.@.#.$.        ",
+"              %.m U &...! *.=..           -.;.>.,.'.).          ",
+"              !.~.U O >.{.].              . ^./.(._.:.          ",
+"              <.[.&.}.|.1.                2.3.'.4.5.%.          ",
+"              6.7.p }.8.9.                0.[ a.4.b.c.          ",
+"            d.e.7.f.}.g.h.              . i.! V j.k.h.          ",
+"            R [ 7.U }.H                 . l.m.E n.(             ",
+"            o.p.7.U q.r.                s.t.N F u.v.            ",
+"            w.x.7.U y.z.                A.B.N N C.D.            ",
+"            E.F.7.U G.H.              . I.u v p J.K.            ",
+"          . L.4 7.M.N.O.              . P.t p.p Q.              ",
+"          ].R.4 7.p S.T.              U.1 7.V.W.e               ",
+"          . X.Y.7.N Z.                `.[.7.g  +.               ",
+"          .+x.b ++@+#+              . $+s ++p.T $.              ",
+"        . %+i 7.p.&+*+              . =+7.p.-+;+R               ",
+"        . >+4 7.-+,+'+              U.)+7.p.n !+.               ",
+"        . ~+< 7.p {+]+              O.^+7.p.q /+(+. _+. :+      ",
+"        Z <+b 7.}.[+                }+|+7.U N 1+2+3+4+5+6+      ",
+"        7+4 x.8+N 9+                . 0+7.U N @.4.a+b+c+w       ",
+"        ^ d+e+f+g+h+                  i+j+k+l+L m+n+o+p+        ",
+"          q+q+. r+                      q+s.s+t+u+.             ",
+"                                                                ",
+"                                                                "};
diff -ruN /image.org/usr/share/nano/nanorc.nanorc /image/usr/share/nano/nanorc.nanorc
--- /image.org/usr/share/nano/nanorc.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/nanorc.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,16 @@
+## Here is an example for nanorc files.
+##
+syntax "nanorc" "\.?nanorc$"
+## Possible errors and parameters
+icolor brightwhite "^[[:space:]]*((un)?set|include|syntax|i?color).*$"
+## Keywords
+icolor brightgreen "^[[:space:]]*(set|unset)[[:space:]]+(allow_insecure_backup|autoindent|backup|backupdir|backwards|boldtext|brackets|casesensitive|const|cut|fill|historylog|matchbrackets|morespace|mouse|multibuffer|noconvert|nofollow|nohelp|nonewlines|nowrap|operatingdir|preserve|punct)\>" "^[[:space:]]*(set|unset)[[:space:]]+(quickblank|quotestr|rebinddelete|rebindkeypad|regexp|smarthome|smooth|softwrap|speller|suspend|suspendenable|tabsize|tabstospaces|tempfile|undo|view|whitespace|wordbounds)\>"
+icolor green "^[[:space:]]*(set|unset|include|syntax|header)\>"
+## Colors
+icolor yellow "^[[:space:]]*i?color[[:space:]]*(bright)?(white|black|red|blue|green|yellow|magenta|cyan)?(,(white|black|red|blue|green|yellow|magenta|cyan))?\>"
+icolor magenta "^[[:space:]]*i?color\>" "\<(start|end)="
+## Strings
+icolor white ""(\\.|[^"])*""
+## Comments
+icolor brightblue "^[[:space:]]*#.*$"
+icolor cyan "^[[:space:]]*##.*$"
diff -ruN /image.org/usr/share/nano/objc.nanorc /image/usr/share/nano/objc.nanorc
--- /image.org/usr/share/nano/objc.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/objc.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,41 @@
+## Here is an example for C/C++/Obj-C.
+##
+syntax "m" "\.m$"
+
+
+## Stuffs
+color brightwhite "\<[A-Z_][0-9A-Z_]+\>" 
+color green "\<(float|double|BOOL|bool|char|int|short|long|id|sizeof|enum|void|static|const|struct|union|typedef|extern|(un)?signed|inline)\>"
+color green "\<[[:alpha:]_][[:alnum:]_]*_t\>"
+color green "\<(class|namespace|template|public|protected|private|typename|this|friend|virtual|using|mutable|volatile|register|explicit)\>"
+color brightgreen "\<(for|if|while|do|else|case|default|switch)\>"
+color brightgreen "\<(try|throw|catch|operator|new|delete)\>"
+color brightgreen "\<(goto|continue|break|return)\>"
+color brightgreen "@\<(en(code|d)|i(mplementation|nterface)|selector)\>"
+##
+## GCC builtins
+color cyan "__attribute__[[:space:]]*\(\([^)]*\)\)" "__(aligned|asm|builtin|hidden|inline|packed|restrict|section|typeof|weak)__"
+
+## Selector/method
+color brightmagenta "(^|[[:space:]])\[.*[[:space:]].*\]"
+color white ":[[:alnum:]]*"
+color magenta "[[:alnum:]]*:"
+color white "\[[^][:space:]]*\]"
+
+##
+## String highlighting.  You will in general want your comments and
+## strings to come last, because syntax highlighting rules will be
+## applied in the order they are read in.
+color brightblack "'([^'\]|(\\["'abfnrtv\\]))'" "'\\(([0-3]?[0-7]{1,2}))'" "'\\x[0-9A-Fa-f]{1,2}'"
+color brightblack "<[^= 	]*>" ""(\\.|[^"])*""
+color brightblue "@"(\\.|[^"])*""
+##
+## This string is VERY resource intensive!
+## color brightyellow start=""(\\.|[^"])*\\[[:space:]]*$" end="^(\\.|[^"])*""
+
+color brightblue "^[[:space:]]*#[[:space:]]*(define|include|import|(un|ifn?)def|endif|el(if|se)|if|warning|error)"
+
+## Comment highlighting
+color yellow "//.*"
+color yellow start="/\*" end="\*/"
+
diff -ruN /image.org/usr/share/nano/ocaml.nanorc /image/usr/share/nano/ocaml.nanorc
--- /image.org/usr/share/nano/ocaml.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/ocaml.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,27 @@
+# OCaml sample nanorc
+#
+syntax "ocaml" "\.mli?$"
+#uid
+color red "\<[A-Z][0-9a-z_]{2,}\>"
+#declarations
+color green "\<(let|val|method|in|and|rec|private|virtual|constraint)\>"
+#structure items
+color red "\<(type|open|class|module|exception|external)\>"
+#patterns
+color blue "\<(fun|function|functor|match|try|with)\>"
+#patterns-modifiers
+color yellow "\<(as|when|of)\>" 
+#conditions
+color cyan "\<(if|then|else)\>"
+#blocs
+color magenta "\<(begin|end|object|struct|sig|for|while|do|done|to|downto)\>"
+#constantes
+color green "\<(true|false)\>"
+#modules/classes
+color green "\<(include|inherit|initializer)\>"
+#expr modifiers
+color yellow "\<(new|ref|mutable|lazy|assert|raise)\>"
+#comments
+color white start="\(\*" end="\*\)"
+#strings (no multiline handling yet)
+color brightblack ""[^\"]*""
diff -ruN /image.org/usr/share/nano/patch.nanorc /image/usr/share/nano/patch.nanorc
--- /image.org/usr/share/nano/patch.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/patch.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,10 @@
+## Here is an example for patch files.
+##
+syntax "patch" "\.(patch|diff)$"
+color brightgreen "^\+.*"
+color green "^\+\+\+.*"
+color brightblue "^ .*"
+color brightred "^-.*"
+color red "^---.*"
+color brightyellow "^@@.*"
+color magenta "^diff.*"
diff -ruN /image.org/usr/share/nano/perl.nanorc /image/usr/share/nano/perl.nanorc
--- /image.org/usr/share/nano/perl.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/perl.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,12 @@
+## Here is an example for Perl.
+##
+syntax "perl" "\.p[lm]$"
+header "^#!.*/perl[-0-9._]*"
+color red "\<(accept|alarm|atan2|bin(d|mode)|c(aller|h(dir|mod|op|own|root)|lose(dir)?|onnect|os|rypt)|d(bm(close|open)|efined|elete|ie|o|ump)|e(ach|of|val|x(ec|ists|it|p))|f(cntl|ileno|lock|ork))\>" "\<(get(c|login|peername|pgrp|ppid|priority|pwnam|(host|net|proto|serv)byname|pwuid|grgid|(host|net)byaddr|protobynumber|servbyport)|([gs]et|end)(pw|gr|host|net|proto|serv)ent|getsock(name|opt)|gmtime|goto|grep|hex|index|int|ioctl|join)\>" "\<(keys|kill|last|length|link|listen|local(time)?|log|lstat|m|mkdir|msg(ctl|get|snd|rcv)|next|oct|open(dir)?|ord|pack|pipe|pop|printf?|push|q|qq|qx|rand|re(ad(dir|link)?|cv|do|name|quire|set|turn|verse|winddir)|rindex|rmdir|s|scalar|seek(dir)?)\>" "\<(se(lect|mctl|mget|mop|nd|tpgrp|tpriority|tsockopt)|shift|shm(ctl|get|read|write)|shutdown|sin|sleep|socket(pair)?|sort|spli(ce|t)|sprintf|sqrt|srand|stat|study|substr|symlink|sys(call|read|tem|write)|tell(dir)?|time|tr(y)?|truncate|umask)\>" "\<(un(def|link|pack|shift)|utime|values|vec|wait(pid)?|wantarray|warn|write)\>"
+color magenta "\<(continue|else|elsif|do|for|foreach|if|unless|until|while|eq|ne|lt|gt|le|ge|cmp|x|my|sub|use|package|can|isa)\>"
+icolor cyan start="[$@%]" end="( |[^0-9A-Z_]|-)"
+color yellow "".*"|qq\|.*\|"
+color white "[sm]/.*/"
+color white start="(^use| = new)" end=";"
+color green "#.*"
+color yellow start="<< 'STOP'" end="STOP"
diff -ruN /image.org/usr/share/nano/php.nanorc /image/usr/share/nano/php.nanorc
--- /image.org/usr/share/nano/php.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/php.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,30 @@
+## Here is an example for PHP
+##
+syntax "php" "\.php[2345s~]?$"
+
+## php markings
+color brightgreen "(<\?(php)?|\?>)"
+
+## functions
+color white "\<[a-z_]*\("
+
+## types
+color green "\<(var|float|global|double|bool|char|int|enum|const)\>"
+
+## structure
+color brightyellow "\<(class|new|private|public|function|for|foreach|if|while|do|else|elseif|case|default|switch)\>"
+
+## control flow
+color magenta "\<(goto|continue|break|return)\>"
+
+## strings
+color brightyellow "<[^=       ]*>" ""(\.|[^"])*""
+
+## comments
+color brightblue "//.*"
+color brightblue start="/\*" end="\*/"
+#color blue start="<" end=">"
+#color red "&[^;[[:space:]]]*;"
+
+## Trailing whitespace
+color ,green "[[:space:]]+$"
diff -ruN /image.org/usr/share/nano/pov.nanorc /image/usr/share/nano/pov.nanorc
--- /image.org/usr/share/nano/pov.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/pov.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,15 @@
+## Here is an example for POV-Ray.
+##
+syntax "pov" "\.(pov|POV|povray|POVRAY)$"
+color brightcyan "^[[:space:]]*#[[:space:]]*(declare)"
+color brightyellow "\<(sphere|cylinder|translate|matrix|rotate|scale)\>"
+color brightyellow "\<(orthographic|location|up|right|direction|clipped_by)\>"
+color brightyellow "\<(fog_type|fog_offset|fog_alt|rgb|distance|transform)\>"
+color brightred "^\<(texture)\>"
+color brightred "\<(light_source|background)\>"
+color brightred "\<(fog|object|camera)\>"
+color green "(\{|\}|\(|\)|\;|\]|\[|`|\\|\$|<|>|!|=|&|\|)"
+color brightmagenta "\<(union|group|subgroup)\>"
+## Comment highlighting
+color brightblue "//.*"
+color brightblue start="/\*" end="\*/"
diff -ruN /image.org/usr/share/nano/python.nanorc /image/usr/share/nano/python.nanorc
--- /image.org/usr/share/nano/python.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/python.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,10 @@
+## Here is an example for Python.
+##
+syntax "python" "\.py$"
+header "^#!.*/python[-0-9._]*"
+icolor brightblue "def [0-9A-Z_]+"
+color brightcyan "\<(and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield)\>"
+color brightgreen "['][^']*[^\\][']" "[']{3}.*[^\\][']{3}"
+color brightgreen "["][^"]*[^\\]["]" "["]{3}.*[^\\]["]{3}"
+color brightgreen start=""""[^"]" end=""""" start="'''[^']" end="'''"
+color brightred "#.*$"
diff -ruN /image.org/usr/share/nano/ruby.nanorc /image/usr/share/nano/ruby.nanorc
--- /image.org/usr/share/nano/ruby.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/ruby.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,31 @@
+## Here is an example for Ruby.
+##
+syntax "ruby" "\.rb$"
+header "^#!.*/ruby[-0-9._]*"
+## Asciibetical list of reserved words
+color yellow "\<(BEGIN|END|alias|and|begin|break|case|class|def|defined\?|do|else|elsif|end|ensure|false|for|if|in|module|next|nil|not|or|redo|rescue|retry|return|self|super|then|true|undef|unless|until|when|while|yield)\>"
+## Constants
+color brightblue "(\$|@|@@)?\<[A-Z]+[0-9A-Z_a-z]*"
+## Ruby "symbols"
+icolor magenta "([ 	]|^):[0-9A-Z_]+\>"
+## Some unique things we want to stand out
+color brightyellow "\<(__FILE__|__LINE__)\>"
+## Regular expressions
+color brightmagenta "/([^/]|(\\/))*/[iomx]*" "%r\{([^}]|(\\}))*\}[iomx]*"
+## Shell command expansion is in `backticks` or like %x{this}.  These are
+## "double-quotish" (to use a perlism).
+color brightblue "`[^`]*`" "%x\{[^}]*\}"
+## Strings, double-quoted
+color green ""([^"]|(\\"))*"" "%[QW]?\{[^}]*\}" "%[QW]?\([^)]*\)" "%[QW]?<[^>]*>" "%[QW]?\[[^]]*\]" "%[QW]?\$[^$]*\$" "%[QW]?\^[^^]*\^" "%[QW]?![^!]*!"
+## Expression substitution.  These go inside double-quoted strings,
+## "like #{this}".
+color brightgreen "#\{[^}]*\}"
+## Strings, single-quoted
+color green "'([^']|(\\'))*'" "%[qw]\{[^}]*\}" "%[qw]\([^)]*\)" "%[qw]<[^>]*>" "%[qw]\[[^]]*\]" "%[qw]\$[^$]*\$" "%[qw]\^[^^]*\^" "%[qw]![^!]*!"
+## Comments
+color cyan "#[^{].*$" "#$"
+color brightcyan "##[^{].*$" "##$"
+## "Here" docs
+color green start="<<-?'?EOT'?" end="^EOT"
+## Some common markers
+color brightcyan "(XXX|TODO|FIXME|\?\?\?)"
diff -ruN /image.org/usr/share/nano/sh.nanorc /image/usr/share/nano/sh.nanorc
--- /image.org/usr/share/nano/sh.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/sh.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,14 @@
+## Here is an example for Bourne shell scripts.
+##
+syntax "sh" "\.sh$"
+header "^#!.*/(ba|k|pdk)?sh[-0-9_]*"
+icolor brightgreen "^[0-9A-Z_]+\(\)"
+color green "\<(case|do|done|elif|else|esac|exit|fi|for|function|if|in|local|read|return|select|shift|then|time|until|while)\>"
+color green "(\{|\}|\(|\)|\;|\]|\[|`|\\|\$|<|>|!|=|&|\|)"
+color green "-[Ldefgruwx]\>"
+color green "-(eq|ne|gt|lt|ge|le|s|n|z)\>"
+color brightblue "\<(cat|cd|chmod|chown|cp|echo|env|export|grep|install|let|ln|make|mkdir|mv|rm|sed|set|tar|touch|umask|unset)\>"
+icolor brightred "\$\{?[0-9A-Z_!@#$*?-]+\}?"
+color cyan "(^|[[:space:]])#.*$"
+color brightyellow ""(\\.|[^"])*"" "'(\\.|[^'])*'"
+color ,green "[[:space:]]+$"
diff -ruN /image.org/usr/share/nano/tcl.nanorc /image/usr/share/nano/tcl.nanorc
--- /image.org/usr/share/nano/tcl.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/tcl.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,16 @@
+syntax "tcl" "\.tcl$"
+
+## Standard Tcl [info commands]
+color green "\<(after|append|array|auto_execok|auto_import|auto_load|auto_load_index|auto_qualify|binary|break|case|catch|cd|clock|close|concat|continue|encoding|eof|error|eval|exec|exit|expr|fblocked|fconfigure|fcopy|file|fileevent|flush|for|foreach|format|gets|glob|global|history|if|incr|info|interp|join|lappend|lindex|linsert|list|llength|load|lrange|lreplace|lsearch|lset|lsort|namespace|open|package|pid|puts|pwd|read|regexp|regsub|rename|return|scan|seek|set|socket|source|split|string|subst|switch|tclLog|tell|time|trace|unknown|unset|update|uplevel|upvar|variable|vwait|while)\>"
+## Basic Tcl sub commands.
+color green "\<(array anymore|array donesearch|array exists|array get|array names|array nextelement|array set|array size|array startsearch|array statistics|array unset)\>"
+color green "\<(string bytelength|string compare|string equal|string first|string index|string is|string last|string length|string map|string match|string range|string repeat|string replace|string to|string tolower|string totitle|string toupper|string trim|string trimleft|string trimright|string will|string wordend|string wordstart)\>"
+## Extended TclX [info commands]
+color green "\<(alarm|auto_load_pkg|bsearch|catclose|catgets|catopen|ccollate|cconcat|cequal|chgrp|chmod|chown|chroot|cindex|clength|cmdtrace|commandloop|crange|csubstr|ctoken|ctype|dup|echo|execl|fcntl|flock|fork|fstat|ftruncate|funlock|host_info|id|infox|keyldel|keylget|keylkeys|keylset|kill|lassign|lcontain|lempty|lgets|link|lmatch|loadlibindex|loop|lvarcat|lvarpop|lvarpush|max|min|nice|pipe|profile|random|readdir|replicate|scancontext|scanfile|scanmatch|select|server_accept|server_create|signal|sleep|sync|system|tclx_findinit|tclx_fork|tclx_load_tndxs|tclx_sleep|tclx_system|tclx_wait|times|translit|try_eval|umask|wait)\>"
+## Syntax.
+color brightblue "proc[[:space:]]" "(\{|\})"
+color green "(\(|\)|\;|`|\\|\$|<|>|!|=|&|\|)"
+color brightyellow ""(\\.|[^"])*"" "'(\\.|[^'])*'"
+icolor brightred "\$\{?[0-9A-Z_!@#$*?-]+\}?"
+color ,green "[[:space:]]+$"
+color ,magenta "^[[:space:]]*#.*"
diff -ruN /image.org/usr/share/nano/tex.nanorc /image/usr/share/nano/tex.nanorc
--- /image.org/usr/share/nano/tex.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/tex.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,6 @@
+## Here is a short example for TeX files.
+##
+syntax "tex" "\.tex$"
+icolor green "\\.|\\[A-Z]*"
+color magenta "[{}]"
+color blue "(^|[^\])%.*"
diff -ruN /image.org/usr/share/nano/xml.nanorc /image/usr/share/nano/xml.nanorc
--- /image.org/usr/share/nano/xml.nanorc	1970-01-01 03:00:00.000000000 +0300
+++ /image/usr/share/nano/xml.nanorc	2020-01-02 12:32:18.000000000 +0300
@@ -0,0 +1,9 @@
+## Here is an example for xml files.
+##
+syntax "xml" "\.([jrs]html?|sgml?|xml|xslt?)$"
+color green  start="<" end=">"
+color cyan   "<[^> ]+"
+color cyan   ">"
+color yellow start="<!DOCTYPE" end="[/]?>"
+color yellow start="<!--" end="-->"
+color red    "&[^;]*;"
