refactor(nixos): bfs: some secrets

This commit is contained in:
2025-12-07 02:25:29 +00:00
parent 082b80f252
commit 1beb980b95
27 changed files with 757 additions and 91 deletions

View File

@@ -1,48 +1,77 @@
#!/bin/dash
# LISTEN
# ssh -NL localhost:42001:localhost:42001 root@hecticb
#
# socat TCP-LISTEN:42001,bind=127.0.0.1,fork - | mpv --no-cache --demuxer=rawaudio --audio-channels=mono --audio-samplerate=44100 --aid=1 -
exec 2>err.log
# SEND
# ssh -NR localhost:42002:localhost:42002 root@hectic-lab
#
# ffmpeg -f pulse -i default -t 10 -ar 44100 -f wav tcp:127.0.0.1:42002
PANEL_H=20
old_stty=$(stty -g)
main() {
make_panel_space
cols=$(tput cols)
lines=$(tput lines)
top=$(( lines - PANEL_H + 1 ))
[ "$top" -lt 1 ] && top=1
msg="Welcome to accord"
w=$(( ${#msg} + 4 ))
h=5
x=$(( (cols - w) / 2 ))
y=$(( top + (PANEL_H - h) / 2 ))
draw_box "$x" "$y" "$w" "$h" "$msg"
key=$(read_key)
case "$key" in
l)
clear_panel
msg="I love you"
w=$(( ${#msg} + 4 ))
x=$(( (cols - w) / 2 ))
draw_box "$x" "$y" "$w" "$h" "$msg"
key=$(read_key)
;;
s)
clear_panel
key=$(read_key)
esac
}
clear_panel() {
cols=$(tput cols)
lines=$(tput lines)
top=$(( lines - PANEL_H + 1 ))
[ "$top" -lt 1 ] && top=1
row=$top
while [ "$row" -le "$lines" ]; do
printf '\033[%d;1H\033[2K' "$row"
row=$((row+1))
done
}
cleanup() {
clear_panel
stty "$old_stty"
tput rmcup 2>/dev/null || printf '\033[?1049l' # leave alt screen
tput sgr0
tput cnorm
# NOTE(yukkop): move cursor to where panel started, so shell prompt
# continues “right after” previous output
lines=$(tput lines)
row=$(( lines - PANEL_H + 1 ))
[ "$row" -lt 1 ] && row=1
printf '\033[%d;1H' "$row"
}
trap cleanup EXIT INT TERM
# enter alternate screen
tput smcup 2>/dev/null || printf '\033[?1049h'
stty -echo raw
tput civis
msg="Press any key to continue"
cols=$(tput cols)
lines=$(tput lines)
w=$(( ${#msg} + 4 ))
h=5
x=$(( (cols - w) / 2 ))
y=$(( (lines - h) / 2 ))
clear_screan() {
# clear *inside* alt screen
printf '\033[2J'
printf '\033[H'
}
clear_screan
draw_box() {
x=$1
y=$2
@@ -78,18 +107,13 @@ draw_box() {
done
}
msg="Welcome to accord"
cols=$(tput cols)
lines=$(tput lines)
w=$(( ${#msg} + 4 ))
h=5
x=$(( (cols - w) / 2 ))
y=$(( (lines - h) / 2 ))
# first page
draw_box "$x" "$y" "$w" "$h" "$msg"
make_panel_space() {
i=0
while [ "$i" -lt "$PANEL_H" ]; do
printf '\n'
i=$((i+1))
done
}
read_key() {
k=$(dd bs=1 count=1 2>/dev/null || true)
@@ -99,17 +123,8 @@ read_key() {
printf '%s' "$k"
}
key=$(read_key)
. ./frames.sh
case "$key" in
l)
clear_screan
msg="I love you"
w=$(( ${#msg} + 4 ))
x=$(( (cols - w) / 2 ))
draw_box "$x" "$y" "$w" "$h" "$msg"
key=$(read_key)
;;
esac
if ! [ ${AS_LIBRARY+x} ]; then
main
fi

1
package/accord/err.log Normal file
View File

@@ -0,0 +1 @@
accord.sh: line 122: .: frames.sh: file not found

306
package/accord/frames.sh Normal file
View File

@@ -0,0 +1,306 @@
frame_000() {
printf '%b' '[?25l 


▐▆▃▃▃▃▃▃▃▅▆ 
▂▅▆▔▆▀▃▘▂▐▂▁▂▀▔▂▗▐ 
▘▅▅▗▁▃▅▘▂▂▀▃▐▊▐▃▁▔▋ 
▊▝▗▆▀▃▆▔▝▔▀▂▂▆▆▂▂▃▆▊ 
▊▎▗▍▐▎▁▗▀▝▅▃▁▔▔▆▂▀▆▊ 
▖▕▍▝▊▝▝▍▋▆▅▃▆▆▃▀▅▁▘ 
▊▎▕▃▂▖▅▅▃▀▂▃▞▘▖▅▋▊ 
▔▅▅ ▝▁▐▀▗▃▀▀▀▖▅▗▘ 
▐▗▋ ▖▃▐ 
▅▝▃ ▆▆ 


[?25h'
}
frame_001() {
printf '%b' '[?25l 


▐▆▃▃▃▃▃▃▃▅▆ 
▂▅▆▔▆▀▃▘▂▐▂▁▂▀▔▂▗▐ 
▘▅▅▗▁▃▅▘▂▂▀▃▐▊▐▃▁▔▋ 
▊▝▗▆▀▃▆▔▝▔▀▂▂▆▆▂▂▃▆▊ 
▊▎▗▍▐▎▁▗▀▝▅▃▁▔▔▆▂▀▆▊ 
▖▕▍▝▊▝▝▍▋▆▅▃▆▆▃▀▅▁▘ 
▊▎▕▃▂▖▅▅▃▀▂▃▞▘▖▅▋▊ 
▔▅▅ ▝▁▐▀▗▃▀▀▀▖▅▗▘ 
▐▗▋ ▖▃▐ 
▅▝▃ ▆▆ 


[?25h'
}
frame_002() {
printf '%b' '[?25l 


▁ ▁▁ 
▁▂▃▃▀▀▃▁▂▂▔▅▆▆▆▆▅▅▖ 
▃▔▔▆▆▆▃▃▅▆▆▅▃▘▂▂▂▂▂▘▋ 
▊▐▝▃▃▂▁▁▁▂▂▆▆▝▂▂▂▂▂▗▅▔ 
▕▞▁▀▃▃▃▃▀▀▀▀▅▃▂▆▔▆▊▐ 
▔▅▃▃▂▁▁▁▁▂▁▆▅▀▀▂▂▀ 
▔▆▆▆▆▔ 





[?25h'
}
frame_003() {
printf '%b' '[?25l 



▗▀▀▂▃ 
▂▅▅▃▃▀▀▀▀▅▅▅▆▔▂▊▂▔▖ 
▗▘▘▗▘▐▔▂▘▂▅▀▃▗▅▅▀▐▅▆ 
▗▘▊▔▘▝▅▆▔▂▃▅▀▀▀▀▀▀▝▍ 
▝▖▃▃▀▀▃▀▀▅▅▅▀▀▅▁▂▃▀ 
▆▅▀▃▂▁▁▁▂▃▀▅▔ 





[?25h'
}
frame_004() {
printf '%b' '[?25l 



▁▂▂▂▁▁▁ 
▋▃▃▃▅▅▞▀▃▂▁ 
▃▆▔█▔▕▊▍▅▆▅▀▆▀ 
▊▍▖▔▔▔▂▁▝▍▁▗▐▖▃▝ 
▝▁▂▂▁▗▕▘▆▎▗▆▔▆▕ 
▆▀▃▂▁▁▂▃▁▁▁▁▘ 
▔▔▔ 




[?25h'
}
frame_005() {
printf '%b' '[?25l 



▁▁▁▁ ▁▁ 
▀▆▆▔▔▔▔▆▆▔▀▃▂▔▆▀ 
▕▖▀▃▂▂▂▆▀▀▀▍▗▀▘▘▕▕ 
▔▀▖▆▝▔▅▅▅▘▂▘▍▁▁▗▔ 
▍▀▅▅▀▆▐▋▀▀▅▁▁ 
▕▁▃▃▂▁▁▂▁▂▀▅▔ 





[?25h'
}
frame_006() {
printf '%b' '[?25l 


▁▁ 
▁▃▃▅▅▀▀▅▃▀▅▔▅▅▆▆▏ 
▂▔▔▅▀▃▃▔▆▀▍▐▂▘▔▀▃▔▋ 
▊▍▀▃▂▁▁▂▆▆▝▂▁▔▆▆▀▝▅▎ 
▃▁▆▆▀▃▅▀▃▂▆▔▆▅▃▀▅▗ 
▆▅▃▁▁▂▁▅▀▃▃▃▃▁▂▘ 
▔▔▆▅▅▆▆▔ 





[?25h'
}
frame_007() {
printf '%b' '[?25l 


▁ ▁▁ 
▁▂▃▃▀▀▃▁▂▂▔▅▆▆▆▆▅▅▖ 
▃▔▔▆▆▆▃▃▅▆▆▅▃▘▂▂▂▂▂▘▋ 
▊▐▝▃▃▂▁▁▁▂▂▆▆▝▂▂▂▂▂▗▅▔ 
▕▞▁▀▃▃▃▃▀▀▀▀▅▃▂▆▔▆▊▐ 
▔▅▃▃▂▁▁▁▁▂▁▆▅▀▀▂▂▀ 
▔▆▆▆▆▔ 





[?25h'
}
frame_008() {
printf '%b' '[?25l 



▗▀▀▂▃ 
▂▅▅▃▃▀▀▀▀▅▅▅▆▔▂▊▂▔▖ 
▗▘▘▗▘▐▔▂▘▂▅▀▃▗▅▅▀▐▅▆ 
▗▘▊▔▘▝▅▆▔▂▃▅▀▀▀▀▀▀▝▍ 
▝▖▃▃▀▀▃▀▀▅▅▅▀▀▅▁▂▃▀ 
▆▅▀▃▂▁▁▁▂▃▀▅▔ 





[?25h'
}
frame_009() {
printf '%b' '[?25l 



▁▂▂▂▁▁▁ 
▋▃▃▃▅▅▞▀▃▂▁ 
▃▆▔█▔▕▊▍▅▆▅▀▆▀ 
▊▍▖▔▔▔▂▁▝▍▁▗▐▖▃▝ 
▝▁▂▂▁▗▕▘▆▎▗▆▔▆▕ 
▆▀▃▂▁▁▂▃▁▁▁▁▘ 
▔▔▔ 




[?25h'
}
frame_010() {
printf '%b' '[?25l 



▁▁▁▁ ▁▁ 
▀▆▆▔▔▔▔▆▆▔▀▃▂▔▆▀ 
▕▖▀▃▂▂▂▆▀▀▀▍▗▀▘▘▕▕ 
▔▀▖▆▝▔▅▅▅▘▂▘▍▁▁▗▔ 
▍▀▅▅▀▆▐▋▀▀▅▁▁ 
▕▁▃▃▂▁▁▂▁▂▀▅▔ 





[?25h'
}
frame_011() {
printf '%b' '[?25l 


▁▁ 
▁▃▃▅▅▀▀▅▃▀▅▔▅▅▆▆▏ 
▂▔▔▅▀▃▃▔▆▀▍▐▂▘▔▀▃▔▋ 
▊▍▀▃▂▁▁▂▆▆▝▂▁▔▆▆▀▝▅▎ 
▃▁▆▆▀▃▅▀▃▂▆▔▆▅▃▀▅▗ 
▆▅▃▁▁▂▁▅▀▃▃▃▃▁▂▘ 
▔▔▆▅▅▆▆▔ 





[?25h'
}
frame_012() {
printf '%b' '[?25l 


▁ ▁▁ 
▁▂▃▃▀▀▃▁▂▂▔▅▆▆▆▆▅▅▖ 
▃▔▔▆▆▆▃▃▅▆▆▅▃▘▂▂▂▂▂▘▋ 
▊▐▝▃▃▂▁▁▁▂▂▆▆▝▂▂▂▂▂▗▅▔ 
▕▞▁▀▃▃▃▃▀▀▀▀▅▃▂▆▔▆▊▐ 
▔▅▃▃▂▁▁▁▁▂▁▆▅▀▀▂▂▀ 
▔▆▆▆▆▔ 





[?25h'
}
frame_013() {
printf '%b' '[?25l 



▗▀▀▂▃ 
▂▅▅▃▃▀▀▀▀▅▅▅▆▔▂▊▂▔▖ 
▗▘▘▗▘▐▔▂▘▂▅▀▃▗▅▅▀▐▅▆ 
▗▘▊▔▘▝▅▆▔▂▃▅▀▀▀▀▀▀▝▍ 
▝▖▃▃▀▀▃▀▀▅▅▅▀▀▅▁▂▃▀ 
▆▅▀▃▂▁▁▁▂▃▀▅▔ 





[?25h'
}
frame_014() {
printf '%b' '[?25l 



▁▂▂▂▁▁▁ 
▋▃▃▃▅▅▞▀▃▂▁ 
▃▆▔█▔▕▊▍▅▆▅▀▆▀ 
▊▍▖▔▔▔▂▁▝▍▁▗▐▖▃▝ 
▝▁▂▂▁▗▕▘▆▎▗▆▔▆▕ 
▆▀▃▂▁▁▂▃▁▁▁▁▘ 
▔▔▔ 




[?25h'
}
frame_015() {
printf '%b' '[?25l 



▁▁▁▁ ▁▁ 
▀▆▆▔▔▔▔▆▆▔▀▃▂▔▆▀ 
▕▖▀▃▂▂▂▆▀▀▀▍▗▀▘▘▕▕ 
▔▀▖▆▝▔▅▅▅▘▂▘▍▁▁▗▔ 
▍▀▅▅▀▆▐▋▀▀▅▁▁ 
▕▁▃▃▂▁▁▂▁▂▀▅▔ 





[?25h'
}
frame_016() {
printf '%b' '[?25l 


▁▁ 
▁▃▃▅▅▀▀▅▃▀▅▔▅▅▆▆▏ 
▂▔▔▅▀▃▃▔▆▀▍▐▂▘▔▀▃▔▋ 
▊▍▀▃▂▁▁▂▆▆▝▂▁▔▆▆▀▝▅▎ 
▃▁▆▆▀▃▅▀▃▂▆▔▆▅▃▀▅▗ 
▆▅▃▁▁▂▁▅▀▃▃▃▃▁▂▘ 
▔▔▆▅▅▆▆▔ 





[?25h'
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 KiB

View File

@@ -0,0 +1,306 @@
__spining_cat_frame_000() {
printf '%b' '[?25l 


▐▆▃▃▃▃▃▃▃▅▆ 
▂▅▆▔▆▀▃▘▂▐▂▁▂▀▔▂▗▐ 
▘▅▅▗▁▃▅▘▂▂▀▃▐▊▐▃▁▔▋ 
▊▝▗▆▀▃▆▔▝▔▀▂▂▆▆▂▂▃▆▊ 
▊▎▗▍▐▎▁▗▀▝▅▃▁▔▔▆▂▀▆▊ 
▖▕▍▝▊▝▝▍▋▆▅▃▆▆▃▀▅▁▘ 
▊▎▕▃▂▖▅▅▃▀▂▃▞▘▖▅▋▊ 
▔▅▅ ▝▁▐▀▗▃▀▀▀▖▅▗▘ 
▐▗▋ ▖▃▐ 
▅▝▃ ▆▆ 


[?25h'
}
__spining_cat_frame_001() {
printf '%b' '[?25l 


▐▆▃▃▃▃▃▃▃▅▆ 
▂▅▆▔▆▀▃▘▂▐▂▁▂▀▔▂▗▐ 
▘▅▅▗▁▃▅▘▂▂▀▃▐▊▐▃▁▔▋ 
▊▝▗▆▀▃▆▔▝▔▀▂▂▆▆▂▂▃▆▊ 
▊▎▗▍▐▎▁▗▀▝▅▃▁▔▔▆▂▀▆▊ 
▖▕▍▝▊▝▝▍▋▆▅▃▆▆▃▀▅▁▘ 
▊▎▕▃▂▖▅▅▃▀▂▃▞▘▖▅▋▊ 
▔▅▅ ▝▁▐▀▗▃▀▀▀▖▅▗▘ 
▐▗▋ ▖▃▐ 
▅▝▃ ▆▆ 


[?25h'
}
__spining_cat_frame_002() {
printf '%b' '[?25l 


▁ ▁▁ 
▁▂▃▃▀▀▃▁▂▂▔▅▆▆▆▆▅▅▖ 
▃▔▔▆▆▆▃▃▅▆▆▅▃▘▂▂▂▂▂▘▋ 
▊▐▝▃▃▂▁▁▁▂▂▆▆▝▂▂▂▂▂▗▅▔ 
▕▞▁▀▃▃▃▃▀▀▀▀▅▃▂▆▔▆▊▐ 
▔▅▃▃▂▁▁▁▁▂▁▆▅▀▀▂▂▀ 
▔▆▆▆▆▔ 





[?25h'
}
__spining_cat_frame_003() {
printf '%b' '[?25l 



▗▀▀▂▃ 
▂▅▅▃▃▀▀▀▀▅▅▅▆▔▂▊▂▔▖ 
▗▘▘▗▘▐▔▂▘▂▅▀▃▗▅▅▀▐▅▆ 
▗▘▊▔▘▝▅▆▔▂▃▅▀▀▀▀▀▀▝▍ 
▝▖▃▃▀▀▃▀▀▅▅▅▀▀▅▁▂▃▀ 
▆▅▀▃▂▁▁▁▂▃▀▅▔ 





[?25h'
}
__spining_cat_frame_004() {
printf '%b' '[?25l 



▁▂▂▂▁▁▁ 
▋▃▃▃▅▅▞▀▃▂▁ 
▃▆▔█▔▕▊▍▅▆▅▀▆▀ 
▊▍▖▔▔▔▂▁▝▍▁▗▐▖▃▝ 
▝▁▂▂▁▗▕▘▆▎▗▆▔▆▕ 
▆▀▃▂▁▁▂▃▁▁▁▁▘ 
▔▔▔ 




[?25h'
}
__spining_cat_frame_005() {
printf '%b' '[?25l 



▁▁▁▁ ▁▁ 
▀▆▆▔▔▔▔▆▆▔▀▃▂▔▆▀ 
▕▖▀▃▂▂▂▆▀▀▀▍▗▀▘▘▕▕ 
▔▀▖▆▝▔▅▅▅▘▂▘▍▁▁▗▔ 
▍▀▅▅▀▆▐▋▀▀▅▁▁ 
▕▁▃▃▂▁▁▂▁▂▀▅▔ 





[?25h'
}
__spining_cat_frame_006() {
printf '%b' '[?25l 


▁▁ 
▁▃▃▅▅▀▀▅▃▀▅▔▅▅▆▆▏ 
▂▔▔▅▀▃▃▔▆▀▍▐▂▘▔▀▃▔▋ 
▊▍▀▃▂▁▁▂▆▆▝▂▁▔▆▆▀▝▅▎ 
▃▁▆▆▀▃▅▀▃▂▆▔▆▅▃▀▅▗ 
▆▅▃▁▁▂▁▅▀▃▃▃▃▁▂▘ 
▔▔▆▅▅▆▆▔ 





[?25h'
}
__spining_cat_frame_007() {
printf '%b' '[?25l 


▁ ▁▁ 
▁▂▃▃▀▀▃▁▂▂▔▅▆▆▆▆▅▅▖ 
▃▔▔▆▆▆▃▃▅▆▆▅▃▘▂▂▂▂▂▘▋ 
▊▐▝▃▃▂▁▁▁▂▂▆▆▝▂▂▂▂▂▗▅▔ 
▕▞▁▀▃▃▃▃▀▀▀▀▅▃▂▆▔▆▊▐ 
▔▅▃▃▂▁▁▁▁▂▁▆▅▀▀▂▂▀ 
▔▆▆▆▆▔ 





[?25h'
}
__spining_cat_frame_008() {
printf '%b' '[?25l 



▗▀▀▂▃ 
▂▅▅▃▃▀▀▀▀▅▅▅▆▔▂▊▂▔▖ 
▗▘▘▗▘▐▔▂▘▂▅▀▃▗▅▅▀▐▅▆ 
▗▘▊▔▘▝▅▆▔▂▃▅▀▀▀▀▀▀▝▍ 
▝▖▃▃▀▀▃▀▀▅▅▅▀▀▅▁▂▃▀ 
▆▅▀▃▂▁▁▁▂▃▀▅▔ 





[?25h'
}
__spining_cat_frame_009() {
printf '%b' '[?25l 



▁▂▂▂▁▁▁ 
▋▃▃▃▅▅▞▀▃▂▁ 
▃▆▔█▔▕▊▍▅▆▅▀▆▀ 
▊▍▖▔▔▔▂▁▝▍▁▗▐▖▃▝ 
▝▁▂▂▁▗▕▘▆▎▗▆▔▆▕ 
▆▀▃▂▁▁▂▃▁▁▁▁▘ 
▔▔▔ 




[?25h'
}
__spining_cat_frame_010() {
printf '%b' '[?25l 



▁▁▁▁ ▁▁ 
▀▆▆▔▔▔▔▆▆▔▀▃▂▔▆▀ 
▕▖▀▃▂▂▂▆▀▀▀▍▗▀▘▘▕▕ 
▔▀▖▆▝▔▅▅▅▘▂▘▍▁▁▗▔ 
▍▀▅▅▀▆▐▋▀▀▅▁▁ 
▕▁▃▃▂▁▁▂▁▂▀▅▔ 





[?25h'
}
__spining_cat_frame_011() {
printf '%b' '[?25l 


▁▁ 
▁▃▃▅▅▀▀▅▃▀▅▔▅▅▆▆▏ 
▂▔▔▅▀▃▃▔▆▀▍▐▂▘▔▀▃▔▋ 
▊▍▀▃▂▁▁▂▆▆▝▂▁▔▆▆▀▝▅▎ 
▃▁▆▆▀▃▅▀▃▂▆▔▆▅▃▀▅▗ 
▆▅▃▁▁▂▁▅▀▃▃▃▃▁▂▘ 
▔▔▆▅▅▆▆▔ 





[?25h'
}
__spining_cat_frame_012() {
printf '%b' '[?25l 


▁ ▁▁ 
▁▂▃▃▀▀▃▁▂▂▔▅▆▆▆▆▅▅▖ 
▃▔▔▆▆▆▃▃▅▆▆▅▃▘▂▂▂▂▂▘▋ 
▊▐▝▃▃▂▁▁▁▂▂▆▆▝▂▂▂▂▂▗▅▔ 
▕▞▁▀▃▃▃▃▀▀▀▀▅▃▂▆▔▆▊▐ 
▔▅▃▃▂▁▁▁▁▂▁▆▅▀▀▂▂▀ 
▔▆▆▆▆▔ 





[?25h'
}
__spining_cat_frame_013() {
printf '%b' '[?25l 



▗▀▀▂▃ 
▂▅▅▃▃▀▀▀▀▅▅▅▆▔▂▊▂▔▖ 
▗▘▘▗▘▐▔▂▘▂▅▀▃▗▅▅▀▐▅▆ 
▗▘▊▔▘▝▅▆▔▂▃▅▀▀▀▀▀▀▝▍ 
▝▖▃▃▀▀▃▀▀▅▅▅▀▀▅▁▂▃▀ 
▆▅▀▃▂▁▁▁▂▃▀▅▔ 





[?25h'
}
__spining_cat_frame_014() {
printf '%b' '[?25l 



▁▂▂▂▁▁▁ 
▋▃▃▃▅▅▞▀▃▂▁ 
▃▆▔█▔▕▊▍▅▆▅▀▆▀ 
▊▍▖▔▔▔▂▁▝▍▁▗▐▖▃▝ 
▝▁▂▂▁▗▕▘▆▎▗▆▔▆▕ 
▆▀▃▂▁▁▂▃▁▁▁▁▘ 
▔▔▔ 




[?25h'
}
__spining_cat_frame_015() {
printf '%b' '[?25l 



▁▁▁▁ ▁▁ 
▀▆▆▔▔▔▔▆▆▔▀▃▂▔▆▀ 
▕▖▀▃▂▂▂▆▀▀▀▍▗▀▘▘▕▕ 
▔▀▖▆▝▔▅▅▅▘▂▘▍▁▁▗▔ 
▍▀▅▅▀▆▐▋▀▀▅▁▁ 
▕▁▃▃▂▁▁▂▁▂▀▅▔ 





[?25h'
}
__spining_cat_frame_016() {
printf '%b' '[?25l 


▁▁ 
▁▃▃▅▅▀▀▅▃▀▅▔▅▅▆▆▏ 
▂▔▔▅▀▃▃▔▆▀▍▐▂▘▔▀▃▔▋ 
▊▍▀▃▂▁▁▂▆▆▝▂▁▔▆▆▀▝▅▎ 
▃▁▆▆▀▃▅▀▃▂▆▔▆▅▃▀▅▗ 
▆▅▃▁▁▂▁▅▀▃▃▃▃▁▂▘ 
▔▔▆▅▅▆▆▔ 





[?25h'
}