diff --git a/.clang-format b/.clang-format
index 533b5ed..ec3fece 100644
--- a/.clang-format
+++ b/.clang-format
@@ -13,14 +13,14 @@ ReflowComments: false
IndentWidth: 2
TabWidth: 2
-UseTab: Never
-ContinuationIndentWidth: 0
+UseTab: ForContinuationAndIndentation
+ContinuationIndentWidth: 2
AlignAfterOpenBracket: Align
AlignArrayOfStructures: Left
BreakBeforeBraces: Attach
-ColumnLimit: 180
+ColumnLimit: 0
MaxEmptyLinesToKeep: 2
AllowShortFunctionsOnASingleLine: false
diff --git a/.clangd b/.clangd
index e0d2215..b031b56 100644
--- a/.clangd
+++ b/.clangd
@@ -7,6 +7,7 @@ CompileFlags:
- -pedantic
- -Wall
- -Wno-deprecated-declarations
+ - -Wno-empty-translation-unit
- -Os
- -I/usr/X11R6/include
- -I/usr/include/freetype2
diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc
new file mode 100644
index 0000000..8d1aa08
--- /dev/null
+++ b/.config/dunst/dunstrc
@@ -0,0 +1,87 @@
+[global]
+ ### 显示设置 ###
+ monitor = 0
+ follow = keyboard
+
+ ### 几何布局 ###
+ width = (111,444)
+ height = (0,222)
+ origin = top-right
+ offset = (25,50)
+ scale = 0
+ notification_limit = 0
+
+ ### 进度条 ###
+ progress_bar = true
+ progress_bar_height = 5
+ progress_bar_frame_width = 0
+ progress_bar_min_width = 0
+ progress_bar_max_width = 444
+
+ indicate_hidden = yes
+ transparency = 3
+ separator_height = 2
+ padding = 9
+ horizontal_padding = 11
+ text_icon_padding = 0
+ frame_width = 6
+ frame_color = "#373e4d"
+ gap_size = 8
+ separator_color = "#404859"
+ sort = yes
+ idle_threshold = 120
+
+ ### 文本 ###
+ font = JetBrainsMono Nerd Font Mono 12
+ line_height = 0
+ markup = full
+ format = "%s\n%b"
+ alignment = left
+ vertical_alignment = center
+ ellipsize = middle
+ ignore_newline = no
+ stack_duplicates = true
+ hide_duplicate_count = false
+ show_indicators = no
+ show_age_threshold = 60
+
+ ### 图标 ###
+ icon_position = left
+ min_icon_size = 48
+ max_icon_size = 80
+ sticky_history = true
+ history_length = 20
+ enable_recursive_icon_lookup = false
+
+ ### 杂项 ###
+ dmenu = "rofi -theme-str '@import "action.rasi"' -no-show-icons -no-lazy-grab -no-plugins -dmenu -mesg 'Context Menu'"
+ browser = "firefox -new-tab"
+ always_run_script = true
+ title = Dunst
+ class = Dunst
+ corner_radius = 8
+ ignore_dbusclose = false
+ force_xwayland = false
+ force_xinerama = false
+ mouse_left_click = do_action
+ mouse_middle_click = close_all
+ mouse_right_click = close_current
+
+## 紧急程度 ###
+[urgency_low]
+ timeout = 3
+ background = "#373e4d"
+ foreground = "#f9f9f9"
+ highlight = "#f48ee8"
+
+[urgency_normal]
+ timeout = 6
+ background = "#373e4d"
+ foreground = "#f9f9f9"
+ highlight = "#f48ee8"
+
+[urgency_critical]
+ timeout = 0
+ background = "#373e4d"
+ foreground = "#f9f9f9"
+ highlight = "#f48ee8"
diff --git a/.config/fastfetch/config.jsonc b/.config/fastfetch/config.jsonc
new file mode 100644
index 0000000..7b2f360
--- /dev/null
+++ b/.config/fastfetch/config.jsonc
@@ -0,0 +1,110 @@
+{
+ "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/master/doc/json_schema.json",
+ "logo": {
+ "type": "kitty",
+ "height": 20,
+ "source": "~/.config/fastfetch/logo.png",
+ "padding": {
+ "top": 3,
+ "left": 5
+ }
+ },
+ "display": {
+ "separator": " ➜ "
+ },
+ "modules": [
+ "break",
+ "break",
+ "break",
+ {
+ "type": "os",
+ "key": "OS ",
+ "keyColor": "31"
+ },
+ {
+ "type": "kernel",
+ "key": " ├ kernel ",
+ "keyColor": "31"
+ },
+ {
+ "type": "packages",
+ "key": " ├ packages",
+ "format": "{} (pacman)",
+ "keyColor": "31"
+ },
+ {
+ "type": "shell",
+ "key": " └ shell ",
+ "keyColor": "31"
+ },
+ "break",
+ {
+ "type": "wm",
+ "key": "WM ",
+ "keyColor": "32"
+ },
+ {
+ "type": "command",
+ "key": " ├ wm theme ",
+ "format": "{} (dwm theme)",
+ "text": "echo ${DWM_THEME:-onedark}",
+ "keyColor": "32"
+ },
+ {
+ "type": "command",
+ "key": " ├ icons ",
+ "format": "{}",
+ "text": "echo ${DWM_ICONS:-dwmStatus}",
+ "keyColor": "32"
+ },
+ {
+ "type": "terminal",
+ "key": " ├ terminal ",
+ "keyColor": "32"
+ },
+ {
+ "type": "terminalfont",
+ "key": " └ terminal font",
+ "keyColor": "32"
+ },
+ "break",
+ {
+ "type": "host",
+ "key": "PC ",
+ "format": "{5} {1} Type {2}",
+ "keyColor": "33"
+ },
+ {
+ "type": "cpu",
+ "key": " ├ cpu ",
+ "keyColor": "33"
+ },
+ {
+ "type": "gpu",
+ "key": " ├ gpu ",
+ "keyColor": "33"
+ },
+ {
+ "type": "memory",
+ "key": " ├ memory ",
+ "keyColor": "33"
+ },
+ {
+ "type": "swap",
+ "key": " ├ swap ",
+ "keyColor": "33"
+ },
+ {
+ "type": "disk",
+ "key": " ├ disk ",
+ "keyColor": "33"
+ },
+ {
+ "type": "display",
+ "key": " └ display",
+ "keyColor": "33"
+ },
+ "break",
+ "colors"
+ ]
+}
diff --git a/.config/fastfetch/logo.png b/.config/fastfetch/logo.png
new file mode 100644
index 0000000..ae27270
Binary files /dev/null and b/.config/fastfetch/logo.png differ
diff --git a/DWM/config/picom.conf b/.config/picom/picom.conf
similarity index 97%
rename from DWM/config/picom.conf
rename to .config/picom/picom.conf
index 9208ab4..4ed1dd9 100644
--- a/DWM/config/picom.conf
+++ b/.config/picom/picom.conf
@@ -36,7 +36,7 @@ rules = (
{ match = "fullscreen", opacity = 1.00, corner-radius = 0.0 },
# 应用窗口配置
- { match = "class_g = 'dwm'", opacity = 1.00, corner-radius = 12.0, fade = false },
+ { match = "class_g = 'dwm'", opacity = 1.00, corner-radius = 6.0, fade = false },
{ match = "class_g = 'fcitx'", opacity = 1.00, corner-radius = 0.0, fade = false },
{ match = "class_g = 'obs'", opacity = 1.00, corner-radius = 0.0, fade = false },
{ match = "class_g = 'Gimp'", opacity = 1.00, corner-radius = 0.0, fade = false },
diff --git a/.gitignore b/.gitignore
index 43432e4..95d7cc1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,5 +2,6 @@
*.o
*.rej
*.orig
+*.tmp
+*.log
dwm
-tmp
diff --git a/DWM/autostart.sh b/DWM/autostart.sh
index 958e487..d40a00a 100755
--- a/DWM/autostart.sh
+++ b/DWM/autostart.sh
@@ -1,35 +1,86 @@
#!/bin/bash
-_thisdir=$(cd $(dirname $0);pwd)
-
-settings() {
- [ $1 ] && sleep $1
- xset -b # 关闭蜂鸣器
- syndaemon -i 1 -t -K -R -d # 设置使用键盘时触控板短暂失效
- $_thisdir/scripts/set_screen.sh two # 设置显示器 设置键盘映射
- setxkbmap -layout us -variant colemak -option -option caps:swapescape -option lv3:ralt_alt
-}
-
-daemons() {
- [ $1 ] && sleep $1
- $_thisdir/scripts/statusbar.sh cron & # 开启状态栏定时更新
- xss-lock -- $_thisdir/scripts/blurlock.sh & # 开启自动锁屏程序
- fcitx5 & # 开启输入法
- flameshot & # 开启截图程序后台板
- dunst -conf $_thisdir/config/dunst.conf & # 开启通知弹窗
- picom --config $_thisdir/config/picom.conf >> /dev/null 2>&1 &
-}
-
-cron() {
- [ $1 ] && sleep $1
- let i=10
- while true; do
- [ $((i % 10)) -eq 0 ] && $_thisdir/scripts/set_screen.sh check
- [ $((i % 300)) -eq 0 ] && feh --randomize --bg-fill ~/Pictures/wallpaper/*.png
- sleep 10; let i+=10 # 更新壁纸和监视器
- done
-}
-
-settings & # 初始化设置项
-daemons & # 后台程序项
-cron & # 定时任务项
+theme=${DWM_THEME:-"onedark"}
+
+# shellcheck source=themes/onedark/bar.t
+source "$DWM/themes/$theme/bar.t"
+mkdir -p "$DWM/.tmp/"
+touch "$DWM/.tmp/dwm-statusbar-placeholder.tmp"
+touch "$DWM/.tmp/pkgupdates.tmp"
+touch "$DWM/.tmp/network.tmp"
+touch "$DWM/.tmp/wifilst.tmp"
+pipe="$DWM/.tmp/pipe.tmp"
+
+battery() {
+ bats=''
+ val=$(acpi | sed -n 's/.* \([0-9]\+\)%.*/\1/p' | head -1)
+ icon=${bats:$(("$val" / 10 + $(acpi | grep -q 'Discharging' && echo '0' || echo '11'))):1}
+ printf '^b%s^^c%s^ %s ^d^' "$blk" "$blu" "$icon"
+ printf '^b%s^^c%s^ %s ^d^' "$blk" "$blu" "$val"
+}
+
+brightness() {
+ val=$(brightnessctl | sed -n 's/.*(\([0-9]\+\)%).*/\1/p')
+ printf '^b%s^^c%s^ ^d^' "$blk" "$red"
+ printf '^b%s^^c%s^ %.0f ^d^' "$blk" "$red" "$val"
+}
+
+clock() {
+ printf '^b%s^^c%s^ ^d^' "$dbl" "$blk"
+ printf '^b%s^^c%s^ %s ^d^' "$blu" "$blk" "$(date '+%a, %H:%M %p') "
+}
+
+cpu() {
+ val=$(grep -o "^[^ ]*" /proc/loadavg)
+ printf '^b%s^^c%s^ CPU ^d^' "$grn" "$blk"
+ printf '^b%s^^c%s^ %s ^d^' "$gry" "$wht" "$val"
+}
+
+mem() {
+ val=$(free -h | awk '/^Mem/ { print $3 }' | sed s/i//g)
+ printf '^b%s^^c%s^ ^d^' "$blk" "$blu"
+ printf '^b%s^^c%s^ %s ^d^' "$blk" "$blu" "$val"
+}
+
+pkgupdates() {
+ val=$(cat "$DWM/.tmp/pkgupdates.tmp" | wc -l)
+ if [ "$val" -eq 0 ]; then
+ printf '^b%s^^c%s^ Fully Updated ^d^' "$blk" "$grn"
+ else
+ printf '^b%s^^c%s^ %s updates ^d^' "$blk" "$wht" "$val"
+ fi
+}
+
+vol() {
+ if amixer get Master | grep -q -E '\[off\]|\[0%\]'; then
+ printf '^b%s^^c%s^ ^d^' "$blk" "$red"
+ else
+ printf '^b%s^^c%s^ ^d^' "$blk" "$grn"
+ fi
+}
+
+wlan() {
+ case "$(cat /sys/class/net/wl*/operstate 2>/dev/null)" in
+ up) printf '^b%s^^c%s^ ^b%s^^c%s^ Connected ^d^' "$red" "$blk" "$gry" "$wht" ;;
+ *) printf '^b%s^^c%s^ ^b%s^^c%s^ Disconnected ^d^' "$red" "$blk" "$gry" "$wht" ;;
+ esac
+}
+
+xset b off # turn off beeps
+setxkbmap -layout us -variant colemak -option -option caps:swapescape -option lv3:ralt_alt
+syndaemon -i 1 -t -K -R -d # ignore tappad when keys are pressed
+fcitx5 &
+cat "$HOME/.config/dunst/dunstrc" "$DWM/themes/$theme/dunstrc" >"$DWM/.tmp/dunstrc.tmp"
+dunst -conf "$DWM/.tmp/dunstrc.tmp" >>/dev/null 2>&1 &
+picom --config "$HOME/.config/picom/picom.conf" >>/dev/null 2>&1 &
+xsetroot -name "$(cat "$DWM/.tmp/dwm-statusbar-placeholder.tmp")" # pre-render to avoid initial delay
+tick=0
+while true; do
+ status="$(pkgupdates)&$(battery)&$(brightness)&$(cpu)&$(mem)&$(wlan)&$(clock)&$(vol)"
+ echo "$status" >"$DWM/.tmp/dwm-statusbar-placeholder.tmp"
+ xsetroot -name "$(cat "$DWM/.tmp/dwm-statusbar-placeholder.tmp")"
+ [ "$((tick % 3600))" -eq 0 ] && checkupdates >"$pipe" && mv "$pipe" "$DWM/.tmp/pkgupdates.tmp"
+ [ "$((tick % 2400))" -eq 0 ] && nmcli --field 'SECURITY,SSID' --terse device wifi list >"$pipe" && mv "$pipe" "$DWM/.tmp/wifilst.tmp"
+ [ "$((tick % 1200))" -eq 0 ] && speedtest-cli --simple >"$pipe" && mv "$pipe" "$DWM/.tmp/network.tmp"
+ sleep 1 && tick=$(((tick + 1) % 3600))
+done
diff --git a/DWM/config/dunst.conf b/DWM/config/dunst.conf
deleted file mode 100644
index ad79310..0000000
--- a/DWM/config/dunst.conf
+++ /dev/null
@@ -1,90 +0,0 @@
-[global]
- ### 显示设置 ###
- monitor = 0
- follow = keyboard
-
- ### 几何布局 ###
- width = (0,400)
- height = (0,800)
- origin = top-right
- offset = (50,50)
- scale = 0
- notification_limit = 0
-
- ### 进度条 ###
- progress_bar = true
- progress_bar_height = 10
- progress_bar_frame_width = 1
- progress_bar_min_width = 150
- progress_bar_max_width = 300
-
- indicate_hidden = yes
- transparency = 0
- separator_height = 2
- padding = 9
- horizontal_padding = 8
- text_icon_padding = 0
- frame_width = 3
- frame_color = "#c0caf5"
- separator_color = frame
- sort = yes
- idle_threshold = 120
-
- ### 文本 ###
- font = JetBrainsMono Nerd Font 20
- line_height = 0
- markup = full
- format = "%s\n%b"
- alignment = left
- vertical_alignment = center
- ellipsize = middle
- ignore_newline = no
- stack_duplicates = true
- hide_duplicate_count = false
- show_indicators = yes
-
- ### 图标 ###
- icon_position = left
- max_icon_size = 32
- sticky_history = yes
- history_length = 20
-
- ### 杂项 ###
- dmenu = /usr/bin/dmenu -p dunst:
- browser = /usr/bin/xdg-open
- always_run_script = true
- title = Dunst
- class = Dunst
- corner_radius = 15
- ignore_dbusclose = false
- force_xwayland = false
- force_xinerama = false
- mouse_left_click = close_current
- mouse_middle_click = context
- mouse_right_click = do_action
-
-
-[experimental]
- per_monitor_dpi = false
-
-
-[urgency_low]
- background = "#1a1b26"
- foreground = "#c0caf5"
- frame_color = "#c0caf5"
- timeout = 3
-
-
-[urgency_normal]
- background = "#1a1b26"
- foreground = "#c0caf5"
- frame_color = "#c0caf5"
- timeout = 5
-
-
-[urgency_critical]
- background = "#1a1b26"
- foreground = "#db4b4b"
- frame_color = "#f7768e"
- timeout = 0
- word_wrap = yes
diff --git a/DWM/fetch.sh b/DWM/fetch.sh
new file mode 100755
index 0000000..dfd395b
--- /dev/null
+++ b/DWM/fetch.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+clear
+tput civis
+fastfetch
+old_settings=$(stty -g)
+stty -icanon -echo
+dd bs=1 count=1 >/dev/null 2>&1
+stty "$old_settings"
+clear
diff --git a/DWM/pacmanf.sh b/DWM/pacmanf.sh
new file mode 100755
index 0000000..c980b4e
--- /dev/null
+++ b/DWM/pacmanf.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+echo -e '\033[0;32mtry to update, please enter password\033[0m'
+if sudo pacman -Syyu; then
+ if ! checkupdates; then
+ printf '' >"$DWM/.tmp/pkgupdates.tmp"
+ echo -e '\033[0;32mupdate ok, enter any key to quit\033[0m'
+ fi
+else
+ echo -e '\033[0;32mupdate failed, please check the network\033[0m'
+fi
+old_settings=$(stty -g)
+stty -icanon -echo
+dd bs=1 count=1 >/dev/null 2>&1
+stty "$old_settings"
diff --git a/DWM/scripts/blurlock.sh b/DWM/scripts/blurlock.sh
deleted file mode 100755
index 2b6dfbc..0000000
--- a/DWM/scripts/blurlock.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/bash
-# 依赖包:i3lock-color
-
-i3lock \
- --blur 5 \
- --bar-indicator \
- --bar-pos y+h \
- --bar-direction 1 \
- --bar-max-height 50 \
- --bar-base-width 50 \
- --bar-color 00000022 \
- --keyhl-color ffffffcc \
- --bar-periodic-step 50 \
- --bar-step 20 \
- --redraw-thread \
- --clock \
- --force-clock \
- --time-pos x+5:y+h-80 xdotool\
- --time-color ffffffff \
- --date-pos tx:ty+15 \
- --date-color ffffffff \
- --date-align 1 \
- --time-align 1 \
- --ringver-color ffffff00 \
- --ringwrong-color ffffff88 \
- --status-pos x+5:y+h-16 \
- --verif-align 1 \
- --wrong-align 1 \
- --verif-color ffffffff \
- --wrong-color ffffffff \
- --modif-pos -50:-50
-xdotool mousemove_relative 1 1
diff --git a/DWM/scripts/set_screen.sh b/DWM/scripts/set_screen.sh
deleted file mode 100755
index 909d185..0000000
--- a/DWM/scripts/set_screen.sh
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/bin/bash
-:<$(acpi -b | sed '2,$d' | awk -F'[,:]' '{printf "%dh %dmin", $4, $5}')<\/span><\/b>"
- sed -i '/^export '$_this'=.*$/d' $tmpfile
- printf "export %s=' %s%s'\n" "$_this" "$bat_icon" "$bat_text" >> $tmpfile
-}
-
-notify() {
- update
- [[ "$charging" = "true" ]] && _time=""
- notify-send "🔋 Battery" "Remaining: $bat_text<\/span>\n$_time" -r 9527
-}
-
-click() {
- case "$1" in
- L) notify ;;
- R) "" ;;
- esac
-}
-
-case "$1" in
- click) click $2 ;;
- notify) notify ;;
- *) update ;;
-esac
diff --git a/DWM/scripts/status/cpu.sh b/DWM/scripts/status/cpu.sh
deleted file mode 100644
index 91c60f9..0000000
--- a/DWM/scripts/status/cpu.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/bash
-# 获取 CPU 利用率和温度
-# 需要 top, sensors
-
-_this=_cpu
-tmpfile=/tmp/dwm_statusbar
-
-update() {
- [[ ! "$(command -v top)" ]] && echo command not found: top && return
- [[ ! "$(command -v sensors)" ]] && echo command not found: sensors && return
- cpu_text=$(top -n 1 -b | sed -n '3p' | awk '{printf "%02d%", 100 - $8}')
- cpu_icon="💻"
- temp_text=$(sensors | grep Tctl | awk '{printf "%d°C", $2}')
- temp_icon="🔥"
- sed -i '/^export '$_this'=.*$/d' $tmpfile
- printf "export %s=' %s%s %s%s'\n" "$_this" "$cpu_icon" "$cpu_text" "$temp_icon" "$temp_text" >> $tmpfile
-}
-
-notify() {
- notify-send "💻 CPU tops (%)" "$(ps axch -o cmd:15,%cpu --sort=-%cpu | head -n 8)" -r 9527
-}
-
-click() {
- case "$1" in
- L) notify ;;
- R) "" ;;
- esac
-}
-
-case "$1" in
- click) click $2 ;;
- notify) notify ;;
- *) update ;;
-esac
diff --git a/DWM/scripts/status/date.sh b/DWM/scripts/status/date.sh
deleted file mode 100644
index 1560554..0000000
--- a/DWM/scripts/status/date.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/bash
-# 获取日期及时间
-# 需要 date 命令
-
-_this=_date
-tmpfile=/tmp/dwm_statusbar
-
-update() {
- [[ ! "$(command -v date)" ]] && echo command not found: date && return
- time_text=$(date '+%H:%M')
- time_icon="⏰"
- sed -i '/^export '$_this'=.*$/d' $tmpfile
- printf "export %s=' %s%s'\n" "$_this" "$time_icon" "$time_text" >> $tmpfile
-}
-
-notify() {
- _cal=$(cal --color=always | sed 1d | sed '
- s/..7m//;s/..0m/<\/span><\/b>/;
- s/\(Su\|Mo\|Tu\|We\|Th\|Fr\|Sa\)/\1<\/span>/g')
- notify-send "📅 Calendar" "$_cal" -r 9527
-}
-
-click() {
- case "$1" in
- L) notify ;;
- R) "" ;;
- esac
-}
-
-case "$1" in
- click) click $2 ;;
- notify) notify ;;
- *) update ;;
-esac
diff --git a/DWM/scripts/status/mem.sh b/DWM/scripts/status/mem.sh
deleted file mode 100644
index 7ea7b5b..0000000
--- a/DWM/scripts/status/mem.sh
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/bin/bash
-# 获取当前内存使用
-
-_this=_mem
-tmpfile=/tmp/dwm_statusbar
-
-update() {
- [[ ! "$(command -v cat)" ]] && echo command not found: cat && return
- mem_tota=$(cat /proc/meminfo | grep -w "MemTotal:"| awk '{print $2}')
- mem_free=$(cat /proc/meminfo | grep -w "MemFree:" | awk '{print $2}')
- mem_buff=$(cat /proc/meminfo | grep -w "Buffers:" | awk '{print $2}')
- mem_cach=$(cat /proc/meminfo | grep -w "Cached:" | awk '{print $2}')
- mem_text=$(echo $(((mem_tota - mem_free - mem_buff - mem_cach) * 100 / mem_tota)) | awk '{printf "%02d%", $1}')
- mem_icon="💾"
- sed -i '/^export '$_this'=.*$/d' $tmpfile
- printf "export %s=' %s%s'\n" "$_this" "$mem_icon" "$mem_text" >> $tmpfile
-}
-
-notify() {
- notify-send "💾 Memory" "$(free -h | awk '
- NR==2 {a=$7;u=$3;t=$2}
- NR==3 {s=$3"/"$2}
- END {printf "Free: %s\nUsed: %s/%s\nSwap: %s", a, u, t, s}')" -r 9527
-}
-
-click() {
- case "$1" in
- L) notify ;;
- R) "" ;;
- esac
-}
-
-case "$1" in
- click) click $2 ;;
- notify) notify ;;
- *) update ;;
-esac
diff --git a/DWM/scripts/status/music.sh b/DWM/scripts/status/music.sh
deleted file mode 100644
index 8b29359..0000000
--- a/DWM/scripts/status/music.sh
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/bin/bash
-# 音乐脚本
-# 需要 mpd, mpc
-
-_this=_music
-tmpfile=/tmp/dwm_statusbar
-
-update() {
- [[ ! "$(command -v mpd)" ]] && echo command not found: mpd && return
- [[ ! "$(command -v mpc)" ]] && echo command not found: mpc && return
- music_text=$(mpc current | sed 's/"/\\"/g')
- [[ ! "$music_text" ]] && music_text="No Playing"
- music_icon="🎧"
- sed -i '/^export '$_this'=.*$/d' $tmpfile
- [[ ! "$music_text" ]] && return
- printf "export %s=' %s'\n" "$_this" "$music_icon" >> $tmpfile
-}
-
-notify() {
- update
- notify-send "$music_icon Music" "$music_text" -r 9527
-}
-
-click() {
- case "$1" in
- L) mpc toggle; notify ;;
- R) mpc pause; notify ;;
- U) mpc prev; notify ;;
- D) mpc next; notify ;;
- esac
-}
-
-case "$1" in
- click) click $2 ;;
- notify) notify ;;
- *) update ;;
-esac
diff --git a/DWM/scripts/status/vol.sh b/DWM/scripts/status/vol.sh
deleted file mode 100644
index a4812c5..0000000
--- a/DWM/scripts/status/vol.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/bash
-# 获取音量
-# 需要 pactl
-
-_this=_vol
-tmpfile=/tmp/dwm_statusbar
-
-update() {
- [[ ! "$(command -v pactl)" ]] && echo command not found: pactl && return
- vol_text=$(pactl get-sink-volume @DEFAULT_SINK@ | awk '/Volume:/ {print $5}')
- vol_icon="📢"
- sed -i '/^export '$_this'=.*$/d' $tmpfile
- printf "export %s=' %s%s'\n" "$_this" "$vol_icon" "$vol_text" >> $tmpfile
-}
-
-notify() {
- update
- notify-send "📢 Volume $vol_text" -h int:value:$vol_text -h string:hlcolor:#c0caf5 -r 9527
-}
-
-click() {
- case "$1" in
- L) notify ;;
- R) "" ;;
- U) pactl set-sink-volume @DEFAULT_SINK@ +5%; notify ;;
- D) pactl set-sink-volume @DEFAULT_SINK@ -5%; notify ;;
- esac
-}
-
-case "$1" in
- click) click $2 ;;
- notify) notify ;;
- *) update ;;
-esac
diff --git a/DWM/scripts/status/wifi.sh b/DWM/scripts/status/wifi.sh
deleted file mode 100644
index 0cbfdad..0000000
--- a/DWM/scripts/status/wifi.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/bash
-# 获取 wifi 信息
-# 需要 nmcli
-
-_this=_wifi
-tmpfile=/tmp/dwm_statusbar
-
-update() {
- [[ ! "$(command -v nmcli)" ]] && echo command not found: nmcli && return
- sed -i '/^export '$_this'=.*$/d' $tmpfile
- wifi_text=$(nmcli | grep "connected to" | awk -F " connected to " '{print $2}')
- [[ ! "$wifi_text" ]] && wifi_text="disconnected"
- wifi_icon="🛜"
- printf "export %s=' %s'\n" "$_this" "$wifi_icon" >> $tmpfile
-}
-
-notify() {
- update
- notify-send "🛜 Wifi" "$wifi_text" -r 9527
-}
-
-click() {
- case "$1" in
- L) notify ;;
- R) "" ;;
- esac
-}
-
-case "$1" in
- click) click $2 ;;
- notify) notify ;;
- *) update ;;
-esac
diff --git a/DWM/scripts/statusbar.sh b/DWM/scripts/statusbar.sh
deleted file mode 100755
index 0bc8bd8..0000000
--- a/DWM/scripts/statusbar.sh
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/bin/bash
-
-_thisdir=$(cd $(dirname $0);pwd)
-tmpfile=/tmp/dwm_statusbar
-touch $tmpfile
-
-# 更新模块内容
-update() {
- [[ ! "$1" ]] && refresh && return
- [[ -e "$_thisdir/status/$1.sh" ]] && bash $_thisdir/status/$1.sh
- shift 1; update $*
-}
-
-# 更新状态栏
-refresh() {
- _music='';_wifi='';_cpu='';_mem='';_date='';_vol='';_bat=''
- source $tmpfile
- xsetroot -name "$_music$_wifi$_cpu$_mem$_date$_vol$_bat "
-}
-
-# 定时更新程序
-cron() {
- echo > $tmpfile
- let i=0
- while true; do
- to=()
- [[ $((i % 10)) -eq 0 ]] && to=(${to[@]} wifi)
- [[ $((i % 20)) -eq 0 ]] && to=(${to[@]} cpu mem vol)
- [[ $((i % 300)) -eq 0 ]] && to=(${to[@]} bat)
- [[ $((i % 5)) -eq 0 ]] && to=(${to[@]} date music)
- [[ $i -lt 30 ]] && to=(wifi cpu mem date vol bat music)
- update ${to[@]}
- sleep 5; let i+=5
- done &
-}
-
-# 状态栏点击
-click() {
- [[ ! "$1" =~ ^[0-9]$ ]] && return
- to=(music wifi cpu cpu mem date vol bat)
- bash $_thisdir/status/${to[$1]}.sh click $2
- update $1
- refresh
-}
-
-case $1 in
- cron) cron ;;
- update) shift 1; update $* ;;
- updateall|check) update music wifi cpu mem date vol bat ;;
- *) click $1 $2 ;;
-esac
diff --git a/DWM/statusbar.sh b/DWM/statusbar.sh
new file mode 100755
index 0000000..c8d02f3
--- /dev/null
+++ b/DWM/statusbar.sh
@@ -0,0 +1,175 @@
+#!/bin/bash
+
+theme=${DWM_THEME:-"onedark"}
+icons=${DWM_ICONS:-"dwmStatus"}
+
+# shellcheck source=themes/onedark/bar.t
+source "$DWM/themes/$theme/bar.t"
+iconpath="$HOME/.local/share/icons/$icons"
+pipe="$DWM/.tmp/pipe.tmp"
+
+W=$(xdpyinfo | awk '/dimensions:/{print $2}' | cut -d'x' -f1)
+H=$(xdpyinfo | awk '/dimensions:/{print $2}' | cut -d'x' -f2)
+UR0=+$((W / 2 + W / 16))+$((H / 7))
+UR1=+$((W / 3 + W / 16))+$((H / 2))
+UR2=+$((W / 4 + W / 16))+$((H / 5))
+
+clkupdates() {
+ if [ "$1" == "L" ]; then
+ if ! pgrep -f 'st -t statusutil_fetch'; then
+ st -t statusutil_fetch -c statusutil -f 'monospace:size=8' -g 103x26"$UR0" -e "$DWM/fetch.sh" >/dev/null 2>&1 &
+ checkupdates >"$pipe" && mv "$pipe" "$DWM/.tmp/pkgupdates.tmp"
+ fi
+ elif [ "$1" == "R" ]; then
+ if ! pgrep -f 'st -t statusutil_pacman'; then
+ st -t statusutil_pacman -c statusutil -f 'monospace:size=8' -g 98x30"$UR1" -e "$DWM/pacmanf.sh" >/dev/null 2>&1 &
+ fi
+ fi
+}
+
+clkbattery() {
+ val=$(acpi | sed -n 's/.* \([0-9]\+\)%.*/\1/p' | head -1)
+ duration=$(acpi -b | sed '2,$d' | awk -F'[,:]' '{h=$4; m=$5; printf "%dh %dmin\n", h, m}')
+ if [ "$val" -gt 75 ]; then
+ infix='full'
+ elif [ "$val" -gt 50 ]; then
+ infix='good'
+ elif [ "$val" -gt 25 ]; then
+ infix='low'
+ else
+ infix='empty'
+ fi
+ if acpi | grep -q 'Discharging'; then
+ posfix=''
+ stat='Discharging'
+ desc='Available'
+ else
+ posfix='-charging'
+ stat='Charging'
+ desc='Full after'
+ fi
+ icon="$iconpath/battery-$infix$posfix.svg"
+ if [ "$1" = "L" ]; then
+ timeout 0 dunstify --app-name=status-toast-calendar --raw-icon="$icon" -r 9527 -t 5000 \
+ "$val $stat" "$desc $duration"
+ fi
+}
+
+clkbrightness() {
+ val=$(brightnessctl | sed -n 's/.*(\([0-9]\+\)%).*/\1/p')
+ notify() {
+ timeout 0 dunstify --app-name=status-toast-brightness --raw-icon="$iconpath/brightness.svg" -r 9527 -t 5000 \
+ -h "int:value:$val" "$val"
+ }
+ case "$1" in
+ "L") notify ;;
+ "U") brightnessctl set 5%+ && notify ;;
+ "D") brightnessctl set 5%- && notify ;;
+ esac
+}
+
+clkcpu() {
+ if [ "$1" = "L" ]; then
+ timeout 0 dunstify --app-name=status-toast-cpu --raw-icon="$iconpath/cpu.svg" -r 9527 -t 5000 \
+ "$(sensors | grep Tctl | awk '{printf "%d°C", $2}') / $(grep -o "^[^ ]*" /proc/loadavg)" \
+ "$(ps axch -o cmd:15,%cpu --sort=-%cpu | head)"
+ elif [ "$1" = "R" ]; then
+ if ! pgrep -f 'st -t statusutil_htop'; then
+ st -t statusutil_htop -c statusutil -f 'monospace:size=8' -g 98x30"$UR2" -e htop >>/dev/null 2>&1 &
+ fi
+ fi
+}
+
+clkmem() {
+ if [ "$1" = "L" ]; then
+ timeout 0 dunstify --app-name=status-toast-mem --raw-icon="$iconpath/dotmemory.svg" -r 9527 -t 5000 \
+ "$(free -h | awk '/^Mem:/{print $3 " / " $2}' | sed 's/i//g')" \
+ "$(ps -eo rss,comm --sort=-rss --no-headers | awk 'NR <= 10 {printf "%-18s %.1f%s\n", substr($2,1,15)(length($2)>15?"...":""), ($1>1e6?$1/1e6:$1/1e3), ($1>1e6?"G":"M")}')"
+ elif [ "$1" = "R" ]; then
+ if ! pgrep -f 'st -t statusutil_htop'; then
+ st -t statusutil_htop -c statusutil -f 'monospace:size=8' -g 98x30"$UR2" -e htop >>/dev/null 2>&1 &
+ fi
+ fi
+}
+
+clkwlan() {
+ notifyInit() {
+ ssid=$(nmcli -t -f 'name,type' connection show --active | awk -F: '$2 ~ /wireless|wifi|ethernet/ {print $1}' | head -1)
+ if [ -z "$ssid" ]; then
+ timeout 0 dunstify --app-name=status-toast-wlan --raw-icon="$iconpath/wifi-radar.svg" --action clicked,clk -r 9527 -t 5000 \
+ "No Internet Connection" \
+ "Unable to connect. (click me to build a network connection)"
+ else
+ timeout 0 dunstify --app-name=status-toast-wlan --raw-icon="$iconpath/wifi-radar.svg" --action clicked,clk -r 9527 -t 5000 \
+ "$(ip -4 addr show scope global | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | head -1)" \
+ "$(
+ printf "%-10s%s\n" "SSID" "$ssid"
+ awk -F': ' '{printf "%-10s%s\n", $1, $2}' "$DWM/.tmp/network.tmp"
+ )"
+ fi
+ }
+ notifySucc() {
+ timeout 0 dunstify --app-name=status-toast-wlan --raw-icon="$iconpath/wifi-radar.svg" -r 9527 -t 5000 \
+ "Connection Established" \
+ "You are now connected to the Wi-Fi network $1"
+ speedtest-cli --simple >"$pipe" && mv "$pipe" "$DWM/.tmp/network.tmp"
+ }
+ notifyFail() {
+ timeout 0 dunstify --app-name=status-toast-wlan --raw-icon="$iconpath/wifi-radar.svg" -r 9527 -t 5000 \
+ "Connection Failed" \
+ "Please check if the SSID and password math"
+ }
+ [ "$1" != "L" ] && return
+ click=$(notifyInit) # the base pop-up notification
+ [ "$click" != "clicked" ] && return
+ wifilst=$(cat "$DWM/.tmp/wifilst.tmp" | sed '1d; /:$/d; s/^:/ /; s/^.*:/ /' | sort -u)
+ selected=$(echo -e "$wifilst" | rofi -dmenu -i -selected-row 1 -p "Wi-Fi SSID: ")
+ [ -z "$selected" ] && return
+ read -r selectedid <<<"${selected:2}"
+ if nmcli -g NAME connection | grep -qw "$selectedid"; then
+ if nmcli connection up id "$selectedid" | grep -q "success"; then
+ notifySucc "$selected"
+ else
+ notifyFail
+ fi
+ else
+ [[ "$selected" =~ "" ]] && password=$(rofi -dmenu -p "password: ")
+ if nmcli device wifi connect "$selectedid" password "$password" | grep -q "success"; then
+ notifySucc "$selected"
+ else
+ notifyFail
+ fi
+ fi
+}
+
+clkdate() {
+ if [ "$1" = "L" ]; then
+ timeout 0 dunstify --app-name=status-toast-calendar --raw-icon="$iconpath/calendar.svg" -r 9527 -t 5000 \
+ "$(date '+%B %Y')" \
+ "$(cal --color=always | sed "s/..7m//;s/..0m/<\/span>/" | tail -n +3)"
+ fi
+}
+
+clkvolume() {
+ notify() {
+ val=$(amixer sget Master | grep -oE '[0-9]{1,3}%' | head -1 | tr -d '%')
+ timeout 0 dunstify --app-name=status-toast-volume --raw-icon="$iconpath/audio-speaker.svg" -r 9527 -t 5000 \
+ -h "int:value:$val" "$val"
+ }
+ case "$1" in
+ "L") notify ;;
+ "U") amixer -q set Master 5%+ && notify ;;
+ "D") amixer -q set Master 5%- && notify ;;
+ esac
+}
+
+case "$1" in
+0) clkupdates "$2" ;;
+1) clkbattery "$2" ;;
+2) clkbrightness "$2" ;;
+3) clkcpu "$2" ;;
+4) clkmem "$2" ;;
+5) clkwlan "$2" ;;
+6) clkdate "$2" ;;
+7) clkvolume "$2" ;;
+esac
diff --git a/DWM/themes/onedark/bar.t b/DWM/themes/onedark/bar.t
new file mode 100644
index 0000000..69567d4
--- /dev/null
+++ b/DWM/themes/onedark/bar.t
@@ -0,0 +1,16 @@
+bwh=#fffafa
+wht=#abb2bf
+blk=#1e222a
+gry=#282c34
+red=#d47d85
+drd=#a54242
+ylw=#ecbe7b
+dyw=#ffb347
+grn=#7eca9c
+dgn=#5a935f
+cyn=#56b6c2
+dcy=#008b8b
+blu=#7aa2f7
+dbl=#4a6bc8
+ppl=#c678dd
+dpp=#5e4a8c
diff --git a/DWM/themes/onedark/dunstrc b/DWM/themes/onedark/dunstrc
new file mode 100644
index 0000000..70004e0
--- /dev/null
+++ b/DWM/themes/onedark/dunstrc
@@ -0,0 +1,49 @@
+
+[status-toast-battery]
+ appname = status-toast-battery
+ background = "#1e222a"
+ frame_color = "#1e222a"
+ foreground = "#7aa2f7"
+ highlight = "#7aa2f7"
+
+[status-toast-brightness]
+ appname = status-toast-brightness
+ background = "#1e222a"
+ frame_color = "#1e222a"
+ foreground = "#d47d85"
+ highlight = "#d47d85"
+
+[status-toast-cpu]
+ appname=status-toast-cpu
+ background = "#1e222a"
+ frame_color = "#1e222a"
+ foreground = "#7eca9c"
+ highlight = "#7eca9c"
+
+[status-toast-mem]
+ appname=status-toast-mem
+ background = "#1e222a"
+ frame_color = "#1e222a"
+ foreground = "#7aa2f7"
+ highlight = "#7aa2f7"
+
+[status-toast-wlan]
+ appname=status-toast-wlan
+ background = "#1e222a"
+ frame_color = "#1e222a"
+ foreground = "#d47d85"
+ highlight = "#d47d85"
+
+[status-toast-calendar]
+ appname=status-toast-calendar
+ background = "#1e222a"
+ frame_color = "#1e222a"
+ foreground = "#7aa2f7"
+ highlight = "#7aa2f7"
+
+[status-toast-volume]
+ appname=status-toast-volume
+ background = "#1e222a"
+ frame_color = "#1e222a"
+ foreground = "#7eca9c"
+ highlight = "#7eca9c"
diff --git a/DWM/themes/onedark/wm.h b/DWM/themes/onedark/wm.h
new file mode 100644
index 0000000..8f17ace
--- /dev/null
+++ b/DWM/themes/onedark/wm.h
@@ -0,0 +1,25 @@
+#ifndef WM_H
+#define WM_H
+// clang-format off
+
+const char col_bwh[] = "#fffafa";
+const char col_wht[] = "#abb2bf";
+const char col_dwh[] = "#6d8dad"; // gray4
+const char col_bgy[] = "#545862"; // gray3
+const char col_gry[] = "#282c34"; // gray2
+const char col_blk[] = "#1e222a";
+const char col_red[] = "#d47d85";
+const char col_drd[] = "#a54242";
+const char col_ylw[] = "#ecbe7b";
+const char col_dyw[] = "#ffb347";
+const char col_grn[] = "#7eca9c";
+const char col_dgn[] = "#5a935f";
+const char col_cyn[] = "#56b6c2";
+const char col_dcy[] = "#008b8b";
+const char col_blu[] = "#7aa2f7";
+const char col_dbl[] = "#4a6bc8";
+const char col_ppl[] = "#c678dd";
+const char col_dpp[] = "#5e4a8c";
+
+// clang-format on
+#endif // !WM_H
diff --git a/LICENSE b/LICENSE
index 995172f..04336f6 100644
--- a/LICENSE
+++ b/LICENSE
@@ -18,6 +18,7 @@ MIT/X Consortium License
© 2015-2016 Eric Pruitt
© 2016-2017 Markus Teich
© 2020-2022 Chris Down
+© 2022-2025 Lazypool
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
diff --git a/Makefile b/Makefile
index 6173582..8bfe3b9 100644
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,6 @@
# paths
PREFIX = /usr/local
-MANPREFIX = ${PREFIX}/share/man
X11INC = /usr/X11R6/include
X11LIB = /usr/X11R6/lib
@@ -28,7 +27,7 @@ LDFLAGS = ${LIBS}
CC = cc
# object file
-SRC = dwm.c src/drw.c src/util.c
+SRC = dwm.c src/drw.c src/util.c src/icon.c
OBJ = ${SRC:.c=.o}
all: dwm
@@ -44,16 +43,18 @@ dwm: ${OBJ}
clean:
rm -f dwm ${OBJ}
-install: all
+deploy:
+ mkdir -p $$HOME/.config/
+ cp -r .config/* $$HOME/.config/
+ mkdir -p $$HOME/.local/share/icons/
+ cp -r icons/* $$HOME/.local/share/icons/
+
+install: all deploy
mkdir -p ${DESTDIR}${PREFIX}/bin
cp -f dwm ${DESTDIR}${PREFIX}/bin
chmod 755 ${DESTDIR}${PREFIX}/bin/dwm
- mkdir -p ${DESTDIR}${MANPREFIX}/man1
- sed "s/VERSION/${VERSION}/g" < src/dwm.1 > ${DESTDIR}${MANPREFIX}/man1/dwm.1
- chmod 644 ${DESTDIR}${MANPREFIX}/man1/dwm.1
uninstall:
- rm -f ${DESTDIR}${PREFIX}/bin/dwm\
- ${DESTDIR}${MANPREFIX}/man1/dwm.1
+ rm -f ${DESTDIR}${PREFIX}/bin/dwm
-.PHONY: all clean install uninstall
+.PHONY: all clean deploy install uninstall
diff --git a/config.h b/config.h
index 6735c79..860bab0 100644
--- a/config.h
+++ b/config.h
@@ -2,6 +2,7 @@
#define CONFIG_H
// clang-format off
+#include "DWM/themes/onedark/wm.h"
#include "dwm.h"
/* appearance */
@@ -9,40 +10,44 @@ const unsigned int borderpx = 3; /* border pixel of windows */
const unsigned int snap = 32; /* snap pixel */
const int showbar = 1; /* 0 means no bar */
const int topbar = 1; /* 0 means bottom bar */
-const int sidepad = 10; /* side padding size */
-const int iconsize = 19; /* icon size */
+const int sidepad = 6; /* side padding size */
+const int iconsize = 24; /* icon size */
const int iconspacing = 8; /* space between icon and title */
+const int ulpad = 5; /* horizontal padding between underline and tag */
+const int ulstroke = 3; /* thickness of the underline */
const char *fonts[] = {"Iosevka:style:medium:size=12" ,"JetBrainsMono Nerd Font Mono:style:medium:size=19" };
const char dmenufont[] = "JetBrainsMono Nerd Font Mono:size=12";
-const char col_gray1[] = "#222222";
-const char col_gray2[] = "#444444";
-const char col_gray3[] = "#bbbbbb";
-const char col_gray4[] = "#eeeeee";
-const char col_cyan[] = "#005577";
+const int schemetags[] = {SchemeTag1, SchemeTag2, SchemeTag3, SchemeTag4, SchemeTag5};
const char *colors[][3] = {
- /* fg bg border */
- [SchemeNorm] = {col_gray3, col_gray1, col_gray2},
- [SchemeSel] = {col_gray4, col_cyan, col_cyan },
+ /* fg bg border */
+ [SchemeNorm] = {col_bgy, col_blk, col_gry},
+ [SchemeSel] = {col_dwh, col_blk, col_bgy},
+ [SchemeTag] = {col_bgy, col_blk, col_blk},
+ [SchemeTag1] = {col_blu, col_blk, col_blk},
+ [SchemeTag2] = {col_red, col_blk, col_blk},
+ [SchemeTag3] = {col_dyw, col_blk, col_blk},
+ [SchemeTag4] = {col_grn, col_blk, col_blk},
+ [SchemeTag5] = {col_ppl, col_blk, col_blk},
+ [SchemeLayout] = {col_grn, col_blk, col_blk},
+ [SchemeTitle] = {col_ylw, col_blk, col_blk},
};
/* self-defined scripts */
const char *autostartscript = "$DWM/autostart.sh";
-const char *statusbarscript = "$DWM/scripts/statusbar.sh";
+const char *statusbarscript = "$DWM/statusbar.sh";
/* tags */
-const char *tags[] = {"", "", "", "", "", "", "", ""};
+const char *tags[MAXTAGS] = {"", "", "", "", ""};
/* rule */
const Rule rules[] = {
- /* xprop(1):
+ /* xprop(1):
* WM_CLASS(STRING) = instance, class
* WM_NAME(STRING) = title
*/
- /* class instance title tagmask isfloating isglobal monitor unmanaged*/
- {"Gimp", NULL, NULL, 0, 1, 0, -1, 0},
- {"Firefox", NULL, NULL, 1 << 8, 0, 0, -1, 0},
- {NULL, NULL, "Feishu Meetings", 0, 0, 0, -1, 1},
- {NULL, NULL, "broken", 0, 0, 0, -1, 1},
+ /* class instance title tagmask isfloating isglobal monitor unmanaged*/
+ {"statusutil", NULL, NULL, 0, 1, 1, -1, 0},
+ {NULL, NULL, "broken", 0, 1, 0, -1, 1},
};
/* layout(s) */
@@ -53,72 +58,73 @@ const int lockfullscreen = 1; /* 1 will force focus on the fullscreen window
const char *monsyms[] = {"", "", "", "", "", "", "", "", "", "", ""};
const Layout layouts[] = {
- /* symbol function */
- {"", tile }, /* first entry is default */
- {"", NULL }, /* no layout function means floating behavior */
- {"", monocle},
+ /* symbol function */
+ {"", tile }, /* first entry is default */
+ {"", NULL }, /* no layout function means floating behavior */
+ {"", monocle},
};
/* commands */
char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
-const char *dmenucmd[] = {"dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL};
+const char *dmenucmd[] = {"dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gry, "-nf", col_bgy, "-sb", col_blu, "-sf", col_dwh, NULL};
const char *termcmd[] = {"st", NULL};
/* key definitions */
#define MODKEY Mod4Mask
-#define TAGKEYS(KEY, TAG) \
- {MODKEY, KEY, view, {.ui = 1 << TAG}}, \
- {MODKEY | ControlMask, KEY, toggleview, {.ui = 1 << TAG}}, \
- {MODKEY | ShiftMask, KEY, viewontag, {.ui = 1 << TAG}}, \
- {MODKEY | ControlMask | ShiftMask, KEY, tag, {.ui = 1 << TAG}},
+#define TAGKEYS(KEY, MSK) \
+ {MODKEY, KEY, view, {.ui = MSK}}, \
+ {MODKEY | ControlMask, KEY, toggleview, {.ui = MSK}}, \
+ {MODKEY | ShiftMask, KEY, viewontag, {.ui = MSK}}, \
+ {MODKEY | ControlMask | ShiftMask, KEY, tag, {.ui = MSK}},
const Key keys[] = {
- /* modifier key function argument */
- {MODKEY, XK_p, spawn, {.v = dmenucmd} },
- {MODKEY | ShiftMask, XK_Return, spawn, {.v = termcmd} },
- {MODKEY, XK_b, togglebar, {0} },
- {MODKEY, XK_e, focusstack, {.i = +1} },
- {MODKEY, XK_u, focusstack, {.i = -1} },
- {MODKEY, XK_h, setmfact, {.f = -0.05} },
- {MODKEY, XK_l, setmfact, {.f = +0.05} },
- {MODKEY, XK_o, transfer, {0} },
- {MODKEY, XK_Return, zoom, {0} },
- {MODKEY, XK_Tab, view, {0} },
- {MODKEY | ShiftMask, XK_c, killclient, {0} },
- {MODKEY, XK_t, setlayout, {.v = &layouts[0]}},
- {MODKEY, XK_f, setlayout, {.v = &layouts[1]}},
- {MODKEY, XK_m, setlayout, {.v = &layouts[2]}},
- {MODKEY, XK_space, setlayout, {0} },
- {MODKEY | ShiftMask, XK_space, togglefloating, {0} },
- {MODKEY, XK_g, toggleglobal, {0} },
- {MODKEY, XK_0, view, {.ui = ~0} },
- {MODKEY, XK_comma, focusmon, {.i = -1} },
- {MODKEY, XK_period, focusmon, {.i = +1} },
- {MODKEY | ShiftMask, XK_comma, tagmon, {.i = -1} },
- {MODKEY | ShiftMask, XK_period, tagmon, {.i = +1} },
- {MODKEY | ShiftMask, XK_q, quit, {0} },
- TAGKEYS(XK_1, 0) TAGKEYS(XK_2, 1) TAGKEYS(XK_3, 2) TAGKEYS(XK_4, 3)
- TAGKEYS(XK_5, 4) TAGKEYS(XK_6, 5) TAGKEYS(XK_7, 6) TAGKEYS(XK_8, 7)
+ /* modifier key function argument */
+ {MODKEY, XK_p, spawn, {.v = dmenucmd} },
+ {MODKEY | ShiftMask, XK_Return, spawn, {.v = termcmd} },
+ {MODKEY, XK_b, togglebar, {0} },
+ {MODKEY, XK_e, focusstack, {.i = +1} },
+ {MODKEY, XK_u, focusstack, {.i = -1} },
+ {MODKEY, XK_h, setmfact, {.f = -0.05} },
+ {MODKEY, XK_l, setmfact, {.f = +0.05} },
+ {MODKEY, XK_o, transfer, {0} },
+ {MODKEY, XK_Return, zoom, {0} },
+ {MODKEY, XK_Tab, view, {0} },
+ {MODKEY | ShiftMask, XK_c, killclient, {0} },
+ {MODKEY, XK_t, setlayout, {.v = &layouts[0]}},
+ {MODKEY, XK_f, setlayout, {.v = &layouts[1]}},
+ {MODKEY, XK_m, setlayout, {.v = &layouts[2]}},
+ {MODKEY, XK_space, setlayout, {0} },
+ {MODKEY | ShiftMask, XK_space, togglefloating, {0} },
+ {MODKEY, XK_g, toggleglobal, {0} },
+ {MODKEY, XK_0, view, {.ui = ~0} },
+ {MODKEY, XK_comma, focusmon, {.i = -1} },
+ {MODKEY, XK_period, focusmon, {.i = +1} },
+ {MODKEY | ShiftMask, XK_comma, tagmon, {.i = -1} },
+ {MODKEY | ShiftMask, XK_period, tagmon, {.i = +1} },
+ {MODKEY | ShiftMask, XK_q, quit, {0} },
+ TAGKEYS(XK_1, TAG(0)) TAGKEYS(XK_2, TAG(1)) TAGKEYS(XK_3, TAG(2))
+ TAGKEYS(XK_4, TAG(3)) TAGKEYS(XK_5, TAG(4)) TAGKEYS(XK_6, TAG(5))
+ TAGKEYS(XK_7, TAG(6)) TAGKEYS(XK_8, TAG(7)) TAGKEYS(XK_9, TAG(9))
};
/* button definitions */
const Button buttons[] = {
- /* click mod button function argument */
- {ClkLtSymbol, 0, Button1, setlayout, {0} },
- {ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]}},
- {ClkWinTitle, 0, Button2, zoom, {0} },
- {ClkStatusText, 0, Button1, clkstatusbar, {0} },
- {ClkStatusText, 0, Button2, clkstatusbar, {0} },
- {ClkStatusText, 0, Button3, clkstatusbar, {0} },
- {ClkStatusText, 0, Button4, clkstatusbar, {0} },
- {ClkStatusText, 0, Button5, clkstatusbar, {0} },
- {ClkClientWin, MODKEY, Button1, movemouse, {0} },
- {ClkClientWin, MODKEY, Button2, togglefloating, {0} },
- {ClkClientWin, MODKEY, Button3, resizemouse, {0} },
- {ClkTagBar, 0, Button1, view, {0} },
- {ClkTagBar, 0, Button3, toggleview, {0} },
- {ClkTagBar, MODKEY, Button1, viewontag, {0} },
- {ClkTagBar, MODKEY, Button3, tag, {0} },
+ /* click mod button function argument */
+ {ClkLtSymbol, 0, Button1, setlayout, {0} },
+ {ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]}},
+ {ClkWinTitle, 0, Button2, zoom, {0} },
+ {ClkStatusText, 0, Button1, clkstatusbar, {0} },
+ {ClkStatusText, 0, Button2, clkstatusbar, {0} },
+ {ClkStatusText, 0, Button3, clkstatusbar, {0} },
+ {ClkStatusText, 0, Button4, clkstatusbar, {0} },
+ {ClkStatusText, 0, Button5, clkstatusbar, {0} },
+ {ClkClientWin, MODKEY, Button1, movemouse, {0} },
+ {ClkClientWin, MODKEY, Button2, togglefloating, {0} },
+ {ClkClientWin, MODKEY, Button3, resizemouse, {0} },
+ {ClkTagBar, 0, Button1, view, {0} },
+ {ClkTagBar, 0, Button3, toggleview, {0} },
+ {ClkTagBar, MODKEY, Button1, viewontag, {0} },
+ {ClkTagBar, MODKEY, Button3, tag, {0} },
};
// clang-format on
diff --git a/dwm.c b/dwm.c
index 480978e..903ff60 100644
--- a/dwm.c
+++ b/dwm.c
@@ -1,10 +1,19 @@
+#include "dwm.h"
+
+#include
+#include
#include
#include
+#include
#include
#include
#include
#include
+#include "src/drw.h"
+#include "src/icon.h"
+#include "src/util.h"
+
#ifdef XINERAMA
#include
#endif /* XINERAMA */
@@ -15,1749 +24,1849 @@
/* function implementations */
void applyrules(Client *c) {
- const char *class, *instance;
- unsigned int i;
- const Rule *r;
- Monitor *m;
- XClassHint ch = {NULL, NULL};
-
- /* rule matching */
- c->isfloating = 0;
- c->isglobal = 0;
- c->tags = 0;
- XGetClassHint(dpy, c->win, &ch);
- class = ch.res_class ? ch.res_class : broken;
- instance = ch.res_name ? ch.res_name : broken;
-
- for (i = 0; i < LENGTH(rules); i++) {
- r = &rules[i];
- if ((!r->title || strstr(c->name, r->title)) && (!r->class || strstr(class, r->class)) && (!r->instance || strstr(instance, r->instance))) {
- c->isfloating = r->isfloating;
- c->isglobal = r->isglobal;
- c->tags |= c->isglobal ? 0 : r->tags;
- for (m = mons; m && m->num != r->monitor; m = m->next);
- if (m) c->mon = m;
- unmanaged = r->unmanaged;
- }
- }
- if (ch.res_class) XFree(ch.res_class);
- if (ch.res_name) XFree(ch.res_name);
- c->tags = c->tags & TAGMASK ? c->tags & TAGMASK : c->mon->tagset[c->mon->seltags];
+ const char *class, *instance;
+ unsigned int i;
+ const Rule *r;
+ Monitor *m;
+ XClassHint ch = {NULL, NULL};
+
+ /* rule matching */
+ c->isfloating = 0;
+ c->isglobal = 0;
+ c->tags = 0;
+ XGetClassHint(dpy, c->win, &ch);
+ class = ch.res_class ? ch.res_class : broken;
+ instance = ch.res_name ? ch.res_name : broken;
+
+ for (i = 0; i < LENGTH(rules); i++) {
+ r = &rules[i];
+ if ((!r->title || strstr(c->name, r->title)) && (!r->class || strstr(class, r->class)) && (!r->instance || strstr(instance, r->instance))) {
+ c->isfloating = r->isfloating;
+ c->isglobal = r->isglobal;
+ c->tags |= c->isglobal ? 0 : r->tags;
+ for (m = mons; m && m->num != r->monitor; m = m->next);
+ if (m) c->mon = m;
+ unmanaged = r->unmanaged;
+ break;
+ }
+ }
+ if (ch.res_class) XFree(ch.res_class);
+ if (ch.res_name) XFree(ch.res_name);
+ c->tags = c->tags & TAGMASK ? c->tags & TAGMASK : c->mon->tagset[c->mon->seltags];
}
int applysizehints(Client *c, int *x, int *y, int *w, int *h, int interact) {
- int baseismin;
- Monitor *m = c->mon;
-
- /* set minimum possible */
- *w = MAX(1, *w);
- *h = MAX(1, *h);
- if (interact) {
- if (*x > sw) *x = sw - WIDTH(c);
- if (*y > sh) *y = sh - HEIGHT(c);
- if (*x + *w + 2 * c->bw < 0) *x = 0;
- if (*y + *h + 2 * c->bw < 0) *y = 0;
- } else {
- if (*x >= m->wx + m->ww) *x = m->wx + m->ww - WIDTH(c);
- if (*y >= m->wy + m->wh) *y = m->wy + m->wh - HEIGHT(c);
- if (*x + *w + 2 * c->bw <= m->wx) *x = m->wx;
- if (*y + *h + 2 * c->bw <= m->wy) *y = m->wy;
- }
- if (*h < bh) *h = bh;
- if (*w < bh) *w = bh;
- if (resizehints || c->isfloating || !c->mon->lt[c->mon->sellt]->arrange) {
- if (!c->hintsvalid) updatesizehints(c);
- /* see last two sentences in ICCCM 4.1.2.3 */
- baseismin = c->basew == c->minw && c->baseh == c->minh;
- if (!baseismin) { /* temporarily remove base dimensions */
- *w -= c->basew;
- *h -= c->baseh;
- }
- /* adjust for aspect limits */
- if (c->mina > 0 && c->maxa > 0) {
- if (c->maxa < (float)*w / *h)
- *w = *h * c->maxa + 0.5;
- else if (c->mina < (float)*h / *w)
- *h = *w * c->mina + 0.5;
- }
- if (baseismin) { /* increment calculation requires this */
- *w -= c->basew;
- *h -= c->baseh;
- }
- /* adjust for increment value */
- if (c->incw) *w -= *w % c->incw;
- if (c->inch) *h -= *h % c->inch;
- /* restore base dimensions */
- *w = MAX(*w + c->basew, c->minw);
- *h = MAX(*h + c->baseh, c->minh);
- if (c->maxw) *w = MIN(*w, c->maxw);
- if (c->maxh) *h = MIN(*h, c->maxh);
- }
- return *x != c->x || *y != c->y || *w != c->w || *h != c->h;
+ int baseismin;
+ Monitor *m = c->mon;
+
+ /* set minimum possible */
+ *w = MAX(1, *w);
+ *h = MAX(1, *h);
+ if (interact) {
+ if (*x > sw) *x = sw - WIDTH(c);
+ if (*y > sh) *y = sh - HEIGHT(c);
+ if (*x + *w + 2 * c->bw < 0) *x = 0;
+ if (*y + *h + 2 * c->bw < 0) *y = 0;
+ } else {
+ if (*x >= m->wx + m->ww) *x = m->wx + m->ww - WIDTH(c);
+ if (*y >= m->wy + m->wh) *y = m->wy + m->wh - HEIGHT(c);
+ if (*x + *w + 2 * c->bw <= m->wx) *x = m->wx;
+ if (*y + *h + 2 * c->bw <= m->wy) *y = m->wy;
+ }
+ if (*h < bh) *h = bh;
+ if (*w < bh) *w = bh;
+ if (resizehints || c->isfloating || !c->mon->lt[c->mon->sellt]->arrange) {
+ if (!c->hintsvalid) updatesizehints(c);
+ /* see last two sentences in ICCCM 4.1.2.3 */
+ baseismin = c->basew == c->minw && c->baseh == c->minh;
+ if (!baseismin) { /* temporarily remove base dimensions */
+ *w -= c->basew;
+ *h -= c->baseh;
+ }
+ /* adjust for aspect limits */
+ if (c->mina > 0 && c->maxa > 0) {
+ if (c->maxa < (float)*w / *h)
+ *w = *h * c->maxa + 0.5;
+ else if (c->mina < (float)*h / *w)
+ *h = *w * c->mina + 0.5;
+ }
+ if (baseismin) { /* increment calculation requires this */
+ *w -= c->basew;
+ *h -= c->baseh;
+ }
+ /* adjust for increment value */
+ if (c->incw) *w -= *w % c->incw;
+ if (c->inch) *h -= *h % c->inch;
+ /* restore base dimensions */
+ *w = MAX(*w + c->basew, c->minw);
+ *h = MAX(*h + c->baseh, c->minh);
+ if (c->maxw) *w = MIN(*w, c->maxw);
+ if (c->maxh) *h = MIN(*h, c->maxh);
+ }
+ return *x != c->x || *y != c->y || *w != c->w || *h != c->h;
}
void arrange(Monitor *m) {
- if (m)
- showhide(m->stack);
- else
- for (m = mons; m; m = m->next) showhide(m->stack);
- if (m) {
- arrangemon(m);
- restack(m);
- } else
- for (m = mons; m; m = m->next) arrangemon(m);
+ if (m)
+ showhide(m->stack);
+ else
+ for (m = mons; m; m = m->next) showhide(m->stack);
+ if (m) {
+ arrangemon(m);
+ restack(m);
+ } else
+ for (m = mons; m; m = m->next) arrangemon(m);
}
void arrangemon(Monitor *m) {
- strncpy(m->ltsymbol, m->lt[m->sellt]->symbol, sizeof m->ltsymbol);
- if (m->lt[m->sellt]->arrange) m->lt[m->sellt]->arrange(m);
+ strncpy(m->ltsymbol, m->lt[m->sellt]->symbol, sizeof m->ltsymbol);
+ if (m->lt[m->sellt]->arrange) m->lt[m->sellt]->arrange(m);
}
void attach(Client *c) {
- c->next = c->mon->clients;
- c->mon->clients = c;
+ c->next = c->mon->clients;
+ c->mon->clients = c;
}
void attachstack(Client *c) {
- c->snext = c->mon->stack;
- c->mon->stack = c;
+ c->snext = c->mon->stack;
+ c->mon->stack = c;
+}
+
+void autostart(void) {
+ char cmd[100];
+ sprintf(cmd, "%s &", autostartscript);
+ system(cmd);
}
void buttonpress(XEvent *e) {
- unsigned int i, x, click;
- Arg arg = {0};
- Client *c;
- Monitor *m;
- XButtonPressedEvent *ev = &e->xbutton;
-
- click = ClkRootWin;
- /* focus monitor if necessary */
- if ((m = wintomon(ev->window)) && m != selmon) {
- unfocus(selmon->sel, 1);
- selmon = m;
- focus(NULL);
- }
-
- if (ev->window == selmon->barwins[0]) {
- i = x = 0;
- do x += TEXTW(tags[i]);
- while (ev->x >= x && ++i < LENGTH(tags));
- if (i < LENGTH(tags)) {
- click = ClkTagBar;
- arg.ui = 1 << i;
- } else if (ev->x < x + TEXTW(selmon->ltsymbol))
- click = ClkLtSymbol;
- }
-
- else if (ev->window == selmon->barwins[1]) {
- click = ClkWinTitle;
- }
-
- else if (ev->window == selmon->barwins[2]) {
- click = ClkStatusText;
- arg.i = ev->x;
- arg.ui = ev->button;
- }
-
- else if ((c = wintoclient(ev->window))) {
- focus(c);
- restack(selmon);
- XAllowEvents(dpy, ReplayPointer, CurrentTime);
- click = ClkClientWin;
- }
-
- for (i = 0; i < LENGTH(buttons); i++)
- if (click == buttons[i].click && buttons[i].func && buttons[i].button == ev->button && CLEANMASK(buttons[i].mask) == CLEANMASK(ev->state))
- buttons[i].func((click == ClkTagBar || click == ClkWinTitle || click == ClkStatusText) && buttons[i].arg.i == 0 ? &arg : &buttons[i].arg);
+ unsigned int i, x, click;
+ Arg arg = {0};
+ Client *c;
+ Monitor *m;
+ XButtonPressedEvent *ev = &e->xbutton;
+
+ click = ClkRootWin;
+ /* focus monitor if necessary */
+ if ((m = wintomon(ev->window)) && m != selmon) {
+ unfocus(selmon->sel, 1);
+ selmon = m;
+ focus(NULL);
+ }
+
+ if (ev->window == selmon->barwins[0]) {
+ i = x = 0;
+ do {
+ x += TEXTW(tags[i]);
+ } while (ev->x >= x && ++i < LENGTH(tags));
+ if (i < LENGTH(tags)) {
+ click = ClkTagBar;
+ arg.ui = 1 << i;
+ } else if (ev->x < x + TEXTW(selmon->ltsymbol))
+ click = ClkLtSymbol;
+ }
+
+ else if (ev->window == selmon->barwins[1]) {
+ x = lrpad / 2 - iconspacing / 2;
+ for (c = m->clients; c; c = c->next) {
+ if (!ISVISIBLE(c)) continue;
+ if (ev->x < x + iconsize) break;
+ x += iconsize + iconspacing;
+ }
+ click = ClkWinTitle;
+ arg.v = c;
+ }
+
+ else if (ev->window == selmon->barwins[2]) {
+ click = ClkStatusText;
+ arg.i = ev->x;
+ arg.ui = ev->button;
+ }
+
+ else if ((c = wintoclient(ev->window))) {
+ focus(c);
+ restack(selmon);
+ XAllowEvents(dpy, ReplayPointer, CurrentTime);
+ click = ClkClientWin;
+ }
+
+ for (i = 0; i < LENGTH(buttons); i++)
+ if (click == buttons[i].click && buttons[i].func && buttons[i].button == ev->button && CLEANMASK(buttons[i].mask) == CLEANMASK(ev->state))
+ buttons[i].func((click == ClkTagBar || click == ClkWinTitle || click == ClkStatusText) && buttons[i].arg.i == 0 ? &arg : &buttons[i].arg);
}
void checkotherwm(void) {
- xerrorxlib = XSetErrorHandler(xerrorstart);
- /* this causes an error if some other window manager is running */
- XSelectInput(dpy, DefaultRootWindow(dpy), SubstructureRedirectMask);
- XSync(dpy, False);
- XSetErrorHandler(xerror);
- XSync(dpy, False);
+ xerrorxlib = XSetErrorHandler(xerrorstart);
+ /* this causes an error if some other window manager is running */
+ XSelectInput(dpy, DefaultRootWindow(dpy), SubstructureRedirectMask);
+ XSync(dpy, False);
+ XSetErrorHandler(xerror);
+ XSync(dpy, False);
}
void cleanup(void) {
- Arg a = {.ui = ~0};
- Layout foo = {"", NULL};
- Monitor *m;
- size_t i;
-
- view(&a);
- selmon->lt[selmon->sellt] = &foo;
- for (m = mons; m; m = m->next)
- while (m->stack) unmanage(m->stack, 0);
- XUngrabKey(dpy, AnyKey, AnyModifier, root);
- while (mons) cleanupmon(mons);
- for (i = 0; i < CurLast; i++) drw_cur_free(drw, cursor[i]);
- for (i = 0; i < LENGTH(colors); i++) free(scheme[i]);
- free(scheme);
- XDestroyWindow(dpy, wmcheckwin);
- drw_free(drw);
- XSync(dpy, False);
- XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime);
- XDeleteProperty(dpy, root, netatom[NetActiveWindow]);
+ Arg a = {.ui = ~0};
+ Layout foo = {"", NULL};
+ Monitor *m;
+ size_t i;
+
+ view(&a);
+ selmon->lt[selmon->sellt] = &foo;
+ for (m = mons; m; m = m->next)
+ while (m->stack) unmanage(m->stack, 0);
+ XUngrabKey(dpy, AnyKey, AnyModifier, root);
+ while (mons) cleanupmon(mons);
+ for (i = 0; i < CurLast; i++) drw_cur_free(drw, cursor[i]);
+ for (i = 0; i < LENGTH(colors) + 1; i++) free(scheme[i]);
+ free(scheme);
+ XDestroyWindow(dpy, wmcheckwin);
+ drw_free(drw);
+ XSync(dpy, False);
+ XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime);
+ XDeleteProperty(dpy, root, netatom[NetActiveWindow]);
}
void cleanupmon(Monitor *mon) {
- Monitor *m;
+ Monitor *m;
- if (mon == mons)
- mons = mons->next;
- else {
- for (m = mons; m && m->next != mon; m = m->next);
- m->next = mon->next;
- }
- for (int i = 0; i < 3; i++) {
- XUnmapWindow(dpy, mon->barwins[i]);
- XDestroyWindow(dpy, mon->barwins[i]);
- }
- free(mon);
+ if (mon == mons)
+ mons = mons->next;
+ else {
+ for (m = mons; m && m->next != mon; m = m->next);
+ m->next = mon->next;
+ }
+ for (int i = 0; i < 3; i++) {
+ XUnmapWindow(dpy, mon->barwins[i]);
+ XDestroyWindow(dpy, mon->barwins[i]);
+ }
+ free(mon);
}
void clientmessage(XEvent *e) {
- XClientMessageEvent *cme = &e->xclient;
- Client *c = wintoclient(cme->window);
+ XClientMessageEvent *cme = &e->xclient;
+ Client *c = wintoclient(cme->window);
- if (!c) return;
- if (cme->message_type == netatom[NetWMState]) {
- if (cme->data.l[1] == netatom[NetWMFullscreen] || cme->data.l[2] == netatom[NetWMFullscreen])
- setfullscreen(c, (cme->data.l[0] == 1 || (cme->data.l[0] == 2 && !c->isfullscreen)));
- } else if (cme->message_type == netatom[NetActiveWindow]) {
- if (c != selmon->sel && !c->isurgent) seturgent(c, 1);
- }
+ if (!c) return;
+ if (cme->message_type == netatom[NetWMState]) {
+ if (cme->data.l[1] == netatom[NetWMFullscreen] || cme->data.l[2] == netatom[NetWMFullscreen])
+ setfullscreen(c, (cme->data.l[0] == 1 || (cme->data.l[0] == 2 && !c->isfullscreen)));
+ } else if (cme->message_type == netatom[NetActiveWindow]) {
+ if (c != selmon->sel && !c->isurgent) seturgent(c, 1);
+ }
}
void clkstatusbar(const Arg *arg) {
- static unsigned long last;
- struct timespec now;
- unsigned long current;
- int n = 0, ptr = 0, len;
- char *text, *btn = "L", *cmd;
-
- if (!arg->i || arg->i <= 0) return;
-
- /* throttling */
- clock_gettime(CLOCK_MONOTONIC, &now);
- current = now.tv_sec * 1000UL + now.tv_nsec / 1000000UL;
- if (current - last < 100)
- return;
- else
- last = current;
-
- text = (char *)malloc(256 * sizeof(char));
- strcpy(text, stext);
- while (text[++ptr]) {
- if (text[ptr] != ' ') continue;
- text[ptr] = '\0';
- len = TEXTW(text) - lrpad;
- text[ptr] = ' ';
- n += (len < arg->i);
- }
-
- switch (arg->ui) {
- case Button1:
- btn = "L";
- break;
- case Button2:
- btn = "M";
- break;
- case Button3:
- btn = "R";
- break;
- case Button4:
- btn = "U";
- break;
- case Button5:
- btn = "D";
- break;
- }
-
- cmd = (char *)malloc(256 * sizeof(char));
- sprintf(cmd, "%s %d %s &", statusbarscript, n, btn);
- system(cmd);
- free(cmd);
- free(text);
+ static unsigned long last;
+ struct timespec now;
+ unsigned long current;
+ int n = 0, ptr = 0, len;
+ int i, j, isc = 0;
+ char *text, *btn = btnstr[arg->ui], *cmd;
+
+ if (!arg->i || arg->i <= 0) return;
+
+ /* throttling */
+ clock_gettime(CLOCK_MONOTONIC, &now);
+ current = now.tv_sec * 1000UL + now.tv_nsec / 1000000UL;
+ if (current - last < 100)
+ return;
+ else
+ last = current;
+
+ text = (char *)malloc(256 * sizeof(char));
+ for (i = j = 0; stext[i]; ++i) {
+ if (stext[i] == '^') {
+ isc ^= 1;
+ continue;
+ }
+ if (!isc) text[j++] = stext[i];
+ }
+ text[j] = '\0';
+
+ while (text[++ptr]) {
+ if (text[ptr] != '&') continue;
+ text[ptr] = '\0';
+ len = TEXTW(text) - lrpad;
+ text[ptr] = ' ';
+ n += (len < arg->i);
+ }
+
+ cmd = (char *)malloc(256 * sizeof(char));
+ sprintf(cmd, "%s %d %s &", statusbarscript, n, btn);
+ system(cmd);
+ free(cmd);
+ free(text);
}
void configure(Client *c) {
- XConfigureEvent ce;
-
- ce.type = ConfigureNotify;
- ce.display = dpy;
- ce.event = c->win;
- ce.window = c->win;
- ce.x = c->x;
- ce.y = c->y;
- ce.width = c->w;
- ce.height = c->h;
- ce.border_width = c->bw;
- ce.above = None;
- ce.override_redirect = False;
- XSendEvent(dpy, c->win, False, StructureNotifyMask, (XEvent *)&ce);
+ XConfigureEvent ce;
+
+ ce.type = ConfigureNotify;
+ ce.display = dpy;
+ ce.event = c->win;
+ ce.window = c->win;
+ ce.x = c->x;
+ ce.y = c->y;
+ ce.width = c->w;
+ ce.height = c->h;
+ ce.border_width = c->bw;
+ ce.above = None;
+ ce.override_redirect = False;
+ XSendEvent(dpy, c->win, False, StructureNotifyMask, (XEvent *)&ce);
}
void configurenotify(XEvent *e) {
- Monitor *m;
- Client *c;
- XConfigureEvent *ev = &e->xconfigure;
- int dirty, i;
-
- /* TODO: updategeom handling sucks, needs to be simplified */
- if (ev->window == root) {
- dirty = (sw != ev->width || sh != ev->height);
- sw = ev->width;
- sh = ev->height;
- if (updategeom() || dirty) {
- drw_resize(drw, sw, bh);
- updatebars();
- for (m = mons; m; m = m->next) {
- for (c = m->clients; c; c = c->next)
- if (c->isfullscreen) resizeclient(c, m->mx, m->my, m->mw, m->mh);
- for (i = 0; i < 3; i++) XMoveResizeWindow(dpy, m->barwins[i], m->wx, m->by, m->ww, bh);
- }
- focus(NULL);
- arrange(NULL);
- }
- }
+ Monitor *m;
+ Client *c;
+ XConfigureEvent *ev = &e->xconfigure;
+ int dirty, i;
+
+ /* TODO: updategeom handling sucks, needs to be simplified */
+ if (ev->window == root) {
+ dirty = (sw != ev->width || sh != ev->height);
+ sw = ev->width;
+ sh = ev->height;
+ if (updategeom() || dirty) {
+ drw_resize(drw, sw, bh);
+ updatebars();
+ for (m = mons; m; m = m->next) {
+ for (c = m->clients; c; c = c->next)
+ if (c->isfullscreen) resizeclient(c, m->mx, m->my, m->mw, m->mh);
+ for (i = 0; i < 3; i++) XMoveResizeWindow(dpy, m->barwins[i], m->wx, m->by, m->ww, bh);
+ }
+ focus(NULL);
+ arrange(NULL);
+ }
+ }
}
void configurerequest(XEvent *e) {
- Client *c;
- Monitor *m;
- XConfigureRequestEvent *ev = &e->xconfigurerequest;
- XWindowChanges wc;
-
- if ((c = wintoclient(ev->window))) {
- if (ev->value_mask & CWBorderWidth)
- c->bw = ev->border_width;
- else if (c->isfloating || !selmon->lt[selmon->sellt]->arrange) {
- m = c->mon;
- if (ev->value_mask & CWX) {
- c->oldx = c->x;
- c->x = m->mx + ev->x;
- }
- if (ev->value_mask & CWY) {
- c->oldy = c->y;
- c->y = m->my + ev->y;
- }
- if (ev->value_mask & CWWidth) {
- c->oldw = c->w;
- c->w = ev->width;
- }
- if (ev->value_mask & CWHeight) {
- c->oldh = c->h;
- c->h = ev->height;
- }
- if ((c->x + c->w) > m->mx + m->mw && c->isfloating) c->x = m->mx + (m->mw / 2 - WIDTH(c) / 2); /* center in x direction */
- if ((c->y + c->h) > m->my + m->mh && c->isfloating) c->y = m->my + (m->mh / 2 - HEIGHT(c) / 2); /* center in y direction */
- if ((ev->value_mask & (CWX | CWY)) && !(ev->value_mask & (CWWidth | CWHeight))) configure(c);
- if (ISVISIBLE(c)) XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h);
- } else
- configure(c);
- } else {
- wc.x = ev->x;
- wc.y = ev->y;
- wc.width = ev->width;
- wc.height = ev->height;
- wc.border_width = ev->border_width;
- wc.sibling = ev->above;
- wc.stack_mode = ev->detail;
- XConfigureWindow(dpy, ev->window, ev->value_mask, &wc);
- }
- XSync(dpy, False);
+ Client *c;
+ Monitor *m;
+ XConfigureRequestEvent *ev = &e->xconfigurerequest;
+ XWindowChanges wc;
+
+ if ((c = wintoclient(ev->window))) {
+ if (ev->value_mask & CWBorderWidth)
+ c->bw = ev->border_width;
+ else if (c->isfloating || !selmon->lt[selmon->sellt]->arrange) {
+ m = c->mon;
+ if (ev->value_mask & CWX) {
+ c->oldx = c->x;
+ c->x = m->mx + ev->x;
+ }
+ if (ev->value_mask & CWY) {
+ c->oldy = c->y;
+ c->y = m->my + ev->y;
+ }
+ if (ev->value_mask & CWWidth) {
+ c->oldw = c->w;
+ c->w = ev->width;
+ }
+ if (ev->value_mask & CWHeight) {
+ c->oldh = c->h;
+ c->h = ev->height;
+ }
+ if ((c->x + c->w) > m->mx + m->mw && c->isfloating) c->x = m->mx + (m->mw / 2 - WIDTH(c) / 2); /* center in x direction */
+ if ((c->y + c->h) > m->my + m->mh && c->isfloating) c->y = m->my + (m->mh / 2 - HEIGHT(c) / 2); /* center in y direction */
+ if ((ev->value_mask & (CWX | CWY)) && !(ev->value_mask & (CWWidth | CWHeight))) configure(c);
+ if (ISVISIBLE(c)) XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h);
+ } else
+ configure(c);
+ } else {
+ wc.x = ev->x;
+ wc.y = ev->y;
+ wc.width = ev->width;
+ wc.height = ev->height;
+ wc.border_width = ev->border_width;
+ wc.sibling = ev->above;
+ wc.stack_mode = ev->detail;
+ XConfigureWindow(dpy, ev->window, ev->value_mask, &wc);
+ }
+ XSync(dpy, False);
}
Monitor *createmon(void) {
- Monitor *m;
- unsigned int i;
-
- m = ecalloc(1, sizeof(Monitor));
- m->tagset[0] = m->tagset[1] = 1;
- m->mfact = mfact;
- m->nmaster = nmaster;
- m->showbar = showbar;
- m->topbar = topbar;
- m->lt[0] = &layouts[0];
- m->lt[1] = &layouts[1 % LENGTH(layouts)];
- strncpy(m->ltsymbol, layouts[0].symbol, sizeof m->ltsymbol);
- m->pertag = ecalloc(1, sizeof(Pertag));
- m->pertag->curtag = 0;
- for (i = 0; i < LENGTH(tags); i++) {
- m->pertag->nmasters[i] = m->nmaster;
- m->pertag->ltidxs[i][0] = m->lt[0];
- m->pertag->ltidxs[i][1] = m->lt[1];
- m->pertag->sellts[i] = m->sellt;
- }
- return m;
+ Monitor *m;
+ unsigned int i;
+
+ m = ecalloc(1, sizeof(Monitor));
+ m->tagset[0] = m->tagset[1] = 1;
+ m->mfact = mfact;
+ m->nmaster = nmaster;
+ m->showbar = showbar;
+ m->topbar = topbar;
+ m->lt[0] = &layouts[0];
+ m->lt[1] = &layouts[1 % LENGTH(layouts)];
+ strncpy(m->ltsymbol, layouts[0].symbol, sizeof m->ltsymbol);
+ m->pertag = ecalloc(1, sizeof(Pertag));
+ m->pertag->curtag = 0;
+ for (i = 0; i < LENGTH(tags); i++) {
+ m->pertag->nmasters[i] = m->nmaster;
+ m->pertag->ltidxs[i][0] = m->lt[0];
+ m->pertag->ltidxs[i][1] = m->lt[1];
+ m->pertag->sellts[i] = m->sellt;
+ }
+ return m;
}
void destroynotify(XEvent *e) {
- Client *c;
- XDestroyWindowEvent *ev = &e->xdestroywindow;
+ Client *c;
+ XDestroyWindowEvent *ev = &e->xdestroywindow;
- if ((c = wintoclient(ev->window))) unmanage(c, 1);
+ if ((c = wintoclient(ev->window))) unmanage(c, 1);
}
void detach(Client *c) {
- Client **tc;
+ Client **tc;
- for (tc = &c->mon->clients; *tc && *tc != c; tc = &(*tc)->next);
- *tc = c->next;
+ for (tc = &c->mon->clients; *tc && *tc != c; tc = &(*tc)->next);
+ *tc = c->next;
}
void detachstack(Client *c) {
- Client **tc, *t;
+ Client **tc, *t;
- for (tc = &c->mon->stack; *tc && *tc != c; tc = &(*tc)->snext);
- *tc = c->snext;
+ for (tc = &c->mon->stack; *tc && *tc != c; tc = &(*tc)->snext);
+ *tc = c->snext;
- if (c == c->mon->sel) {
- for (t = c->mon->stack; t && !ISVISIBLE(t); t = t->snext);
- c->mon->sel = t;
- }
+ if (c == c->mon->sel) {
+ for (t = c->mon->stack; t && !ISVISIBLE(t); t = t->snext);
+ c->mon->sel = t;
+ }
}
Monitor *dirtomon(int dir) {
- Monitor *m = NULL;
+ Monitor *m = NULL;
- if (dir > 0) {
- if (!(m = selmon->next)) m = mons;
- } else if (selmon == mons)
- for (m = mons; m->next; m = m->next);
- else
- for (m = mons; m->next != selmon; m = m->next);
- return m;
+ if (dir > 0) {
+ if (!(m = selmon->next)) m = mons;
+ } else if (selmon == mons)
+ for (m = mons; m->next; m = m->next);
+ else
+ for (m = mons; m->next != selmon; m = m->next);
+ return m;
}
void drawbar(Monitor *m) {
- int x, w, tw = 0, s = 0, v;
- int boxs = drw->fonts->h / 9;
- int boxw = drw->fonts->h / 6 + 2;
- int margin = drw->fonts->h * 8;
- unsigned int i, occ = 0, urg = 0;
- Client *c;
-
- if (!m->barwins[0] || !m->barwins[1] || !m->barwins[2] || !m->showbar) return;
-
- /* draw status first so it can be overdrawn by tags later */
- if (m == selmon) { /* status is only drawn on selected monitor */
- drw_setscheme(drw, scheme[SchemeNorm]);
- tw = TEXTW(stext) - lrpad + 2; /* 2px right padding */
- drw_text(drw, m->ww - tw, 0, tw, bh, 0, stext, 0);
- XMoveResizeWindow(dpy, m->barwins[2], m->wx + m->ww - tw, m->by, tw, bh);
- drw_map(drw, m->barwins[2], m->ww - tw, 0, m->ww, bh);
- }
-
- for (c = m->clients; c; c = c->next) {
- occ |= c->tags;
- if (c->isurgent) urg |= c->tags;
- }
- x = 0;
- for (i = 0; i < LENGTH(tags); i++) {
- w = TEXTW(tags[i]);
- drw_setscheme(drw, scheme[m->tagset[m->seltags] & 1 << i ? SchemeSel : SchemeNorm]);
- drw_text(drw, x, 0, w, bh, lrpad / 2, tags[i], urg & 1 << i);
- x += w;
- }
- w = TEXTW(m->ltsymbol);
- drw_setscheme(drw, scheme[SchemeNorm]);
- x = m->pvx = drw_text(drw, x, 0, w, bh, lrpad / 2, m->ltsymbol, 0);
- XMoveResizeWindow(dpy, m->barwins[0], m->wx, m->by, x, bh);
- drw_map(drw, m->barwins[0], 0, 0, x, bh);
-
- s = TEXTW(m->sel->name);
- if ((w = m->ww - tw - x - margin) > bh) {
- if (m->sel) {
- drw_setscheme(drw, scheme[SchemeNorm]);
- v = m->sel->icon ? m->sel->icw + iconspacing : 0;
- s = m->pvs = drw_text(drw, x, 0, MIN(s + v, w), bh, lrpad / 2 + v, m->sel->name, 0) - x;
- if (m->sel->icon) drw_pic(drw, x + lrpad / 2, (bh - m->sel->ich) / 2, m->sel->icw, m->sel->ich, m->sel->icon);
- if (m->sel->isfloating) drw_rect(drw, x + boxs, boxs, boxw, boxw, m->sel->isfixed, 0);
- XMoveResizeWindow(dpy, m->barwins[1], m->wx + (m->ww - tw + x - s) / 2, m->by, s, bh);
- drw_map(drw, m->barwins[1], x, 0, w, bh);
- } else {
- drw_text(drw, x, 0, w, bh, lrpad / 2, "", 0);
- drw_map(drw, m->barwins[1], x, 0, w, bh);
- XMoveResizeWindow(dpy, m->barwins[1], m->wx + (m->ww - tw + x - bh) / 2, m->by, bh, bh);
- }
- }
+ int x, w, tw = 0, s = 0, n = 0;
+ int margin = drw->fonts->h * 8;
+ unsigned int i, occ = 0, urg = 0;
+ Client *c;
+
+ if (!m->barwins[0] || !m->barwins[1] || !m->barwins[2] || !m->showbar) return;
+
+ /* draw status first so it can be overdrawn by tags later */
+ if (m == selmon) { /* status is only drawn on selected monitor */
+ tw = m->ww - drawstatusbar(m);
+ XMoveResizeWindow(dpy, m->barwins[2], m->wx + m->ww - tw, m->by, tw, bh);
+ drw_map(drw, m->barwins[2], m->ww - tw, 0, m->ww, bh);
+ }
+
+ for (c = m->clients; c; c = c->next) {
+ occ |= c->isglobal || c->tags == TAGMASK ? 0 : c->tags;
+ if (c->isurgent) urg |= c->tags;
+ if (ISVISIBLE(c)) ++n;
+ }
+ x = 0;
+ for (i = 0; i < LENGTH(tags); i++) {
+ w = TEXTW(tags[i]);
+ drw_setscheme(drw, scheme[occ & 1 << i ? schemetags[i] : SchemeTag]);
+ drw_text(drw, x, 0, w, bh, lrpad / 2, tags[i], urg & 1 << i);
+ if (m->tagset[m->seltags] & 1 << i) drw_rect(drw, x + ulpad, bh - ulstroke, w - 2 * ulpad, ulstroke, 1, 0);
+ x += w;
+ }
+ w = TEXTW(m->ltsymbol);
+ drw_setscheme(drw, scheme[SchemeLayout]);
+ x = m->pvx = drw_text(drw, x, 0, w, bh, lrpad / 2, m->ltsymbol, 0);
+ XMoveResizeWindow(dpy, m->barwins[0], m->wx, m->by, x, bh);
+ drw_map(drw, m->barwins[0], 0, 0, x, bh);
+
+ s = lrpad / 2;
+ if ((w = m->ww - tw - x - margin) > bh) {
+ drw_setscheme(drw, scheme[SchemeNorm]);
+ drw_text(drw, x, 0, w, bh, lrpad / 2, "", 0);
+ if (n > 0) {
+ if (m == selmon) drw_setscheme(drw, scheme[SchemeTitle]);
+ for (c = m->clients; c; c = c->next) {
+ if (!ISVISIBLE(c)) continue;
+ if (c->icon) drw_pic(drw, x + s, (bh - c->ich) / 2, c->icw, c->ich, c->icon);
+ if (m->sel == c) drw_rect(drw, x + s, bh - ulstroke, c->icw, ulstroke, 1, 0);
+ s += c->icon ? c->icw + iconspacing : 0;
+ }
+ s = m->pvs = s - iconspacing + lrpad / 2;
+ XMoveResizeWindow(dpy, m->barwins[1], m->wx + (m->ww - tw + x - s) / 2, m->by, s, bh);
+ drw_map(drw, m->barwins[1], x, 0, w, bh);
+ } else {
+ s = m->pvs ? m->pvs : lrpad + iconspacing;
+ XMoveResizeWindow(dpy, m->barwins[1], m->wx + (m->ww - tw + x - s) / 2, -2 * bh, s, bh);
+ }
+ }
}
void drawbars(void) {
- Monitor *m;
-
- for (m = mons; m; m = m->next) drawbar(m);
+ Monitor *m;
+
+ for (m = mons; m; m = m->next) drawbar(m);
+}
+
+int drawstatusbar(Monitor *m) {
+ int i, w, x, n, len, ret;
+ int rx, ry, rw, rh;
+ int y = 5, v = 10; /* 5px padding on top and bottom */
+ short isc = 0;
+ char *text, *p, buf[8];
+
+ len = strlen(stext) + 1;
+ text = ecalloc(len, sizeof(char));
+ p = text;
+ memcpy(text, stext, len);
+
+ for (i = w = 0; text[i]; i++) {
+ if (text[i] == '&')
+ text[i] = ' ';
+ if (text[i] == '^') {
+ if (!isc) {
+ isc = 1;
+ text[i] = '\0';
+ w += TEXTW(text) - lrpad;
+ text[i] = '^';
+ if (text[++i] == 'f') w += atoi(text + ++i);
+ } else {
+ isc = 0;
+ text = text + i + 1;
+ i = -1;
+ }
+ }
+ }
+
+ if (!isc)
+ w += TEXTW(text) - lrpad;
+ else
+ isc = 0;
+ text = p;
+ w += 2; /* 1px padding on both sides */
+ ret = x = m->ww - w;
+
+ drw_setscheme(drw, scheme[LENGTH(colors)]);
+ drw->scheme[ColFg] = scheme[SchemeNorm][ColFg];
+ drw->scheme[ColBg] = scheme[SchemeNorm][ColBg];
+ drw_rect(drw, x++, 0, w, bh, 1, 1);
+
+ for (i = 0; text[i]; i++) {
+ if (text[i] == '^' && !isc) {
+ isc = 1;
+ text[i] = '\0';
+ w = TEXTW(text) - lrpad;
+ drw_text(drw, x, y, w, bh - v, 0, text, 0);
+ x += w;
+
+ /* process code part */
+ while (text[++i] != '^') {
+ if (text[i] == 'c' || text[i] == 'b') {
+ memcpy(buf, text + i + 1, 7);
+ buf[7] = '\0';
+ drw_clr_create(drw, &drw->scheme[text[i] == 'c' ? ColFg : ColBg], buf);
+ i += 7;
+ } else if (text[i] == 'd') {
+ drw->scheme[ColFg] = scheme[SchemeNorm][ColFg];
+ drw->scheme[ColBg] = scheme[SchemeNorm][ColBg];
+ } else if (text[i] == 'r') {
+ sscanf(text + i, "r%d,%d,%d,%d%n", &rx, &ry, &rw, &rh, &n);
+ drw_rect(drw, x + rx, y + ry, rw, MIN(rh, bh - v), 1, 0);
+ i += n - 1;
+ } else if (text[i] == 'f') {
+ sscanf(text + i, "f%d%n", &rx, &n);
+ x += rx;
+ i += n - 1;
+ }
+ }
+
+ text = text + i + 1;
+ i = -1;
+ isc = 0;
+ }
+ }
+
+ if (!isc) {
+ w = TEXTW(text) - lrpad;
+ drw_text(drw, x, 0, w, bh, 0, text, 0);
+ }
+
+ drw_setscheme(drw, scheme[SchemeNorm]);
+ free(p);
+ return ret;
}
void enternotify(XEvent *e) {
- Client *c;
- Monitor *m;
- XCrossingEvent *ev = &e->xcrossing;
+ Client *c;
+ Monitor *m;
+ XCrossingEvent *ev = &e->xcrossing;
- if ((ev->mode != NotifyNormal || ev->detail == NotifyInferior) && ev->window != root) return;
- c = wintoclient(ev->window);
- m = c ? c->mon : wintomon(ev->window);
- if (m != selmon) {
- unfocus(selmon->sel, 1);
- selmon = m;
- } else if (!c || c == selmon->sel)
- return;
- focus(c);
+ if ((ev->mode != NotifyNormal || ev->detail == NotifyInferior) && ev->window != root) return;
+ c = wintoclient(ev->window);
+ m = c ? c->mon : wintomon(ev->window);
+ if (m != selmon) {
+ unfocus(selmon->sel, 1);
+ selmon = m;
+ } else if (!c || c == selmon->sel)
+ return;
+ focus(c);
}
void expose(XEvent *e) {
- Monitor *m;
- XExposeEvent *ev = &e->xexpose;
+ Monitor *m;
+ XExposeEvent *ev = &e->xexpose;
- if (ev->count == 0 && (m = wintomon(ev->window))) drawbar(m);
+ if (ev->count == 0 && (m = wintomon(ev->window))) drawbar(m);
}
void focus(Client *c) {
- if (!c || !ISVISIBLE(c))
- for (c = selmon->stack; c && !ISVISIBLE(c); c = c->snext);
- if (selmon->sel && selmon->sel != c) unfocus(selmon->sel, 0);
- if (c) {
- if (c->mon != selmon) selmon = c->mon;
- if (c->isurgent) seturgent(c, 0);
- detachstack(c);
- attachstack(c);
- grabbuttons(c, 1);
- XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColBorder].pixel);
- setfocus(c);
- } else {
- XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
- XDeleteProperty(dpy, root, netatom[NetActiveWindow]);
- }
- selmon->sel = c;
- drawbars();
+ if (!c || !ISVISIBLE(c))
+ for (c = selmon->stack; c && !ISVISIBLE(c); c = c->snext);
+ if (selmon->sel && selmon->sel != c) unfocus(selmon->sel, 0);
+ if (c) {
+ if (c->mon != selmon) selmon = c->mon;
+ if (c->isurgent) seturgent(c, 0);
+ detachstack(c);
+ attachstack(c);
+ grabbuttons(c, 1);
+ XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColBorder].pixel);
+ setfocus(c);
+ } else {
+ XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
+ XDeleteProperty(dpy, root, netatom[NetActiveWindow]);
+ }
+ selmon->sel = c;
+ drawbars();
}
/* there are some broken focus acquiring clients needing extra handling */
void focusin(XEvent *e) {
- XFocusChangeEvent *ev = &e->xfocus;
+ XFocusChangeEvent *ev = &e->xfocus;
- if (selmon->sel && ev->window != selmon->sel->win) setfocus(selmon->sel);
+ if (selmon->sel && ev->window != selmon->sel->win) setfocus(selmon->sel);
}
void focusmon(const Arg *arg) {
- Monitor *m;
+ Monitor *m;
- if (!mons->next) return;
- if ((m = dirtomon(arg->i)) == selmon) return;
- unfocus(selmon->sel, 0);
- selmon = m;
- focus(NULL);
+ if (!mons->next) return;
+ if ((m = dirtomon(arg->i)) == selmon) return;
+ unfocus(selmon->sel, 0);
+ selmon = m;
+ focus(NULL);
}
void focusstack(const Arg *arg) {
- Client *c = NULL, *i;
-
- if (!selmon->sel || (selmon->sel->isfullscreen && lockfullscreen)) return;
- if (arg->i > 0) {
- for (c = selmon->sel->next; c && !ISVISIBLE(c); c = c->next);
- if (!c)
- for (c = selmon->clients; c && !ISVISIBLE(c); c = c->next);
- } else {
- for (i = selmon->clients; i != selmon->sel; i = i->next)
- if (ISVISIBLE(i)) c = i;
- if (!c)
- for (; i; i = i->next)
- if (ISVISIBLE(i)) c = i;
- }
- if (c) {
- focus(c);
- restack(selmon);
- }
+ Client *c = NULL, *i;
+
+ if (!selmon->sel || (selmon->sel->isfullscreen && lockfullscreen)) return;
+ if (arg->i > 0) {
+ for (c = selmon->sel->next; c && !ISVISIBLE(c); c = c->next);
+ if (!c)
+ for (c = selmon->clients; c && !ISVISIBLE(c); c = c->next);
+ } else {
+ for (i = selmon->clients; i != selmon->sel; i = i->next)
+ if (ISVISIBLE(i)) c = i;
+ if (!c)
+ for (; i; i = i->next)
+ if (ISVISIBLE(i)) c = i;
+ }
+ if (c) {
+ focus(c);
+ restack(selmon);
+ }
}
Atom getatomprop(Client *c, Atom prop) {
- int di;
- unsigned long dl;
- unsigned char *p = NULL;
- Atom da, atom = None;
+ int di;
+ unsigned long dl;
+ unsigned char *p = NULL;
+ Atom da, atom = None;
- if (XGetWindowProperty(dpy, c->win, prop, 0L, sizeof atom, False, XA_ATOM, &da, &di, &dl, &dl, &p) == Success && p) {
- atom = *(Atom *)p;
- XFree(p);
- }
- return atom;
+ if (XGetWindowProperty(dpy, c->win, prop, 0L, sizeof atom, False, XA_ATOM, &da, &di, &dl, &dl, &p) == Success && p) {
+ atom = *(Atom *)p;
+ XFree(p);
+ }
+ return atom;
}
Picture geticonprop(Window win, unsigned int *picw, unsigned int *pich) {
- Atom real;
- int format;
- unsigned long n, extra, *p = NULL;
- if (XGetWindowProperty(dpy, win, netatom[NetWMIcon], 0L, LONG_MAX, False, AnyPropertyType, &real, &format, &n, &extra, (unsigned char **)&p) != Success || !n || format != 32) {
- XFree(p);
- return None;
- }
-
- unsigned long *bstp = NULL;
- uint32_t bstd = UINT32_MAX, w, h, sz;
- for (unsigned long *i = p, *end = p + n; i < end - 1; i += sz) {
- if (((w = *i++) >= 16384) || ((h = *i++) >= 16384) || (sz = w * h) > end - i) break;
- uint32_t diff = abs((int)MAX(w, h) - iconsize);
- if (diff < bstd) {
- bstd = diff;
- bstp = i;
- }
- }
- if (!bstp || !(w = bstp[-2]) || !(h = bstp[-1])) {
- XFree(p);
- return None;
- }
-
- *picw = w <= h ? MAX(w * iconsize / h, 1) : iconsize;
- *pich = w <= h ? iconsize : MAX(h * iconsize / w, 1);
- uint32_t i, a, *bstp32 = (uint32_t *)bstp;
- for (sz = w * h, i = 0, a = bstp[i]; i < sz; a = bstp[++i])
- bstp32[i] = ((((a >> 24u) * (a & 0xFF00FFu)) >> 8u) & 0xFF00FFu) | ((((a >> 24u) * (a & 0x00FF00u)) >> 8u) & 0x00FF00u) | (a & 0xFF000000);
-
- Picture ret = drw_picture_create_resized(drw, (char *)bstp, w, h, *picw, *pich);
- XFree(p);
- return ret;
+ Atom real;
+ int format;
+ unsigned long n, extra, *p = NULL;
+ if (XGetWindowProperty(dpy, win, netatom[NetWMIcon], 0L, LONG_MAX, False, AnyPropertyType, &real, &format, &n, &extra, (unsigned char **)&p) != Success || !n || format != 32) {
+ XFree(p);
+ return None;
+ }
+
+ unsigned long *bstp = NULL;
+ uint32_t bstd = UINT32_MAX, w, h, sz;
+ for (unsigned long *i = p, *end = p + n; i < end - 1; i += sz) {
+ if (((w = *i++) >= 16384) || ((h = *i++) >= 16384) || (sz = w * h) > end - i) break;
+ uint32_t diff = abs((int)MAX(w, h) - iconsize);
+ if (diff < bstd) {
+ bstd = diff;
+ bstp = i;
+ }
+ }
+ if (!bstp || !(w = bstp[-2]) || !(h = bstp[-1])) {
+ XFree(p);
+ return None;
+ }
+
+ *picw = w <= h ? MAX(w * iconsize / h, 1) : iconsize;
+ *pich = w <= h ? iconsize : MAX(h * iconsize / w, 1);
+ uint32_t i, a, *bstp32 = (uint32_t *)bstp;
+ for (sz = w * h, i = 0, a = bstp[i]; i < sz; a = bstp[++i])
+ bstp32[i] = ((((a >> 24u) * (a & 0xFF00FFu)) >> 8u) & 0xFF00FFu) | ((((a >> 24u) * (a & 0x00FF00u)) >> 8u) & 0x00FF00u) | (a & 0xFF000000);
+
+ Picture ret = drw_picture_create_resized(drw, (char *)bstp, w, h, *picw, *pich);
+ XFree(p);
+ return ret;
}
int getrootptr(int *x, int *y) {
- int di;
- unsigned int dui;
- Window dummy;
+ int di;
+ unsigned int dui;
+ Window dummy;
- return XQueryPointer(dpy, root, &dummy, &dummy, x, y, &di, &di, &dui);
+ return XQueryPointer(dpy, root, &dummy, &dummy, x, y, &di, &di, &dui);
}
long getstate(Window w) {
- int format;
- long result = -1;
- unsigned char *p = NULL;
- unsigned long n, extra;
- Atom real;
+ int format;
+ long result = -1;
+ unsigned char *p = NULL;
+ unsigned long n, extra;
+ Atom real;
- if (XGetWindowProperty(dpy, w, wmatom[WMState], 0L, 2L, False, wmatom[WMState], &real, &format, &n, &extra, (unsigned char **)&p) != Success) return -1;
- if (n != 0) result = *p;
- XFree(p);
- return result;
+ if (XGetWindowProperty(dpy, w, wmatom[WMState], 0L, 2L, False, wmatom[WMState], &real, &format, &n, &extra, (unsigned char **)&p) != Success) return -1;
+ if (n != 0) result = *p;
+ XFree(p);
+ return result;
}
int gettextprop(Window w, Atom atom, char *text, unsigned int size) {
- char **list = NULL;
- int n;
- XTextProperty name;
-
- if (!text || size == 0) return 0;
- text[0] = '\0';
- if (!XGetTextProperty(dpy, w, &name, atom) || !name.nitems) return 0;
- if (name.encoding == XA_STRING) {
- strncpy(text, (char *)name.value, size - 1);
- } else if (XmbTextPropertyToTextList(dpy, &name, &list, &n) >= Success && n > 0 && *list) {
- strncpy(text, *list, size - 1);
- XFreeStringList(list);
- }
- text[size - 1] = '\0';
- XFree(name.value);
- return 1;
+ char **list = NULL;
+ int n;
+ XTextProperty name;
+
+ if (!text || size == 0) return 0;
+ text[0] = '\0';
+ if (!XGetTextProperty(dpy, w, &name, atom) || !name.nitems) return 0;
+ if (name.encoding == XA_STRING) {
+ strncpy(text, (char *)name.value, size - 1);
+ } else if (XmbTextPropertyToTextList(dpy, &name, &list, &n) >= Success && n > 0 && *list) {
+ strncpy(text, *list, size - 1);
+ XFreeStringList(list);
+ }
+ text[size - 1] = '\0';
+ XFree(name.value);
+ return 1;
}
void grabbuttons(Client *c, int focused) {
- updatenumlockmask();
- {
- unsigned int i, j;
- unsigned int modifiers[] = {0, LockMask, numlockmask, numlockmask | LockMask};
- XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
- if (!focused) XGrabButton(dpy, AnyButton, AnyModifier, c->win, False, BUTTONMASK, GrabModeSync, GrabModeSync, None, None);
- for (i = 0; i < LENGTH(buttons); i++)
- if (buttons[i].click == ClkClientWin)
- for (j = 0; j < LENGTH(modifiers); j++)
- XGrabButton(dpy, buttons[i].button, buttons[i].mask | modifiers[j], c->win, False, BUTTONMASK, GrabModeAsync, GrabModeSync, None, None);
- }
+ updatenumlockmask();
+ {
+ unsigned int i, j;
+ unsigned int modifiers[] = {0, LockMask, numlockmask, numlockmask | LockMask};
+ XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
+ if (!focused) XGrabButton(dpy, AnyButton, AnyModifier, c->win, False, BUTTONMASK, GrabModeSync, GrabModeSync, None, None);
+ for (i = 0; i < LENGTH(buttons); i++)
+ if (buttons[i].click == ClkClientWin)
+ for (j = 0; j < LENGTH(modifiers); j++)
+ XGrabButton(dpy, buttons[i].button, buttons[i].mask | modifiers[j], c->win, False, BUTTONMASK, GrabModeAsync, GrabModeSync, None, None);
+ }
}
void grabkeys(void) {
- updatenumlockmask();
- {
- unsigned int i, j, k;
- unsigned int modifiers[] = {0, LockMask, numlockmask, numlockmask | LockMask};
- int start, end, skip;
- KeySym *syms;
-
- XUngrabKey(dpy, AnyKey, AnyModifier, root);
- XDisplayKeycodes(dpy, &start, &end);
- syms = XGetKeyboardMapping(dpy, start, end - start + 1, &skip);
- if (!syms) return;
- for (k = start; k <= end; k++)
- for (i = 0; i < LENGTH(keys); i++) /* skip modifier codes, we do that ourselves */
- if (keys[i].keysym == syms[(k - start) * skip])
- for (j = 0; j < LENGTH(modifiers); j++) XGrabKey(dpy, k, keys[i].mod | modifiers[j], root, True, GrabModeAsync, GrabModeAsync);
- XFree(syms);
- }
+ updatenumlockmask();
+ {
+ unsigned int i, j, k;
+ unsigned int modifiers[] = {0, LockMask, numlockmask, numlockmask | LockMask};
+ int start, end, skip;
+ KeySym *syms;
+
+ XUngrabKey(dpy, AnyKey, AnyModifier, root);
+ XDisplayKeycodes(dpy, &start, &end);
+ syms = XGetKeyboardMapping(dpy, start, end - start + 1, &skip);
+ if (!syms) return;
+ for (k = start; k <= end; k++)
+ for (i = 0; i < LENGTH(keys); i++) /* skip modifier codes, we do that ourselves */
+ if (keys[i].keysym == syms[(k - start) * skip])
+ for (j = 0; j < LENGTH(modifiers); j++) XGrabKey(dpy, k, keys[i].mod | modifiers[j], root, True, GrabModeAsync, GrabModeAsync);
+ XFree(syms);
+ }
}
void incnmaster(const Arg *arg) {
- int n, a;
- Client *c;
- for (n = 0, c = nexttiled(selmon->clients); c; c = nexttiled(c->next), n++);
- a = MAX(MIN(selmon->nmaster + arg->i, n), 1);
- selmon->nmaster = selmon->pertag->nmasters[selmon->pertag->curtag] = n ? a : 1;
+ int n, a;
+ Client *c;
+ for (n = 0, c = nexttiled(selmon->clients); c; c = nexttiled(c->next), n++);
+ a = MAX(MIN(selmon->nmaster + arg->i, n), 1);
+ selmon->nmaster = selmon->pertag->nmasters[selmon->pertag->curtag] = n ? a : 1;
}
#ifdef XINERAMA
static int isuniquegeom(XineramaScreenInfo *unique, size_t n, XineramaScreenInfo *info) {
- while (n--)
- if (unique[n].x_org == info->x_org && unique[n].y_org == info->y_org && unique[n].width == info->width && unique[n].height == info->height) return 0;
- return 1;
+ while (n--)
+ if (unique[n].x_org == info->x_org && unique[n].y_org == info->y_org && unique[n].width == info->width && unique[n].height == info->height) return 0;
+ return 1;
}
#endif /* XINERAMA */
void keypress(XEvent *e) {
- unsigned int i;
- KeySym keysym;
- XKeyEvent *ev;
+ unsigned int i;
+ KeySym keysym;
+ XKeyEvent *ev;
- ev = &e->xkey;
- keysym = XLookupKeysym(ev, 0);
- for (i = 0; i < LENGTH(keys); i++)
- if (keysym == keys[i].keysym && CLEANMASK(keys[i].mod) == CLEANMASK(ev->state) && keys[i].func) keys[i].func(&(keys[i].arg));
+ ev = &e->xkey;
+ keysym = XLookupKeysym(ev, 0);
+ for (i = 0; i < LENGTH(keys); i++)
+ if (keysym == keys[i].keysym && CLEANMASK(keys[i].mod) == CLEANMASK(ev->state) && keys[i].func) keys[i].func(&(keys[i].arg));
}
void killclient(const Arg *arg) {
- if (!selmon->sel) return;
- if (!sendevent(selmon->sel, wmatom[WMDelete])) {
- XGrabServer(dpy);
- XSetErrorHandler(xerrordummy);
- XSetCloseDownMode(dpy, DestroyAll);
- XKillClient(dpy, selmon->sel->win);
- XSync(dpy, False);
- XSetErrorHandler(xerror);
- XUngrabServer(dpy);
- }
+ if (!selmon->sel) return;
+ if (!sendevent(selmon->sel, wmatom[WMDelete])) {
+ XGrabServer(dpy);
+ XSetErrorHandler(xerrordummy);
+ XSetCloseDownMode(dpy, DestroyAll);
+ XKillClient(dpy, selmon->sel->win);
+ XSync(dpy, False);
+ XSetErrorHandler(xerror);
+ XUngrabServer(dpy);
+ }
}
void manage(Window w, XWindowAttributes *wa) {
- Client *c, *t = NULL;
- Window trans = None;
- XWindowChanges wc;
-
- c = ecalloc(1, sizeof(Client));
- c->win = w;
- /* geometry */
- c->x = c->oldx = wa->x;
- c->y = c->oldy = wa->y;
- c->w = c->oldw = wa->width;
- c->h = c->oldh = wa->height;
- c->oldbw = wa->border_width;
-
- updateicon(c);
- updatetitle(c);
- if (XGetTransientForHint(dpy, w, &trans) && (t = wintoclient(trans))) {
- c->mon = t->mon;
- c->tags = t->tags;
- } else {
- c->mon = selmon;
- applyrules(c);
- }
-
- if (unmanaged) {
- XMapWindow(dpy, c->win);
- switch (unmanaged) {
- case 1:
- XRaiseWindow(dpy, c->win);
- break;
- case 2:
- XLowerWindow(dpy, c->win);
- break;
- }
- updatewmhints(c);
- if (!c->neverfocus) XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime);
- sendevent(c, wmatom[WMTakeFocus]);
- free(c);
- unmanaged = 0;
- return;
- }
-
- if (c->x + WIDTH(c) > c->mon->wx + c->mon->ww) c->x = c->mon->wx + c->mon->ww - WIDTH(c);
- if (c->y + HEIGHT(c) > c->mon->wy + c->mon->wh) c->y = c->mon->wy + c->mon->wh - HEIGHT(c);
- c->x = MAX(c->x, c->mon->wx);
- c->y = MAX(c->y, c->mon->wy);
- c->bw = borderpx;
-
- wc.border_width = c->bw;
- XConfigureWindow(dpy, w, CWBorderWidth, &wc);
- XSetWindowBorder(dpy, w, scheme[SchemeNorm][ColBorder].pixel);
- configure(c); /* propagates border_width, if size doesn't change */
- updatewindowtype(c);
- updatesizehints(c);
- updatewmhints(c);
- XSelectInput(dpy, w, EnterWindowMask | FocusChangeMask | PropertyChangeMask | StructureNotifyMask);
- grabbuttons(c, 0);
- if (!c->isfloating) c->isfloating = c->oldstate = trans != None || c->isfixed;
- if (c->isfloating) XRaiseWindow(dpy, c->win);
- attach(c);
- attachstack(c);
- XChangeProperty(dpy, root, netatom[NetClientList], XA_WINDOW, 32, PropModeAppend, (unsigned char *)&(c->win), 1);
- XMoveResizeWindow(dpy, c->win, c->x + 2 * sw, c->y, c->w, c->h); /* some windows require this */
- setclientstate(c, NormalState);
- if (c->mon == selmon) unfocus(selmon->sel, 0);
- c->mon->sel = c;
- arrange(c->mon);
- XMapWindow(dpy, c->win);
- focus(NULL);
+ Client *c, *t = NULL;
+ Window trans = None;
+ XWindowChanges wc;
+
+ c = ecalloc(1, sizeof(Client));
+ c->win = w;
+ /* geometry */
+ c->x = c->oldx = wa->x;
+ c->y = c->oldy = wa->y;
+ c->w = c->oldw = wa->width;
+ c->h = c->oldh = wa->height;
+ c->oldbw = wa->border_width;
+
+ updateicon(c);
+ updatetitle(c);
+ if (XGetTransientForHint(dpy, w, &trans) && (t = wintoclient(trans))) {
+ c->mon = t->mon;
+ c->tags = t->tags;
+ } else {
+ c->mon = selmon;
+ applyrules(c);
+ }
+
+ if (unmanaged) {
+ XMapWindow(dpy, c->win);
+ switch (unmanaged) {
+ case 1:
+ XRaiseWindow(dpy, c->win);
+ break;
+ case 2:
+ XLowerWindow(dpy, c->win);
+ break;
+ }
+ updatewmhints(c);
+ if (!c->neverfocus) XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime);
+ sendevent(c, wmatom[WMTakeFocus]);
+ free(c);
+ unmanaged = 0;
+ return;
+ }
+
+ if (c->x + WIDTH(c) > c->mon->wx + c->mon->ww) c->x = c->mon->wx + c->mon->ww - WIDTH(c);
+ if (c->y + HEIGHT(c) > c->mon->wy + c->mon->wh) c->y = c->mon->wy + c->mon->wh - HEIGHT(c);
+ c->x = MAX(c->x, c->mon->wx);
+ c->y = MAX(c->y, c->mon->wy);
+ c->bw = borderpx;
+
+ wc.border_width = c->bw;
+ XConfigureWindow(dpy, w, CWBorderWidth, &wc);
+ XSetWindowBorder(dpy, w, scheme[SchemeNorm][ColBorder].pixel);
+ configure(c); /* propagates border_width, if size doesn't change */
+ updatewindowtype(c);
+ updatesizehints(c);
+ updatewmhints(c);
+ XSelectInput(dpy, w, EnterWindowMask | FocusChangeMask | PropertyChangeMask | StructureNotifyMask);
+ grabbuttons(c, 0);
+ if (!c->isfloating) c->isfloating = c->oldstate = trans != None || c->isfixed;
+ if (c->isfloating) XRaiseWindow(dpy, c->win);
+ attach(c);
+ attachstack(c);
+ XChangeProperty(dpy, root, netatom[NetClientList], XA_WINDOW, 32, PropModeAppend, (unsigned char *)&(c->win), 1);
+ XMoveResizeWindow(dpy, c->win, c->x + 2 * sw, c->y, c->w, c->h); /* some windows require this */
+ setclientstate(c, NormalState);
+ if (c->mon == selmon) unfocus(selmon->sel, 0);
+ c->mon->sel = c;
+ arrange(c->mon);
+ XMapWindow(dpy, c->win);
+ focus(NULL);
}
void mappingnotify(XEvent *e) {
- XMappingEvent *ev = &e->xmapping;
+ XMappingEvent *ev = &e->xmapping;
- XRefreshKeyboardMapping(ev);
- if (ev->request == MappingKeyboard) grabkeys();
+ XRefreshKeyboardMapping(ev);
+ if (ev->request == MappingKeyboard) grabkeys();
}
void maprequest(XEvent *e) {
- static XWindowAttributes wa;
- XMapRequestEvent *ev = &e->xmaprequest;
+ static XWindowAttributes wa;
+ XMapRequestEvent *ev = &e->xmaprequest;
- if (!XGetWindowAttributes(dpy, ev->window, &wa) || wa.override_redirect) return;
- if (!wintoclient(ev->window)) manage(ev->window, &wa);
+ if (!XGetWindowAttributes(dpy, ev->window, &wa) || wa.override_redirect) return;
+ if (!wintoclient(ev->window)) manage(ev->window, &wa);
}
void monocle(Monitor *m) {
- unsigned int n = 0;
- Client *c;
+ unsigned int n = 0;
+ Client *c;
- for (c = m->clients; c; c = c->next)
- if (ISVISIBLE(c)) n++;
- if (n > 0) /* override layout symbol */
- strcpy(m->ltsymbol, monsyms[MIN(n, 10)]);
- for (c = nexttiled(m->clients); c; c = nexttiled(c->next)) resize(c, m->wx, m->wy, m->ww - 2 * c->bw, m->wh - 2 * c->bw, 0);
+ for (c = m->clients; c; c = c->next)
+ if (ISVISIBLE(c)) n++;
+ if (n > 0) /* override layout symbol */
+ strcpy(m->ltsymbol, monsyms[MIN(n, 10)]);
+ for (c = nexttiled(m->clients); c; c = nexttiled(c->next)) resize(c, m->wx, m->wy, m->ww - 2 * c->bw, m->wh - 2 * c->bw, 0);
}
void motionnotify(XEvent *e) {
- static Monitor *mon = NULL;
- Monitor *m;
- XMotionEvent *ev = &e->xmotion;
+ static Monitor *mon = NULL;
+ Monitor *m;
+ XMotionEvent *ev = &e->xmotion;
- if (ev->window != root) return;
- if ((m = recttomon(ev->x_root, ev->y_root, 1, 1)) != mon && mon) {
- unfocus(selmon->sel, 1);
- selmon = m;
- focus(NULL);
- }
- mon = m;
+ if (ev->window != root) return;
+ if ((m = recttomon(ev->x_root, ev->y_root, 1, 1)) != mon && mon) {
+ unfocus(selmon->sel, 1);
+ selmon = m;
+ focus(NULL);
+ }
+ mon = m;
}
void movemouse(const Arg *arg) {
- int x, y, ocx, ocy, nx, ny;
- Client *c;
- Monitor *m;
- XEvent ev;
- Time lasttime = 0;
-
- if (!(c = selmon->sel)) return;
- if (c->isfullscreen) /* no support moving fullscreen windows by mouse */
- return;
- restack(selmon);
- ocx = c->x;
- ocy = c->y;
- if (XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync, None, cursor[CurMove]->cursor, CurrentTime) != GrabSuccess) return;
- if (!getrootptr(&x, &y)) return;
- do {
- XMaskEvent(dpy, MOUSEMASK | ExposureMask | SubstructureRedirectMask, &ev);
- switch (ev.type) {
- case ConfigureRequest:
- case Expose:
- case MapRequest:
- handler[ev.type](&ev);
- break;
- case MotionNotify:
- if ((ev.xmotion.time - lasttime) <= (1000 / 60)) continue;
- lasttime = ev.xmotion.time;
-
- nx = ocx + (ev.xmotion.x - x);
- ny = ocy + (ev.xmotion.y - y);
- if (abs(selmon->wx - nx) < snap)
- nx = selmon->wx;
- else if (abs((selmon->wx + selmon->ww) - (nx + WIDTH(c))) < snap)
- nx = selmon->wx + selmon->ww - WIDTH(c);
- if (abs(selmon->wy - ny) < snap)
- ny = selmon->wy;
- else if (abs((selmon->wy + selmon->wh) - (ny + HEIGHT(c))) < snap)
- ny = selmon->wy + selmon->wh - HEIGHT(c);
- if (!c->isfloating && selmon->lt[selmon->sellt]->arrange && (abs(nx - c->x) > snap || abs(ny - c->y) > snap)) togglefloating(NULL);
- if (!selmon->lt[selmon->sellt]->arrange || c->isfloating) resize(c, nx, ny, c->w, c->h, 1);
- break;
- }
- } while (ev.type != ButtonRelease);
- XUngrabPointer(dpy, CurrentTime);
- if ((m = recttomon(c->x, c->y, c->w, c->h)) != selmon) {
- sendmon(c, m);
- selmon = m;
- focus(NULL);
- }
+ int x, y, ocx, ocy, nx, ny;
+ Client *c;
+ Monitor *m;
+ XEvent ev;
+ Time lasttime = 0;
+
+ if (!(c = selmon->sel)) return;
+ if (c->isfullscreen) /* no support moving fullscreen windows by mouse */
+ return;
+ restack(selmon);
+ ocx = c->x;
+ ocy = c->y;
+ if (XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync, None, cursor[CurMove]->cursor, CurrentTime) != GrabSuccess) return;
+ if (!getrootptr(&x, &y)) return;
+ do {
+ XMaskEvent(dpy, MOUSEMASK | ExposureMask | SubstructureRedirectMask, &ev);
+ switch (ev.type) {
+ case ConfigureRequest:
+ case Expose:
+ case MapRequest:
+ handler[ev.type](&ev);
+ break;
+ case MotionNotify:
+ if ((ev.xmotion.time - lasttime) <= (1000 / 60)) continue;
+ lasttime = ev.xmotion.time;
+
+ nx = ocx + (ev.xmotion.x - x);
+ ny = ocy + (ev.xmotion.y - y);
+ if (abs(selmon->wx - nx) < snap)
+ nx = selmon->wx;
+ else if (abs((selmon->wx + selmon->ww) - (nx + WIDTH(c))) < snap)
+ nx = selmon->wx + selmon->ww - WIDTH(c);
+ if (abs(selmon->wy - ny) < snap)
+ ny = selmon->wy;
+ else if (abs((selmon->wy + selmon->wh) - (ny + HEIGHT(c))) < snap)
+ ny = selmon->wy + selmon->wh - HEIGHT(c);
+ if (!c->isfloating && selmon->lt[selmon->sellt]->arrange && (abs(nx - c->x) > snap || abs(ny - c->y) > snap)) togglefloating(NULL);
+ if (!selmon->lt[selmon->sellt]->arrange || c->isfloating) resize(c, nx, ny, c->w, c->h, 1);
+ break;
+ }
+ } while (ev.type != ButtonRelease);
+ XUngrabPointer(dpy, CurrentTime);
+ if ((m = recttomon(c->x, c->y, c->w, c->h)) != selmon) {
+ sendmon(c, m);
+ selmon = m;
+ focus(NULL);
+ }
}
Client *nexttiled(Client *c) {
- for (; c && (c->isfloating || !ISVISIBLE(c)); c = c->next);
- return c;
+ for (; c && (c->isfloating || !ISVISIBLE(c)); c = c->next);
+ return c;
}
void pertagupdate(Monitor *m) {
- m->nmaster = m->pertag->nmasters[m->pertag->curtag];
- m->sellt = m->pertag->sellts[m->pertag->curtag];
- m->lt[m->sellt] = m->pertag->ltidxs[m->pertag->curtag][m->sellt];
- m->lt[m->sellt ^ 1] = m->pertag->ltidxs[m->pertag->curtag][m->sellt ^ 1];
+ m->nmaster = m->pertag->nmasters[m->pertag->curtag];
+ m->sellt = m->pertag->sellts[m->pertag->curtag];
+ m->lt[m->sellt] = m->pertag->ltidxs[m->pertag->curtag][m->sellt];
+ m->lt[m->sellt ^ 1] = m->pertag->ltidxs[m->pertag->curtag][m->sellt ^ 1];
}
void pop(Client *c) {
- detach(c);
- attach(c);
- focus(c);
- arrange(c->mon);
+ detach(c);
+ attach(c);
+ focus(c);
+ arrange(c->mon);
}
void propertynotify(XEvent *e) {
- Client *c;
- Window trans;
- XPropertyEvent *ev = &e->xproperty;
-
- if ((ev->window == root) && (ev->atom == XA_WM_NAME))
- updatestatus();
- else if (ev->state == PropertyDelete)
- return; /* ignore */
- else if ((c = wintoclient(ev->window))) {
- switch (ev->atom) {
- default:
- break;
- case XA_WM_TRANSIENT_FOR:
- if (!c->isfloating && (XGetTransientForHint(dpy, c->win, &trans)) && (c->isfloating = (wintoclient(trans)) != NULL)) arrange(c->mon);
- break;
- case XA_WM_NORMAL_HINTS:
- c->hintsvalid = 0;
- break;
- case XA_WM_HINTS:
- updatewmhints(c);
- drawbars();
- break;
- }
- if (ev->atom == XA_WM_NAME || ev->atom == netatom[NetWMName]) {
- updatetitle(c);
- if (c == c->mon->sel) drawbar(c->mon);
- } else if (ev->atom == netatom[NetWMIcon]) {
- updateicon(c);
- if (c == c->mon->sel) drawbar(c->mon);
- }
- if (ev->atom == netatom[NetWMWindowType]) updatewindowtype(c);
- }
+ Client *c;
+ Window trans;
+ XPropertyEvent *ev = &e->xproperty;
+
+ if ((ev->window == root) && (ev->atom == XA_WM_NAME))
+ updatestatus();
+ else if (ev->state == PropertyDelete)
+ return; /* ignore */
+ else if ((c = wintoclient(ev->window))) {
+ switch (ev->atom) {
+ default:
+ break;
+ case XA_WM_TRANSIENT_FOR:
+ if (!c->isfloating && (XGetTransientForHint(dpy, c->win, &trans)) && (c->isfloating = (wintoclient(trans)) != NULL)) arrange(c->mon);
+ break;
+ case XA_WM_NORMAL_HINTS:
+ c->hintsvalid = 0;
+ break;
+ case XA_WM_HINTS:
+ updatewmhints(c);
+ drawbars();
+ break;
+ }
+ if (ev->atom == XA_WM_NAME || ev->atom == netatom[NetWMName]) {
+ updatetitle(c);
+ if (c == c->mon->sel) drawbar(c->mon);
+ } else if (ev->atom == netatom[NetWMIcon]) {
+ updateicon(c);
+ if (c == c->mon->sel) drawbar(c->mon);
+ }
+ if (ev->atom == netatom[NetWMWindowType]) updatewindowtype(c);
+ }
}
void quit(const Arg *arg) {
- running = 0;
+ running = 0;
}
Monitor *recttomon(int x, int y, int w, int h) {
- Monitor *m, *r = selmon;
- int a, area = 0;
+ Monitor *m, *r = selmon;
+ int a, area = 0;
- for (m = mons; m; m = m->next)
- if ((a = INTERSECT(x, y, w, h, m)) > area) {
- area = a;
- r = m;
- }
- return r;
+ for (m = mons; m; m = m->next)
+ if ((a = INTERSECT(x, y, w, h, m)) > area) {
+ area = a;
+ r = m;
+ }
+ return r;
}
void resize(Client *c, int x, int y, int w, int h, int interact) {
- if (applysizehints(c, &x, &y, &w, &h, interact)) resizeclient(c, x, y, w, h);
+ if (applysizehints(c, &x, &y, &w, &h, interact)) resizeclient(c, x, y, w, h);
}
void resizeclient(Client *c, int x, int y, int w, int h) {
- XWindowChanges wc;
-
- c->oldx = c->x;
- c->x = wc.x = x;
- c->oldy = c->y;
- c->y = wc.y = y;
- c->oldw = c->w;
- c->w = wc.width = w;
- c->oldh = c->h;
- c->h = wc.height = h;
- wc.border_width = c->bw;
- XConfigureWindow(dpy, c->win, CWX | CWY | CWWidth | CWHeight | CWBorderWidth, &wc);
- configure(c);
- XSync(dpy, False);
+ XWindowChanges wc;
+
+ c->oldx = c->x;
+ c->x = wc.x = x;
+ c->oldy = c->y;
+ c->y = wc.y = y;
+ c->oldw = c->w;
+ c->w = wc.width = w;
+ c->oldh = c->h;
+ c->h = wc.height = h;
+ wc.border_width = c->bw;
+ XConfigureWindow(dpy, c->win, CWX | CWY | CWWidth | CWHeight | CWBorderWidth, &wc);
+ configure(c);
+ XSync(dpy, False);
}
void resizemouse(const Arg *arg) {
- int ocx, ocy, nw, nh;
- Client *c;
- Monitor *m;
- XEvent ev;
- Time lasttime = 0;
-
- if (!(c = selmon->sel)) return;
- if (c->isfullscreen) /* no support resizing fullscreen windows by mouse */
- return;
- restack(selmon);
- ocx = c->x;
- ocy = c->y;
- if (XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync, None, cursor[CurResize]->cursor, CurrentTime) != GrabSuccess) return;
- XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1);
- do {
- XMaskEvent(dpy, MOUSEMASK | ExposureMask | SubstructureRedirectMask, &ev);
- switch (ev.type) {
- case ConfigureRequest:
- case Expose:
- case MapRequest:
- handler[ev.type](&ev);
- break;
- case MotionNotify:
- if ((ev.xmotion.time - lasttime) <= (1000 / 60)) continue;
- lasttime = ev.xmotion.time;
-
- nw = MAX(ev.xmotion.x - ocx - 2 * c->bw + 1, 1);
- nh = MAX(ev.xmotion.y - ocy - 2 * c->bw + 1, 1);
- if (c->mon->wx + nw >= selmon->wx && c->mon->wx + nw <= selmon->wx + selmon->ww && c->mon->wy + nh >= selmon->wy && c->mon->wy + nh <= selmon->wy + selmon->wh) {
- if (!c->isfloating && selmon->lt[selmon->sellt]->arrange && (abs(nw - c->w) > snap || abs(nh - c->h) > snap)) togglefloating(NULL);
- }
- if (!selmon->lt[selmon->sellt]->arrange || c->isfloating) resize(c, c->x, c->y, nw, nh, 1);
- break;
- }
- } while (ev.type != ButtonRelease);
- XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1);
- XUngrabPointer(dpy, CurrentTime);
- while (XCheckMaskEvent(dpy, EnterWindowMask, &ev));
- if ((m = recttomon(c->x, c->y, c->w, c->h)) != selmon) {
- sendmon(c, m);
- selmon = m;
- focus(NULL);
- }
+ int ocx, ocy, nw, nh;
+ Client *c;
+ Monitor *m;
+ XEvent ev;
+ Time lasttime = 0;
+
+ if (!(c = selmon->sel)) return;
+ if (c->isfullscreen) /* no support resizing fullscreen windows by mouse */
+ return;
+ restack(selmon);
+ ocx = c->x;
+ ocy = c->y;
+ if (XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync, None, cursor[CurResize]->cursor, CurrentTime) != GrabSuccess) return;
+ XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1);
+ do {
+ XMaskEvent(dpy, MOUSEMASK | ExposureMask | SubstructureRedirectMask, &ev);
+ switch (ev.type) {
+ case ConfigureRequest:
+ case Expose:
+ case MapRequest:
+ handler[ev.type](&ev);
+ break;
+ case MotionNotify:
+ if ((ev.xmotion.time - lasttime) <= (1000 / 60)) continue;
+ lasttime = ev.xmotion.time;
+
+ nw = MAX(ev.xmotion.x - ocx - 2 * c->bw + 1, 1);
+ nh = MAX(ev.xmotion.y - ocy - 2 * c->bw + 1, 1);
+ if (c->mon->wx + nw >= selmon->wx && c->mon->wx + nw <= selmon->wx + selmon->ww && c->mon->wy + nh >= selmon->wy && c->mon->wy + nh <= selmon->wy + selmon->wh) {
+ if (!c->isfloating && selmon->lt[selmon->sellt]->arrange && (abs(nw - c->w) > snap || abs(nh - c->h) > snap)) togglefloating(NULL);
+ }
+ if (!selmon->lt[selmon->sellt]->arrange || c->isfloating) resize(c, c->x, c->y, nw, nh, 1);
+ break;
+ }
+ } while (ev.type != ButtonRelease);
+ XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1);
+ XUngrabPointer(dpy, CurrentTime);
+ while (XCheckMaskEvent(dpy, EnterWindowMask, &ev));
+ if ((m = recttomon(c->x, c->y, c->w, c->h)) != selmon) {
+ sendmon(c, m);
+ selmon = m;
+ focus(NULL);
+ }
}
void restack(Monitor *m) {
- Client *c;
- XEvent ev;
- XWindowChanges wc;
-
- drawbar(m);
- if (!m->sel) return;
- if (m->sel->isfloating || !m->lt[m->sellt]->arrange) XRaiseWindow(dpy, m->sel->win);
- if (m->lt[m->sellt]->arrange) {
- wc.stack_mode = Below;
- wc.sibling = m->barwins[0];
- for (c = m->stack; c; c = c->snext)
- if (!c->isfloating && ISVISIBLE(c)) {
- XConfigureWindow(dpy, c->win, CWSibling | CWStackMode, &wc);
- wc.sibling = c->win;
- }
- }
- XSync(dpy, False);
- while (XCheckMaskEvent(dpy, EnterWindowMask, &ev));
+ Client *c;
+ XEvent ev;
+ XWindowChanges wc;
+
+ drawbar(m);
+ if (!m->sel) return;
+ if (m->sel->isfloating || !m->lt[m->sellt]->arrange) XRaiseWindow(dpy, m->sel->win);
+ if (m->lt[m->sellt]->arrange) {
+ wc.stack_mode = Below;
+ wc.sibling = m->barwins[0];
+ for (c = m->stack; c; c = c->snext)
+ if (!c->isfloating && ISVISIBLE(c)) {
+ XConfigureWindow(dpy, c->win, CWSibling | CWStackMode, &wc);
+ wc.sibling = c->win;
+ }
+ }
+ XSync(dpy, False);
+ while (XCheckMaskEvent(dpy, EnterWindowMask, &ev));
}
void run(void) {
- XEvent ev;
- /* main event loop */
- XSync(dpy, False);
- while (running && !XNextEvent(dpy, &ev))
- if (handler[ev.type]) handler[ev.type](&ev); /* call handler */
-}
-
-void runAutostart(void) {
- char cmd[100];
- sprintf(cmd, "%s &", autostartscript);
- system(cmd);
+ XEvent ev;
+ /* main event loop */
+ XSync(dpy, False);
+ while (running && !XNextEvent(dpy, &ev))
+ if (handler[ev.type]) handler[ev.type](&ev); /* call handler */
}
void scan(void) {
- unsigned int i, num;
- Window d1, d2, *wins = NULL;
- XWindowAttributes wa;
-
- if (XQueryTree(dpy, root, &d1, &d2, &wins, &num)) {
- for (i = 0; i < num; i++) {
- if (!XGetWindowAttributes(dpy, wins[i], &wa) || wa.override_redirect || XGetTransientForHint(dpy, wins[i], &d1)) continue;
- if (wa.map_state == IsViewable || getstate(wins[i]) == IconicState) manage(wins[i], &wa);
- }
- for (i = 0; i < num; i++) { /* now the transients */
- if (!XGetWindowAttributes(dpy, wins[i], &wa)) continue;
- if (XGetTransientForHint(dpy, wins[i], &d1) && (wa.map_state == IsViewable || getstate(wins[i]) == IconicState)) manage(wins[i], &wa);
- }
- if (wins) XFree(wins);
- }
+ unsigned int i, num;
+ Window d1, d2, *wins = NULL;
+ XWindowAttributes wa;
+
+ if (XQueryTree(dpy, root, &d1, &d2, &wins, &num)) {
+ for (i = 0; i < num; i++) {
+ if (!XGetWindowAttributes(dpy, wins[i], &wa) || wa.override_redirect || XGetTransientForHint(dpy, wins[i], &d1)) continue;
+ if (wa.map_state == IsViewable || getstate(wins[i]) == IconicState) manage(wins[i], &wa);
+ }
+ for (i = 0; i < num; i++) { /* now the transients */
+ if (!XGetWindowAttributes(dpy, wins[i], &wa)) continue;
+ if (XGetTransientForHint(dpy, wins[i], &d1) && (wa.map_state == IsViewable || getstate(wins[i]) == IconicState)) manage(wins[i], &wa);
+ }
+ if (wins) XFree(wins);
+ }
}
void sendmon(Client *c, Monitor *m) {
- if (c->mon == m) return;
- unfocus(c, 1);
- detach(c);
- detachstack(c);
- c->mon = m;
- c->tags = m->tagset[m->seltags]; /* assign tags of target monitor */
- attach(c);
- attachstack(c);
- focus(NULL);
- arrange(NULL);
+ if (c->mon == m) return;
+ unfocus(c, 1);
+ detach(c);
+ detachstack(c);
+ c->mon = m;
+ c->tags = m->tagset[m->seltags]; /* assign tags of target monitor */
+ attach(c);
+ attachstack(c);
+ focus(NULL);
+ arrange(NULL);
}
void setclientstate(Client *c, long state) {
- long data[] = {state, None};
+ long data[] = {state, None};
+
+ XChangeProperty(dpy, c->win, wmatom[WMState], wmatom[WMState], 32, PropModeReplace, (unsigned char *)data, 2);
+}
+
+void setdefaulticon(Client *c) {
+ uint32_t w, h, *data;
- XChangeProperty(dpy, c->win, wmatom[WMState], wmatom[WMState], 32, PropModeReplace, (unsigned char *)data, 2);
+ data = getdefaulticon(&w, &h);
+ c->icw = w <= h ? MAX(w * iconsize / h, 1) : iconsize;
+ c->ich = w <= h ? iconsize : MAX(h * iconsize / w, 1);
+ c->icon = drw_picture_create_resized(drw, (char *)data, w, h, c->icw, c->ich);
}
int sendevent(Client *c, Atom proto) {
- int n;
- Atom *protocols;
- int exists = 0;
- XEvent ev;
-
- if (XGetWMProtocols(dpy, c->win, &protocols, &n)) {
- while (!exists && n--) exists = protocols[n] == proto;
- XFree(protocols);
- }
- if (exists) {
- ev.type = ClientMessage;
- ev.xclient.window = c->win;
- ev.xclient.message_type = wmatom[WMProtocols];
- ev.xclient.format = 32;
- ev.xclient.data.l[0] = proto;
- ev.xclient.data.l[1] = CurrentTime;
- XSendEvent(dpy, c->win, False, NoEventMask, &ev);
- }
- return exists;
+ int n;
+ Atom *protocols;
+ int exists = 0;
+ XEvent ev;
+
+ if (XGetWMProtocols(dpy, c->win, &protocols, &n)) {
+ while (!exists && n--) exists = protocols[n] == proto;
+ XFree(protocols);
+ }
+ if (exists) {
+ ev.type = ClientMessage;
+ ev.xclient.window = c->win;
+ ev.xclient.message_type = wmatom[WMProtocols];
+ ev.xclient.format = 32;
+ ev.xclient.data.l[0] = proto;
+ ev.xclient.data.l[1] = CurrentTime;
+ XSendEvent(dpy, c->win, False, NoEventMask, &ev);
+ }
+ return exists;
}
void setfocus(Client *c) {
- if (!c->neverfocus) {
- XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime);
- XChangeProperty(dpy, root, netatom[NetActiveWindow], XA_WINDOW, 32, PropModeReplace, (unsigned char *)&(c->win), 1);
- }
- sendevent(c, wmatom[WMTakeFocus]);
+ if (!c->neverfocus) {
+ XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime);
+ XChangeProperty(dpy, root, netatom[NetActiveWindow], XA_WINDOW, 32, PropModeReplace, (unsigned char *)&(c->win), 1);
+ }
+ sendevent(c, wmatom[WMTakeFocus]);
}
void setfullscreen(Client *c, int fullscreen) {
- if (fullscreen && !c->isfullscreen) {
- XChangeProperty(dpy, c->win, netatom[NetWMState], XA_ATOM, 32, PropModeReplace, (unsigned char *)&netatom[NetWMFullscreen], 1);
- c->isfullscreen = 1;
- c->oldstate = c->isfloating;
- c->oldbw = c->bw;
- c->bw = 0;
- c->isfloating = 1;
- resizeclient(c, c->mon->mx, c->mon->my, c->mon->mw, c->mon->mh);
- XRaiseWindow(dpy, c->win);
- } else if (!fullscreen && c->isfullscreen) {
- XChangeProperty(dpy, c->win, netatom[NetWMState], XA_ATOM, 32, PropModeReplace, (unsigned char *)0, 0);
- c->isfullscreen = 0;
- c->isfloating = c->oldstate;
- c->bw = c->oldbw;
- c->x = c->oldx;
- c->y = c->oldy;
- c->w = c->oldw;
- c->h = c->oldh;
- resizeclient(c, c->x, c->y, c->w, c->h);
- arrange(c->mon);
- }
+ if (fullscreen && !c->isfullscreen) {
+ XChangeProperty(dpy, c->win, netatom[NetWMState], XA_ATOM, 32, PropModeReplace, (unsigned char *)&netatom[NetWMFullscreen], 1);
+ c->isfullscreen = 1;
+ c->oldstate = c->isfloating;
+ c->oldbw = c->bw;
+ c->bw = 0;
+ c->isfloating = 1;
+ resizeclient(c, c->mon->mx, c->mon->my, c->mon->mw, c->mon->mh);
+ XRaiseWindow(dpy, c->win);
+ } else if (!fullscreen && c->isfullscreen) {
+ XChangeProperty(dpy, c->win, netatom[NetWMState], XA_ATOM, 32, PropModeReplace, (unsigned char *)0, 0);
+ c->isfullscreen = 0;
+ c->isfloating = c->oldstate;
+ c->bw = c->oldbw;
+ c->x = c->oldx;
+ c->y = c->oldy;
+ c->w = c->oldw;
+ c->h = c->oldh;
+ resizeclient(c, c->x, c->y, c->w, c->h);
+ arrange(c->mon);
+ }
}
void setlayout(const Arg *arg) {
- if (!arg || !arg->v || arg->v != selmon->lt[selmon->sellt]) selmon->sellt = selmon->pertag->sellts[selmon->pertag->curtag] ^= 1;
- if (arg && arg->v) selmon->lt[selmon->sellt] = selmon->pertag->ltidxs[selmon->pertag->curtag][selmon->sellt] = (Layout *)arg->v;
- strncpy(selmon->ltsymbol, selmon->lt[selmon->sellt]->symbol, sizeof selmon->ltsymbol);
- if (selmon->sel)
- arrange(selmon);
- else
- drawbar(selmon);
+ if (!arg || !arg->v || arg->v != selmon->lt[selmon->sellt]) selmon->sellt = selmon->pertag->sellts[selmon->pertag->curtag] ^= 1;
+ if (arg && arg->v) selmon->lt[selmon->sellt] = selmon->pertag->ltidxs[selmon->pertag->curtag][selmon->sellt] = (Layout *)arg->v;
+ strncpy(selmon->ltsymbol, selmon->lt[selmon->sellt]->symbol, sizeof selmon->ltsymbol);
+ if (selmon->sel)
+ arrange(selmon);
+ else
+ drawbar(selmon);
}
/* arg > 1.0 will set mfact absolutely */
void setmfact(const Arg *arg) {
- float f;
+ float f;
- if (!arg || !selmon->lt[selmon->sellt]->arrange) return;
- f = arg->f < 1.0 ? arg->f + selmon->mfact : arg->f - 1.0;
- if (f < 0.05 || f > 0.95) return;
- selmon->mfact = f;
- arrange(selmon);
+ if (!arg || !selmon->lt[selmon->sellt]->arrange) return;
+ f = arg->f < 1.0 ? arg->f + selmon->mfact : arg->f - 1.0;
+ if (f < 0.05 || f > 0.95) return;
+ selmon->mfact = f;
+ arrange(selmon);
}
void setup(void) {
- int i;
- XSetWindowAttributes wa;
- Atom utf8string;
- struct sigaction sa;
-
- /* do not transform children into zombies when they terminate */
- sigemptyset(&sa.sa_mask);
- sa.sa_flags = SA_NOCLDSTOP | SA_NOCLDWAIT | SA_RESTART;
- sa.sa_handler = SIG_IGN;
- sigaction(SIGCHLD, &sa, NULL);
-
- /* clean up any zombies (inherited from .xinitrc etc) immediately */
- while (waitpid(-1, NULL, WNOHANG) > 0);
-
- /* init screen */
- screen = DefaultScreen(dpy);
- sw = DisplayWidth(dpy, screen);
- sh = DisplayHeight(dpy, screen);
- root = RootWindow(dpy, screen);
- drw = drw_create(dpy, screen, root, sw, sh);
- if (!drw_fontset_create(drw, fonts, LENGTH(fonts))) die("no fonts could be loaded.");
- lrpad = drw->fonts->h;
- unmanaged = 0;
- bh = drw->fonts->h + 12;
- updategeom();
- /* init atoms */
- utf8string = XInternAtom(dpy, "UTF8_STRING", False);
- wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
- wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
- wmatom[WMState] = XInternAtom(dpy, "WM_STATE", False);
- wmatom[WMTakeFocus] = XInternAtom(dpy, "WM_TAKE_FOCUS", False);
- netatom[NetActiveWindow] = XInternAtom(dpy, "_NET_ACTIVE_WINDOW", False);
- netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False);
- netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False);
- netatom[NetWMIcon] = XInternAtom(dpy, "_NET_WM_ICON", False);
- netatom[NetWMState] = XInternAtom(dpy, "_NET_WM_STATE", False);
- netatom[NetWMCheck] = XInternAtom(dpy, "_NET_SUPPORTING_WM_CHECK", False);
- netatom[NetWMFullscreen] = XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN", False);
- netatom[NetWMWindowType] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE", False);
- netatom[NetWMWindowTypeDialog] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_DIALOG", False);
- netatom[NetClientList] = XInternAtom(dpy, "_NET_CLIENT_LIST", False);
- /* init cursors */
- cursor[CurNormal] = drw_cur_create(drw, XC_left_ptr);
- cursor[CurResize] = drw_cur_create(drw, XC_sizing);
- cursor[CurMove] = drw_cur_create(drw, XC_fleur);
- /* init appearance */
- scheme = ecalloc(LENGTH(colors), sizeof(Clr *));
- for (i = 0; i < LENGTH(colors); i++) scheme[i] = drw_scm_create(drw, colors[i], 3);
- /* init bars */
- updatebars();
- updatestatus();
- /* supporting window for NetWMCheck */
- wmcheckwin = XCreateSimpleWindow(dpy, root, 0, 0, 1, 1, 0, 0, 0);
- XChangeProperty(dpy, wmcheckwin, netatom[NetWMCheck], XA_WINDOW, 32, PropModeReplace, (unsigned char *)&wmcheckwin, 1);
- XChangeProperty(dpy, wmcheckwin, netatom[NetWMName], utf8string, 8, PropModeReplace, (unsigned char *)"dwm", 3);
- XChangeProperty(dpy, root, netatom[NetWMCheck], XA_WINDOW, 32, PropModeReplace, (unsigned char *)&wmcheckwin, 1);
- /* EWMH support per view */
- XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32, PropModeReplace, (unsigned char *)netatom, NetLast);
- XDeleteProperty(dpy, root, netatom[NetClientList]);
- /* select events */
- wa.cursor = cursor[CurNormal]->cursor;
- wa.event_mask = SubstructureRedirectMask | SubstructureNotifyMask | ButtonPressMask | PointerMotionMask | EnterWindowMask | /* add event mask */
- LeaveWindowMask | StructureNotifyMask | PropertyChangeMask;
- XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa);
- XSelectInput(dpy, root, wa.event_mask);
- grabkeys();
- focus(NULL);
+ int i;
+ XSetWindowAttributes wa;
+ Atom utf8string;
+ struct sigaction sa;
+
+ /* do not transform children into zombies when they terminate */
+ sigemptyset(&sa.sa_mask);
+ sa.sa_flags = SA_NOCLDSTOP | SA_NOCLDWAIT | SA_RESTART;
+ sa.sa_handler = SIG_IGN;
+ sigaction(SIGCHLD, &sa, NULL);
+
+ /* clean up any zombies (inherited from .xinitrc etc) immediately */
+ while (waitpid(-1, NULL, WNOHANG) > 0);
+
+ /* init screen */
+ screen = DefaultScreen(dpy);
+ sw = DisplayWidth(dpy, screen);
+ sh = DisplayHeight(dpy, screen);
+ root = RootWindow(dpy, screen);
+ drw = drw_create(dpy, screen, root, sw, sh);
+ if (!drw_fontset_create(drw, fonts, LENGTH(fonts))) die("no fonts could be loaded.");
+ lrpad = drw->fonts->h;
+ unmanaged = 0;
+ bh = drw->fonts->h + 12;
+ updategeom();
+ /* init atoms */
+ utf8string = XInternAtom(dpy, "UTF8_STRING", False);
+ wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
+ wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
+ wmatom[WMState] = XInternAtom(dpy, "WM_STATE", False);
+ wmatom[WMTakeFocus] = XInternAtom(dpy, "WM_TAKE_FOCUS", False);
+ netatom[NetActiveWindow] = XInternAtom(dpy, "_NET_ACTIVE_WINDOW", False);
+ netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False);
+ netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False);
+ netatom[NetWMIcon] = XInternAtom(dpy, "_NET_WM_ICON", False);
+ netatom[NetWMState] = XInternAtom(dpy, "_NET_WM_STATE", False);
+ netatom[NetWMCheck] = XInternAtom(dpy, "_NET_SUPPORTING_WM_CHECK", False);
+ netatom[NetWMFullscreen] = XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN", False);
+ netatom[NetWMWindowType] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE", False);
+ netatom[NetWMWindowTypeDialog] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_DIALOG", False);
+ netatom[NetClientList] = XInternAtom(dpy, "_NET_CLIENT_LIST", False);
+ /* init cursors */
+ cursor[CurNormal] = drw_cur_create(drw, XC_left_ptr);
+ cursor[CurResize] = drw_cur_create(drw, XC_sizing);
+ cursor[CurMove] = drw_cur_create(drw, XC_fleur);
+ /* init appearance */
+ scheme = ecalloc(LENGTH(colors) + 1, sizeof(Clr *));
+ scheme[LENGTH(colors)] = drw_scm_create(drw, colors[0], 3);
+ for (i = 0; i < LENGTH(colors); i++) scheme[i] = drw_scm_create(drw, colors[i], 3);
+ /* init bars */
+ updatebars();
+ updatestatus();
+ /* supporting window for NetWMCheck */
+ wmcheckwin = XCreateSimpleWindow(dpy, root, 0, 0, 1, 1, 0, 0, 0);
+ XChangeProperty(dpy, wmcheckwin, netatom[NetWMCheck], XA_WINDOW, 32, PropModeReplace, (unsigned char *)&wmcheckwin, 1);
+ XChangeProperty(dpy, wmcheckwin, netatom[NetWMName], utf8string, 8, PropModeReplace, (unsigned char *)"dwm", 3);
+ XChangeProperty(dpy, root, netatom[NetWMCheck], XA_WINDOW, 32, PropModeReplace, (unsigned char *)&wmcheckwin, 1);
+ /* EWMH support per view */
+ XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32, PropModeReplace, (unsigned char *)netatom, NetLast);
+ XDeleteProperty(dpy, root, netatom[NetClientList]);
+ /* select events */
+ wa.cursor = cursor[CurNormal]->cursor;
+ wa.event_mask = SubstructureRedirectMask | SubstructureNotifyMask | ButtonPressMask | PointerMotionMask | EnterWindowMask | /* add event mask */
+ LeaveWindowMask | StructureNotifyMask | PropertyChangeMask;
+ XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa);
+ XSelectInput(dpy, root, wa.event_mask);
+ grabkeys();
+ focus(NULL);
}
void seturgent(Client *c, int urg) {
- XWMHints *wmh;
+ XWMHints *wmh;
- c->isurgent = urg;
- if (!(wmh = XGetWMHints(dpy, c->win))) return;
- wmh->flags = urg ? (wmh->flags | XUrgencyHint) : (wmh->flags & ~XUrgencyHint);
- XSetWMHints(dpy, c->win, wmh);
- XFree(wmh);
+ c->isurgent = urg;
+ if (!(wmh = XGetWMHints(dpy, c->win))) return;
+ wmh->flags = urg ? (wmh->flags | XUrgencyHint) : (wmh->flags & ~XUrgencyHint);
+ XSetWMHints(dpy, c->win, wmh);
+ XFree(wmh);
}
void showhide(Client *c) {
- if (!c) return;
- if (ISVISIBLE(c)) {
- /* show clients top down */
- XMoveWindow(dpy, c->win, c->x, c->y);
- if ((!c->mon->lt[c->mon->sellt]->arrange || c->isfloating) && !c->isfullscreen) resize(c, c->x, c->y, c->w, c->h, 0);
- showhide(c->snext);
- } else {
- /* hide clients bottom up */
- showhide(c->snext);
- XMoveWindow(dpy, c->win, WIDTH(c) * -2, c->y);
- }
+ if (!c) return;
+ if (ISVISIBLE(c)) {
+ /* show clients top down */
+ XMoveWindow(dpy, c->win, c->x, c->y);
+ if ((!c->mon->lt[c->mon->sellt]->arrange || c->isfloating) && !c->isfullscreen) resize(c, c->x, c->y, c->w, c->h, 0);
+ showhide(c->snext);
+ } else {
+ /* hide clients bottom up */
+ showhide(c->snext);
+ XMoveWindow(dpy, c->win, WIDTH(c) * -2, c->y);
+ }
}
void spawn(const Arg *arg) {
- struct sigaction sa;
+ struct sigaction sa;
- if (arg->v == dmenucmd) dmenumon[0] = '0' + selmon->num;
- if (fork() == 0) {
- if (dpy) close(ConnectionNumber(dpy));
- setsid();
+ if (arg->v == dmenucmd) dmenumon[0] = '0' + selmon->num;
+ if (fork() == 0) {
+ if (dpy) close(ConnectionNumber(dpy));
+ setsid();
- sigemptyset(&sa.sa_mask);
- sa.sa_flags = 0;
- sa.sa_handler = SIG_DFL;
- sigaction(SIGCHLD, &sa, NULL);
+ sigemptyset(&sa.sa_mask);
+ sa.sa_flags = 0;
+ sa.sa_handler = SIG_DFL;
+ sigaction(SIGCHLD, &sa, NULL);
- execvp(((char **)arg->v)[0], (char **)arg->v);
- die("dwm: execvp '%s' failed:", ((char **)arg->v)[0]);
- }
+ execvp(((char **)arg->v)[0], (char **)arg->v);
+ die("dwm: execvp '%s' failed:", ((char **)arg->v)[0]);
+ }
}
void tag(const Arg *arg) {
- if (selmon->sel && arg->ui & TAGMASK) {
- selmon->sel->isglobal = 0;
- selmon->sel->tags = arg->ui & TAGMASK;
- focus(NULL);
- arrange(selmon);
- }
+ if (selmon->sel && arg->ui & TAGMASK) {
+ selmon->sel->isglobal = 0;
+ selmon->sel->tags = arg->ui & TAGMASK;
+ focus(NULL);
+ arrange(selmon);
+ }
}
void tagmon(const Arg *arg) {
- if (!selmon->sel || !mons->next) return;
- sendmon(selmon->sel, dirtomon(arg->i));
+ if (!selmon->sel || !mons->next) return;
+ sendmon(selmon->sel, dirtomon(arg->i));
}
void tile(Monitor *m) {
- unsigned int i, n, mw, my, ty;
- unsigned int cx, cy, cw, ch;
- Client *c;
-
- for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++);
- if (n == 0) return;
-
- mw = n > m->nmaster ? m->ww * m->mfact : m->ww;
- for (i = my = ty = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++)
- if (i < m->nmaster) {
- cx = m->wx;
- cy = m->wy + my;
- cw = mw;
- ch = (m->wh - my) / (m->nmaster - i);
- resize(c, cx, cy, cw - (2 * c->bw), ch - (2 * c->bw), 0);
- if (my + HEIGHT(c) < m->wh) my += HEIGHT(c);
- } else {
- cx = m->wx + mw;
- cy = m->wy + ty;
- cw = m->ww - mw;
- ch = (m->wh - ty) / (n - i);
- resize(c, cx, cy, cw - (2 * c->bw), ch - (2 * c->bw), 0);
- if (ty + HEIGHT(c) < m->wh) ty += HEIGHT(c);
- }
+ unsigned int i, n, mw, my, ty;
+ unsigned int cx, cy, cw, ch;
+ Client *c;
+
+ for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++);
+ if (n == 0) return;
+
+ mw = n > m->nmaster ? m->ww * m->mfact : m->ww;
+ for (i = my = ty = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++)
+ if (i < m->nmaster) {
+ cx = m->wx;
+ cy = m->wy + my;
+ cw = mw;
+ ch = (m->wh - my) / (m->nmaster - i);
+ resize(c, cx, cy, cw - (2 * c->bw), ch - (2 * c->bw), 0);
+ if (my + HEIGHT(c) < m->wh) my += HEIGHT(c);
+ } else {
+ cx = m->wx + mw;
+ cy = m->wy + ty;
+ cw = m->ww - mw;
+ ch = (m->wh - ty) / (n - i);
+ resize(c, cx, cy, cw - (2 * c->bw), ch - (2 * c->bw), 0);
+ if (ty + HEIGHT(c) < m->wh) ty += HEIGHT(c);
+ }
}
void togglebar(const Arg *arg) {
- selmon->showbar = !selmon->showbar;
- updatebarpos(selmon);
- int tw = TEXTW(stext) - lrpad + 2, x = selmon->pvx, s = selmon->pvs;
- XMoveWindow(dpy, selmon->barwins[0], selmon->wx, selmon->by);
- XMoveWindow(dpy, selmon->barwins[1], selmon->wx + (selmon->ww - tw + x - s) / 2, selmon->by);
- XMoveWindow(dpy, selmon->barwins[2], selmon->wx + selmon->ww - tw, selmon->by);
- arrange(selmon);
+ selmon->showbar = !selmon->showbar;
+ updatebarpos(selmon);
+ int tw = TEXTW(stext) - lrpad + 2, x = selmon->pvx, s = selmon->pvs;
+ XMoveWindow(dpy, selmon->barwins[0], selmon->wx, selmon->by);
+ XMoveWindow(dpy, selmon->barwins[1], selmon->wx + (selmon->ww - tw + x - s) / 2, selmon->by);
+ XMoveWindow(dpy, selmon->barwins[2], selmon->wx + selmon->ww - tw, selmon->by);
+ arrange(selmon);
}
void togglefloating(const Arg *arg) {
- if (!selmon->sel) return;
- if (selmon->sel->isfullscreen) /* no support for fullscreen windows */
- return;
- selmon->sel->isfloating = !selmon->sel->isfloating || selmon->sel->isfixed;
- if (selmon->sel->isfloating) resize(selmon->sel, selmon->sel->x, selmon->sel->y, selmon->sel->w, selmon->sel->h, 0);
- arrange(selmon);
+ if (!selmon->sel) return;
+ if (selmon->sel->isfullscreen) /* no support for fullscreen windows */
+ return;
+ selmon->sel->isfloating = !selmon->sel->isfloating || selmon->sel->isfixed;
+ if (selmon->sel->isfloating) resize(selmon->sel, selmon->sel->x, selmon->sel->y, selmon->sel->w, selmon->sel->h, 0);
+ arrange(selmon);
}
void toggleglobal(const Arg *arg) {
- if (!selmon->sel) return;
- selmon->sel->isglobal ^= 1;
- selmon->sel->tags = selmon->sel->isglobal ? 0 : selmon->tagset[selmon->seltags];
- focus(NULL);
+ if (!selmon->sel) return;
+ selmon->sel->isglobal ^= 1;
+ selmon->sel->tags = selmon->sel->isglobal ? 0 : selmon->tagset[selmon->seltags];
+ focus(NULL);
}
void toggleview(const Arg *arg) {
- unsigned int newtagset = selmon->tagset[selmon->seltags] ^ (arg->ui & TAGMASK);
- int i;
- if (newtagset) {
- selmon->tagset[selmon->seltags] = newtagset;
- incnmaster(&(Arg){.i = 0});
- if (!(newtagset & 1 << (selmon->pertag->curtag))) {
- for (i = 0; !(newtagset & 1 << i); i++);
- selmon->pertag->curtag = i;
- }
- pertagupdate(selmon);
- focus(NULL);
- arrange(selmon);
- }
+ unsigned int newtagset = selmon->tagset[selmon->seltags] ^ (arg->ui & TAGMASK);
+ int i;
+ if (newtagset) {
+ selmon->tagset[selmon->seltags] = newtagset;
+ incnmaster(&(Arg){.i = 0});
+ if (!(newtagset & 1 << (selmon->pertag->curtag))) {
+ for (i = 0; !(newtagset & 1 << i); i++);
+ selmon->pertag->curtag = i;
+ }
+ pertagupdate(selmon);
+ focus(NULL);
+ arrange(selmon);
+ }
}
void freeicon(Client *c) {
- if (c->icon) {
- XRenderFreePicture(dpy, c->icon);
- c->icon = None;
- }
+ if (c->icon) {
+ XRenderFreePicture(dpy, c->icon);
+ c->icon = None;
+ }
}
void transfer(const Arg *arg) {
- Client *c, *mtail, *stail, *insertafter;
- int i, tostack;
+ Client *c, *mtail, *stail, *insertafter;
+ int i, tostack;
- for (i = 0, c = nexttiled(selmon->clients); c; i++, c = nexttiled(c->next)) {
- if (c == selmon->sel) tostack = i < selmon->nmaster;
- if (i < selmon->nmaster) mtail = c;
- stail = c;
- }
+ for (i = 0, c = nexttiled(selmon->clients); c; i++, c = nexttiled(c->next)) {
+ if (c == selmon->sel) tostack = i < selmon->nmaster;
+ if (i < selmon->nmaster) mtail = c;
+ stail = c;
+ }
- if (i == 0 || !selmon->sel || selmon->sel->isfloating) return;
+ if (i == 0 || !selmon->sel || selmon->sel->isfloating) return;
- insertafter = tostack ? stail : mtail;
- incnmaster(&(Arg){.i = tostack ? -1 : +1});
+ insertafter = tostack ? stail : mtail;
+ incnmaster(&(Arg){.i = tostack ? -1 : +1});
- if (insertafter != selmon->sel) {
- detach(selmon->sel);
- selmon->sel->next = insertafter->next;
- insertafter->next = selmon->sel;
- }
- arrange(selmon);
+ if (insertafter != selmon->sel) {
+ detach(selmon->sel);
+ selmon->sel->next = insertafter->next;
+ insertafter->next = selmon->sel;
+ }
+ arrange(selmon);
}
void unfocus(Client *c, int setfocus) {
- if (!c) return;
- grabbuttons(c, 0);
- XSetWindowBorder(dpy, c->win, scheme[SchemeNorm][ColBorder].pixel);
- if (setfocus) {
- XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
- XDeleteProperty(dpy, root, netatom[NetActiveWindow]);
- }
+ if (!c) return;
+ grabbuttons(c, 0);
+ XSetWindowBorder(dpy, c->win, scheme[SchemeNorm][ColBorder].pixel);
+ if (setfocus) {
+ XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
+ XDeleteProperty(dpy, root, netatom[NetActiveWindow]);
+ }
}
void unmanage(Client *c, int destroyed) {
- Monitor *m = c->mon, *tmp;
- XWindowChanges wc;
-
- detach(c);
- detachstack(c);
- freeicon(c);
-
- tmp = selmon; /* cache selmon */
- selmon = c->mon;
- incnmaster(&(Arg){.i = 0});
- selmon = tmp; /* recover selmon */
-
- if (!destroyed) {
- wc.border_width = c->oldbw;
- XGrabServer(dpy); /* avoid race conditions */
- XSetErrorHandler(xerrordummy);
- XSelectInput(dpy, c->win, NoEventMask);
- XConfigureWindow(dpy, c->win, CWBorderWidth, &wc); /* restore border */
- XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
- setclientstate(c, WithdrawnState);
- XSync(dpy, False);
- XSetErrorHandler(xerror);
- XUngrabServer(dpy);
- }
- free(c);
- focus(NULL);
- updateclientlist();
- arrange(m);
+ Monitor *m = c->mon, *tmp;
+ XWindowChanges wc;
+
+ detach(c);
+ detachstack(c);
+ freeicon(c);
+
+ tmp = selmon; /* cache selmon */
+ selmon = c->mon;
+ incnmaster(&(Arg){.i = 0});
+ selmon = tmp; /* recover selmon */
+
+ if (!destroyed) {
+ wc.border_width = c->oldbw;
+ XGrabServer(dpy); /* avoid race conditions */
+ XSetErrorHandler(xerrordummy);
+ XSelectInput(dpy, c->win, NoEventMask);
+ XConfigureWindow(dpy, c->win, CWBorderWidth, &wc); /* restore border */
+ XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
+ setclientstate(c, WithdrawnState);
+ XSync(dpy, False);
+ XSetErrorHandler(xerror);
+ XUngrabServer(dpy);
+ }
+ free(c);
+ focus(NULL);
+ updateclientlist();
+ arrange(m);
}
void unmapnotify(XEvent *e) {
- Client *c;
- XUnmapEvent *ev = &e->xunmap;
+ Client *c;
+ XUnmapEvent *ev = &e->xunmap;
- if ((c = wintoclient(ev->window))) {
- if (ev->send_event)
- setclientstate(c, WithdrawnState);
- else
- unmanage(c, 0);
- }
+ if ((c = wintoclient(ev->window))) {
+ if (ev->send_event)
+ setclientstate(c, WithdrawnState);
+ else
+ unmanage(c, 0);
+ }
}
void updatebars(void) {
- Monitor *m;
- XSetWindowAttributes wa = {.override_redirect = True, .background_pixmap = ParentRelative, .event_mask = ButtonPressMask | ExposureMask};
- XClassHint ch = {"dwm", "dwm"};
- for (m = mons; m; m = m->next) {
- for (int i = 0; i < 3; i++) {
- if (m->barwins[i]) continue;
- m->barwins[i] = XCreateWindow(dpy, root, m->wx + m->ww, m->wy + m->wh, bh, bh, 0, DefaultDepth(dpy, screen), CopyFromParent, DefaultVisual(dpy, screen),
- CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa);
- XDefineCursor(dpy, m->barwins[i], cursor[CurNormal]->cursor);
- XMapRaised(dpy, m->barwins[i]);
- XSetClassHint(dpy, m->barwins[i], &ch);
- }
- }
+ Monitor *m;
+ XSetWindowAttributes wa = {.override_redirect = True, .background_pixmap = ParentRelative, .event_mask = ButtonPressMask | ExposureMask};
+ XClassHint ch = {"dwm", "dwm"};
+ for (m = mons; m; m = m->next) {
+ for (int i = 0; i < 3; i++) {
+ if (m->barwins[i]) continue;
+ m->barwins[i] = XCreateWindow(dpy, root, m->wx + m->ww, m->wy + m->wh, bh, bh, 0, DefaultDepth(dpy, screen),
+ CopyFromParent, DefaultVisual(dpy, screen), CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa);
+ XDefineCursor(dpy, m->barwins[i], cursor[CurNormal]->cursor);
+ XMapRaised(dpy, m->barwins[i]);
+ XSetClassHint(dpy, m->barwins[i], &ch);
+ }
+ }
}
void updatebarpos(Monitor *m) {
- /* padding x,y,w,h of MainWindow */
- m->wx = m->mx + sidepad;
- m->wy = m->my + sidepad;
- m->ww = m->mw - 2 * sidepad;
- m->wh = m->mh - 2 * sidepad;
- if (m->showbar) {
- m->wh -= bh + sidepad;
- m->by = m->topbar ? m->wy : m->wy + m->wh;
- m->wy = m->topbar ? m->wy + bh + sidepad : m->wy;
- } else
- m->by = -bh - sidepad;
+ /* padding x,y,w,h of MainWindow */
+ m->wx = m->mx + sidepad;
+ m->wy = m->my + sidepad;
+ m->ww = m->mw - 2 * sidepad;
+ m->wh = m->mh - 2 * sidepad;
+ if (m->showbar) {
+ m->wh -= bh + sidepad;
+ m->by = m->topbar ? m->wy : m->wy + m->wh;
+ m->wy = m->topbar ? m->wy + bh + sidepad : m->wy;
+ } else
+ m->by = -bh - sidepad;
}
void updateclientlist(void) {
- Client *c;
- Monitor *m;
+ Client *c;
+ Monitor *m;
- XDeleteProperty(dpy, root, netatom[NetClientList]);
- for (m = mons; m; m = m->next)
- for (c = m->clients; c; c = c->next) XChangeProperty(dpy, root, netatom[NetClientList], XA_WINDOW, 32, PropModeAppend, (unsigned char *)&(c->win), 1);
+ XDeleteProperty(dpy, root, netatom[NetClientList]);
+ for (m = mons; m; m = m->next)
+ for (c = m->clients; c; c = c->next) XChangeProperty(dpy, root, netatom[NetClientList], XA_WINDOW, 32, PropModeAppend, (unsigned char *)&(c->win), 1);
}
int updategeom(void) {
- int dirty = 0;
+ int dirty = 0;
#ifdef XINERAMA
- if (XineramaIsActive(dpy)) {
- int i, j, n, nn;
- Client *c;
- Monitor *m;
- XineramaScreenInfo *info = XineramaQueryScreens(dpy, &nn);
- XineramaScreenInfo *unique = NULL;
-
- for (n = 0, m = mons; m; m = m->next, n++);
- /* only consider unique geometries as separate screens */
- unique = ecalloc(nn, sizeof(XineramaScreenInfo));
- for (i = 0, j = 0; i < nn; i++)
- if (isuniquegeom(unique, j, &info[i])) memcpy(&unique[j++], &info[i], sizeof(XineramaScreenInfo));
- XFree(info);
- nn = j;
-
- /* new monitors if nn > n */
- for (i = n; i < nn; i++) {
- for (m = mons; m && m->next; m = m->next);
- if (m)
- m->next = createmon();
- else
- mons = createmon();
- }
- for (i = 0, m = mons; i < nn && m; m = m->next, i++)
- if (i >= n || unique[i].x_org != m->mx || unique[i].y_org != m->my || unique[i].width != m->mw || unique[i].height != m->mh) {
- dirty = 1;
- m->num = i;
- m->mx = m->wx = unique[i].x_org;
- m->my = m->wy = unique[i].y_org;
- m->mw = m->ww = unique[i].width;
- m->mh = m->wh = unique[i].height;
- updatebarpos(m);
- }
- /* removed monitors if n > nn */
- for (i = nn; i < n; i++) {
- for (m = mons; m && m->next; m = m->next);
- while ((c = m->clients)) {
- dirty = 1;
- m->clients = c->next;
- detachstack(c);
- c->mon = mons;
- attach(c);
- attachstack(c);
- }
- if (m == selmon) selmon = mons;
- cleanupmon(m);
- }
- free(unique);
- } else
+ if (XineramaIsActive(dpy)) {
+ int i, j, n, nn;
+ Client *c;
+ Monitor *m;
+ XineramaScreenInfo *info = XineramaQueryScreens(dpy, &nn);
+ XineramaScreenInfo *unique = NULL;
+
+ for (n = 0, m = mons; m; m = m->next, n++);
+ /* only consider unique geometries as separate screens */
+ unique = ecalloc(nn, sizeof(XineramaScreenInfo));
+ for (i = 0, j = 0; i < nn; i++)
+ if (isuniquegeom(unique, j, &info[i])) memcpy(&unique[j++], &info[i], sizeof(XineramaScreenInfo));
+ XFree(info);
+ nn = j;
+
+ /* new monitors if nn > n */
+ for (i = n; i < nn; i++) {
+ for (m = mons; m && m->next; m = m->next);
+ if (m)
+ m->next = createmon();
+ else
+ mons = createmon();
+ }
+ for (i = 0, m = mons; i < nn && m; m = m->next, i++)
+ if (i >= n || unique[i].x_org != m->mx || unique[i].y_org != m->my || unique[i].width != m->mw || unique[i].height != m->mh) {
+ dirty = 1;
+ m->num = i;
+ m->mx = m->wx = unique[i].x_org;
+ m->my = m->wy = unique[i].y_org;
+ m->mw = m->ww = unique[i].width;
+ m->mh = m->wh = unique[i].height;
+ updatebarpos(m);
+ }
+ /* removed monitors if n > nn */
+ for (i = nn; i < n; i++) {
+ for (m = mons; m && m->next; m = m->next);
+ while ((c = m->clients)) {
+ dirty = 1;
+ m->clients = c->next;
+ detachstack(c);
+ c->mon = mons;
+ attach(c);
+ attachstack(c);
+ }
+ if (m == selmon) selmon = mons;
+ cleanupmon(m);
+ }
+ free(unique);
+ } else
#endif /* XINERAMA */
- { /* default monitor setup */
- if (!mons) mons = createmon();
- if (mons->mw != sw || mons->mh != sh) {
- dirty = 1;
- mons->mw = mons->ww = sw;
- mons->mh = mons->wh = sh;
- updatebarpos(mons);
- mons->pvx = mons->pvs = 0;
- }
- }
- if (dirty) {
- selmon = mons;
- selmon = wintomon(root);
- }
- return dirty;
+ { /* default monitor setup */
+ if (!mons) mons = createmon();
+ if (mons->mw != sw || mons->mh != sh) {
+ dirty = 1;
+ mons->mw = mons->ww = sw;
+ mons->mh = mons->wh = sh;
+ updatebarpos(mons);
+ mons->pvx = mons->pvs = 0;
+ }
+ }
+ if (dirty) {
+ selmon = mons;
+ selmon = wintomon(root);
+ }
+ return dirty;
}
void updatenumlockmask(void) {
- unsigned int i, j;
- XModifierKeymap *modmap;
+ unsigned int i, j;
+ XModifierKeymap *modmap;
- numlockmask = 0;
- modmap = XGetModifierMapping(dpy);
- for (i = 0; i < 8; i++)
- for (j = 0; j < modmap->max_keypermod; j++)
- if (modmap->modifiermap[i * modmap->max_keypermod + j] == XKeysymToKeycode(dpy, XK_Num_Lock)) numlockmask = (1 << i);
- XFreeModifiermap(modmap);
+ numlockmask = 0;
+ modmap = XGetModifierMapping(dpy);
+ for (i = 0; i < 8; i++)
+ for (j = 0; j < modmap->max_keypermod; j++)
+ if (modmap->modifiermap[i * modmap->max_keypermod + j] == XKeysymToKeycode(dpy, XK_Num_Lock)) numlockmask = (1 << i);
+ XFreeModifiermap(modmap);
}
void updatesizehints(Client *c) {
- long msize;
- XSizeHints size;
-
- if (!XGetWMNormalHints(dpy, c->win, &size, &msize)) /* size is uninitialized, ensure that size.flags aren't used */
- size.flags = PSize;
- if (size.flags & PBaseSize) {
- c->basew = size.base_width;
- c->baseh = size.base_height;
- } else if (size.flags & PMinSize) {
- c->basew = size.min_width;
- c->baseh = size.min_height;
- } else
- c->basew = c->baseh = 0;
- if (size.flags & PResizeInc) {
- c->incw = size.width_inc;
- c->inch = size.height_inc;
- } else
- c->incw = c->inch = 0;
- if (size.flags & PMaxSize) {
- c->maxw = size.max_width;
- c->maxh = size.max_height;
- } else
- c->maxw = c->maxh = 0;
- if (size.flags & PMinSize) {
- c->minw = size.min_width;
- c->minh = size.min_height;
- } else if (size.flags & PBaseSize) {
- c->minw = size.base_width;
- c->minh = size.base_height;
- } else
- c->minw = c->minh = 0;
- if (size.flags & PAspect) {
- c->mina = (float)size.min_aspect.y / size.min_aspect.x;
- c->maxa = (float)size.max_aspect.x / size.max_aspect.y;
- } else
- c->maxa = c->mina = 0.0;
- c->isfixed = (c->maxw && c->maxh && c->maxw == c->minw && c->maxh == c->minh);
- c->hintsvalid = 1;
+ long msize;
+ XSizeHints size;
+
+ if (!XGetWMNormalHints(dpy, c->win, &size, &msize)) /* size is uninitialized, ensure that size.flags aren't used */
+ size.flags = PSize;
+ if (size.flags & PBaseSize) {
+ c->basew = size.base_width;
+ c->baseh = size.base_height;
+ } else if (size.flags & PMinSize) {
+ c->basew = size.min_width;
+ c->baseh = size.min_height;
+ } else
+ c->basew = c->baseh = 0;
+ if (size.flags & PResizeInc) {
+ c->incw = size.width_inc;
+ c->inch = size.height_inc;
+ } else
+ c->incw = c->inch = 0;
+ if (size.flags & PMaxSize) {
+ c->maxw = size.max_width;
+ c->maxh = size.max_height;
+ } else
+ c->maxw = c->maxh = 0;
+ if (size.flags & PMinSize) {
+ c->minw = size.min_width;
+ c->minh = size.min_height;
+ } else if (size.flags & PBaseSize) {
+ c->minw = size.base_width;
+ c->minh = size.base_height;
+ } else
+ c->minw = c->minh = 0;
+ if (size.flags & PAspect) {
+ c->mina = (float)size.min_aspect.y / size.min_aspect.x;
+ c->maxa = (float)size.max_aspect.x / size.max_aspect.y;
+ } else
+ c->maxa = c->mina = 0.0;
+ c->isfixed = (c->maxw && c->maxh && c->maxw == c->minw && c->maxh == c->minh);
+ c->hintsvalid = 1;
}
void updatestatus(void) {
- if (!gettextprop(root, XA_WM_NAME, stext, sizeof(stext))) strcpy(stext, "dwm-6.4");
- drawbar(selmon);
+ if (!gettextprop(root, XA_WM_NAME, stext, sizeof(stext))) strcpy(stext, "dwm-6.4");
+ drawbar(selmon);
}
void updatetitle(Client *c) {
- if (!gettextprop(c->win, netatom[NetWMName], c->name, sizeof c->name)) gettextprop(c->win, XA_WM_NAME, c->name, sizeof c->name);
- if (c->name[0] == '\0') /* hack to mark broken clients */
- strcpy(c->name, broken);
+ if (!gettextprop(c->win, netatom[NetWMName], c->name, sizeof c->name)) gettextprop(c->win, XA_WM_NAME, c->name, sizeof c->name);
+ if (c->name[0] == '\0') /* hack to mark broken clients */
+ strcpy(c->name, broken);
}
void updateicon(Client *c) {
- freeicon(c);
- c->icon = geticonprop(c->win, &c->icw, &c->ich);
+ freeicon(c);
+ c->icon = geticonprop(c->win, &c->icw, &c->ich);
+ if (!c->icon) setdefaulticon(c);
}
void updatewindowtype(Client *c) {
- Atom state = getatomprop(c, netatom[NetWMState]);
- Atom wtype = getatomprop(c, netatom[NetWMWindowType]);
+ Atom state = getatomprop(c, netatom[NetWMState]);
+ Atom wtype = getatomprop(c, netatom[NetWMWindowType]);
- if (state == netatom[NetWMFullscreen]) setfullscreen(c, 1);
- if (wtype == netatom[NetWMWindowTypeDialog]) c->isfloating = 1;
+ if (state == netatom[NetWMFullscreen]) setfullscreen(c, 1);
+ if (wtype == netatom[NetWMWindowTypeDialog]) c->isfloating = 1;
}
void updatewmhints(Client *c) {
- XWMHints *wmh;
-
- if ((wmh = XGetWMHints(dpy, c->win))) {
- if (c == selmon->sel && wmh->flags & XUrgencyHint) {
- wmh->flags &= ~XUrgencyHint;
- XSetWMHints(dpy, c->win, wmh);
- } else
- c->isurgent = (wmh->flags & XUrgencyHint) ? 1 : 0;
- if (wmh->flags & InputHint)
- c->neverfocus = !wmh->input;
- else
- c->neverfocus = 0;
- XFree(wmh);
- }
+ XWMHints *wmh;
+
+ if ((wmh = XGetWMHints(dpy, c->win))) {
+ if (c == selmon->sel && wmh->flags & XUrgencyHint) {
+ wmh->flags &= ~XUrgencyHint;
+ XSetWMHints(dpy, c->win, wmh);
+ } else
+ c->isurgent = (wmh->flags & XUrgencyHint) ? 1 : 0;
+ if (wmh->flags & InputHint)
+ c->neverfocus = !wmh->input;
+ else
+ c->neverfocus = 0;
+ XFree(wmh);
+ }
}
void view(const Arg *arg) {
- unsigned int notsame = (arg->ui & TAGMASK) ^ selmon->tagset[selmon->seltags];
- int i;
- if (notsame) {
- selmon->seltags ^= 1;
- if (arg->ui & TAGMASK) {
- selmon->tagset[selmon->seltags] = arg->ui & TAGMASK;
- for (i = 0; !(arg->ui & 1 << i); i++);
- selmon->pertag->curtag = i;
- }
- pertagupdate(selmon);
- incnmaster(&(Arg){.i = 0});
- focus(NULL);
- arrange(selmon);
- }
+ unsigned int notsame = (arg->ui & TAGMASK) ^ selmon->tagset[selmon->seltags];
+ int i;
+ if (notsame) {
+ selmon->seltags ^= 1;
+ if (arg->ui & TAGMASK) {
+ selmon->tagset[selmon->seltags] = arg->ui & TAGMASK;
+ for (i = 0; !(arg->ui & 1 << i); i++);
+ selmon->pertag->curtag = i;
+ }
+ pertagupdate(selmon);
+ incnmaster(&(Arg){.i = 0});
+ focus(NULL);
+ arrange(selmon);
+ }
}
void viewontag(const Arg *arg) {
- if (selmon->sel && arg->ui & TAGMASK) {
- selmon->sel->isglobal = 0;
- selmon->sel->tags = arg->ui & TAGMASK;
- view(arg);
- }
+ if (selmon->sel && arg->ui & TAGMASK) {
+ selmon->sel->isglobal = 0;
+ selmon->sel->tags = arg->ui & TAGMASK;
+ view(arg);
+ }
}
Client *wintoclient(Window w) {
- Client *c;
- Monitor *m;
+ Client *c;
+ Monitor *m;
- for (m = mons; m; m = m->next)
- for (c = m->clients; c; c = c->next)
- if (c->win == w) return c;
- return NULL;
+ for (m = mons; m; m = m->next)
+ for (c = m->clients; c; c = c->next)
+ if (c->win == w) return c;
+ return NULL;
}
Monitor *wintomon(Window w) {
- int x, y;
- Client *c;
- Monitor *m;
+ int x, y;
+ Client *c;
+ Monitor *m;
- if (w == root && getrootptr(&x, &y)) return recttomon(x, y, 1, 1);
- for (m = mons; m; m = m->next)
- if (w == m->barwins[0]) return m;
- if ((c = wintoclient(w))) return c->mon;
- return selmon;
+ if (w == root && getrootptr(&x, &y)) return recttomon(x, y, 1, 1);
+ for (m = mons; m; m = m->next)
+ if (w == m->barwins[0]) return m;
+ if ((c = wintoclient(w))) return c->mon;
+ return selmon;
}
/* There's no way to check accesses to destroyed windows, thus those cases are
* ignored (especially on UnmapNotify's). Other types of errors call Xlibs
* default error handler, which may call exit. */
int xerror(Display *dpy, XErrorEvent *ee) {
- if (ee->error_code == BadWindow || (ee->request_code == X_SetInputFocus && ee->error_code == BadMatch) || (ee->request_code == X_PolyText8 && ee->error_code == BadDrawable) ||
- (ee->request_code == X_PolyFillRectangle && ee->error_code == BadDrawable) || (ee->request_code == X_PolySegment && ee->error_code == BadDrawable) ||
- (ee->request_code == X_ConfigureWindow && ee->error_code == BadMatch) || (ee->request_code == X_GrabButton && ee->error_code == BadAccess) ||
- (ee->request_code == X_GrabKey && ee->error_code == BadAccess) || (ee->request_code == X_CopyArea && ee->error_code == BadDrawable))
- return 0;
- fprintf(stderr, "dwm: fatal error: request code=%d, error code=%d\n", ee->request_code, ee->error_code);
- return xerrorxlib(dpy, ee); /* may call exit */
+ if (ee->error_code == BadWindow || (ee->request_code == X_SetInputFocus && ee->error_code == BadMatch) || (ee->request_code == X_PolyText8 && ee->error_code == BadDrawable) ||
+ (ee->request_code == X_PolyFillRectangle && ee->error_code == BadDrawable) || (ee->request_code == X_PolySegment && ee->error_code == BadDrawable) ||
+ (ee->request_code == X_ConfigureWindow && ee->error_code == BadMatch) || (ee->request_code == X_GrabButton && ee->error_code == BadAccess) ||
+ (ee->request_code == X_GrabKey && ee->error_code == BadAccess) || (ee->request_code == X_CopyArea && ee->error_code == BadDrawable)) return 0;
+ fprintf(stderr, "dwm: fatal error: request code=%d, error code=%d\n", ee->request_code, ee->error_code);
+ return xerrorxlib(dpy, ee); /* may call exit */
}
int xerrordummy(Display *dpy, XErrorEvent *ee) {
- return 0;
+ return 0;
}
/* Startup Error handler to check if another window manager
* is already running. */
int xerrorstart(Display *dpy, XErrorEvent *ee) {
- die("dwm: another window manager is already running");
- return -1;
+ die("dwm: another window manager is already running");
+ return -1;
}
void zoom(const Arg *arg) {
- Client *c = selmon->sel;
+ Client *c = arg->v ? (Client *)arg->v : selmon->sel;
- if (!selmon->lt[selmon->sellt]->arrange || !c || c->isfloating) return;
- if (c == nexttiled(selmon->clients) && !(c = nexttiled(c->next))) return;
- pop(c);
+ if (!selmon->lt[selmon->sellt]->arrange || !c || c->isfloating) return;
+ if (c == nexttiled(selmon->clients) && !(c = nexttiled(c->next))) return;
+ pop(c);
}
int main(int argc, char *argv[]) {
- if (argc == 2 && !strcmp("-v", argv[1]))
- die("dwm-6.4");
- else if (argc != 1)
- die("usage: dwm [-v]");
- if (!setlocale(LC_CTYPE, "") || !XSupportsLocale()) fputs("warning: no locale support\n", stderr);
- if (!(dpy = XOpenDisplay(NULL))) die("dwm: cannot open display");
- checkotherwm();
- setup();
+ if (argc == 2 && !strcmp("-v", argv[1]))
+ die("dwm-6.4");
+ else if (argc != 1)
+ die("usage: dwm [-v]");
+ if (!setlocale(LC_CTYPE, "") || !XSupportsLocale()) fputs("warning: no locale support\n", stderr);
+ if (!(dpy = XOpenDisplay(NULL))) die("dwm: cannot open display");
+ checkotherwm();
+ setup();
#ifdef __OpenBSD__
- if (pledge("stdio rpath proc exec", NULL) == -1) die("pledge");
+ if (pledge("stdio rpath proc exec", NULL) == -1) die("pledge");
#endif /* __OpenBSD__ */
- scan();
- runAutostart();
- run();
- cleanup();
- XCloseDisplay(dpy);
- return EXIT_SUCCESS;
+ scan();
+ autostart();
+ run();
+ cleanup();
+ XCloseDisplay(dpy);
+ return EXIT_SUCCESS;
}
diff --git a/dwm.h b/dwm.h
index 32a108d..6828a48 100644
--- a/dwm.h
+++ b/dwm.h
@@ -20,6 +20,8 @@
#include "src/drw.h"
#include "src/util.h"
+#define MAXTAGS 5
+
#define BUTTONMASK (ButtonPressMask | ButtonReleaseMask)
#define CLEANMASK(mask) (mask & ~(numlockmask | LockMask) & (ShiftMask | ControlMask | Mod1Mask | Mod2Mask | Mod3Mask | Mod4Mask | Mod5Mask))
#define INTERSECT(x, y, w, h, m) (MAX(0, MIN((x) + (w), (m)->wx + (m)->ww) - MAX((x), (m)->wx)) * MAX(0, MIN((y) + (h), (m)->wy + (m)->wh) - MAX((y), (m)->wy)))
@@ -30,10 +32,10 @@
#define HEIGHT(X) ((X)->h + 2 * (X)->bw)
#define TAGMASK ((1 << MAXTAGS) - 1)
#define TEXTW(X) (drw_fontset_getwidth(drw, (X)) + lrpad)
-#define MAXTAGS (1 << 3)
+#define TAG(x) ((1 << (MIN(x, MAXTAGS - 1))))
enum { CurNormal, CurResize, CurMove, CurLast };
-enum { SchemeNorm, SchemeSel };
+enum { SchemeNorm, SchemeSel, SchemeTag, SchemeTag1, SchemeTag2, SchemeTag3, SchemeTag4, SchemeTag5, SchemeLayout, SchemeTitle };
enum { NetSupported, NetWMName, NetWMIcon, NetWMState, NetWMCheck, NetWMFullscreen, NetActiveWindow, NetWMWindowType, NetWMWindowTypeDialog, NetClientList, NetLast };
enum { WMProtocols, WMDelete, WMState, WMTakeFocus, WMLast };
enum { ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, ClkRootWin, ClkLast };
@@ -48,88 +50,88 @@ typedef struct Rule Rule;
typedef struct Pertag Pertag;
struct Arg {
- int i;
- unsigned int ui;
- float f;
- const void *v;
+ int i;
+ unsigned int ui;
+ float f;
+ const void *v;
};
struct Button {
- unsigned int click;
- unsigned int mask;
- unsigned int button;
- void (*func)(const Arg *arg);
- const Arg arg;
+ unsigned int click;
+ unsigned int mask;
+ unsigned int button;
+ void (*func)(const Arg *arg);
+ const Arg arg;
};
struct Client {
- char name[256];
- float mina, maxa;
- int x, y, w, h;
- int oldx, oldy, oldw, oldh;
- int basew, baseh, incw, inch, maxw, maxh, minw, minh, hintsvalid;
- int bw, oldbw;
- unsigned int tags;
- int isfixed, isfloating, isglobal, isurgent, neverfocus, oldstate, isfullscreen;
- unsigned int icw, ich;
- Picture icon;
- Client *next;
- Client *snext;
- Monitor *mon;
- Window win;
+ char name[256];
+ float mina, maxa;
+ int x, y, w, h;
+ int oldx, oldy, oldw, oldh;
+ int basew, baseh, incw, inch, maxw, maxh, minw, minh, hintsvalid;
+ int bw, oldbw;
+ unsigned int tags;
+ int isfixed, isfloating, isglobal, isurgent, neverfocus, oldstate, isfullscreen;
+ unsigned int icw, ich;
+ Picture icon;
+ Client *next;
+ Client *snext;
+ Monitor *mon;
+ Window win;
};
struct Key {
- unsigned int mod;
- KeySym keysym;
- void (*func)(const Arg *);
- const Arg arg;
+ unsigned int mod;
+ KeySym keysym;
+ void (*func)(const Arg *);
+ const Arg arg;
};
struct Layout {
- const char *symbol;
- void (*arrange)(Monitor *);
+ const char *symbol;
+ void (*arrange)(Monitor *);
};
struct Monitor {
- char ltsymbol[16];
- float mfact;
- int nmaster;
- int num;
- int by; /* bar geometry */
- int mx, my, mw, mh; /* screen size */
- int wx, wy, ww, wh; /* window area */
- int pvx, pvs; /* tags & title size */
- unsigned int seltags;
- unsigned int sellt;
- unsigned int tagset[2];
- int showbar;
- int topbar;
- Client *clients;
- Client *sel;
- Client *stack;
- Monitor *next;
- Window barwins[3];
- const Layout *lt[2];
- Pertag *pertag;
+ char ltsymbol[16];
+ float mfact;
+ int nmaster;
+ int num;
+ int by; /* bar geometry */
+ int mx, my, mw, mh; /* screen size */
+ int wx, wy, ww, wh; /* window area */
+ int pvx, pvs; /* tags & title size */
+ unsigned int seltags;
+ unsigned int sellt;
+ unsigned int tagset[2];
+ int showbar;
+ int topbar;
+ Client *clients;
+ Client *sel;
+ Client *stack;
+ Monitor *next;
+ Window barwins[3];
+ const Layout *lt[2];
+ Pertag *pertag;
};
struct Rule {
- const char *class;
- const char *instance;
- const char *title;
- unsigned int tags;
- int isfloating;
- int isglobal;
- int monitor;
- int unmanaged;
+ const char *class;
+ const char *instance;
+ const char *title;
+ unsigned int tags;
+ int isfloating;
+ int isglobal;
+ int monitor;
+ int unmanaged;
};
struct Pertag {
- unsigned int curtag;
- int nmasters[MAXTAGS];
- unsigned int sellts[MAXTAGS];
- const Layout *ltidxs[MAXTAGS][2];
+ unsigned int curtag;
+ int nmasters[MAXTAGS];
+ unsigned int sellts[MAXTAGS];
+ const Layout *ltidxs[MAXTAGS][2];
};
void applyrules(Client *c);
@@ -138,6 +140,7 @@ void arrange(Monitor *m);
void arrangemon(Monitor *m);
void attach(Client *c);
void attachstack(Client *c);
+void autostart(void);
void buttonpress(XEvent *e);
void checkotherwm(void);
void cleanup(void);
@@ -154,6 +157,7 @@ void detachstack(Client *c);
Monitor *dirtomon(int dir);
void drawbar(Monitor *m);
void drawbars(void);
+int drawstatusbar(Monitor *m);
void enternotify(XEvent *e);
void expose(XEvent *e);
void focus(Client *c);
@@ -187,7 +191,6 @@ void resizeclient(Client *c, int x, int y, int w, int h);
void resizemouse(const Arg *arg);
void restack(Monitor *m);
void run(void);
-void runAutostart(void);
void scan(void);
int sendevent(Client *c, Atom proto);
void sendmon(Client *c, Monitor *m);
@@ -233,7 +236,13 @@ int xerrorstart(Display *dpy, XErrorEvent *ee);
void zoom(const Arg *arg);
const char broken[] = "broken";
-char stext[256];
+char stext[1024];
+char *btnstr[6] = {
+ [Button1] = "L", /* left mouse button */
+ [Button2] = "M", /* middle mouse button */
+ [Button3] = "R", /* right mouse button */
+ [Button4] = "U", /* mouse wheel up */
+ [Button5] = "D"}; /* mouse wheel down */
int screen;
int sw, sh; /* X display screen geometry width, height */
int bh; /* bar height */
@@ -242,20 +251,20 @@ int lrpad; /* sum of left and right padding for text */
int (*xerrorxlib)(Display *, XErrorEvent *);
unsigned int numlockmask = 0;
void (*handler[LASTEvent])(XEvent *) = {
- [ButtonPress] = buttonpress,
- [ClientMessage] = clientmessage,
- [ConfigureRequest] = configurerequest,
- [ConfigureNotify] = configurenotify,
- [DestroyNotify] = destroynotify,
- [EnterNotify] = enternotify,
- [Expose] = expose,
- [FocusIn] = focusin,
- [KeyPress] = keypress,
- [MappingNotify] = mappingnotify,
- [MapRequest] = maprequest,
- [MotionNotify] = motionnotify,
- [PropertyNotify] = propertynotify,
- [UnmapNotify] = unmapnotify };
+ [ButtonPress] = buttonpress,
+ [ClientMessage] = clientmessage,
+ [ConfigureRequest] = configurerequest,
+ [ConfigureNotify] = configurenotify,
+ [DestroyNotify] = destroynotify,
+ [EnterNotify] = enternotify,
+ [Expose] = expose,
+ [FocusIn] = focusin,
+ [KeyPress] = keypress,
+ [MappingNotify] = mappingnotify,
+ [MapRequest] = maprequest,
+ [MotionNotify] = motionnotify,
+ [PropertyNotify] = propertynotify,
+ [UnmapNotify] = unmapnotify};
Atom wmatom[WMLast], netatom[NetLast];
int running = 1;
Cur *cursor[CurLast];
diff --git a/icons/dwmStatus/audio-speaker.svg b/icons/dwmStatus/audio-speaker.svg
new file mode 100644
index 0000000..26ba440
--- /dev/null
+++ b/icons/dwmStatus/audio-speaker.svg
@@ -0,0 +1,6 @@
+
diff --git a/icons/dwmStatus/battery-empty-charging.svg b/icons/dwmStatus/battery-empty-charging.svg
new file mode 100644
index 0000000..c12469e
--- /dev/null
+++ b/icons/dwmStatus/battery-empty-charging.svg
@@ -0,0 +1,14 @@
+
diff --git a/icons/dwmStatus/battery-empty.svg b/icons/dwmStatus/battery-empty.svg
new file mode 100644
index 0000000..04c3fc7
--- /dev/null
+++ b/icons/dwmStatus/battery-empty.svg
@@ -0,0 +1,11 @@
+
diff --git a/icons/dwmStatus/battery-full-charging.svg b/icons/dwmStatus/battery-full-charging.svg
new file mode 100644
index 0000000..6538e09
--- /dev/null
+++ b/icons/dwmStatus/battery-full-charging.svg
@@ -0,0 +1,12 @@
+
diff --git a/icons/dwmStatus/battery-full.svg b/icons/dwmStatus/battery-full.svg
new file mode 100644
index 0000000..57e5d69
--- /dev/null
+++ b/icons/dwmStatus/battery-full.svg
@@ -0,0 +1,9 @@
+
diff --git a/icons/dwmStatus/battery-good-charging.svg b/icons/dwmStatus/battery-good-charging.svg
new file mode 100644
index 0000000..55a5c0a
--- /dev/null
+++ b/icons/dwmStatus/battery-good-charging.svg
@@ -0,0 +1,14 @@
+
diff --git a/icons/dwmStatus/battery-good.svg b/icons/dwmStatus/battery-good.svg
new file mode 100644
index 0000000..18c5a55
--- /dev/null
+++ b/icons/dwmStatus/battery-good.svg
@@ -0,0 +1,11 @@
+
diff --git a/icons/dwmStatus/battery-low-charging.svg b/icons/dwmStatus/battery-low-charging.svg
new file mode 100644
index 0000000..169854e
--- /dev/null
+++ b/icons/dwmStatus/battery-low-charging.svg
@@ -0,0 +1,14 @@
+
diff --git a/icons/dwmStatus/battery-low.svg b/icons/dwmStatus/battery-low.svg
new file mode 100644
index 0000000..8fe8dbe
--- /dev/null
+++ b/icons/dwmStatus/battery-low.svg
@@ -0,0 +1,11 @@
+
diff --git a/icons/dwmStatus/brightness.svg b/icons/dwmStatus/brightness.svg
new file mode 100644
index 0000000..2dd4e56
--- /dev/null
+++ b/icons/dwmStatus/brightness.svg
@@ -0,0 +1,7 @@
+
diff --git a/icons/dwmStatus/calendar.svg b/icons/dwmStatus/calendar.svg
new file mode 100644
index 0000000..816b198
--- /dev/null
+++ b/icons/dwmStatus/calendar.svg
@@ -0,0 +1,24 @@
+
diff --git a/icons/dwmStatus/cpu.svg b/icons/dwmStatus/cpu.svg
new file mode 100644
index 0000000..0fea0dd
--- /dev/null
+++ b/icons/dwmStatus/cpu.svg
@@ -0,0 +1,102 @@
+
diff --git a/icons/dwmStatus/dotmemory.svg b/icons/dwmStatus/dotmemory.svg
new file mode 100644
index 0000000..d4554ec
--- /dev/null
+++ b/icons/dwmStatus/dotmemory.svg
@@ -0,0 +1,15 @@
+
diff --git a/icons/dwmStatus/wifi-radar.svg b/icons/dwmStatus/wifi-radar.svg
new file mode 100644
index 0000000..270525d
--- /dev/null
+++ b/icons/dwmStatus/wifi-radar.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/drw.c b/src/drw.c
index 1528d88..bef5e2d 100644
--- a/src/drw.c
+++ b/src/drw.c
@@ -18,410 +18,410 @@ static const long utfmin[UTF_SIZ + 1] = {0, 0, 0x80, 0x800, 0x10000};
static const long utfmax[UTF_SIZ + 1] = {0x10FFFF, 0x7F, 0x7FF, 0xFFFF, 0x10FFFF};
static long utf8decodebyte(const char c, size_t *i) {
- for (*i = 0; *i < (UTF_SIZ + 1); ++(*i))
- if (((unsigned char)c & utfmask[*i]) == utfbyte[*i]) return (unsigned char)c & ~utfmask[*i];
- return 0;
+ for (*i = 0; *i < (UTF_SIZ + 1); ++(*i))
+ if (((unsigned char)c & utfmask[*i]) == utfbyte[*i]) return (unsigned char)c & ~utfmask[*i];
+ return 0;
}
static size_t utf8validate(long *u, size_t i) {
- if (!BETWEEN(*u, utfmin[i], utfmax[i]) || BETWEEN(*u, 0xD800, 0xDFFF)) *u = UTF_INVALID;
- for (i = 1; *u > utfmax[i]; ++i);
- return i;
+ if (!BETWEEN(*u, utfmin[i], utfmax[i]) || BETWEEN(*u, 0xD800, 0xDFFF)) *u = UTF_INVALID;
+ for (i = 1; *u > utfmax[i]; ++i);
+ return i;
}
static size_t utf8decode(const char *c, long *u, size_t clen) {
- size_t i, j, len, type;
- long udecoded;
-
- *u = UTF_INVALID;
- if (!clen) return 0;
- udecoded = utf8decodebyte(c[0], &len);
- if (!BETWEEN(len, 1, UTF_SIZ)) return 1;
- for (i = 1, j = 1; i < clen && j < len; ++i, ++j) {
- udecoded = (udecoded << 6) | utf8decodebyte(c[i], &type);
- if (type) return j;
- }
- if (j < len) return 0;
- *u = udecoded;
- utf8validate(u, len);
-
- return len;
+ size_t i, j, len, type;
+ long udecoded;
+
+ *u = UTF_INVALID;
+ if (!clen) return 0;
+ udecoded = utf8decodebyte(c[0], &len);
+ if (!BETWEEN(len, 1, UTF_SIZ)) return 1;
+ for (i = 1, j = 1; i < clen && j < len; ++i, ++j) {
+ udecoded = (udecoded << 6) | utf8decodebyte(c[i], &type);
+ if (type) return j;
+ }
+ if (j < len) return 0;
+ *u = udecoded;
+ utf8validate(u, len);
+
+ return len;
}
Drw *drw_create(Display *dpy, int screen, Window root, unsigned int w, unsigned int h) {
- Drw *drw = ecalloc(1, sizeof(Drw));
-
- drw->dpy = dpy;
- drw->screen = screen;
- drw->root = root;
- drw->w = w;
- drw->h = h;
- drw->drawable = XCreatePixmap(dpy, root, w, h, DefaultDepth(dpy, screen));
- drw->picture = XRenderCreatePicture(dpy, drw->drawable, XRenderFindVisualFormat(dpy, DefaultVisual(dpy, screen)), 0, NULL);
- drw->gc = XCreateGC(dpy, root, 0, NULL);
- XSetLineAttributes(dpy, drw->gc, 1, LineSolid, CapButt, JoinMiter);
-
- return drw;
+ Drw *drw = ecalloc(1, sizeof(Drw));
+
+ drw->dpy = dpy;
+ drw->screen = screen;
+ drw->root = root;
+ drw->w = w;
+ drw->h = h;
+ drw->drawable = XCreatePixmap(dpy, root, w, h, DefaultDepth(dpy, screen));
+ drw->picture = XRenderCreatePicture(dpy, drw->drawable, XRenderFindVisualFormat(dpy, DefaultVisual(dpy, screen)), 0, NULL);
+ drw->gc = XCreateGC(dpy, root, 0, NULL);
+ XSetLineAttributes(dpy, drw->gc, 1, LineSolid, CapButt, JoinMiter);
+
+ return drw;
}
void drw_resize(Drw *drw, unsigned int w, unsigned int h) {
- if (!drw) return;
-
- drw->w = w;
- drw->h = h;
- if (drw->picture) XRenderFreePicture(drw->dpy, drw->picture);
- if (drw->drawable) XFreePixmap(drw->dpy, drw->drawable);
- drw->drawable = XCreatePixmap(drw->dpy, drw->root, w, h, DefaultDepth(drw->dpy, drw->screen));
- drw->picture = XRenderCreatePicture(drw->dpy, drw->drawable, XRenderFindVisualFormat(drw->dpy, DefaultVisual(drw->dpy, drw->screen)), 0, NULL);
+ if (!drw) return;
+
+ drw->w = w;
+ drw->h = h;
+ if (drw->picture) XRenderFreePicture(drw->dpy, drw->picture);
+ if (drw->drawable) XFreePixmap(drw->dpy, drw->drawable);
+ drw->drawable = XCreatePixmap(drw->dpy, drw->root, w, h, DefaultDepth(drw->dpy, drw->screen));
+ drw->picture = XRenderCreatePicture(drw->dpy, drw->drawable, XRenderFindVisualFormat(drw->dpy, DefaultVisual(drw->dpy, drw->screen)), 0, NULL);
}
void drw_free(Drw *drw) {
- XRenderFreePicture(drw->dpy, drw->picture);
- XFreePixmap(drw->dpy, drw->drawable);
- XFreeGC(drw->dpy, drw->gc);
- drw_fontset_free(drw->fonts);
- free(drw);
+ XRenderFreePicture(drw->dpy, drw->picture);
+ XFreePixmap(drw->dpy, drw->drawable);
+ XFreeGC(drw->dpy, drw->gc);
+ drw_fontset_free(drw->fonts);
+ free(drw);
}
/* This function is an implementation detail. Library users should use
* drw_fontset_create instead.
*/
static Fnt *xfont_create(Drw *drw, const char *fontname, FcPattern *fontpattern) {
- Fnt *font;
- XftFont *xfont = NULL;
- FcPattern *pattern = NULL;
+ Fnt *font;
+ XftFont *xfont = NULL;
+ FcPattern *pattern = NULL;
- if (fontname) {
- /* Using the pattern found at font->xfont->pattern does not yield the
+ if (fontname) {
+ /* Using the pattern found at font->xfont->pattern does not yield the
* same substitution results as using the pattern returned by
* FcNameParse; using the latter results in the desired fallback
* behaviour whereas the former just results in missing-character
* rectangles being drawn, at least with some fonts. */
- if (!(xfont = XftFontOpenName(drw->dpy, drw->screen, fontname))) {
- fprintf(stderr, "error, cannot load font from name: '%s'\n", fontname);
- return NULL;
- }
- if (!(pattern = FcNameParse((FcChar8 *)fontname))) {
- fprintf(stderr, "error, cannot parse font name to pattern: '%s'\n", fontname);
- XftFontClose(drw->dpy, xfont);
- return NULL;
- }
- } else if (fontpattern) {
- if (!(xfont = XftFontOpenPattern(drw->dpy, fontpattern))) {
- fprintf(stderr, "error, cannot load font from pattern.\n");
- return NULL;
- }
- } else {
- die("no font specified.");
- }
-
- font = ecalloc(1, sizeof(Fnt));
- font->xfont = xfont;
- font->pattern = pattern;
- font->h = xfont->ascent + xfont->descent;
- font->dpy = drw->dpy;
-
- return font;
+ if (!(xfont = XftFontOpenName(drw->dpy, drw->screen, fontname))) {
+ fprintf(stderr, "error, cannot load font from name: '%s'\n", fontname);
+ return NULL;
+ }
+ if (!(pattern = FcNameParse((FcChar8 *)fontname))) {
+ fprintf(stderr, "error, cannot parse font name to pattern: '%s'\n", fontname);
+ XftFontClose(drw->dpy, xfont);
+ return NULL;
+ }
+ } else if (fontpattern) {
+ if (!(xfont = XftFontOpenPattern(drw->dpy, fontpattern))) {
+ fprintf(stderr, "error, cannot load font from pattern.\n");
+ return NULL;
+ }
+ } else {
+ die("no font specified.");
+ }
+
+ font = ecalloc(1, sizeof(Fnt));
+ font->xfont = xfont;
+ font->pattern = pattern;
+ font->h = xfont->ascent + xfont->descent;
+ font->dpy = drw->dpy;
+
+ return font;
}
static void xfont_free(Fnt *font) {
- if (!font) return;
- if (font->pattern) FcPatternDestroy(font->pattern);
- XftFontClose(font->dpy, font->xfont);
- free(font);
+ if (!font) return;
+ if (font->pattern) FcPatternDestroy(font->pattern);
+ XftFontClose(font->dpy, font->xfont);
+ free(font);
}
Fnt *drw_fontset_create(Drw *drw, const char *fonts[], size_t fontcount) {
- Fnt *cur, *ret = NULL;
- size_t i;
-
- if (!drw || !fonts) return NULL;
-
- for (i = 1; i <= fontcount; i++) {
- if ((cur = xfont_create(drw, fonts[fontcount - i], NULL))) {
- cur->next = ret;
- ret = cur;
- }
- }
- return (drw->fonts = ret);
+ Fnt *cur, *ret = NULL;
+ size_t i;
+
+ if (!drw || !fonts) return NULL;
+
+ for (i = 1; i <= fontcount; i++) {
+ if ((cur = xfont_create(drw, fonts[fontcount - i], NULL))) {
+ cur->next = ret;
+ ret = cur;
+ }
+ }
+ return (drw->fonts = ret);
}
void drw_fontset_free(Fnt *font) {
- if (font) {
- drw_fontset_free(font->next);
- xfont_free(font);
- }
+ if (font) {
+ drw_fontset_free(font->next);
+ xfont_free(font);
+ }
}
void drw_clr_create(Drw *drw, Clr *dest, const char *clrname) {
- if (!drw || !dest || !clrname) return;
+ if (!drw || !dest || !clrname) return;
- if (!XftColorAllocName(drw->dpy, DefaultVisual(drw->dpy, drw->screen), DefaultColormap(drw->dpy, drw->screen), clrname, dest)) die("error, cannot allocate color '%s'", clrname);
+ if (!XftColorAllocName(drw->dpy, DefaultVisual(drw->dpy, drw->screen), DefaultColormap(drw->dpy, drw->screen), clrname, dest)) die("error, cannot allocate color '%s'", clrname);
}
/* Wrapper to create color schemes. The caller has to call free(3) on the
* returned color scheme when done using it. */
Clr *drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount) {
- size_t i;
- Clr *ret;
+ size_t i;
+ Clr *ret;
- /* need at least two colors for a scheme */
- if (!drw || !clrnames || clrcount < 2 || !(ret = ecalloc(clrcount, sizeof(XftColor)))) return NULL;
+ /* need at least two colors for a scheme */
+ if (!drw || !clrnames || clrcount < 2 || !(ret = ecalloc(clrcount, sizeof(XftColor)))) return NULL;
- for (i = 0; i < clrcount; i++) drw_clr_create(drw, &ret[i], clrnames[i]);
- return ret;
+ for (i = 0; i < clrcount; i++) drw_clr_create(drw, &ret[i], clrnames[i]);
+ return ret;
}
void drw_setfontset(Drw *drw, Fnt *set) {
- if (drw) drw->fonts = set;
+ if (drw) drw->fonts = set;
}
void drw_setscheme(Drw *drw, Clr *scm) {
- if (drw) drw->scheme = scm;
+ if (drw) drw->scheme = scm;
}
Picture drw_picture_create_resized(Drw *drw, char *src, unsigned int sw, unsigned int sh, unsigned int dw, unsigned int dh) {
- Picture pic;
- Pixmap pm;
- GC gc;
- if (sw <= (dw << 1u) && sh <= (dh << 1u)) {
- XImage img = {sw, sh, 0, ZPixmap, src, ImageByteOrder(drw->dpy), BitmapUnit(drw->dpy), BitmapBitOrder(drw->dpy), 32, 32, 0, 32, 0, 0, 0};
- XInitImage(&img);
- pm = XCreatePixmap(drw->dpy, drw->root, sw, sh, 32);
- gc = XCreateGC(drw->dpy, pm, 0, NULL);
- XPutImage(drw->dpy, pm, gc, &img, 0, 0, 0, 0, sw, sh);
- pic = XRenderCreatePicture(drw->dpy, pm, XRenderFindStandardFormat(drw->dpy, PictStandardARGB32), 0, NULL);
- XRenderSetPictureFilter(drw->dpy, pic, FilterBilinear, NULL, 0);
- XTransform xf;
- xf.matrix[0][0] = (sw << 16u) / dw;
- xf.matrix[0][1] = 0;
- xf.matrix[0][2] = 0;
- xf.matrix[1][0] = 0;
- xf.matrix[1][1] = (sh << 16u) / dh;
- xf.matrix[1][2] = 0;
- xf.matrix[2][0] = 0;
- xf.matrix[2][1] = 0;
- xf.matrix[2][2] = 65536;
- XRenderSetPictureTransform(drw->dpy, pic, &xf);
- } else {
- Imlib_Image origin = imlib_create_image_using_data(sw, sh, (DATA32 *)src);
- if (!origin) return None;
- imlib_context_set_image(origin);
- imlib_image_set_has_alpha(1);
- Imlib_Image scaled = imlib_create_cropped_scaled_image(0, 0, sw, sh, dw, dh);
- imlib_free_image_and_decache();
- if (!scaled) return None;
- imlib_context_set_image(scaled);
- imlib_image_set_has_alpha(1);
- XImage img = {dw, dh, 0, ZPixmap, (char *)imlib_image_get_data_for_reading_only(), ImageByteOrder(drw->dpy), BitmapUnit(drw->dpy), BitmapBitOrder(drw->dpy), 32, 32, 0, 32, 0, 0, 0};
- XInitImage(&img);
- pm = XCreatePixmap(drw->dpy, drw->root, dw, dh, 32);
- gc = XCreateGC(drw->dpy, pm, 0, NULL);
- XPutImage(drw->dpy, pm, gc, &img, 0, 0, 0, 0, dw, dh);
- imlib_free_image_and_decache();
- pic = XRenderCreatePicture(drw->dpy, pm, XRenderFindStandardFormat(drw->dpy, PictStandardARGB32), 0, NULL);
- }
- XFreePixmap(drw->dpy, pm);
- XFreeGC(drw->dpy, gc);
- return pic;
+ Picture pic;
+ Pixmap pm;
+ GC gc;
+ if (sw <= (dw << 1u) && sh <= (dh << 1u)) {
+ XImage img = {sw, sh, 0, ZPixmap, src, ImageByteOrder(drw->dpy), BitmapUnit(drw->dpy), BitmapBitOrder(drw->dpy), 32, 32, 0, 32, 0, 0, 0};
+ XInitImage(&img);
+ pm = XCreatePixmap(drw->dpy, drw->root, sw, sh, 32);
+ gc = XCreateGC(drw->dpy, pm, 0, NULL);
+ XPutImage(drw->dpy, pm, gc, &img, 0, 0, 0, 0, sw, sh);
+ pic = XRenderCreatePicture(drw->dpy, pm, XRenderFindStandardFormat(drw->dpy, PictStandardARGB32), 0, NULL);
+ XRenderSetPictureFilter(drw->dpy, pic, FilterBilinear, NULL, 0);
+ XTransform xf;
+ xf.matrix[0][0] = (sw << 16u) / dw;
+ xf.matrix[0][1] = 0;
+ xf.matrix[0][2] = 0;
+ xf.matrix[1][0] = 0;
+ xf.matrix[1][1] = (sh << 16u) / dh;
+ xf.matrix[1][2] = 0;
+ xf.matrix[2][0] = 0;
+ xf.matrix[2][1] = 0;
+ xf.matrix[2][2] = 65536;
+ XRenderSetPictureTransform(drw->dpy, pic, &xf);
+ } else {
+ Imlib_Image origin = imlib_create_image_using_data(sw, sh, (DATA32 *)src);
+ if (!origin) return None;
+ imlib_context_set_image(origin);
+ imlib_image_set_has_alpha(1);
+ Imlib_Image scaled = imlib_create_cropped_scaled_image(0, 0, sw, sh, dw, dh);
+ imlib_free_image_and_decache();
+ if (!scaled) return None;
+ imlib_context_set_image(scaled);
+ imlib_image_set_has_alpha(1);
+ XImage img = {dw, dh, 0, ZPixmap, (char *)imlib_image_get_data_for_reading_only(), ImageByteOrder(drw->dpy), BitmapUnit(drw->dpy), BitmapBitOrder(drw->dpy), 32, 32, 0, 32, 0, 0, 0};
+ XInitImage(&img);
+ pm = XCreatePixmap(drw->dpy, drw->root, dw, dh, 32);
+ gc = XCreateGC(drw->dpy, pm, 0, NULL);
+ XPutImage(drw->dpy, pm, gc, &img, 0, 0, 0, 0, dw, dh);
+ imlib_free_image_and_decache();
+ pic = XRenderCreatePicture(drw->dpy, pm, XRenderFindStandardFormat(drw->dpy, PictStandardARGB32), 0, NULL);
+ }
+ XFreePixmap(drw->dpy, pm);
+ XFreeGC(drw->dpy, gc);
+ return pic;
}
void drw_rect(Drw *drw, int x, int y, unsigned int w, unsigned int h, int filled, int invert) {
- if (!drw || !drw->scheme) return;
- XSetForeground(drw->dpy, drw->gc, invert ? drw->scheme[ColBg].pixel : drw->scheme[ColFg].pixel);
- if (filled)
- XFillRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w, h);
- else
- XDrawRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w - 1, h - 1);
+ if (!drw || !drw->scheme) return;
+ XSetForeground(drw->dpy, drw->gc, invert ? drw->scheme[ColBg].pixel : drw->scheme[ColFg].pixel);
+ if (filled)
+ XFillRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w, h);
+ else
+ XDrawRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w - 1, h - 1);
}
int drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lpad, const char *text, int invert) {
- int i, ty, ellipsis_x = 0;
- unsigned int tmpw, ew, ellipsis_w = 0, ellipsis_len;
- XftDraw *d = NULL;
- Fnt *usedfont, *curfont, *nextfont;
- int utf8strlen, utf8charlen, render = x || y || w || h;
- long utf8codepoint = 0;
- const char *utf8str;
- FcCharSet *fccharset;
- FcPattern *fcpattern;
- FcPattern *match;
- XftResult result;
- int charexists = 0, overflow = 0;
- /* keep track of a couple codepoints for which we have no match. */
- enum { nomatches_len = 64 };
- static struct {
- long codepoint[nomatches_len];
- unsigned int idx;
- } nomatches;
- static unsigned int ellipsis_width = 0;
-
- if (!drw || (render && (!drw->scheme || !w)) || !text || !drw->fonts) return 0;
-
- if (!render) {
- w = invert ? invert : ~invert;
- } else {
- XSetForeground(drw->dpy, drw->gc, drw->scheme[invert ? ColFg : ColBg].pixel);
- XFillRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w, h);
- d = XftDrawCreate(drw->dpy, drw->drawable, DefaultVisual(drw->dpy, drw->screen), DefaultColormap(drw->dpy, drw->screen));
- x += lpad;
- w -= lpad;
- }
-
- usedfont = drw->fonts;
- if (!ellipsis_width && render) ellipsis_width = drw_fontset_getwidth(drw, "...");
- while (1) {
- ew = ellipsis_len = utf8strlen = 0;
- utf8str = text;
- nextfont = NULL;
- while (*text) {
- utf8charlen = utf8decode(text, &utf8codepoint, UTF_SIZ);
- for (curfont = drw->fonts; curfont; curfont = curfont->next) {
- charexists = charexists || XftCharExists(drw->dpy, curfont->xfont, utf8codepoint);
- if (charexists) {
- drw_font_getexts(curfont, text, utf8charlen, &tmpw, NULL);
- if (ew + ellipsis_width <= w) {
- /* keep track where the ellipsis still fits */
- ellipsis_x = x + ew;
- ellipsis_w = w - ew;
- ellipsis_len = utf8strlen;
- }
-
- if (ew + tmpw > w) {
- overflow = 1;
- /* called from drw_fontset_getwidth_clamp():
+ int i, ty, ellipsis_x = 0;
+ unsigned int tmpw, ew, ellipsis_w = 0, ellipsis_len;
+ XftDraw *d = NULL;
+ Fnt *usedfont, *curfont, *nextfont;
+ int utf8strlen, utf8charlen, render = x || y || w || h;
+ long utf8codepoint = 0;
+ const char *utf8str;
+ FcCharSet *fccharset;
+ FcPattern *fcpattern;
+ FcPattern *match;
+ XftResult result;
+ int charexists = 0, overflow = 0;
+ /* keep track of a couple codepoints for which we have no match. */
+ enum { nomatches_len = 64 };
+ static struct {
+ long codepoint[nomatches_len];
+ unsigned int idx;
+ } nomatches;
+ static unsigned int ellipsis_width = 0;
+
+ if (!drw || (render && (!drw->scheme || !w)) || !text || !drw->fonts) return 0;
+
+ if (!render) {
+ w = invert ? invert : ~invert;
+ } else {
+ XSetForeground(drw->dpy, drw->gc, drw->scheme[invert ? ColFg : ColBg].pixel);
+ XFillRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w, h);
+ d = XftDrawCreate(drw->dpy, drw->drawable, DefaultVisual(drw->dpy, drw->screen), DefaultColormap(drw->dpy, drw->screen));
+ x += lpad;
+ w -= lpad;
+ }
+
+ usedfont = drw->fonts;
+ if (!ellipsis_width && render) ellipsis_width = drw_fontset_getwidth(drw, "...");
+ while (1) {
+ ew = ellipsis_len = utf8strlen = 0;
+ utf8str = text;
+ nextfont = NULL;
+ while (*text) {
+ utf8charlen = utf8decode(text, &utf8codepoint, UTF_SIZ);
+ for (curfont = drw->fonts; curfont; curfont = curfont->next) {
+ charexists = charexists || XftCharExists(drw->dpy, curfont->xfont, utf8codepoint);
+ if (charexists) {
+ drw_font_getexts(curfont, text, utf8charlen, &tmpw, NULL);
+ if (ew + ellipsis_width <= w) {
+ /* keep track where the ellipsis still fits */
+ ellipsis_x = x + ew;
+ ellipsis_w = w - ew;
+ ellipsis_len = utf8strlen;
+ }
+
+ if (ew + tmpw > w) {
+ overflow = 1;
+ /* called from drw_fontset_getwidth_clamp():
* it wants the width AFTER the overflow
*/
- if (!render)
- x += tmpw;
- else
- utf8strlen = ellipsis_len;
- } else if (curfont == usedfont) {
- utf8strlen += utf8charlen;
- text += utf8charlen;
- ew += tmpw;
- } else {
- nextfont = curfont;
- }
- break;
- }
- }
-
- if (overflow || !charexists || nextfont)
- break;
- else
- charexists = 0;
- }
-
- if (utf8strlen) {
- if (render) {
- ty = y + (h - usedfont->h) / 2 + usedfont->xfont->ascent;
- XftDrawStringUtf8(d, &drw->scheme[invert ? ColBg : ColFg], usedfont->xfont, x, ty, (XftChar8 *)utf8str, utf8strlen);
- }
- x += ew;
- w -= ew;
- }
- if (render && overflow) drw_text(drw, ellipsis_x, y, ellipsis_w, h, 0, "...", invert);
-
- if (!*text || overflow) {
- break;
- } else if (nextfont) {
- charexists = 0;
- usedfont = nextfont;
- } else {
- /* Regardless of whether or not a fallback font is found, the
+ if (!render)
+ x += tmpw;
+ else
+ utf8strlen = ellipsis_len;
+ } else if (curfont == usedfont) {
+ utf8strlen += utf8charlen;
+ text += utf8charlen;
+ ew += tmpw;
+ } else {
+ nextfont = curfont;
+ }
+ break;
+ }
+ }
+
+ if (overflow || !charexists || nextfont)
+ break;
+ else
+ charexists = 0;
+ }
+
+ if (utf8strlen) {
+ if (render) {
+ ty = y + (h - usedfont->h) / 2 + usedfont->xfont->ascent;
+ XftDrawStringUtf8(d, &drw->scheme[invert ? ColBg : ColFg], usedfont->xfont, x, ty, (XftChar8 *)utf8str, utf8strlen);
+ }
+ x += ew;
+ w -= ew;
+ }
+ if (render && overflow) drw_text(drw, ellipsis_x, y, ellipsis_w, h, 0, "...", invert);
+
+ if (!*text || overflow) {
+ break;
+ } else if (nextfont) {
+ charexists = 0;
+ usedfont = nextfont;
+ } else {
+ /* Regardless of whether or not a fallback font is found, the
* character must be drawn. */
- charexists = 1;
-
- for (i = 0; i < nomatches_len; ++i) {
- /* avoid calling XftFontMatch if we know we won't find a match */
- if (utf8codepoint == nomatches.codepoint[i]) goto no_match;
- }
-
- fccharset = FcCharSetCreate();
- FcCharSetAddChar(fccharset, utf8codepoint);
-
- if (!drw->fonts->pattern) {
- /* Refer to the comment in xfont_create for more information. */
- die("the first font in the cache must be loaded from a font string.");
- }
-
- fcpattern = FcPatternDuplicate(drw->fonts->pattern);
- FcPatternAddCharSet(fcpattern, FC_CHARSET, fccharset);
- FcPatternAddBool(fcpattern, FC_SCALABLE, FcTrue);
-
- FcConfigSubstitute(NULL, fcpattern, FcMatchPattern);
- FcDefaultSubstitute(fcpattern);
- match = XftFontMatch(drw->dpy, drw->screen, fcpattern, &result);
-
- FcCharSetDestroy(fccharset);
- FcPatternDestroy(fcpattern);
-
- if (match) {
- usedfont = xfont_create(drw, NULL, match);
- if (usedfont && XftCharExists(drw->dpy, usedfont->xfont, utf8codepoint)) {
- for (curfont = drw->fonts; curfont->next; curfont = curfont->next); /* NOP */
- curfont->next = usedfont;
- } else {
- xfont_free(usedfont);
- nomatches.codepoint[++nomatches.idx % nomatches_len] = utf8codepoint;
- no_match:
- usedfont = drw->fonts;
- }
- }
- }
- }
- if (d) XftDrawDestroy(d);
-
- return x + (render ? w : 0);
+ charexists = 1;
+
+ for (i = 0; i < nomatches_len; ++i) {
+ /* avoid calling XftFontMatch if we know we won't find a match */
+ if (utf8codepoint == nomatches.codepoint[i]) goto no_match;
+ }
+
+ fccharset = FcCharSetCreate();
+ FcCharSetAddChar(fccharset, utf8codepoint);
+
+ if (!drw->fonts->pattern) {
+ /* Refer to the comment in xfont_create for more information. */
+ die("the first font in the cache must be loaded from a font string.");
+ }
+
+ fcpattern = FcPatternDuplicate(drw->fonts->pattern);
+ FcPatternAddCharSet(fcpattern, FC_CHARSET, fccharset);
+ FcPatternAddBool(fcpattern, FC_SCALABLE, FcTrue);
+
+ FcConfigSubstitute(NULL, fcpattern, FcMatchPattern);
+ FcDefaultSubstitute(fcpattern);
+ match = XftFontMatch(drw->dpy, drw->screen, fcpattern, &result);
+
+ FcCharSetDestroy(fccharset);
+ FcPatternDestroy(fcpattern);
+
+ if (match) {
+ usedfont = xfont_create(drw, NULL, match);
+ if (usedfont && XftCharExists(drw->dpy, usedfont->xfont, utf8codepoint)) {
+ for (curfont = drw->fonts; curfont->next; curfont = curfont->next); /* NOP */
+ curfont->next = usedfont;
+ } else {
+ xfont_free(usedfont);
+ nomatches.codepoint[++nomatches.idx % nomatches_len] = utf8codepoint;
+ no_match:
+ usedfont = drw->fonts;
+ }
+ }
+ }
+ }
+ if (d) XftDrawDestroy(d);
+
+ return x + (render ? w : 0);
}
void drw_pic(Drw *drw, int x, int y, unsigned int w, unsigned int h, Picture pic) {
- if (!drw) return;
- XRenderComposite(drw->dpy, PictOpOver, pic, None, drw->picture, 0, 0, 0, 0, x, y, w, h);
+ if (!drw) return;
+ XRenderComposite(drw->dpy, PictOpOver, pic, None, drw->picture, 0, 0, 0, 0, x, y, w, h);
}
void drw_map(Drw *drw, Window win, int x, int y, unsigned int w, unsigned int h) {
- if (!drw) return;
+ if (!drw) return;
- XCopyArea(drw->dpy, drw->drawable, win, drw->gc, x, y, w, h, 0, 0);
- XSync(drw->dpy, False);
+ XCopyArea(drw->dpy, drw->drawable, win, drw->gc, x, y, w, h, 0, 0);
+ XSync(drw->dpy, False);
}
unsigned int drw_fontset_getwidth(Drw *drw, const char *text) {
- if (!drw || !drw->fonts || !text) return 0;
- return drw_text(drw, 0, 0, 0, 0, 0, text, 0);
+ if (!drw || !drw->fonts || !text) return 0;
+ return drw_text(drw, 0, 0, 0, 0, 0, text, 0);
}
unsigned int drw_fontset_getwidth_clamp(Drw *drw, const char *text, unsigned int n) {
- unsigned int tmp = 0;
- if (drw && drw->fonts && text && n) tmp = drw_text(drw, 0, 0, 0, 0, 0, text, n);
- return MIN(n, tmp);
+ unsigned int tmp = 0;
+ if (drw && drw->fonts && text && n) tmp = drw_text(drw, 0, 0, 0, 0, 0, text, n);
+ return MIN(n, tmp);
}
void drw_font_getexts(Fnt *font, const char *text, unsigned int len, unsigned int *w, unsigned int *h) {
- XGlyphInfo ext;
+ XGlyphInfo ext;
- if (!font || !text) return;
+ if (!font || !text) return;
- XftTextExtentsUtf8(font->dpy, font->xfont, (XftChar8 *)text, len, &ext);
- if (w) *w = ext.xOff;
- if (h) *h = font->h;
+ XftTextExtentsUtf8(font->dpy, font->xfont, (XftChar8 *)text, len, &ext);
+ if (w) *w = ext.xOff;
+ if (h) *h = font->h;
}
Cur *drw_cur_create(Drw *drw, int shape) {
- Cur *cur;
+ Cur *cur;
- if (!drw || !(cur = ecalloc(1, sizeof(Cur)))) return NULL;
+ if (!drw || !(cur = ecalloc(1, sizeof(Cur)))) return NULL;
- cur->cursor = XCreateFontCursor(drw->dpy, shape);
+ cur->cursor = XCreateFontCursor(drw->dpy, shape);
- return cur;
+ return cur;
}
void drw_cur_free(Drw *drw, Cur *cursor) {
- if (!cursor) return;
+ if (!cursor) return;
- XFreeCursor(drw->dpy, cursor->cursor);
- free(cursor);
+ XFreeCursor(drw->dpy, cursor->cursor);
+ free(cursor);
}
diff --git a/src/drw.h b/src/drw.h
index b9914bf..f1f70d5 100644
--- a/src/drw.h
+++ b/src/drw.h
@@ -6,30 +6,30 @@
#include
typedef struct {
- Cursor cursor;
+ Cursor cursor;
} Cur;
typedef struct Fnt {
- Display *dpy;
- unsigned int h;
- XftFont *xfont;
- FcPattern *pattern;
- struct Fnt *next;
+ Display *dpy;
+ unsigned int h;
+ XftFont *xfont;
+ FcPattern *pattern;
+ struct Fnt *next;
} Fnt;
enum { ColFg, ColBg, ColBorder }; /* Clr scheme index */
typedef XftColor Clr;
typedef struct {
- unsigned int w, h;
- Display *dpy;
- int screen;
- Window root;
- Drawable drawable;
- Picture picture;
- GC gc;
- Clr *scheme;
- Fnt *fonts;
+ unsigned int w, h;
+ Display *dpy;
+ int screen;
+ Window root;
+ Drawable drawable;
+ Picture picture;
+ GC gc;
+ Clr *scheme;
+ Fnt *fonts;
} Drw;
/* Drawable abstraction */
diff --git a/src/dwm.1 b/src/dwm.1
deleted file mode 100644
index ddc8321..0000000
--- a/src/dwm.1
+++ /dev/null
@@ -1,176 +0,0 @@
-.TH DWM 1 dwm\-VERSION
-.SH NAME
-dwm \- dynamic window manager
-.SH SYNOPSIS
-.B dwm
-.RB [ \-v ]
-.SH DESCRIPTION
-dwm is a dynamic window manager for X. It manages windows in tiled, monocle
-and floating layouts. Either layout can be applied dynamically, optimising the
-environment for the application in use and the task performed.
-.P
-In tiled layouts windows are managed in a master and stacking area. The master
-area on the left contains one window by default, and the stacking area on the
-right contains all other windows. The number of master area windows can be
-adjusted from zero to an arbitrary number. In monocle layout all windows are
-maximised to the screen size. In floating layout windows can be resized and
-moved freely. Dialog windows are always managed floating, regardless of the
-layout applied.
-.P
-Windows are grouped by tags. Each window can be tagged with one or multiple
-tags. Selecting certain tags displays all windows with these tags.
-.P
-Each screen contains a small status bar which displays all available tags, the
-layout, the title of the focused window, and the text read from the root window
-name property, if the screen is focused. A floating window is indicated with an
-empty square and a maximised floating window is indicated with a filled square
-before the windows title. The selected tags are indicated with a different
-color. The tags of the focused window are indicated with a filled square in the
-top left corner. The tags which are applied to one or more windows are
-indicated with an empty square in the top left corner.
-.P
-dwm draws a small border around windows to indicate the focus state.
-.SH OPTIONS
-.TP
-.B \-v
-prints version information to stderr, then exits.
-.SH USAGE
-.SS Status bar
-.TP
-.B X root window name
-is read and displayed in the status text area. It can be set with the
-.BR xsetroot (1)
-command.
-.TP
-.B Button1
-click on a tag label to display all windows with that tag, click on the layout
-label toggles between tiled and floating layout.
-.TP
-.B Button3
-click on a tag label adds/removes all windows with that tag to/from the view.
-.TP
-.B Mod1\-Button1
-click on a tag label applies that tag to the focused window.
-.TP
-.B Mod1\-Button3
-click on a tag label adds/removes that tag to/from the focused window.
-.SS Keyboard commands
-.TP
-.B Mod1\-Shift\-Return
-Start
-.BR st(1).
-.TP
-.B Mod1\-p
-Spawn
-.BR dmenu(1)
-for launching other programs.
-.TP
-.B Mod1\-,
-Focus previous screen, if any.
-.TP
-.B Mod1\-.
-Focus next screen, if any.
-.TP
-.B Mod1\-Shift\-,
-Send focused window to previous screen, if any.
-.TP
-.B Mod1\-Shift\-.
-Send focused window to next screen, if any.
-.TP
-.B Mod1\-b
-Toggles bar on and off.
-.TP
-.B Mod1\-t
-Sets tiled layout.
-.TP
-.B Mod1\-f
-Sets floating layout.
-.TP
-.B Mod1\-m
-Sets monocle layout.
-.TP
-.B Mod1\-space
-Toggles between current and previous layout.
-.TP
-.B Mod1\-j
-Focus next window.
-.TP
-.B Mod1\-k
-Focus previous window.
-.TP
-.B Mod1\-i
-Increase number of windows in master area.
-.TP
-.B Mod1\-d
-Decrease number of windows in master area.
-.TP
-.B Mod1\-l
-Increase master area size.
-.TP
-.B Mod1\-h
-Decrease master area size.
-.TP
-.B Mod1\-Return
-Zooms/cycles focused window to/from master area (tiled layouts only).
-.TP
-.B Mod1\-Shift\-c
-Close focused window.
-.TP
-.B Mod1\-Shift\-space
-Toggle focused window between tiled and floating state.
-.TP
-.B Mod1\-Tab
-Toggles to the previously selected tags.
-.TP
-.B Mod1\-Shift\-[1..n]
-Apply nth tag to focused window.
-.TP
-.B Mod1\-Shift\-0
-Apply all tags to focused window.
-.TP
-.B Mod1\-Control\-Shift\-[1..n]
-Add/remove nth tag to/from focused window.
-.TP
-.B Mod1\-[1..n]
-View all windows with nth tag.
-.TP
-.B Mod1\-0
-View all windows with any tag.
-.TP
-.B Mod1\-Control\-[1..n]
-Add/remove all windows with nth tag to/from the view.
-.TP
-.B Mod1\-Shift\-q
-Quit dwm.
-.SS Mouse commands
-.TP
-.B Mod1\-Button1
-Move focused window while dragging. Tiled windows will be toggled to the floating state.
-.TP
-.B Mod1\-Button2
-Toggles focused window between floating and tiled state.
-.TP
-.B Mod1\-Button3
-Resize focused window while dragging. Tiled windows will be toggled to the floating state.
-.SH CUSTOMIZATION
-dwm is customized by creating a custom config.h and (re)compiling the source
-code. This keeps it fast, secure and simple.
-.SH SEE ALSO
-.BR dmenu (1),
-.BR st (1)
-.SH ISSUES
-Java applications which use the XToolkit/XAWT backend may draw grey windows
-only. The XToolkit/XAWT backend breaks ICCCM-compliance in recent JDK 1.5 and early
-JDK 1.6 versions, because it assumes a reparenting window manager. Possible workarounds
-are using JDK 1.4 (which doesn't contain the XToolkit/XAWT backend) or setting the
-environment variable
-.BR AWT_TOOLKIT=MToolkit
-(to use the older Motif backend instead) or running
-.B xprop -root -f _NET_WM_NAME 32a -set _NET_WM_NAME LG3D
-or
-.B wmname LG3D
-(to pretend that a non-reparenting window manager is running that the
-XToolkit/XAWT backend can recognize) or when using OpenJDK setting the environment variable
-.BR _JAVA_AWT_WM_NONREPARENTING=1 .
-.SH BUGS
-Send all bug reports with a patch to hackers@suckless.org.
diff --git a/src/icon.c b/src/icon.c
new file mode 100644
index 0000000..fa15acf
--- /dev/null
+++ b/src/icon.c
@@ -0,0 +1,1392 @@
+#include "icon.h"
+
+#include
+
+#define W 56
+#define H 56
+
+static const int width = W;
+static const int height = H;
+static int idx = 0;
+
+static const uint32_t icon0[H][W] = {
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFF1F1F1, 0xFFEFEFEF, 0xFFEEEEEE,
+ 0xFFEDEDED, 0xFFEDEDED, 0xFFEDEDED, 0xFFEDEDED, 0xFFEEEEEE, 0xFFEFEFEF, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0,
+ 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEFEFEF, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEDEDED, 0xFFEDEDED, 0xFFEEEEEE,
+ 0xFFEEEEEE, 0xFFEFEFEF, 0xFFF1F1F1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFEFEFEF, 0xFFECECEC, 0xFFF1F1F1, 0xFFF8F8F8, 0xFFF2F2F4, 0xFFF1F1F3,
+ 0xFFEEEEF0, 0xFFEBEBED, 0xFFE8E8EA, 0xFFE7E7E9, 0xFFE6E6E8, 0xFFE6E6E8, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9,
+ 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE6E6E8, 0xFFE6E6E8, 0xFFE7E7E9, 0xFFE8E8EA, 0xFFEBEBED, 0xFFEEEEF0,
+ 0xFFF1F1F3, 0xFFF3F3F5, 0xFFF8F8F8, 0xFFF1F1F1, 0xFFECECEC, 0xFFEFEFEF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFE5E5E7, 0xFFF7F7F9, 0xFFE0E0E0, 0xFFA8A8A6, 0xFF6F6F6D, 0xFF4B4B49, 0xFF3E3E3C,
+ 0xFF30302E, 0xFF2B2B29, 0xFF2D2D2B, 0xFF30302E, 0xFF31312F, 0xFF31312F, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D,
+ 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2E2E2C, 0xFF2F2F2D, 0xFF31312F, 0xFF31312F, 0xFF343432, 0xFF3C3C3A,
+ 0xFF494947, 0xFF535351, 0xFF767674, 0xFFADADAD, 0xFFE1E1E3, 0xFFF5F5F7, 0xFFE6E6E8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFE0E0E2, 0xFFF1F1F3, 0xFF9D9D9F, 0xFF222224, 0xFF000002, 0xFF000002, 0xFF020106, 0xFF010005,
+ 0xFF000004, 0xFF000004, 0xFF020106, 0xFF06050A, 0xFF07060B, 0xFF040308, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C,
+ 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF06050A, 0xFF08070C, 0xFF09080D, 0xFF08070C, 0xFF06050A, 0xFF040308,
+ 0xFF040308, 0xFF040308, 0xFF000004, 0xFF000004, 0xFF303032, 0xFFA1A1A3, 0xFFF3F3F5, 0xFFE7E7E7, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFDEDEE0, 0xFFF4F4F4, 0xFF626262, 0xFF000002, 0xFF050409, 0xFF121119, 0xFF1B1924, 0xFF211F2C, 0xFF262431,
+ 0xFF282633, 0xFF262431, 0xFF282633, 0xFF2E2C39, 0xFF32303D, 0xFF312F3C, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B,
+ 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF2F2D3A, 0xFF2F2D3A, 0xFF302E3B, 0xFF312F3C, 0xFF312F3C, 0xFF312F3C,
+ 0xFF2F2D3A, 0xFF2D2B38, 0xFF292732, 0xFF1C1B23, 0xFF000004, 0xFF060608, 0xFF686868, 0xFFEFEFEF, 0xFFE3E3E3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFE1E0E5, 0xFFF0F0F2, 0xFF666666, 0xFF050505, 0xFF050507, 0xFF17161E, 0xFF282633, 0xFF282536, 0xFF272437, 0xFF292639,
+ 0xFF292639, 0xFF252235, 0xFF242134, 0xFF292639, 0xFF2F2C3F, 0xFF322F42, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40,
+ 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF333043, 0xFF312E41, 0xFF2F2C3F, 0xFF2F2C3F, 0xFF312E41, 0xFF322F42,
+ 0xFF333043, 0xFF333043, 0xFF2D2A3B, 0xFF363441, 0xFF27262E, 0xFF0E0E10, 0xFF020202, 0xFF666666, 0xFFF5F5F5, 0xFFE0E0E2, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFEBEBEB, 0xFFF0EFF4, 0xFF9A9A9C, 0xFF000002, 0xFF070709, 0xFF1D1C22, 0xFF2E2C39, 0xFF292637, 0xFF242136, 0xFF272437, 0xFF262336,
+ 0xFF272437, 0xFF282538, 0xFF282538, 0xFF272437, 0xFF2B283B, 0xFF302D40, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41,
+ 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF322F42, 0xFF312E41, 0xFF312E41, 0xFF302D40,
+ 0xFF2F2C3F, 0xFF2E2B3E, 0xFF322F44, 0xFF2D2A3B, 0xFF33313C, 0xFF2C2B31, 0xFF141416, 0xFF030303, 0xFF9B9B9B, 0xFFEDEDEF, 0xFFEAEAEA, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFE5E5E5, 0xFFDADADC, 0xFF212025, 0xFF020107, 0xFF1D1C24, 0xFF282633, 0xFF242230, 0xFF1F1C2F, 0xFF272439, 0xFF262334, 0xFF232031,
+ 0xFF232031, 0xFF272435, 0xFF272435, 0xFF252233, 0xFF282536, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2C293A, 0xFF2D2A3B, 0xFF2E2B3C, 0xFF2F2C3D, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2F2C3D, 0xFF312E3F, 0xFF2A273A, 0xFF302D40, 0xFF2E2C3A, 0xFF312F3A, 0xFF212026, 0xFF020106, 0xFF2E2E30, 0xFFDCDCDC, 0xFFE5E5E5, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFE7E7E7, 0xFFA2A2A2, 0xFF000004, 0xFF0E0D15, 0xFF2A2836, 0xFF282536, 0xFF252235, 0xFF2A273A, 0xFF262336, 0xFF292637, 0xFF272435,
+ 0xFF262334, 0xFF262334, 0xFF252233, 0xFF252233, 0xFF282536, 0xFF2C293A, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E,
+ 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF312E3F, 0xFF312E3F, 0xFF302D3E, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF302D3E, 0xFF312E3F, 0xFF322F40, 0xFF2C293A, 0xFF2F2C3D, 0xFF2F2C3D, 0xFF363441, 0xFF1C1B21, 0xFF000002, 0xFFA6A6A4, 0xFFE7E7E7, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFE4E4E4, 0xFFEBEBEB, 0xFF6D6D6D, 0xFF000004, 0xFF1E1C27, 0xFF262336, 0xFF252237, 0xFF242136, 0xFF282538, 0xFF252233, 0xFF252233, 0xFF272435,
+ 0xFF292637, 0xFF282536, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2F2C3D, 0xFF2F2C3D, 0xFF302D3E, 0xFF2F2C3D,
+ 0xFF2E2B3C, 0xFF2D2A3B, 0xFF2C2A38, 0xFF333041, 0xFF2E2B3E, 0xFF2C293C, 0xFF302D3E, 0xFF26252D, 0xFF010103, 0xFF6E6F6A, 0xFFEBEBEB, 0xFFE4E4E4, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFE2E2E4, 0xFFE7E6EB, 0xFF484846, 0xFF010006, 0xFF252331, 0xFF282538, 0xFF242132, 0xFF272533, 0xFF242230, 0xFF262334, 0xFF282629, 0xFF2B2241,
+ 0xFF141833, 0xFF262535, 0xFF272936, 0xFF231F36, 0xFF2C2048, 0xFF292234, 0xFF232730, 0xFF313340, 0xFF2C2C38, 0xFF2D2D35, 0xFF2B2D3C, 0xFF2D2D47, 0xFF2D283F, 0xFF342C39,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2D2A3B, 0xFF2F2C3D, 0xFF302D3E, 0xFF2B283B, 0xFF302D40, 0xFF2B2936, 0xFF040308, 0xFF4F4F4D, 0xFFE5E4E9, 0xFFE1E1E3, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFE0E0E2, 0xFFE3E2E7, 0xFF3B3B39, 0xFF000005, 0xFF262432, 0xFF272437, 0xFF252233, 0xFF272533, 0xFF252331, 0xFF2A2738, 0xFF2E263E, 0xFF2E2C3A,
+ 0xFF3C7644, 0xFF2F4D43, 0xFF261E2D, 0xFF353338, 0xFF20242F, 0xFF252229, 0xFF25213C, 0xFF2C2642, 0xFF302840, 0xFF2F2B3A, 0xFF2B2936, 0xFF32313F, 0xFF2D2A3D, 0xFF2D283C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF302D3E, 0xFF2C293C, 0xFF302D40, 0xFF2B2936, 0xFF010005, 0xFF424240, 0xFFE2E1E6, 0xFFDFDFE1, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFDDDDDF, 0xFFDEDDE2, 0xFF2D2D2B, 0xFF000005, 0xFF272533, 0xFF272437, 0xFF262334, 0xFF272533, 0xFF252331, 0xFF2C293A, 0xFF1D2033, 0xFF3F7B48,
+ 0xFF80F88C, 0xFF64F86C, 0xFF5C4D3A, 0xFF292438, 0xFF31313B, 0xFF242831, 0xFF2D253C, 0xFF2B233A, 0xFF332942, 0xFF342A42, 0xFF2B2533, 0xFF302D36, 0xFF2D2D39, 0xFF2E2C41,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2F2C3D, 0xFF2C293A, 0xFF2E2B3C, 0xFF2C293C, 0xFF2F2C3F, 0xFF2C2A37, 0xFF000004, 0xFF343432, 0xFFDDDCE1, 0xFFDCDCDE, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFDADADC, 0xFFDAD9DE, 0xFF262624, 0xFF000005, 0xFF282634, 0xFF262336, 0xFF272435, 0xFF272533, 0xFF242230, 0xFF2B2839, 0xFF282530, 0xFF3B5A4B,
+ 0xFF5FF464, 0xFF53FF57, 0xFF76F87A, 0xFF3D5F47, 0xFF2A2430, 0xFF272B34, 0xFF26252A, 0xFF242328, 0xFF2A2732, 0xFF332B40, 0xFF332941, 0xFF302939, 0xFF2C2A35, 0xFF292B38,
+ 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B,
+ 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2B2839, 0xFF2D2A3B, 0xFF2C293C, 0xFF2E2B3E, 0xFF2D2B38, 0xFF020106, 0xFF2B2B29, 0xFFD9D8DD, 0xFFDADADC, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFDADADC, 0xFFD7D6DB, 0xFF232321, 0xFF010006, 0xFF272533, 0xFF242134, 0xFF272435, 0xFF272533, 0xFF242230, 0xFF292637, 0xFF343434, 0xFF3A2E3A,
+ 0xFF406C4B, 0xFF6BF56C, 0xFF63FF67, 0xFF6BF675, 0xFF325F42, 0xFF2D2638, 0xFF292B38, 0xFF2A2E37, 0xFF232730, 0xFF2A2A36, 0xFF322A3F, 0xFF2E243D, 0xFF2E293D, 0xFF2A2937,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2B2839, 0xFF2D2A3B, 0xFF2C293C, 0xFF2C293C, 0xFF2D2B38, 0xFF040308, 0xFF282826, 0xFFD6D5DA, 0xFFD9D9DB, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD9D9DB, 0xFFD5D4D9, 0xFF222220, 0xFF010006, 0xFF252331, 0xFF242134, 0xFF282536, 0xFF272533, 0xFF262432, 0xFF282536, 0xFF302F2D, 0xFF3B382F,
+ 0xFF423B42, 0xFF417147, 0xFF67F86D, 0xFF66FE75, 0xFF6FF57A, 0xFF2A5F31, 0xFF2C2439, 0xFF292641, 0xFF252A40, 0xFF272B34, 0xFF2D2A35, 0xFF2B213A, 0xFF312845, 0xFF2C2A3F,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2E2B3C, 0xFF2D2A3B, 0xFF2C293C, 0xFF2C293C, 0xFF2B2936, 0xFF030207, 0xFF272725, 0xFFD4D3D8, 0xFFD8D8DA, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD8D8DA, 0xFFD3D2D7, 0xFF21211F, 0xFF000005, 0xFF252331, 0xFF262336, 0xFF272435, 0xFF262432, 0xFF272533, 0xFF272435, 0xFF2E243C, 0xFF303435,
+ 0xFF433F40, 0xFF2F5035, 0xFF467B51, 0xFF66F370, 0xFF6AFB72, 0xFF6EF56B, 0xFF35653D, 0xFF30242E, 0xFF292546, 0xFF2A2E3A, 0xFF2E2E30, 0xFF2F283A, 0xFF2B2541, 0xFF282A39,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2E2B3C, 0xFF2B2839, 0xFF2B283B, 0xFF2D2A3D, 0xFF2A2835, 0xFF020106, 0xFF272725, 0xFFD1D0D5, 0xFFD6D6D8, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD7D7D9, 0xFFD2D1D6, 0xFF21211F, 0xFF000005, 0xFF252331, 0xFF282538, 0xFF272435, 0xFF242230, 0xFF272533, 0xFF262334, 0xFF282433, 0xFF2E2834,
+ 0xFF33313C, 0xFF414139, 0xFF4A3C39, 0xFF377D41, 0xFF67FA6B, 0xFF71FB70, 0xFF72EE80, 0xFF326B36, 0xFF2F2A30, 0xFF242539, 0xFF29292B, 0xFF312B39, 0xFF292639, 0xFF2A2F33,
+ 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839,
+ 0xFF2B2839, 0xFF2B2839, 0xFF2A2738, 0xFF2D2A3B, 0xFF282536, 0xFF292639, 0xFF2E2B3E, 0xFF2A2835, 0xFF010005, 0xFF272725, 0xFFCFCED3, 0xFFD5D5D7, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD6D6D8, 0xFFD0CFD4, 0xFF21211F, 0xFF000004, 0xFF252330, 0xFF252235, 0xFF272437, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF271D38, 0xFF312C30,
+ 0xFF2B2726, 0xFF322E3D, 0xFF4B4046, 0xFF34513F, 0xFF407A4A, 0xFF62F26E, 0xFF6EFF72, 0xFF5DF469, 0xFF523F43, 0xFF2B263C, 0xFF272634, 0xFF2C2B31, 0xFF302742, 0xFF2C2431,
+ 0xFF2E2836, 0xFF2C213F, 0xFF302833, 0xFF2D253C, 0xFF2C2642, 0xFF2B292E, 0xFF332A3D, 0xFF31233D, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839,
+ 0xFF2B2839, 0xFF2B2839, 0xFF2A2738, 0xFF2B2839, 0xFF2B2839, 0xFF2B283B, 0xFF2B283B, 0xFF2A2835, 0xFF010005, 0xFF242422, 0xFFCECDD2, 0xFFD5D5D7, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD5D5D7, 0xFFD0CFD4, 0xFF20201E, 0xFF000004, 0xFF252330, 0xFF252235, 0xFF272437, 0xFF262334, 0xFF252233, 0xFF262334, 0xFF262135, 0xFF22192C,
+ 0xFF2D2D35, 0xFF2A253C, 0xFF3A3E3D, 0xFF4B3939, 0xFF3B794A, 0xFF66EC65, 0xFF64FD64, 0xFF65F071, 0xFF50413E, 0xFF2F2A40, 0xFF27253B, 0xFF2B2C30, 0xFF2A2539, 0xFF2C2247,
+ 0xFF272A39, 0xFF26283F, 0xFF292C35, 0xFF272A3D, 0xFF252A40, 0xFF232A32, 0xFF28293B, 0xFF2A2937, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839,
+ 0xFF2B2839, 0xFF2B2839, 0xFF2A2738, 0xFF2B2839, 0xFF2B2839, 0xFF2B283B, 0xFF2B283B, 0xFF2A2835, 0xFF010005, 0xFF242422, 0xFFCECDD2, 0xFFD5D5D7, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD5D5D7, 0xFFCECDD2, 0xFF20201E, 0xFF000004, 0xFF252330, 0xFF262336, 0xFF272437, 0xFF262334, 0xFF252233, 0xFF252233, 0xFF262336, 0xFF292C35,
+ 0xFF2A2430, 0xFF2C362D, 0xFF342834, 0xFF356847, 0xFF6AF170, 0xFF70FE74, 0xFF74F082, 0xFF387943, 0xFF3D3131, 0xFF2C2C2C, 0xFF292B3A, 0xFF242633, 0xFF292A2F, 0xFF2E2E38,
+ 0xFF272636, 0xFF2B2A3C, 0xFF2B2B35, 0xFF272636, 0xFF292838, 0xFF2E2E3A, 0xFF282538, 0xFF242426, 0xFF2B2839, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738,
+ 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2B2839, 0xFF2A2738, 0xFF2B283B, 0xFF2B283B, 0xFF292734, 0xFF010005, 0xFF242422, 0xFFCCCBD0, 0xFFD4D4D6, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD4D4D6, 0xFFCDCCD1, 0xFF20201E, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF272437, 0xFF252233, 0xFF252233, 0xFF252233, 0xFF23233B, 0xFF262429,
+ 0xFF292F3B, 0xFF322030, 0xFF346248, 0xFF5CFB6B, 0xFF70FF74, 0xFF66F76C, 0xFF3C7D45, 0xFF35463C, 0xFF3A323D, 0xFF31332E, 0xFF292935, 0xFF26233E, 0xFF272936, 0xFF25282D,
+ 0xFF2B263C, 0xFF2C293C, 0xFF2B2937, 0xFF2B2738, 0xFF2E2737, 0xFF312940, 0xFF2C273E, 0xFF2E2D33, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738,
+ 0xFF2A2738, 0xFF2A2738, 0xFF292637, 0xFF2B2839, 0xFF2A2738, 0xFF2A273A, 0xFF2B283B, 0xFF292734, 0xFF000004, 0xFF242422, 0xFFCBCACF, 0xFFD3D3D5, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD3D3D5, 0xFFCBCACF, 0xFF1F1F1D, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF272437, 0xFF252233, 0xFF252233, 0xFF262334, 0xFF2B263D, 0xFF282C37,
+ 0xFF2C1A40, 0xFF445952, 0xFF5FF862, 0xFF64FD64, 0xFF62FA67, 0xFF3F7544, 0xFF483F3A, 0xFF423C40, 0xFF363435, 0xFF2A273A, 0xFF241D3C, 0xFF221A32, 0xFF2B2738, 0xFF2B2742,
+ 0xFF2A273C, 0xFF242333, 0xFF212234, 0xFF2A2937, 0xFF282435, 0xFF211C32, 0xFF232439, 0xFF232740, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF292637, 0xFF292637, 0xFF292637,
+ 0xFF292637, 0xFF2A2738, 0xFF292637, 0xFF2A2738, 0xFF2A2738, 0xFF2A273A, 0xFF2A273A, 0xFF292734, 0xFF000004, 0xFF232321, 0xFFC9C8CD, 0xFFD2D2D4, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD2D2D4, 0xFFC9C8CD, 0xFF20201E, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF262336, 0xFF252233, 0xFF262334, 0xFF282536, 0xFF2A292F, 0xFF322738,
+ 0xFF3F6848, 0xFF63F262, 0xFF78FF7D, 0xFF60F462, 0xFF477B57, 0xFF30473D, 0xFF42413C, 0xFF3B393A, 0xFF302A38, 0xFF413831, 0xFF447146, 0xFF40744D, 0xFF3A6F43, 0xFF3D734F,
+ 0xFF436F4E, 0xFF3F6F49, 0xFF3A6F43, 0xFF426E4D, 0xFF476B4F, 0xFF386D3F, 0xFF3E6A46, 0xFF322C3A, 0xFF2B2839, 0xFF2A2738, 0xFF2A2738, 0xFF292637, 0xFF292637, 0xFF292637,
+ 0xFF292637, 0xFF2A2738, 0xFF292637, 0xFF2A2738, 0xFF292637, 0xFF292639, 0xFF2A273A, 0xFF282633, 0xFF000004, 0xFF232321, 0xFFC7C6CB, 0xFFD1D1D3, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD1D1D3, 0xFFC8C7CC, 0xFF20201E, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF262336, 0xFF252233, 0xFF272435, 0xFF292637, 0xFF2B2736, 0xFF2D5938,
+ 0xFF5FEE6E, 0xFF66FE6D, 0xFF61F465, 0xFF497961, 0xFF4B3C39, 0xFF414137, 0xFF373542, 0xFF2F2933, 0xFF3D3131, 0xFF5EE879, 0xFF6CFF74, 0xFF67F36C, 0xFF75FC71, 0xFF75F771,
+ 0xFF74FD7B, 0xFF6EFC74, 0xFF66FE6B, 0xFF6FFD73, 0xFF78FD7E, 0xFF6BFF6D, 0xFF71F676, 0xFF408F4D, 0xFF2B2839, 0xFF2B2839, 0xFF2A2738, 0xFF292637, 0xFF292637, 0xFF292637,
+ 0xFF292637, 0xFF2A2738, 0xFF282536, 0xFF292637, 0xFF292637, 0xFF292639, 0xFF2A273A, 0xFF282633, 0xFF000004, 0xFF232321, 0xFFC6C5CA, 0xFFD0D0D2, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD0D0D2, 0xFFC7C6CB, 0xFF20201E, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF262336, 0xFF262334, 0xFF282536, 0xFF2A2738, 0xFF272435, 0xFF447851,
+ 0xFF79FE7E, 0xFF5EF864, 0xFF437550, 0xFF453F33, 0xFF284C32, 0xFF342E32, 0xFF2E2B36, 0xFF322830, 0xFF45303F, 0xFF4ECD5A, 0xFF76F163, 0xFF68F46F, 0xFF5BFD6A, 0xFF64F366,
+ 0xFF67EC6D, 0xFF66F26B, 0xFF61FA64, 0xFF63F167, 0xFF6AEA6F, 0xFF5FF162, 0xFF75F378, 0xFF387844, 0xFF2B2839, 0xFF2B2839, 0xFF2A2738, 0xFF292637, 0xFF292637, 0xFF292637,
+ 0xFF292637, 0xFF2A2738, 0xFF282536, 0xFF292637, 0xFF292637, 0xFF292639, 0xFF292639, 0xFF282633, 0xFF000004, 0xFF222220, 0xFFC5C4C9, 0xFFD0D0D2, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCFCED3, 0xFFC6C5CA, 0xFF1E1E1C, 0xFF000004, 0xFF252330, 0xFF272437, 0xFF252235, 0xFF282536, 0xFF272435, 0xFF292637, 0xFF342C37, 0xFF403835,
+ 0xFF507B60, 0xFF3F6C4D, 0xFF463D34, 0xFF374641, 0xFF302A34, 0xFF312E37, 0xFF2B2937, 0xFF2E2B36, 0xFF373238, 0xFF45403D, 0xFF395A47, 0xFF3E654A, 0xFF3E6747, 0xFF3B6744,
+ 0xFF3D684A, 0xFF3F6B4A, 0xFF3E6A49, 0xFF3B6746, 0xFF3D654A, 0xFF40614C, 0xFF4E473F, 0xFF3E3633, 0xFF312F3A, 0xFF2D2B38, 0xFF2A2836, 0xFF282536, 0xFF282536, 0xFF282536,
+ 0xFF282536, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF292639, 0xFF282538, 0xFF282633, 0xFF000004, 0xFF20201E, 0xFFC4C3C8, 0xFFCCCBD0, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCECDD2, 0xFFC5C4C9, 0xFF1E1E1C, 0xFF000004, 0xFF252330, 0xFF272437, 0xFF242134, 0xFF282536, 0xFF262334, 0xFF292637, 0xFF322B3B, 0xFF332D2F,
+ 0xFF40392F, 0xFF413A30, 0xFF3A3132, 0xFF3A323D, 0xFF312D3B, 0xFF22202D, 0xFF282435, 0xFF2A2635, 0xFF312B35, 0xFF3A3438, 0xFF433B39, 0xFF494039, 0xFF4B4336, 0xFF4B4233,
+ 0xFF4A4237, 0xFF4D453A, 0xFF4D453A, 0xFF4A4438, 0xFF4B443C, 0xFF4A423F, 0xFF413B3B, 0xFF383236, 0xFF2F2D3A, 0xFF2C2A37, 0xFF292735, 0xFF282536, 0xFF282536, 0xFF282536,
+ 0xFF282536, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF292639, 0xFF282538, 0xFF282633, 0xFF000004, 0xFF20201E, 0xFFC3C2C7, 0xFFCBCACF, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCECDD2, 0xFFC4C3C8, 0xFF1E1E1C, 0xFF000004, 0xFF252330, 0xFF282538, 0xFF242134, 0xFF272435, 0xFF262334, 0xFF282536, 0xFF2A2539, 0xFF332D39,
+ 0xFF322C30, 0xFF383236, 0xFF312936, 0xFF272032, 0xFF2D2A3D, 0xFF272533, 0xFF282337, 0xFF2B263A, 0xFF2E2A39, 0xFF342E3A, 0xFF363138, 0xFF393239, 0xFF3B3537, 0xFF3E3538,
+ 0xFF3B3539, 0xFF3C3638, 0xFF3D3739, 0xFF3C3638, 0xFF3A3539, 0xFF39343B, 0xFF37313D, 0xFF342E3C, 0xFF2C2A37, 0xFF2A2836, 0xFF282634, 0xFF282536, 0xFF282536, 0xFF292637,
+ 0xFF282536, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF282538, 0xFF272437, 0xFF282633, 0xFF000004, 0xFF20201E, 0xFFC2C1C6, 0xFFCBCACF, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCDCCD1, 0xFFC2C1C6, 0xFF1F1F1D, 0xFF000004, 0xFF252330, 0xFF282538, 0xFF242134, 0xFF272435, 0xFF252233, 0xFF272435, 0xFF2A253B, 0xFF2B2738,
+ 0xFF2C2836, 0xFF2F2937, 0xFF2C273B, 0xFF272238, 0xFF232033, 0xFF252434, 0xFF252235, 0xFF282435, 0xFF2A2637, 0xFF2B2738, 0xFF2B2736, 0xFF2C2836, 0xFF2E2A38, 0xFF2F2B39,
+ 0xFF2E2A38, 0xFF2E2A38, 0xFF302C3A, 0xFF312E39, 0xFF302C3A, 0xFF2C2A38, 0xFF2A2738, 0xFF292637, 0xFF292735, 0xFF292735, 0xFF282634, 0xFF282536, 0xFF282536, 0xFF292637,
+ 0xFF282536, 0xFF272435, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF282538, 0xFF272437, 0xFF272532, 0xFF000004, 0xFF20201E, 0xFFC0BFC4, 0xFFCAC9CE, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCBCACF, 0xFFC0BFC4, 0xFF1E1E1C, 0xFF000004, 0xFF252330, 0xFF282538, 0xFF242134, 0xFF272435, 0xFF252233, 0xFF272435, 0xFF282538, 0xFF232031,
+ 0xFF262233, 0xFF211D2E, 0xFF262135, 0xFF2A273A, 0xFF221F30, 0xFF262533, 0xFF262432, 0xFF262432, 0xFF252331, 0xFF252233, 0xFF252233, 0xFF252233, 0xFF252233, 0xFF252233,
+ 0xFF252233, 0xFF242132, 0xFF262334, 0xFF292637, 0xFF2A2738, 0xFF272636, 0xFF252434, 0xFF252436, 0xFF282536, 0xFF272435, 0xFF272435, 0xFF282536, 0xFF282536, 0xFF282536,
+ 0xFF282536, 0xFF272437, 0xFF272435, 0xFF272435, 0xFF282536, 0xFF282538, 0xFF272437, 0xFF272532, 0xFF000004, 0xFF20201E, 0xFFBFBEC3, 0xFFC9C8CD, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCAC9CE, 0xFFBFBEC3, 0xFF1E1E1C, 0xFF000004, 0xFF252330, 0xFF282538, 0xFF242134, 0xFF272435, 0xFF252233, 0xFF262334, 0xFF23212F, 0xFF292637,
+ 0xFF282536, 0xFF262334, 0xFF252233, 0xFF252233, 0xFF272533, 0xFF292735, 0xFF282634, 0xFF272533, 0xFF262432, 0xFF262432, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF262334,
+ 0xFF272435, 0xFF262334, 0xFF252233, 0xFF272435, 0xFF272636, 0xFF282737, 0xFF272636, 0xFF272636, 0xFF272437, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF282536, 0xFF282536,
+ 0xFF272435, 0xFF272437, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF282538, 0xFF272437, 0xFF272532, 0xFF000004, 0xFF1F1F1D, 0xFFBDBCC1, 0xFFC8C7CC, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCAC9CE, 0xFFBDBCC1, 0xFF1E1E1C, 0xFF000004, 0xFF252330, 0xFF282538, 0xFF242134, 0xFF272435, 0xFF252233, 0xFF272435, 0xFF262432, 0xFF272435,
+ 0xFF232031, 0xFF272435, 0xFF292735, 0xFF272533, 0xFF272435, 0xFF211E31, 0xFF242333, 0xFF242333, 0xFF252233, 0xFF252233, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF272435, 0xFF272435, 0xFF262334, 0xFF252233, 0xFF252233, 0xFF262334, 0xFF272435, 0xFF262334, 0xFF272437, 0xFF272437, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF272437, 0xFF272437, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272437, 0xFF262336, 0xFF272532, 0xFF000004, 0xFF1F1F1D, 0xFFBCBBC0, 0xFFC7C6CB, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC9C8CD, 0xFFBDBCC1, 0xFF1D1D1B, 0xFF000004, 0xFF252330, 0xFF282538, 0xFF252235, 0xFF272435, 0xFF252233, 0xFF272435, 0xFF292637, 0xFF221F32,
+ 0xFF262336, 0xFF262334, 0xFF252331, 0xFF262432, 0xFF262135, 0xFF29243B, 0xFF262537, 0xFF262537, 0xFF262537, 0xFF272437, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF232031, 0xFF262334, 0xFF272435, 0xFF272437, 0xFF272437, 0xFF282538, 0xFF282538, 0xFF272435, 0xFF28253A, 0xFF282538, 0xFF282536, 0xFF272435, 0xFF272533, 0xFF272435,
+ 0xFF272437, 0xFF272437, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272437, 0xFF262336, 0xFF272532, 0xFF000004, 0xFF1F1F1D, 0xFFBCBBC0, 0xFFC7C6CB, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC6C5CA, 0xFFBDBCC1, 0xFF1D1D1B, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF282538, 0xFF252233, 0xFF242132, 0xFF282536, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF272435, 0xFF272435, 0xFF282536, 0xFF252233, 0xFF262334, 0xFF292639, 0xFF282538, 0xFF282633, 0xFF000004, 0xFF1E1E1C, 0xFFB9B8BD, 0xFFC5C4C9, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC5C4C9, 0xFFBBBABF, 0xFF1E1E1C, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF272437, 0xFF262334, 0xFF252233, 0xFF272435, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF272435, 0xFF272435, 0xFF292637, 0xFF272435, 0xFF272435, 0xFF282538, 0xFF262336, 0xFF272532, 0xFF000004, 0xFF1E1E1C, 0xFFB8B7BC, 0xFFC4C3C8, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC4C3C8, 0xFFB9B8BD, 0xFF1F1F1D, 0xFF000004, 0xFF272532, 0xFF252235, 0xFF262336, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF272435, 0xFF272435, 0xFF282536, 0xFF272435, 0xFF272435, 0xFF272437, 0xFF262336, 0xFF272532, 0xFF000004, 0xFF1F1F1D, 0xFFB6B5BA, 0xFFC3C2C7, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC3C2C7, 0xFFB8B7BC, 0xFF1F1F1D, 0xFF000004, 0xFF272532, 0xFF262336, 0xFF252235, 0xFF262334, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF252233, 0xFF252235, 0xFF272437, 0xFF282633, 0xFF000004, 0xFF1F1F1D, 0xFFB5B4B9, 0xFFC2C1C6, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC3C2C7, 0xFFB8B7BC, 0xFF20201E, 0xFF000004, 0xFF282633, 0xFF282538, 0xFF252235, 0xFF252233, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF242132, 0xFF252235, 0xFF282538, 0xFF282633, 0xFF000004, 0xFF21211F, 0xFFB5B4B9, 0xFFC2C1C6, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC4C3C8, 0xFFB9B8BD, 0xFF272725, 0xFF000004, 0xFF262431, 0xFF282538, 0xFF252235, 0xFF242132, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF272435, 0xFF282536, 0xFF252233, 0xFF262336, 0xFF282538, 0xFF262431, 0xFF000004, 0xFF262624, 0xFFB6B5BA, 0xFFC4C3C8, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC6C5CA, 0xFFBBBABF, 0xFF31312F, 0xFF000004, 0xFF23212E, 0xFF272437, 0xFF262336, 0xFF252233, 0xFF272435, 0xFF252233, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF272435, 0xFF282536, 0xFF262334, 0xFF272437, 0xFF282538, 0xFF23212E, 0xFF000004, 0xFF31312F, 0xFFB8B7BC, 0xFFC5C4C9, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC7C6CB, 0xFFBCBBC0, 0xFF3A3A38, 0xFF020106, 0xFF211F2C, 0xFF262336, 0xFF272437, 0xFF262334, 0xFF272435, 0xFF252233, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF252233, 0xFF272435, 0xFF262334, 0xFF272437, 0xFF272437, 0xFF22202D, 0xFF030207, 0xFF3B3B39, 0xFFBAB9BE, 0xFFC6C5CA, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCCCBD0, 0xFFBFBEC3, 0xFF585858, 0xFF000004, 0xFF1C1A25, 0xFF242132, 0xFF2B283D, 0xFF221F34, 0xFF232031, 0xFF2B2937, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF282536, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF282536, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF2D2B39, 0xFF242132, 0xFF221F34, 0xFF2B283D, 0xFF252233, 0xFF1C1A25, 0xFF000004, 0xFF575757, 0xFFBEBDC2, 0xFFCBCACF, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFB7B6BB, 0xFF7F7F7F, 0xFF030207, 0xFF0F0E16, 0xFF252331, 0xFF242132, 0xFF2E2B3E, 0xFF242134, 0xFF211E2F, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF272435, 0xFF262334, 0xFF252233, 0xFF242132, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF242132, 0xFF252233, 0xFF262334, 0xFF272435, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF211E2F, 0xFF242134, 0xFF2E2B3E, 0xFF242132, 0xFF262432, 0xFF111018, 0xFF040308, 0xFF7F7F7F, 0xFFB6B5BA, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFB5B5B7, 0xFFAEAEB0, 0xFF16151A, 0xFF000005, 0xFF212028, 0xFF2A2835, 0xFF1C1A28, 0xFF2D2A3D, 0xFF262338, 0xFF272435, 0xFF262334,
+ 0xFF262334, 0xFF272435, 0xFF282536, 0xFF282536, 0xFF272435, 0xFF252233, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF252233, 0xFF272435, 0xFF282536, 0xFF282536, 0xFF272435, 0xFF262334,
+ 0xFF262334, 0xFF272435, 0xFF252237, 0xFF2C293C, 0xFF1B1927, 0xFF292734, 0xFF212028, 0xFF000005, 0xFF17161B, 0xFFAEAEB0, 0xFFB4B4B6, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFC4C4C6, 0xFFBBBABF, 0xFF7D7C81, 0xFF050507, 0xFF000004, 0xFF212026, 0xFF2D2B38, 0xFF252233, 0xFF262338, 0xFF262336, 0xFF252235,
+ 0xFF252235, 0xFF242134, 0xFF252235, 0xFF252235, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336,
+ 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF252235, 0xFF252235, 0xFF242134, 0xFF252235,
+ 0xFF252235, 0xFF262336, 0xFF262338, 0xFF252233, 0xFF2D2B38, 0xFF201F25, 0xFF000004, 0xFF050507, 0xFF7D7C81, 0xFFB9B8BD, 0xFFC5C5C7, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFACABB0, 0xFFB4B4B6, 0xFF4F4F51, 0xFF040406, 0xFF030207, 0xFF1D1C24, 0xFF272533, 0xFF262334, 0xFF272437, 0xFF282538,
+ 0xFF282538, 0xFF282538, 0xFF272437, 0xFF262336, 0xFF272437, 0xFF282538, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437,
+ 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF282538, 0xFF272437, 0xFF262336, 0xFF272437, 0xFF282538, 0xFF282538,
+ 0xFF282538, 0xFF272437, 0xFF272435, 0xFF272533, 0xFF1E1D25, 0xFF030207, 0xFF030305, 0xFF4E4E50, 0xFFB3B3B5, 0xFFABAAAF, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFAEAEB0, 0xFFB6B6B8, 0xFF4C4C4E, 0xFF030305, 0xFF000005, 0xFF121119, 0xFF1C1A25, 0xFF211F2C, 0xFF23212E,
+ 0xFF252330, 0xFF262431, 0xFF262431, 0xFF262431, 0xFF262431, 0xFF272532, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330,
+ 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF272532, 0xFF262431, 0xFF262431, 0xFF262431, 0xFF262431, 0xFF252330,
+ 0xFF23212E, 0xFF211F2C, 0xFF1A1823, 0xFF111018, 0xFF000005, 0xFF030305, 0xFF4C4C4E, 0xFFB6B6B8, 0xFFAEAEB0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFC4C4C6, 0xFFAAAAAC, 0xFFB7B7B9, 0xFF79787D, 0xFF16151A, 0xFF000004, 0xFF020106, 0xFF030207, 0xFF010005,
+ 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004,
+ 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004,
+ 0xFF010005, 0xFF030207, 0xFF000004, 0xFF000004, 0xFF16151A, 0xFF79787D, 0xFFB7B7B9, 0xFFAAAAAC, 0xFFC4C4C6, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFABAAAF, 0xFFAFAEB3, 0xFFAEAEB0, 0xFF797979, 0xFF515151, 0xFF353533, 0xFF2D2D2B,
+ 0xFF232321, 0xFF1E1E1C, 0xFF1D1D1B, 0xFF1D1D1B, 0xFF1B1B19, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917,
+ 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF1B1B19, 0xFF1D1D1B, 0xFF1D1D1B, 0xFF1E1E1C, 0xFF232321,
+ 0xFF2D2D2B, 0xFF353533, 0xFF515151, 0xFF7A7A7A, 0xFFAFAFB1, 0xFFAFAEB3, 0xFFABAAAF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFBAB9BE, 0xFFABAAB0, 0xFFADACB2, 0xFFB5B4BC, 0xFFB1B0B8, 0xFFAEADB5,
+ 0xFFABAAB2, 0xFFA9A8B0, 0xFFA9A8B0, 0xFFAAA9B1, 0xFFA9A8B0, 0xFFA8A7AF, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC,
+ 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA9A8AD, 0xFFA9A8AD, 0xFFA9A8AD, 0xFFABAAAF,
+ 0xFFADACB1, 0xFFB0AFB4, 0xFFB6B5BD, 0xFFACABB1, 0xFFA9A8AE, 0xFFB9B8BD, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFBCBBC1, 0xFFB4B3B8, 0xFFB2B1B6,
+ 0xFFAFAEB3, 0xFFADACB1, 0xFFADACB1, 0xFFADACB1, 0xFFADACB1, 0xFFACABB0, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3,
+ 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAEADB2, 0xFFAEADB2, 0xFFAEADB2, 0xFFAEADB2, 0xFFAFAEB3, 0xFFB1B0B5,
+ 0xFFB3B2B7, 0xFFB5B4B9, 0xFFBAB9BF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+};
+
+static const uint32_t icon1[H][W] = {
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFF1F1F1, 0xFFEFEFEF, 0xFFEEEEEE,
+ 0xFFEDEDED, 0xFFEDEDED, 0xFFEDEDED, 0xFFEDEDED, 0xFFEEEEEE, 0xFFEFEFEF, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0,
+ 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEFEFEF, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEDEDED, 0xFFEDEDED, 0xFFEEEEEE,
+ 0xFFEEEEEE, 0xFFEFEFEF, 0xFFF1F1F1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFEFEFEF, 0xFFECECEC, 0xFFF1F1F1, 0xFFF8F8F8, 0xFFF2F2F4, 0xFFF1F1F3,
+ 0xFFEEEEF0, 0xFFEBEBED, 0xFFE8E8EA, 0xFFE7E7E9, 0xFFE6E6E8, 0xFFE6E6E8, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9,
+ 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE6E6E8, 0xFFE6E6E8, 0xFFE7E7E9, 0xFFE8E8EA, 0xFFEBEBED, 0xFFEEEEF0,
+ 0xFFF1F1F3, 0xFFF3F3F5, 0xFFF8F8F8, 0xFFF1F1F1, 0xFFECECEC, 0xFFEFEFEF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFE5E5E7, 0xFFF7F7F9, 0xFFE0E0E0, 0xFFA8A8A6, 0xFF6F6F6D, 0xFF4B4B49, 0xFF3E3E3C,
+ 0xFF30302E, 0xFF2B2B29, 0xFF2D2D2B, 0xFF30302E, 0xFF31312F, 0xFF31312F, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D,
+ 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2E2E2C, 0xFF2F2F2D, 0xFF31312F, 0xFF31312F, 0xFF343432, 0xFF3C3C3A,
+ 0xFF494947, 0xFF535351, 0xFF767674, 0xFFADADAD, 0xFFE1E1E3, 0xFFF5F5F7, 0xFFE6E6E8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFE0E0E2, 0xFFF1F1F3, 0xFF9D9D9F, 0xFF222224, 0xFF000002, 0xFF000002, 0xFF020106, 0xFF010005,
+ 0xFF000004, 0xFF000004, 0xFF020106, 0xFF06050A, 0xFF07060B, 0xFF040308, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C,
+ 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF06050A, 0xFF08070C, 0xFF09080D, 0xFF08070C, 0xFF06050A, 0xFF040308,
+ 0xFF040308, 0xFF040308, 0xFF000004, 0xFF000004, 0xFF303032, 0xFFA1A1A3, 0xFFF3F3F5, 0xFFE7E7E7, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFDEDEE0, 0xFFF4F4F4, 0xFF626262, 0xFF000002, 0xFF050409, 0xFF121119, 0xFF1B1924, 0xFF211F2C, 0xFF262431,
+ 0xFF282633, 0xFF262431, 0xFF282633, 0xFF2E2C39, 0xFF32303D, 0xFF312F3C, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B,
+ 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF2F2D3A, 0xFF2F2D3A, 0xFF302E3B, 0xFF312F3C, 0xFF312F3C, 0xFF312F3C,
+ 0xFF2F2D3A, 0xFF2D2B38, 0xFF292732, 0xFF1C1B23, 0xFF000004, 0xFF060608, 0xFF686868, 0xFFEFEFEF, 0xFFE3E3E3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFE1E0E5, 0xFFF0F0F2, 0xFF666666, 0xFF050505, 0xFF050507, 0xFF17161E, 0xFF282633, 0xFF282536, 0xFF272437, 0xFF292639,
+ 0xFF292639, 0xFF252235, 0xFF242134, 0xFF292639, 0xFF2F2C3F, 0xFF322F42, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40,
+ 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF333043, 0xFF312E41, 0xFF2F2C3F, 0xFF2F2C3F, 0xFF312E41, 0xFF322F42,
+ 0xFF333043, 0xFF333043, 0xFF2D2A3B, 0xFF363441, 0xFF27262E, 0xFF0E0E10, 0xFF020202, 0xFF666666, 0xFFF5F5F5, 0xFFE0E0E2, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFEBEBEB, 0xFFF0EFF4, 0xFF9A9A9C, 0xFF000002, 0xFF070709, 0xFF1D1C22, 0xFF2E2C39, 0xFF292637, 0xFF242136, 0xFF272437, 0xFF262336,
+ 0xFF272437, 0xFF282538, 0xFF282538, 0xFF272437, 0xFF2B283B, 0xFF302D40, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41,
+ 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF322F42, 0xFF312E41, 0xFF312E41, 0xFF302D40,
+ 0xFF2F2C3F, 0xFF2E2B3E, 0xFF322F44, 0xFF2D2A3B, 0xFF33313C, 0xFF2C2B31, 0xFF141416, 0xFF030303, 0xFF9B9B9B, 0xFFEDEDEF, 0xFFEAEAEA, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFE5E5E5, 0xFFDADADC, 0xFF212025, 0xFF020107, 0xFF1D1C24, 0xFF282633, 0xFF242230, 0xFF1F1C2F, 0xFF272439, 0xFF262334, 0xFF232031,
+ 0xFF232031, 0xFF272435, 0xFF272435, 0xFF252233, 0xFF282536, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2C293A, 0xFF2D2A3B, 0xFF2E2B3C, 0xFF2F2C3D, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2F2C3D, 0xFF312E3F, 0xFF2A273A, 0xFF302D40, 0xFF2E2C3A, 0xFF312F3A, 0xFF212026, 0xFF020106, 0xFF2E2E30, 0xFFDCDCDC, 0xFFE5E5E5, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFE7E7E7, 0xFFA2A2A2, 0xFF000004, 0xFF0E0D15, 0xFF2A2836, 0xFF282536, 0xFF252235, 0xFF2A273A, 0xFF262336, 0xFF292637, 0xFF272435,
+ 0xFF262334, 0xFF262334, 0xFF252233, 0xFF252233, 0xFF282536, 0xFF2C293A, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E,
+ 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF312E3F, 0xFF312E3F, 0xFF302D3E, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF302D3E, 0xFF312E3F, 0xFF322F40, 0xFF2C293A, 0xFF2F2C3D, 0xFF2F2C3D, 0xFF363441, 0xFF1C1B21, 0xFF000002, 0xFFA6A6A4, 0xFFE7E7E7, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFE4E4E4, 0xFFEBEBEB, 0xFF6D6D6D, 0xFF000004, 0xFF1E1C27, 0xFF262336, 0xFF252237, 0xFF242136, 0xFF282538, 0xFF252233, 0xFF252233, 0xFF272435,
+ 0xFF292637, 0xFF282536, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2F2C3D, 0xFF2F2C3D, 0xFF302D3E, 0xFF2F2C3D,
+ 0xFF2E2B3C, 0xFF2D2A3B, 0xFF2C2A38, 0xFF333041, 0xFF2E2B3E, 0xFF2C293C, 0xFF302D3E, 0xFF26252D, 0xFF010103, 0xFF6E6F6A, 0xFFEBEBEB, 0xFFE4E4E4, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFE2E2E4, 0xFFE7E6EB, 0xFF484846, 0xFF010006, 0xFF252331, 0xFF282538, 0xFF242132, 0xFF272533, 0xFF242230, 0xFF262334, 0xFF282629, 0xFF2B2241,
+ 0xFF141833, 0xFF262535, 0xFF272936, 0xFF231F36, 0xFF2C2048, 0xFF292234, 0xFF232730, 0xFF313340, 0xFF2C2C38, 0xFF2D2D35, 0xFF2B2D3C, 0xFF2D2D47, 0xFF2D283F, 0xFF342C39,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2D2A3B, 0xFF2F2C3D, 0xFF302D3E, 0xFF2B283B, 0xFF302D40, 0xFF2B2936, 0xFF040308, 0xFF4F4F4D, 0xFFE5E4E9, 0xFFE1E1E3, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFE0E0E2, 0xFFE3E2E7, 0xFF3B3B39, 0xFF000005, 0xFF262432, 0xFF272437, 0xFF252233, 0xFF272533, 0xFF252331, 0xFF2A2738, 0xFF2E263E, 0xFF2E2C3A,
+ 0xFF786638, 0xFF484536, 0xFF261E2D, 0xFF353338, 0xFF20242F, 0xFF252229, 0xFF25213C, 0xFF2C2642, 0xFF302840, 0xFF2F2B3A, 0xFF2B2936, 0xFF32313F, 0xFF2D2A3D, 0xFF2D283C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF302D3E, 0xFF2C293C, 0xFF302D40, 0xFF2B2936, 0xFF010005, 0xFF424240, 0xFFE2E1E6, 0xFFDFDFE1, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFDDDDDF, 0xFFDEDDE2, 0xFF2D2D2B, 0xFF000005, 0xFF272533, 0xFF272437, 0xFF262334, 0xFF272533, 0xFF252331, 0xFF2C293A, 0xFF1D2033, 0xFF7D683B,
+ 0xFFF4F073, 0xFFEFD657, 0xFF5C4D3A, 0xFF292438, 0xFF31313B, 0xFF242831, 0xFF2D253C, 0xFF2B233A, 0xFF332942, 0xFF342A42, 0xFF2B2533, 0xFF302D36, 0xFF2D2D39, 0xFF2E2C41,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2F2C3D, 0xFF2C293A, 0xFF2E2B3C, 0xFF2C293C, 0xFF2F2C3F, 0xFF2C2A37, 0xFF000004, 0xFF343432, 0xFFDDDCE1, 0xFFDCDCDE, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFDADADC, 0xFFDAD9DE, 0xFF262624, 0xFF000005, 0xFF282634, 0xFF262336, 0xFF272435, 0xFF272533, 0xFF242230, 0xFF2B2839, 0xFF282530, 0xFF5D554A,
+ 0xFFF1D359, 0xFFF8EB45, 0xFFF9DD6F, 0xFF5E4E3F, 0xFF2A2430, 0xFF272B34, 0xFF26252A, 0xFF242328, 0xFF2A2732, 0xFF332B40, 0xFF332941, 0xFF302939, 0xFF2C2A35, 0xFF292B38,
+ 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B,
+ 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2B2839, 0xFF2D2A3B, 0xFF2C293C, 0xFF2E2B3E, 0xFF2D2B38, 0xFF020106, 0xFF2B2B29, 0xFFD9D8DD, 0xFFDADADC, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFDADADC, 0xFFD7D6DB, 0xFF232321, 0xFF010006, 0xFF272533, 0xFF242134, 0xFF272435, 0xFF272533, 0xFF242230, 0xFF292637, 0xFF343434, 0xFF3A2E3A,
+ 0xFF6E5C48, 0xFFF1D25E, 0xFFF9E659, 0xFFF2CF67, 0xFF615642, 0xFF2D2638, 0xFF292B38, 0xFF2A2E37, 0xFF232730, 0xFF2A2A36, 0xFF322A3F, 0xFF2E243D, 0xFF2E293D, 0xFF2A2937,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2B2839, 0xFF2D2A3B, 0xFF2C293C, 0xFF2C293C, 0xFF2D2B38, 0xFF040308, 0xFF282826, 0xFFD6D5DA, 0xFFD9D9DB, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD9D9DB, 0xFFD5D4D9, 0xFF222220, 0xFF010006, 0xFF252331, 0xFF242134, 0xFF282536, 0xFF272533, 0xFF262432, 0xFF282536, 0xFF302F2D, 0xFF3B382F,
+ 0xFF423B42, 0xFF726240, 0xFFF6D459, 0xFFFAEB5E, 0xFFF2D762, 0xFF5B4F35, 0xFF2C2439, 0xFF292641, 0xFF252A40, 0xFF272B34, 0xFF2D2A35, 0xFF2B213A, 0xFF312845, 0xFF2C2A3F,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2E2B3C, 0xFF2D2A3B, 0xFF2C293C, 0xFF2C293C, 0xFF2B2936, 0xFF030207, 0xFF272725, 0xFFD4D3D8, 0xFFD8D8DA, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD8D8DA, 0xFFD3D2D7, 0xFF21211F, 0xFF000005, 0xFF252331, 0xFF262336, 0xFF272435, 0xFF262432, 0xFF272533, 0xFF272435, 0xFF2E243C, 0xFF303435,
+ 0xFF433F40, 0xFF4D4339, 0xFF7A6D40, 0xFFF5D858, 0xFFF0E74C, 0xFFF6DC61, 0xFF655531, 0xFF30242E, 0xFF292546, 0xFF2A2E3A, 0xFF2E2E30, 0xFF2F283A, 0xFF2B2541, 0xFF282A39,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2E2B3C, 0xFF2B2839, 0xFF2B283B, 0xFF2D2A3D, 0xFF2A2835, 0xFF020106, 0xFF272725, 0xFFD1D0D5, 0xFFD6D6D8, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD7D7D9, 0xFFD2D1D6, 0xFF21211F, 0xFF000005, 0xFF252331, 0xFF282538, 0xFF272435, 0xFF242230, 0xFF272533, 0xFF262334, 0xFF282433, 0xFF2E2834,
+ 0xFF33313C, 0xFF414139, 0xFF4A3C39, 0xFF776841, 0xFFF7DB5E, 0xFFFFE368, 0xFFECD963, 0xFF635234, 0xFF302746, 0xFF242539, 0xFF29292B, 0xFF312B39, 0xFF292639, 0xFF2A2F33,
+ 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839,
+ 0xFF2B2839, 0xFF2B2839, 0xFF2A2738, 0xFF2D2A3B, 0xFF282536, 0xFF292639, 0xFF2E2B3E, 0xFF2A2835, 0xFF010005, 0xFF272725, 0xFFCFCED3, 0xFFD5D5D7, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD6D6D8, 0xFFD0CFD4, 0xFF21211F, 0xFF000004, 0xFF252330, 0xFF252235, 0xFF272437, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF271D38, 0xFF312C30,
+ 0xFF2B2726, 0xFF322E3D, 0xFF4B4046, 0xFF504333, 0xFF7B633D, 0xFFE9D866, 0xFFFFE165, 0xFFE7D74C, 0xFF523F43, 0xFF2B263C, 0xFF272634, 0xFF2C2B31, 0xFF302742, 0xFF2C2431,
+ 0xFF2E2836, 0xFF2C213F, 0xFF302833, 0xFF2D253C, 0xFF2C2642, 0xFF2B292E, 0xFF332A3D, 0xFF31233D, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839,
+ 0xFF2B2839, 0xFF2B2839, 0xFF2A2738, 0xFF2B2839, 0xFF2B2839, 0xFF2B283B, 0xFF2B283B, 0xFF2A2835, 0xFF010005, 0xFF242422, 0xFFCECDD2, 0xFFD5D5D7, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD5D5D7, 0xFFD0CFD4, 0xFF20201E, 0xFF000004, 0xFF252330, 0xFF252235, 0xFF272437, 0xFF262334, 0xFF252233, 0xFF262334, 0xFF262135, 0xFF22192C,
+ 0xFF2D2D35, 0xFF2A253C, 0xFF3A3E3D, 0xFF4B3939, 0xFF7F6647, 0xFFE9CC4E, 0xFFFFE65F, 0xFFE2D15D, 0xFF50413E, 0xFF2F2A40, 0xFF27253B, 0xFF2B2C30, 0xFF2A2539, 0xFF2C2247,
+ 0xFF272A39, 0xFF26283F, 0xFF292C35, 0xFF272A3D, 0xFF252A40, 0xFF232A32, 0xFF28293B, 0xFF2A2937, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839,
+ 0xFF2B2839, 0xFF2B2839, 0xFF2A2738, 0xFF2B2839, 0xFF2B2839, 0xFF2B283B, 0xFF2B283B, 0xFF2A2835, 0xFF010005, 0xFF242422, 0xFFCECDD2, 0xFFD5D5D7, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD5D5D7, 0xFFCECDD2, 0xFF20201E, 0xFF000004, 0xFF252330, 0xFF262336, 0xFF272437, 0xFF262334, 0xFF252233, 0xFF252233, 0xFF262336, 0xFF292C35,
+ 0xFF2A2430, 0xFF2C362D, 0xFF342834, 0xFF655D46, 0xFFF1D766, 0xFFFFE85F, 0xFFEFDC5B, 0xFF78652A, 0xFF3D3131, 0xFF2C2C2C, 0xFF292B3A, 0xFF242633, 0xFF292A2F, 0xFF2E2E38,
+ 0xFF272636, 0xFF2B2A3C, 0xFF2B2B35, 0xFF272636, 0xFF292838, 0xFF2E2E3A, 0xFF282538, 0xFF242426, 0xFF2B2839, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738,
+ 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2B2839, 0xFF2A2738, 0xFF2B283B, 0xFF2B283B, 0xFF292734, 0xFF010005, 0xFF242422, 0xFFCCCBD0, 0xFFD4D4D6, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD4D4D6, 0xFFCDCCD1, 0xFF20201E, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF272437, 0xFF252233, 0xFF252233, 0xFF252233, 0xFF23233B, 0xFF262429,
+ 0xFF292F3B, 0xFF322030, 0xFF5C5332, 0xFFEAD45A, 0xFFFDED5C, 0xFFEFD25A, 0xFF7A6749, 0xFF4C394D, 0xFF3A323D, 0xFF31332E, 0xFF292935, 0xFF26233E, 0xFF272936, 0xFF25282D,
+ 0xFF2B263C, 0xFF2C293C, 0xFF2B2937, 0xFF2B2738, 0xFF2E2737, 0xFF312940, 0xFF2C273E, 0xFF2E2D33, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738,
+ 0xFF2A2738, 0xFF2A2738, 0xFF292637, 0xFF2B2839, 0xFF2A2738, 0xFF2A273A, 0xFF2B283B, 0xFF292734, 0xFF000004, 0xFF242422, 0xFFCBCACF, 0xFFD3D3D5, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD3D3D5, 0xFFCBCACF, 0xFF1F1F1D, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF272437, 0xFF252233, 0xFF252233, 0xFF262334, 0xFF2B263D, 0xFF282C37,
+ 0xFF2C1A40, 0xFF65564F, 0xFFF5D357, 0xFFFFE85C, 0xFFF1DA58, 0xFF7A6749, 0xFF483F3A, 0xFF423C40, 0xFF363435, 0xFF2A273A, 0xFF241D3C, 0xFF221A32, 0xFF2B2738, 0xFF2B2742,
+ 0xFF2A273C, 0xFF242333, 0xFF212234, 0xFF2A2937, 0xFF282435, 0xFF211C32, 0xFF232439, 0xFF232740, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF292637, 0xFF292637, 0xFF292637,
+ 0xFF292637, 0xFF2A2738, 0xFF292637, 0xFF2A2738, 0xFF2A2738, 0xFF2A273A, 0xFF2A273A, 0xFF292734, 0xFF000004, 0xFF232321, 0xFFC9C8CD, 0xFFD2D2D4, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD2D2D4, 0xFFC9C8CD, 0xFF20201E, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF262336, 0xFF252233, 0xFF262334, 0xFF282536, 0xFF2A292F, 0xFF322738,
+ 0xFF5C5441, 0xFFEFD55A, 0xFFFFE45F, 0xFFF5CE55, 0xFF796646, 0xFF4B4341, 0xFF42413C, 0xFF3B393A, 0xFF302A38, 0xFF413831, 0xFF6F6349, 0xFF6D5F3A, 0xFF655838, 0xFF685B48,
+ 0xFF716046, 0xFF6D6147, 0xFF6B6148, 0xFF6D6244, 0xFF715F49, 0xFF6D5D44, 0xFF665F43, 0xFF322C3A, 0xFF2B2839, 0xFF2A2738, 0xFF2A2738, 0xFF292637, 0xFF292637, 0xFF292637,
+ 0xFF292637, 0xFF2A2738, 0xFF292637, 0xFF2A2738, 0xFF292637, 0xFF292639, 0xFF2A273A, 0xFF282633, 0xFF000004, 0xFF232321, 0xFFC7C6CB, 0xFFD1D1D3, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD1D1D3, 0xFFC8C7CC, 0xFF20201E, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF262336, 0xFF252233, 0xFF272435, 0xFF292637, 0xFF2B2736, 0xFF524B2F,
+ 0xFFEAD965, 0xFFFBEA5C, 0xFFF2D95A, 0xFF7C664F, 0xFF4B3C39, 0xFF414137, 0xFF373542, 0xFF2F2933, 0xFF3D3131, 0xFFD8D35D, 0xFFFFF55D, 0xFFF6E54F, 0xFFFCEB5F, 0xFFFDEC68,
+ 0xFFFDE159, 0xFFFEE763, 0xFFFAE862, 0xFFF7E157, 0xFFFEE267, 0xFFFFE95E, 0xFFF3E757, 0xFF897A3F, 0xFF2B2839, 0xFF2B2839, 0xFF2A2738, 0xFF292637, 0xFF292637, 0xFF292637,
+ 0xFF292637, 0xFF2A2738, 0xFF282536, 0xFF292637, 0xFF292637, 0xFF292639, 0xFF2A273A, 0xFF282633, 0xFF000004, 0xFF232321, 0xFFC6C5CA, 0xFFD0D0D2, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD0D0D2, 0xFFC7C6CB, 0xFF20201E, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF262336, 0xFF262334, 0xFF282536, 0xFF2A2738, 0xFF272435, 0xFF7B6945,
+ 0xFFFFF063, 0xFFEED556, 0xFF76624A, 0xFF453F33, 0xFF464541, 0xFF342E32, 0xFF2E2B36, 0xFF322830, 0xFF45303F, 0xFFC3B14D, 0xFFF1D16C, 0xFFF7D162, 0xFFF4D055, 0xFFF3D35A,
+ 0xFFF7D057, 0xFFEFD05C, 0xFFEDD25F, 0xFFEDD156, 0xFFF1CB66, 0xFFEECF50, 0xFFECD958, 0xFF7C6553, 0xFF2B2839, 0xFF2B2839, 0xFF2A2738, 0xFF292637, 0xFF292637, 0xFF292637,
+ 0xFF292637, 0xFF2A2738, 0xFF282536, 0xFF292637, 0xFF292637, 0xFF292639, 0xFF292639, 0xFF282633, 0xFF000004, 0xFF222220, 0xFFC5C4C9, 0xFFD0D0D2, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCFCED3, 0xFFC6C5CA, 0xFF1E1E1C, 0xFF000004, 0xFF252330, 0xFF272437, 0xFF252235, 0xFF282536, 0xFF272435, 0xFF292637, 0xFF342C37, 0xFF403835,
+ 0xFF77705D, 0xFF645E48, 0xFF463D34, 0xFF484246, 0xFF302A34, 0xFF312E37, 0xFF2B2937, 0xFF2E2B36, 0xFF373238, 0xFF45403D, 0xFF564D44, 0xFF605746, 0xFF655A44, 0xFF645A3F,
+ 0xFF645943, 0xFF655D46, 0xFF645C45, 0xFF625A45, 0xFF615A48, 0xFF5D5548, 0xFF4E473F, 0xFF3E3633, 0xFF312F3A, 0xFF2D2B38, 0xFF2A2836, 0xFF282536, 0xFF282536, 0xFF282536,
+ 0xFF282536, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF292639, 0xFF282538, 0xFF282633, 0xFF000004, 0xFF20201E, 0xFFC4C3C8, 0xFFCCCBD0, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCECDD2, 0xFFC5C4C9, 0xFF1E1E1C, 0xFF000004, 0xFF252330, 0xFF272437, 0xFF242134, 0xFF282536, 0xFF262334, 0xFF292637, 0xFF322B3B, 0xFF332D2F,
+ 0xFF40392F, 0xFF413A30, 0xFF3A3132, 0xFF3A323D, 0xFF312D3B, 0xFF22202D, 0xFF282435, 0xFF2A2635, 0xFF312B35, 0xFF3A3438, 0xFF433B39, 0xFF494039, 0xFF4B4336, 0xFF4B4233,
+ 0xFF4A4237, 0xFF4D453A, 0xFF4D453A, 0xFF4A4438, 0xFF4B443C, 0xFF4A423F, 0xFF413B3B, 0xFF383236, 0xFF2F2D3A, 0xFF2C2A37, 0xFF292735, 0xFF282536, 0xFF282536, 0xFF282536,
+ 0xFF282536, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF292639, 0xFF282538, 0xFF282633, 0xFF000004, 0xFF20201E, 0xFFC3C2C7, 0xFFCBCACF, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCECDD2, 0xFFC4C3C8, 0xFF1E1E1C, 0xFF000004, 0xFF252330, 0xFF282538, 0xFF242134, 0xFF272435, 0xFF262334, 0xFF282536, 0xFF2A2539, 0xFF332D39,
+ 0xFF322C30, 0xFF383236, 0xFF312936, 0xFF272032, 0xFF2D2A3D, 0xFF272533, 0xFF282337, 0xFF2B263A, 0xFF2E2A39, 0xFF342E3A, 0xFF363138, 0xFF393239, 0xFF3B3537, 0xFF3E3538,
+ 0xFF3B3539, 0xFF3C3638, 0xFF3D3739, 0xFF3C3638, 0xFF3A3539, 0xFF39343B, 0xFF37313D, 0xFF342E3C, 0xFF2C2A37, 0xFF2A2836, 0xFF282634, 0xFF282536, 0xFF282536, 0xFF292637,
+ 0xFF282536, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF282538, 0xFF272437, 0xFF282633, 0xFF000004, 0xFF20201E, 0xFFC2C1C6, 0xFFCBCACF, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCDCCD1, 0xFFC2C1C6, 0xFF1F1F1D, 0xFF000004, 0xFF252330, 0xFF282538, 0xFF242134, 0xFF272435, 0xFF252233, 0xFF272435, 0xFF2A253B, 0xFF2B2738,
+ 0xFF2C2836, 0xFF2F2937, 0xFF2C273B, 0xFF272238, 0xFF232033, 0xFF252434, 0xFF252235, 0xFF282435, 0xFF2A2637, 0xFF2B2738, 0xFF2B2736, 0xFF2C2836, 0xFF2E2A38, 0xFF2F2B39,
+ 0xFF2E2A38, 0xFF2E2A38, 0xFF302C3A, 0xFF312E39, 0xFF302C3A, 0xFF2C2A38, 0xFF2A2738, 0xFF292637, 0xFF292735, 0xFF292735, 0xFF282634, 0xFF282536, 0xFF282536, 0xFF292637,
+ 0xFF282536, 0xFF272435, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF282538, 0xFF272437, 0xFF272532, 0xFF000004, 0xFF20201E, 0xFFC0BFC4, 0xFFCAC9CE, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCBCACF, 0xFFC0BFC4, 0xFF1E1E1C, 0xFF000004, 0xFF252330, 0xFF282538, 0xFF242134, 0xFF272435, 0xFF252233, 0xFF272435, 0xFF282538, 0xFF232031,
+ 0xFF262233, 0xFF211D2E, 0xFF262135, 0xFF2A273A, 0xFF221F30, 0xFF262533, 0xFF262432, 0xFF262432, 0xFF252331, 0xFF252233, 0xFF252233, 0xFF252233, 0xFF252233, 0xFF252233,
+ 0xFF252233, 0xFF242132, 0xFF262334, 0xFF292637, 0xFF2A2738, 0xFF272636, 0xFF252434, 0xFF252436, 0xFF282536, 0xFF272435, 0xFF272435, 0xFF282536, 0xFF282536, 0xFF282536,
+ 0xFF282536, 0xFF272437, 0xFF272435, 0xFF272435, 0xFF282536, 0xFF282538, 0xFF272437, 0xFF272532, 0xFF000004, 0xFF20201E, 0xFFBFBEC3, 0xFFC9C8CD, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCAC9CE, 0xFFBFBEC3, 0xFF1E1E1C, 0xFF000004, 0xFF252330, 0xFF282538, 0xFF242134, 0xFF272435, 0xFF252233, 0xFF262334, 0xFF23212F, 0xFF292637,
+ 0xFF282536, 0xFF262334, 0xFF252233, 0xFF252233, 0xFF272533, 0xFF292735, 0xFF282634, 0xFF272533, 0xFF262432, 0xFF262432, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF262334,
+ 0xFF272435, 0xFF262334, 0xFF252233, 0xFF272435, 0xFF272636, 0xFF282737, 0xFF272636, 0xFF272636, 0xFF272437, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF282536, 0xFF282536,
+ 0xFF272435, 0xFF272437, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF282538, 0xFF272437, 0xFF272532, 0xFF000004, 0xFF1F1F1D, 0xFFBDBCC1, 0xFFC8C7CC, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCAC9CE, 0xFFBDBCC1, 0xFF1E1E1C, 0xFF000004, 0xFF252330, 0xFF282538, 0xFF242134, 0xFF272435, 0xFF252233, 0xFF272435, 0xFF262432, 0xFF272435,
+ 0xFF232031, 0xFF272435, 0xFF292735, 0xFF272533, 0xFF272435, 0xFF211E31, 0xFF242333, 0xFF242333, 0xFF252233, 0xFF252233, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF272435, 0xFF272435, 0xFF262334, 0xFF252233, 0xFF252233, 0xFF262334, 0xFF272435, 0xFF262334, 0xFF272437, 0xFF272437, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF272437, 0xFF272437, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272437, 0xFF262336, 0xFF272532, 0xFF000004, 0xFF1F1F1D, 0xFFBCBBC0, 0xFFC7C6CB, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC9C8CD, 0xFFBDBCC1, 0xFF1D1D1B, 0xFF000004, 0xFF252330, 0xFF282538, 0xFF252235, 0xFF272435, 0xFF252233, 0xFF272435, 0xFF292637, 0xFF221F32,
+ 0xFF262336, 0xFF262334, 0xFF252331, 0xFF262432, 0xFF262135, 0xFF29243B, 0xFF262537, 0xFF262537, 0xFF262537, 0xFF272437, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF232031, 0xFF262334, 0xFF272435, 0xFF272437, 0xFF272437, 0xFF282538, 0xFF282538, 0xFF272435, 0xFF28253A, 0xFF282538, 0xFF282536, 0xFF272435, 0xFF272533, 0xFF272435,
+ 0xFF272437, 0xFF272437, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272437, 0xFF262336, 0xFF272532, 0xFF000004, 0xFF1F1F1D, 0xFFBCBBC0, 0xFFC7C6CB, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC6C5CA, 0xFFBDBCC1, 0xFF1D1D1B, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF282538, 0xFF252233, 0xFF242132, 0xFF282536, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF272435, 0xFF272435, 0xFF282536, 0xFF252233, 0xFF262334, 0xFF292639, 0xFF282538, 0xFF282633, 0xFF000004, 0xFF1E1E1C, 0xFFB9B8BD, 0xFFC5C4C9, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC5C4C9, 0xFFBBBABF, 0xFF1E1E1C, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF272437, 0xFF262334, 0xFF252233, 0xFF272435, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF272435, 0xFF272435, 0xFF292637, 0xFF272435, 0xFF272435, 0xFF282538, 0xFF262336, 0xFF272532, 0xFF000004, 0xFF1E1E1C, 0xFFB8B7BC, 0xFFC4C3C8, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC4C3C8, 0xFFB9B8BD, 0xFF1F1F1D, 0xFF000004, 0xFF272532, 0xFF252235, 0xFF262336, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF272435, 0xFF272435, 0xFF282536, 0xFF272435, 0xFF272435, 0xFF272437, 0xFF262336, 0xFF272532, 0xFF000004, 0xFF1F1F1D, 0xFFB6B5BA, 0xFFC3C2C7, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC3C2C7, 0xFFB8B7BC, 0xFF1F1F1D, 0xFF000004, 0xFF272532, 0xFF262336, 0xFF252235, 0xFF262334, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF252233, 0xFF252235, 0xFF272437, 0xFF282633, 0xFF000004, 0xFF1F1F1D, 0xFFB5B4B9, 0xFFC2C1C6, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC3C2C7, 0xFFB8B7BC, 0xFF20201E, 0xFF000004, 0xFF282633, 0xFF282538, 0xFF252235, 0xFF252233, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF242132, 0xFF252235, 0xFF282538, 0xFF282633, 0xFF000004, 0xFF21211F, 0xFFB5B4B9, 0xFFC2C1C6, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC4C3C8, 0xFFB9B8BD, 0xFF272725, 0xFF000004, 0xFF262431, 0xFF282538, 0xFF252235, 0xFF242132, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF272435, 0xFF282536, 0xFF252233, 0xFF262336, 0xFF282538, 0xFF262431, 0xFF000004, 0xFF262624, 0xFFB6B5BA, 0xFFC4C3C8, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC6C5CA, 0xFFBBBABF, 0xFF31312F, 0xFF000004, 0xFF23212E, 0xFF272437, 0xFF262336, 0xFF252233, 0xFF272435, 0xFF252233, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF272435, 0xFF282536, 0xFF262334, 0xFF272437, 0xFF282538, 0xFF23212E, 0xFF000004, 0xFF31312F, 0xFFB8B7BC, 0xFFC5C4C9, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC7C6CB, 0xFFBCBBC0, 0xFF3A3A38, 0xFF020106, 0xFF211F2C, 0xFF262336, 0xFF272437, 0xFF262334, 0xFF272435, 0xFF252233, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF252233, 0xFF272435, 0xFF262334, 0xFF272437, 0xFF272437, 0xFF22202D, 0xFF030207, 0xFF3B3B39, 0xFFBAB9BE, 0xFFC6C5CA, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCCCBD0, 0xFFBFBEC3, 0xFF585858, 0xFF000004, 0xFF1C1A25, 0xFF242132, 0xFF2B283D, 0xFF221F34, 0xFF232031, 0xFF2B2937, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF282536, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF282536, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF2D2B39, 0xFF242132, 0xFF221F34, 0xFF2B283D, 0xFF252233, 0xFF1C1A25, 0xFF000004, 0xFF575757, 0xFFBEBDC2, 0xFFCBCACF, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFB7B6BB, 0xFF7F7F7F, 0xFF030207, 0xFF0F0E16, 0xFF252331, 0xFF242132, 0xFF2E2B3E, 0xFF242134, 0xFF211E2F, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF272435, 0xFF262334, 0xFF252233, 0xFF242132, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF242132, 0xFF252233, 0xFF262334, 0xFF272435, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF211E2F, 0xFF242134, 0xFF2E2B3E, 0xFF242132, 0xFF262432, 0xFF111018, 0xFF040308, 0xFF7F7F7F, 0xFFB6B5BA, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFB5B5B7, 0xFFAEAEB0, 0xFF16151A, 0xFF000005, 0xFF212028, 0xFF2A2835, 0xFF1C1A28, 0xFF2D2A3D, 0xFF262338, 0xFF272435, 0xFF262334,
+ 0xFF262334, 0xFF272435, 0xFF282536, 0xFF282536, 0xFF272435, 0xFF252233, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF252233, 0xFF272435, 0xFF282536, 0xFF282536, 0xFF272435, 0xFF262334,
+ 0xFF262334, 0xFF272435, 0xFF252237, 0xFF2C293C, 0xFF1B1927, 0xFF292734, 0xFF212028, 0xFF000005, 0xFF17161B, 0xFFAEAEB0, 0xFFB4B4B6, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFC4C4C6, 0xFFBBBABF, 0xFF7D7C81, 0xFF050507, 0xFF000004, 0xFF212026, 0xFF2D2B38, 0xFF252233, 0xFF262338, 0xFF262336, 0xFF252235,
+ 0xFF252235, 0xFF242134, 0xFF252235, 0xFF252235, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336,
+ 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF252235, 0xFF252235, 0xFF242134, 0xFF252235,
+ 0xFF252235, 0xFF262336, 0xFF262338, 0xFF252233, 0xFF2D2B38, 0xFF201F25, 0xFF000004, 0xFF050507, 0xFF7D7C81, 0xFFB9B8BD, 0xFFC5C5C7, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFACABB0, 0xFFB4B4B6, 0xFF4F4F51, 0xFF040406, 0xFF030207, 0xFF1D1C24, 0xFF272533, 0xFF262334, 0xFF272437, 0xFF282538,
+ 0xFF282538, 0xFF282538, 0xFF272437, 0xFF262336, 0xFF272437, 0xFF282538, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437,
+ 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF282538, 0xFF272437, 0xFF262336, 0xFF272437, 0xFF282538, 0xFF282538,
+ 0xFF282538, 0xFF272437, 0xFF272435, 0xFF272533, 0xFF1E1D25, 0xFF030207, 0xFF030305, 0xFF4E4E50, 0xFFB3B3B5, 0xFFABAAAF, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFAEAEB0, 0xFFB6B6B8, 0xFF4C4C4E, 0xFF030305, 0xFF000005, 0xFF121119, 0xFF1C1A25, 0xFF211F2C, 0xFF23212E,
+ 0xFF252330, 0xFF262431, 0xFF262431, 0xFF262431, 0xFF262431, 0xFF272532, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330,
+ 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF272532, 0xFF262431, 0xFF262431, 0xFF262431, 0xFF262431, 0xFF252330,
+ 0xFF23212E, 0xFF211F2C, 0xFF1A1823, 0xFF111018, 0xFF000005, 0xFF030305, 0xFF4C4C4E, 0xFFB6B6B8, 0xFFAEAEB0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFC4C4C6, 0xFFAAAAAC, 0xFFB7B7B9, 0xFF79787D, 0xFF16151A, 0xFF000004, 0xFF020106, 0xFF030207, 0xFF010005,
+ 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004,
+ 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004,
+ 0xFF010005, 0xFF030207, 0xFF000004, 0xFF000004, 0xFF16151A, 0xFF79787D, 0xFFB7B7B9, 0xFFAAAAAC, 0xFFC4C4C6, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFABAAAF, 0xFFAFAEB3, 0xFFAEAEB0, 0xFF797979, 0xFF515151, 0xFF353533, 0xFF2D2D2B,
+ 0xFF232321, 0xFF1E1E1C, 0xFF1D1D1B, 0xFF1D1D1B, 0xFF1B1B19, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917,
+ 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF1B1B19, 0xFF1D1D1B, 0xFF1D1D1B, 0xFF1E1E1C, 0xFF232321,
+ 0xFF2D2D2B, 0xFF353533, 0xFF515151, 0xFF7A7A7A, 0xFFAFAFB1, 0xFFAFAEB3, 0xFFABAAAF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFBAB9BE, 0xFFABAAB0, 0xFFADACB2, 0xFFB5B4BC, 0xFFB1B0B8, 0xFFAEADB5,
+ 0xFFABAAB2, 0xFFA9A8B0, 0xFFA9A8B0, 0xFFAAA9B1, 0xFFA9A8B0, 0xFFA8A7AF, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC,
+ 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA9A8AD, 0xFFA9A8AD, 0xFFA9A8AD, 0xFFABAAAF,
+ 0xFFADACB1, 0xFFB0AFB4, 0xFFB6B5BD, 0xFFACABB1, 0xFFA9A8AE, 0xFFB9B8BD, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFBCBBC1, 0xFFB4B3B8, 0xFFB2B1B6,
+ 0xFFAFAEB3, 0xFFADACB1, 0xFFADACB1, 0xFFADACB1, 0xFFADACB1, 0xFFACABB0, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3,
+ 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAEADB2, 0xFFAEADB2, 0xFFAEADB2, 0xFFAEADB2, 0xFFAFAEB3, 0xFFB1B0B5,
+ 0xFFB3B2B7, 0xFFB5B4B9, 0xFFBAB9BF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}
+};
+
+static const uint32_t icon2[H][W] = {
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFF1F1F1, 0xFFEFEFEF, 0xFFEEEEEE,
+ 0xFFEDEDED, 0xFFEDEDED, 0xFFEDEDED, 0xFFEDEDED, 0xFFEEEEEE, 0xFFEFEFEF, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0,
+ 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEFEFEF, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEDEDED, 0xFFEDEDED, 0xFFEEEEEE,
+ 0xFFEEEEEE, 0xFFEFEFEF, 0xFFF1F1F1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFEFEFEF, 0xFFECECEC, 0xFFF1F1F1, 0xFFF8F8F8, 0xFFF2F2F4, 0xFFF1F1F3,
+ 0xFFEEEEF0, 0xFFEBEBED, 0xFFE8E8EA, 0xFFE7E7E9, 0xFFE6E6E8, 0xFFE6E6E8, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9,
+ 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE6E6E8, 0xFFE6E6E8, 0xFFE7E7E9, 0xFFE8E8EA, 0xFFEBEBED, 0xFFEEEEF0,
+ 0xFFF1F1F3, 0xFFF3F3F5, 0xFFF8F8F8, 0xFFF1F1F1, 0xFFECECEC, 0xFFEFEFEF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFE5E5E7, 0xFFF7F7F9, 0xFFE0E0E0, 0xFFA8A8A6, 0xFF6F6F6D, 0xFF4B4B49, 0xFF3E3E3C,
+ 0xFF30302E, 0xFF2A2A28, 0xFF2C2C2A, 0xFF30302E, 0xFF31312F, 0xFF31312F, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D,
+ 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2E2E2C, 0xFF2F2F2D, 0xFF31312F, 0xFF31312F, 0xFF343432, 0xFF3C3C3A,
+ 0xFF494947, 0xFF535351, 0xFF767674, 0xFFADADAD, 0xFFE1E1E3, 0xFFF5F5F7, 0xFFE6E6E8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFE0E0E2, 0xFFF1F1F3, 0xFF9D9D9F, 0xFF222224, 0xFF000002, 0xFF000002, 0xFF010005, 0xFF000004,
+ 0xFF000004, 0xFF000004, 0xFF010005, 0xFF06050A, 0xFF06050A, 0xFF040308, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C,
+ 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF06050A, 0xFF08070C, 0xFF09080D, 0xFF08070C, 0xFF06050A, 0xFF040308,
+ 0xFF040308, 0xFF040308, 0xFF000004, 0xFF000004, 0xFF303032, 0xFFA1A1A3, 0xFFF3F3F5, 0xFFE7E7E7, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFDEDEE0, 0xFFF4F4F4, 0xFF626262, 0xFF000002, 0xFF050409, 0xFF121119, 0xFF1B1924, 0xFF211F2C, 0xFF262431,
+ 0xFF272532, 0xFF252330, 0xFF282633, 0xFF2E2C39, 0xFF32303D, 0xFF312F3C, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B,
+ 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF2F2D3A, 0xFF2F2D3A, 0xFF302E3B, 0xFF312F3C, 0xFF312F3C, 0xFF312F3C,
+ 0xFF2F2D3A, 0xFF2D2B38, 0xFF292732, 0xFF1C1B23, 0xFF000004, 0xFF060608, 0xFF686868, 0xFFEFEFEF, 0xFFE3E3E3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFE1E0E5, 0xFFF0F0F2, 0xFF666666, 0xFF050505, 0xFF050507, 0xFF17161E, 0xFF282633, 0xFF282536, 0xFF262336, 0xFF292639,
+ 0xFF282538, 0xFF242134, 0xFF242134, 0xFF282538, 0xFF2F2C3F, 0xFF322F42, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40,
+ 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF333043, 0xFF312E41, 0xFF2F2C3F, 0xFF2F2C3F, 0xFF312E41, 0xFF322F42,
+ 0xFF333043, 0xFF333043, 0xFF2D2A3B, 0xFF363441, 0xFF27262E, 0xFF0E0E10, 0xFF020202, 0xFF666666, 0xFFF5F5F5, 0xFFE0E0E2, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFEBEBEB, 0xFFF0EFF4, 0xFF9A9A9C, 0xFF000002, 0xFF070709, 0xFF1D1C22, 0xFF2E2C39, 0xFF292637, 0xFF242136, 0xFF262336, 0xFF262336,
+ 0xFF262336, 0xFF282538, 0xFF272437, 0xFF272437, 0xFF2B283B, 0xFF302D40, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41,
+ 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF322F42, 0xFF312E41, 0xFF312E41, 0xFF302D40,
+ 0xFF2F2C3F, 0xFF2E2B3E, 0xFF322F44, 0xFF2D2A3B, 0xFF33313C, 0xFF2C2B31, 0xFF141416, 0xFF030303, 0xFF9B9B9B, 0xFFEDEDEF, 0xFFEAEAEA, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFE5E5E5, 0xFFDADADC, 0xFF212025, 0xFF020107, 0xFF1D1C24, 0xFF282633, 0xFF242230, 0xFF1F1C2F, 0xFF272439, 0xFF262334, 0xFF221F30,
+ 0xFF232031, 0xFF262334, 0xFF272435, 0xFF252233, 0xFF282536, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2C293A, 0xFF2D2A3B, 0xFF2E2B3C, 0xFF2F2C3D, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2F2C3D, 0xFF312E3F, 0xFF2A273A, 0xFF302D40, 0xFF2E2C3A, 0xFF312F3A, 0xFF212026, 0xFF020106, 0xFF2E2E30, 0xFFDCDCDC, 0xFFE5E5E5, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFE7E7E7, 0xFFA2A2A2, 0xFF000004, 0xFF0E0D15, 0xFF2A2836, 0xFF282536, 0xFF252235, 0xFF2A273A, 0xFF262336, 0xFF292637, 0xFF262334,
+ 0xFF252233, 0xFF262334, 0xFF252233, 0xFF252233, 0xFF282536, 0xFF2C293A, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E,
+ 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF312E3F, 0xFF312E3F, 0xFF302D3E, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF302D3E, 0xFF312E3F, 0xFF322F40, 0xFF2C293A, 0xFF2F2C3D, 0xFF2F2C3D, 0xFF363441, 0xFF1C1B21, 0xFF000002, 0xFFA6A6A4, 0xFFE7E7E7, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFE4E4E4, 0xFFEBEBEB, 0xFF6D6D6D, 0xFF000004, 0xFF1E1C27, 0xFF262336, 0xFF252237, 0xFF242136, 0xFF282538, 0xFF252233, 0xFF242132, 0xFF272435,
+ 0xFF282536, 0xFF272435, 0xFF262334, 0xFF252233, 0xFF262334, 0xFF262334, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2F2C3D, 0xFF2F2C3D, 0xFF302D3E, 0xFF2F2C3D,
+ 0xFF2E2B3C, 0xFF2D2A3B, 0xFF2C2A38, 0xFF333041, 0xFF2E2B3E, 0xFF2C293C, 0xFF302D3E, 0xFF26252D, 0xFF010103, 0xFF6E6F6A, 0xFFEBEBEB, 0xFFE4E4E4, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFE2E2E4, 0xFFE7E6EB, 0xFF464845, 0xFF000004, 0xFF23212E, 0xFF292639, 0xFF252235, 0xFF272435, 0xFF272435, 0xFF262233, 0xFF30232C, 0xFF212237,
+ 0xFF162640, 0xFF1E2738, 0xFF2C2535, 0xFF2C1F30, 0xFF192936, 0xFF252331, 0xFF28293D, 0xFF35293F, 0xFF2F2E40, 0xFF2C2F42, 0xFF362841, 0xFF32263C, 0xFF2B2937, 0xFF352935,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2D2A3B, 0xFF2F2C3D, 0xFF302D3E, 0xFF2B283B, 0xFF302D40, 0xFF2B2936, 0xFF040308, 0xFF4F4F4D, 0xFFE5E4E9, 0xFFE1E1E3, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFE0E0E2, 0xFFE3E2E7, 0xFF3A3C39, 0xFF000004, 0xFF24222F, 0xFF292639, 0xFF252235, 0xFF262334, 0xFF272435, 0xFF282435, 0xFF262439, 0xFF2B292E,
+ 0xFF852E3F, 0xFF492235, 0xFF26202A, 0xFF2F2037, 0xFF332034, 0xFF28233A, 0xFF202632, 0xFF2F2838, 0xFF2F2838, 0xFF2D2638, 0xFF33273D, 0xFF2B3141, 0xFF24353F, 0xFF2E2D3B,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF302D3E, 0xFF2C293C, 0xFF302D40, 0xFF2B2936, 0xFF010005, 0xFF424240, 0xFFE2E1E6, 0xFFDFDFE1, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFDDDDDF, 0xFFDEDDE2, 0xFF2D2F2C, 0xFF000004, 0xFF252330, 0xFF282538, 0xFF262336, 0xFF252233, 0xFF262334, 0xFF2A2637, 0xFF1F203E, 0xFF842D3D,
+ 0xFFEA4158, 0xFFF83E56, 0xFF5A3441, 0xFF2A232B, 0xFF2D203A, 0xFF242237, 0xFF23232F, 0xFF2B2B37, 0xFF2D2F3B, 0xFF2F2B39, 0xFF322738, 0xFF292B3A, 0xFF252C3C, 0xFF2F263B,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2F2C3D, 0xFF2C293A, 0xFF2E2B3C, 0xFF2C293C, 0xFF2F2C3F, 0xFF2C2A37, 0xFF000004, 0xFF343432, 0xFFDDDCE1, 0xFFDCDCDE, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFDADADC, 0xFFDAD9DE, 0xFF252724, 0xFF000004, 0xFF262431, 0xFF272437, 0xFF262336, 0xFF242132, 0xFF242132, 0xFF292536, 0xFF2D293A, 0xFF562336,
+ 0xFFFC4259, 0xFFFF4A5F, 0xFFE33D47, 0xFF5B2C3C, 0xFF2E2230, 0xFF2B2738, 0xFF301D33, 0xFF2B2235, 0xFF282B3A, 0xFF2B2F3B, 0xFF302939, 0xFF312637, 0xFF31283D, 0xFF322840,
+ 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B,
+ 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2B2839, 0xFF2D2A3B, 0xFF2C293C, 0xFF2E2B3E, 0xFF2D2B38, 0xFF020106, 0xFF2B2B29, 0xFFD9D8DD, 0xFFDADADC, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFDADADC, 0xFFD7D6DB, 0xFF212320, 0xFF010005, 0xFF262431, 0xFF252235, 0xFF272437, 0xFF252233, 0xFF252233, 0xFF282435, 0xFF362A38, 0xFF381C2A,
+ 0xFF693542, 0xFFE23F44, 0xFFFF4655, 0xFFEC404E, 0xFF5F2D39, 0xFF27242D, 0xFF31233A, 0xFF2D1F38, 0xFF2B213A, 0xFF2A283D, 0xFF282C38, 0xFF2E2C39, 0xFF2F2C3D, 0xFF242B3D,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2B2839, 0xFF2D2A3B, 0xFF2C293C, 0xFF2C293C, 0xFF2D2B38, 0xFF040308, 0xFF282826, 0xFFD6D5DA, 0xFFD9D9DB, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD9D9DB, 0xFFD5D4D9, 0xFF20221F, 0xFF000004, 0xFF24222F, 0xFF262336, 0xFF272437, 0xFF252233, 0xFF282536, 0xFF282435, 0xFF392033, 0xFF3C243A,
+ 0xFF462C35, 0xFF713141, 0xFFF3454F, 0xFFFF4956, 0xFFF03D52, 0xFF612E3D, 0xFF20272D, 0xFF222534, 0xFF2D243F, 0xFF30263F, 0xFF232937, 0xFF292D38, 0xFF2F2B3A, 0xFF272638,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2E2B3C, 0xFF2D2A3B, 0xFF2C293C, 0xFF2C293C, 0xFF2B2936, 0xFF030207, 0xFF272725, 0xFFD4D3D8, 0xFFD8D8DA, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD8D8DA, 0xFFD3D2D7, 0xFF1F211E, 0xFF000004, 0xFF24222F, 0xFF282538, 0xFF272437, 0xFF242132, 0xFF292637, 0xFF272334, 0xFF222335, 0xFF362434,
+ 0xFF422A42, 0xFF4D2132, 0xFF722E39, 0xFFF23B4D, 0xFFFF405D, 0xFFEB4458, 0xFF652933, 0xFF31282D, 0xFF212735, 0xFF32263E, 0xFF2E2739, 0xFF292B37, 0xFF322B3B, 0xFF35273E,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2E2B3C, 0xFF2B2839, 0xFF2B283B, 0xFF2D2A3D, 0xFF2A2835, 0xFF020106, 0xFF272725, 0xFFD1D0D5, 0xFFD6D6D8, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD7D7D9, 0xFFD2D1D6, 0xFF1F211E, 0xFF000004, 0xFF252330, 0xFF2A273A, 0xFF272437, 0xFF221F30, 0xFF282536, 0xFF262233, 0xFF252736, 0xFF361F3B,
+ 0xFF3A2439, 0xFF402C38, 0xFF4A2C34, 0xFF762E3C, 0xFFF04557, 0xFFFB4A42, 0xFFF23D5E, 0xFF6B2F39, 0xFF1B2429, 0xFF2E2238, 0xFF34253A, 0xFF252733, 0xFF252935, 0xFF2A283D,
+ 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839,
+ 0xFF2B2839, 0xFF2B2839, 0xFF2A2738, 0xFF2D2A3B, 0xFF282536, 0xFF292639, 0xFF2E2B3E, 0xFF2A2835, 0xFF010005, 0xFF272725, 0xFFCFCED3, 0xFFD5D5D7, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD6D6D8, 0xFFD0CFD4, 0xFF20201E, 0xFF000004, 0xFF272532, 0xFF262336, 0xFF262336, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF242333, 0xFF232234,
+ 0xFF342335, 0xFF3D2831, 0xFF4B253A, 0xFF542340, 0xFF6F313C, 0xFFE54352, 0xFFFE474B, 0xFFF03E5E, 0xFF4A2C36, 0xFF252733, 0xFF262336, 0xFF2F223E, 0xFF2F2C41, 0xFF2C2632,
+ 0xFF31243E, 0xFF2C2F40, 0xFF302134, 0xFF2B2A38, 0xFF222836, 0xFF37253F, 0xFF2F273E, 0xFF26273B, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2A2738, 0xFF2A2738,
+ 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2B2839, 0xFF2B2839, 0xFF2B283B, 0xFF2B283B, 0xFF2A2835, 0xFF010005, 0xFF242422, 0xFFCECDD2, 0xFFD5D5D7, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD5D5D7, 0xFFD0CFD4, 0xFF20201E, 0xFF000004, 0xFF272532, 0xFF262336, 0xFF262336, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF232534, 0xFF271F36,
+ 0xFF292838, 0xFF22222C, 0xFF3F263B, 0xFF462B3C, 0xFF7F2E37, 0xFFF3464C, 0xFFFF4748, 0xFFE53E52, 0xFF443031, 0xFF2E222C, 0xFF302738, 0xFF38213E, 0xFF1D2A3B, 0xFF292735,
+ 0xFF292534, 0xFF292D38, 0xFF2F2530, 0xFF2A2D36, 0xFF242B35, 0xFF322A39, 0xFF2A2A36, 0xFF2D2937, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738,
+ 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2B2839, 0xFF2B2839, 0xFF2B283B, 0xFF2B283B, 0xFF2A2835, 0xFF010005, 0xFF242422, 0xFFCECDD2, 0xFFD5D5D7, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD5D5D7, 0xFFCECDD2, 0xFF1F1F1D, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF262336, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF26243A, 0xFF301F32,
+ 0xFF2E2135, 0xFF31243E, 0xFF272636, 0xFF6F323A, 0xFFE94152, 0xFFFF4450, 0xFFF03C59, 0xFF813245, 0xFF3B2639, 0xFF342538, 0xFF2B1F33, 0xFF172935, 0xFF2C293A, 0xFF302D38,
+ 0xFF282536, 0xFF292838, 0xFF2D2437, 0xFF2A273A, 0xFF282739, 0xFF2A273A, 0xFF222534, 0xFF322539, 0xFF2B2839, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738,
+ 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2B2839, 0xFF2A2738, 0xFF2B283B, 0xFF2B283B, 0xFF292734, 0xFF010005, 0xFF242422, 0xFFCCCBD0, 0xFFD4D4D6, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD4D4D6, 0xFFCDCCD1, 0xFF1F1F1D, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF262336, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF1F233C, 0xFF362130,
+ 0xFF341F30, 0xFF24253A, 0xFF603040, 0xFFF14050, 0xFFFF444D, 0xFFEF415C, 0xFF7C333E, 0xFF312730, 0xFF34263D, 0xFF44223B, 0xFF22222C, 0xFF202731, 0xFF302837, 0xFF2D282E,
+ 0xFF2A2C38, 0xFF2A2937, 0xFF2C293C, 0xFF2A273A, 0xFF2A2738, 0xFF282B3A, 0xFF222A37, 0xFF322B3D, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738,
+ 0xFF2A2738, 0xFF2A2738, 0xFF292637, 0xFF2B2839, 0xFF2A2738, 0xFF2A273A, 0xFF2B283B, 0xFF292734, 0xFF000004, 0xFF242422, 0xFFCBCACF, 0xFFD3D3D5, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD3D3D5, 0xFFCBCACF, 0xFF1F1F1D, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF262336, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF202737, 0xFF352033,
+ 0xFF1F282D, 0xFF5B2B37, 0xFFF03E58, 0xFFFE474B, 0xFFF83D50, 0xFF79333D, 0xFF4A2A2F, 0xFF4A2840, 0xFF3B2742, 0xFF211E2F, 0xFF242331, 0xFF2D233C, 0xFF211E39, 0xFF22223A,
+ 0xFF292735, 0xFF2A2239, 0xFF2A243E, 0xFF2C223B, 0xFF2C243B, 0xFF28293B, 0xFF26283D, 0xFF1D253C, 0xFF2B2738, 0xFF2B2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF292637,
+ 0xFF282737, 0xFF282737, 0xFF292637, 0xFF2A2738, 0xFF2A2738, 0xFF2A273A, 0xFF2A273A, 0xFF292734, 0xFF000004, 0xFF232321, 0xFFC9C8CD, 0xFFD2D2D4, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD2D2D4, 0xFFC9C8CD, 0xFF1F1F1D, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF262336, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF332731, 0xFF292033,
+ 0xFF652E41, 0xFFF74056, 0xFFFF4048, 0xFFF24559, 0xFF78323C, 0xFF47282D, 0xFF452635, 0xFF2E2A39, 0xFF272533, 0xFF492B35, 0xFF732B39, 0xFF67313E, 0xFF642D40, 0xFF693444,
+ 0xFF6C303C, 0xFF6B2E3E, 0xFF6B3044, 0xFF6F2E42, 0xFF69313C, 0xFF6A303E, 0xFF652E43, 0xFF2F2434, 0xFF2B2738, 0xFF2B2738, 0xFF2B2738, 0xFF292637, 0xFF292637, 0xFF282737,
+ 0xFF282737, 0xFF282737, 0xFF292637, 0xFF2A2738, 0xFF292637, 0xFF292639, 0xFF2A273A, 0xFF282633, 0xFF000004, 0xFF232321, 0xFFC7C6CB, 0xFFD1D1D3, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD1D1D3, 0xFFC8C7CC, 0xFF1F1F1D, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF262336, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF292130, 0xFF592D3E,
+ 0xFFDE3B58, 0xFFFF434E, 0xFFF84153, 0xFF77303E, 0xFF452E3E, 0xFF472535, 0xFF402933, 0xFF27242B, 0xFF402C2D, 0xFFEC3855, 0xFFFF4553, 0xFFFF3E49, 0xFFFF494F, 0xFFFF464B,
+ 0xFFFF4A54, 0xFFFC4A56, 0xFFFC4A58, 0xFFFF4956, 0xFFF64E4E, 0xFFFE4650, 0xFFFB455C, 0xFF92353D, 0xFF2B2738, 0xFF2A2637, 0xFF2A2637, 0xFF292637, 0xFF292637, 0xFF282737,
+ 0xFF282737, 0xFF282737, 0xFF282536, 0xFF292637, 0xFF292637, 0xFF292639, 0xFF2A273A, 0xFF282633, 0xFF000004, 0xFF232321, 0xFFC6C5CA, 0xFFD0D0D2, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD0D0D2, 0xFFC7C6CB, 0xFF1F1F1D, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF262336, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF282341, 0xFF763136,
+ 0xFFFA4D51, 0xFFF74752, 0xFF6E2D33, 0xFF4E273A, 0xFF42243C, 0xFF342738, 0xFF272236, 0xFF35233D, 0xFF362430, 0xFFC33D55, 0xFFEA4A54, 0xFFEA434D, 0xFFF84354, 0xFFF1414E,
+ 0xFFF2424D, 0xFFEC4451, 0xFFEC4151, 0xFFF3434E, 0xFFE34846, 0xFFF2404C, 0xFFF54461, 0xFF6D3236, 0xFF2A2637, 0xFF2A2637, 0xFF2A2637, 0xFF292637, 0xFF292637, 0xFF282737,
+ 0xFF282737, 0xFF282737, 0xFF282536, 0xFF292637, 0xFF292637, 0xFF292639, 0xFF292639, 0xFF282633, 0xFF000004, 0xFF222220, 0xFFC5C4C9, 0xFFD0D0D2, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCFCED3, 0xFFC6C5CA, 0xFF1D1D1B, 0xFF010005, 0xFF24222F, 0xFF282538, 0xFF252235, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF30202B, 0xFF4D2C3D,
+ 0xFF653449, 0xFF622F42, 0xFF4C2738, 0xFF3A2632, 0xFF332735, 0xFF312636, 0xFF2D2636, 0xFF302536, 0xFF392437, 0xFF462739, 0xFF542A3E, 0xFF5E2D40, 0xFF632E40, 0xFF632D3D,
+ 0xFF612E41, 0xFF632E40, 0xFF642F41, 0xFF642F41, 0xFF613141, 0xFF5A3143, 0xFF4E2B3F, 0xFF43263A, 0xFF32263A, 0xFF2F2639, 0xFF2A2637, 0xFF282536, 0xFF272636, 0xFF282536,
+ 0xFF282536, 0xFF282435, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF292639, 0xFF282538, 0xFF282633, 0xFF000004, 0xFF20201E, 0xFFC4C3C8, 0xFFCCCBD0, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCECDD2, 0xFFC5C4C9, 0xFF1D1D1B, 0xFF010005, 0xFF24222F, 0xFF282538, 0xFF252235, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF2F2434, 0xFF3C2537,
+ 0xFF482237, 0xFF482136, 0xFF402536, 0xFF37293A, 0xFF2E2536, 0xFF272032, 0xFF282536, 0xFF2B2434, 0xFF312334, 0xFF3B2436, 0xFF462739, 0xFF4D283A, 0xFF51283A, 0xFF502737,
+ 0xFF4F283B, 0xFF50293B, 0xFF522939, 0xFF522939, 0xFF4F2A3B, 0xFF4A2B3B, 0xFF41283B, 0xFF3A2538, 0xFF2F2639, 0xFF2D2638, 0xFF2A2637, 0xFF282536, 0xFF272636, 0xFF282536,
+ 0xFF282536, 0xFF292536, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF292639, 0xFF282538, 0xFF282633, 0xFF000004, 0xFF20201E, 0xFFC3C2C7, 0xFFCBCACF, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCECDD2, 0xFFC4C3C8, 0xFF1D1D1B, 0xFF010005, 0xFF24222F, 0xFF282538, 0xFF252235, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF282536, 0xFF2F2236,
+ 0xFF362035, 0xFF351F34, 0xFF302335, 0xFF2B2738, 0xFF282538, 0xFF262338, 0xFF242635, 0xFF272435, 0xFF2B2434, 0xFF312436, 0xFF372437, 0xFF3A2536, 0xFF3C2537, 0xFF3B2434,
+ 0xFF3B2637, 0xFF3C2537, 0xFF3D2636, 0xFF3C2633, 0xFF3C2736, 0xFF392838, 0xFF342738, 0xFF312637, 0xFF2E2538, 0xFF2C2537, 0xFF292536, 0xFF282536, 0xFF272636, 0xFF282536,
+ 0xFF282536, 0xFF292536, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF282538, 0xFF272437, 0xFF282633, 0xFF000004, 0xFF20201E, 0xFFC2C1C6, 0xFFCBCACF, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCDCCD1, 0xFFC2C1C6, 0xFF1D1D1B, 0xFF010005, 0xFF24222F, 0xFF282538, 0xFF252235, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF242335, 0xFF292438,
+ 0xFF2F2639, 0xFF2D2638, 0xFF272435, 0xFF222335, 0xFF242237, 0xFF28253A, 0xFF252434, 0xFF262535, 0xFF292536, 0xFF2B2436, 0xFF2D2437, 0xFF2D2435, 0xFF2D2435, 0xFF2E2536,
+ 0xFF2D2437, 0xFF2E2536, 0xFF312636, 0xFF312636, 0xFF2F2736, 0xFF2E2836, 0xFF2C2837, 0xFF2B2937, 0xFF2C2537, 0xFF292536, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF282536,
+ 0xFF282536, 0xFF292536, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF282538, 0xFF272437, 0xFF272532, 0xFF000004, 0xFF20201E, 0xFFC0BFC4, 0xFFCAC9CE, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCBCACF, 0xFFC0BFC4, 0xFF1D1D1B, 0xFF010005, 0xFF24222F, 0xFF282538, 0xFF252235, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF282536, 0xFF272334,
+ 0xFF262233, 0xFF272533, 0xFF272636, 0xFF262535, 0xFF252235, 0xFF252034, 0xFF252233, 0xFF252233, 0xFF272334, 0xFF272334, 0xFF272236, 0xFF252235, 0xFF262336, 0xFF262336,
+ 0xFF262336, 0xFF262336, 0xFF292536, 0xFF2A2637, 0xFF292534, 0xFF282634, 0xFF282536, 0xFF282536, 0xFF282435, 0xFF292536, 0xFF282536, 0xFF272435, 0xFF272435, 0xFF282536,
+ 0xFF282536, 0xFF282536, 0xFF272435, 0xFF272435, 0xFF282536, 0xFF282538, 0xFF272437, 0xFF272532, 0xFF000004, 0xFF20201E, 0xFFBFBEC3, 0xFFC9C8CD, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCAC9CE, 0xFFBFBEC3, 0xFF1D1D1B, 0xFF010005, 0xFF24222F, 0xFF282538, 0xFF252235, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF292534, 0xFF262231,
+ 0xFF23212F, 0xFF232230, 0xFF272533, 0xFF272533, 0xFF282433, 0xFF272332, 0xFF272334, 0xFF272334, 0xFF272334, 0xFF272334, 0xFF252235, 0xFF252235, 0xFF242134, 0xFF242335,
+ 0xFF252235, 0xFF252235, 0xFF262334, 0xFF282536, 0xFF282536, 0xFF262334, 0xFF272334, 0xFF282435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF282536, 0xFF282536, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF282538, 0xFF272437, 0xFF272532, 0xFF000004, 0xFF1F1F1D, 0xFFBDBCC1, 0xFFC8C7CC, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCAC9CE, 0xFFBDBCC1, 0xFF1D1D1B, 0xFF010005, 0xFF24222F, 0xFF282538, 0xFF252235, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF282133, 0xFF282435,
+ 0xFF272435, 0xFF262334, 0xFF262233, 0xFF272334, 0xFF282435, 0xFF282634, 0xFF272435, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF252233,
+ 0xFF282435, 0xFF262334, 0xFF262334, 0xFF262535, 0xFF272636, 0xFF272435, 0xFF282435, 0xFF2B2436, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF272435, 0xFF282536, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272437, 0xFF262336, 0xFF272532, 0xFF000004, 0xFF1F1F1D, 0xFFBCBBC0, 0xFFC7C6CB, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC9C8CD, 0xFFBDBCC1, 0xFF1D1D1B, 0xFF010005, 0xFF24222F, 0xFF282538, 0xFF252235, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF252034, 0xFF262336,
+ 0xFF262537, 0xFF262336, 0xFF272236, 0xFF282337, 0xFF262334, 0xFF232232, 0xFF252432, 0xFF242331, 0xFF242331, 0xFF242331, 0xFF252434, 0xFF272435, 0xFF272435, 0xFF262334,
+ 0xFF292534, 0xFF252331, 0xFF242333, 0xFF252434, 0xFF262535, 0xFF272435, 0xFF282435, 0xFF2C2537, 0xFF252434, 0xFF272435, 0xFF282536, 0xFF272435, 0xFF272435, 0xFF262334,
+ 0xFF272435, 0xFF282536, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272437, 0xFF262336, 0xFF272532, 0xFF000004, 0xFF1F1F1D, 0xFFBCBBC0, 0xFFC7C6CB, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC6C5CA, 0xFFBDBCC1, 0xFF1D1D1B, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF282538, 0xFF252233, 0xFF242132, 0xFF282536, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF272435, 0xFF272435, 0xFF282536, 0xFF252233, 0xFF262334, 0xFF292639, 0xFF282538, 0xFF282633, 0xFF000004, 0xFF1E1E1C, 0xFFB9B8BD, 0xFFC5C4C9, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC5C4C9, 0xFFBBBABF, 0xFF1E1E1C, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF272437, 0xFF262334, 0xFF252233, 0xFF272435, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF272435, 0xFF272435, 0xFF292637, 0xFF272435, 0xFF272435, 0xFF282538, 0xFF262336, 0xFF272532, 0xFF000004, 0xFF1E1E1C, 0xFFB8B7BC, 0xFFC4C3C8, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC4C3C8, 0xFFB9B8BD, 0xFF1F1F1D, 0xFF000004, 0xFF272532, 0xFF252235, 0xFF262336, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF272435, 0xFF272435, 0xFF282536, 0xFF272435, 0xFF272435, 0xFF272437, 0xFF262336, 0xFF272532, 0xFF000004, 0xFF1F1F1D, 0xFFB6B5BA, 0xFFC3C2C7, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC3C2C7, 0xFFB8B7BC, 0xFF1F1F1D, 0xFF000004, 0xFF272532, 0xFF262336, 0xFF252235, 0xFF262334, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF252233, 0xFF252235, 0xFF272437, 0xFF282633, 0xFF000004, 0xFF1F1F1D, 0xFFB5B4B9, 0xFFC2C1C6, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC3C2C7, 0xFFB8B7BC, 0xFF20201E, 0xFF000004, 0xFF282633, 0xFF282538, 0xFF252235, 0xFF252233, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF242132, 0xFF252235, 0xFF282538, 0xFF282633, 0xFF000004, 0xFF21211F, 0xFFB5B4B9, 0xFFC2C1C6, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC4C3C8, 0xFFB9B8BD, 0xFF272725, 0xFF000004, 0xFF262431, 0xFF282538, 0xFF252235, 0xFF242132, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF272435, 0xFF282536, 0xFF252233, 0xFF262336, 0xFF282538, 0xFF262431, 0xFF000004, 0xFF262624, 0xFFB6B5BA, 0xFFC4C3C8, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC6C5CA, 0xFFBBBABF, 0xFF31312F, 0xFF000004, 0xFF23212E, 0xFF272437, 0xFF262336, 0xFF252233, 0xFF272435, 0xFF252233, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF272435, 0xFF282536, 0xFF262334, 0xFF272437, 0xFF282538, 0xFF23212E, 0xFF000004, 0xFF31312F, 0xFFB8B7BC, 0xFFC5C4C9, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC7C6CB, 0xFFBCBBC0, 0xFF3A3A38, 0xFF020106, 0xFF211F2C, 0xFF262336, 0xFF272437, 0xFF262334, 0xFF272435, 0xFF252233, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF252233, 0xFF272435, 0xFF262334, 0xFF272437, 0xFF272437, 0xFF22202D, 0xFF030207, 0xFF3B3B39, 0xFFBAB9BE, 0xFFC6C5CA, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCCCBD0, 0xFFBFBEC3, 0xFF585858, 0xFF000004, 0xFF1C1A25, 0xFF242132, 0xFF2B283D, 0xFF221F34, 0xFF232031, 0xFF2B2937, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF282536, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF282536, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF2D2B39, 0xFF242132, 0xFF221F34, 0xFF2B283D, 0xFF252233, 0xFF1C1A25, 0xFF000004, 0xFF575757, 0xFFBEBDC2, 0xFFCBCACF, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFB7B6BB, 0xFF7F7F7F, 0xFF030207, 0xFF0F0E16, 0xFF252331, 0xFF242132, 0xFF2E2B3E, 0xFF242134, 0xFF211E2F, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF272435, 0xFF262334, 0xFF252233, 0xFF242132, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF242132, 0xFF252233, 0xFF262334, 0xFF272435, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF211E2F, 0xFF242134, 0xFF2E2B3E, 0xFF242132, 0xFF262432, 0xFF111018, 0xFF040308, 0xFF7F7F7F, 0xFFB6B5BA, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFB5B5B7, 0xFFAEAEB0, 0xFF16151A, 0xFF000005, 0xFF212028, 0xFF2A2835, 0xFF1C1A28, 0xFF2D2A3D, 0xFF262338, 0xFF272435, 0xFF262334,
+ 0xFF262334, 0xFF272435, 0xFF282536, 0xFF282536, 0xFF272435, 0xFF252233, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF252233, 0xFF272435, 0xFF282536, 0xFF282536, 0xFF272435, 0xFF262334,
+ 0xFF262334, 0xFF272435, 0xFF252237, 0xFF2C293C, 0xFF1B1927, 0xFF292734, 0xFF212028, 0xFF000005, 0xFF17161B, 0xFFAEAEB0, 0xFFB4B4B6, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFC4C4C6, 0xFFBBBABF, 0xFF7D7C81, 0xFF050507, 0xFF000004, 0xFF212026, 0xFF2D2B38, 0xFF252233, 0xFF262338, 0xFF262336, 0xFF252235,
+ 0xFF252235, 0xFF242134, 0xFF252235, 0xFF252235, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336,
+ 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF252235, 0xFF252235, 0xFF242134, 0xFF252235,
+ 0xFF252235, 0xFF262336, 0xFF262338, 0xFF252233, 0xFF2D2B38, 0xFF201F25, 0xFF000004, 0xFF050507, 0xFF7D7C81, 0xFFB9B8BD, 0xFFC5C5C7, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFACABB0, 0xFFB4B4B6, 0xFF4F4F51, 0xFF040406, 0xFF030207, 0xFF1D1C24, 0xFF272533, 0xFF262334, 0xFF272437, 0xFF282538,
+ 0xFF282538, 0xFF282538, 0xFF272437, 0xFF262336, 0xFF272437, 0xFF282538, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437,
+ 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF282538, 0xFF272437, 0xFF262336, 0xFF272437, 0xFF282538, 0xFF282538,
+ 0xFF282538, 0xFF272437, 0xFF272435, 0xFF272533, 0xFF1E1D25, 0xFF030207, 0xFF030305, 0xFF4E4E50, 0xFFB3B3B5, 0xFFABAAAF, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFAEAEB0, 0xFFB6B6B8, 0xFF4C4C4E, 0xFF030305, 0xFF000005, 0xFF121119, 0xFF1C1A25, 0xFF211F2C, 0xFF23212E,
+ 0xFF252330, 0xFF262431, 0xFF262431, 0xFF262431, 0xFF262431, 0xFF272532, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330,
+ 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF272532, 0xFF262431, 0xFF262431, 0xFF262431, 0xFF262431, 0xFF252330,
+ 0xFF23212E, 0xFF211F2C, 0xFF1A1823, 0xFF111018, 0xFF000005, 0xFF030305, 0xFF4C4C4E, 0xFFB6B6B8, 0xFFAEAEB0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFC4C4C6, 0xFFAAAAAC, 0xFFB7B7B9, 0xFF79787D, 0xFF16151A, 0xFF000004, 0xFF020106, 0xFF030207, 0xFF010005,
+ 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004,
+ 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004,
+ 0xFF010005, 0xFF030207, 0xFF000004, 0xFF000004, 0xFF16151A, 0xFF79787D, 0xFFB7B7B9, 0xFFAAAAAC, 0xFFC4C4C6, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFABAAAF, 0xFFAFAEB3, 0xFFAEAEB0, 0xFF797979, 0xFF515151, 0xFF353533, 0xFF2D2D2B,
+ 0xFF232321, 0xFF1E1E1C, 0xFF1D1D1B, 0xFF1D1D1B, 0xFF1B1B19, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917,
+ 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF1B1B19, 0xFF1D1D1B, 0xFF1D1D1B, 0xFF1E1E1C, 0xFF232321,
+ 0xFF2D2D2B, 0xFF353533, 0xFF515151, 0xFF7A7A7A, 0xFFAFAFB1, 0xFFAFAEB3, 0xFFABAAAF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFBAB9BE, 0xFFABAAB0, 0xFFADACB2, 0xFFB5B4BC, 0xFFB1B0B8, 0xFFAEADB5,
+ 0xFFABAAB2, 0xFFA9A8B0, 0xFFA9A8B0, 0xFFAAA9B1, 0xFFA9A8B0, 0xFFA8A7AF, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC,
+ 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA9A8AD, 0xFFA9A8AD, 0xFFA9A8AD, 0xFFABAAAF,
+ 0xFFADACB1, 0xFFB0AFB4, 0xFFB6B5BD, 0xFFACABB1, 0xFFA9A8AE, 0xFFB9B8BD, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFBCBBC1, 0xFFB4B3B8, 0xFFB2B1B6,
+ 0xFFAFAEB3, 0xFFADACB1, 0xFFADACB1, 0xFFADACB1, 0xFFADACB1, 0xFFACABB0, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3,
+ 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAEADB2, 0xFFAEADB2, 0xFFAEADB2, 0xFFAEADB2, 0xFFAFAEB3, 0xFFB1B0B5,
+ 0xFFB3B2B7, 0xFFB5B4B9, 0xFFBAB9BF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}
+};
+
+static const uint32_t icon3[H][W] = {
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFF1F1F1, 0xFFEFEFEF, 0xFFEEEEEE,
+ 0xFFEDEDED, 0xFFEDEDED, 0xFFEDEDED, 0xFFEDEDED, 0xFFEEEEEE, 0xFFEFEFEF, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0,
+ 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEFEFEF, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEDEDED, 0xFFEDEDED, 0xFFEEEEEE,
+ 0xFFEEEEEE, 0xFFEFEFEF, 0xFFF1F1F1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFEFEFEF, 0xFFECECEC, 0xFFF1F1F1, 0xFFF8F8F8, 0xFFF2F2F4, 0xFFF1F1F3,
+ 0xFFEEEEF0, 0xFFEBEBED, 0xFFE8E8EA, 0xFFE7E7E9, 0xFFE6E6E8, 0xFFE6E6E8, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9,
+ 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE6E6E8, 0xFFE6E6E8, 0xFFE7E7E9, 0xFFE8E8EA, 0xFFEBEBED, 0xFFEEEEF0,
+ 0xFFF1F1F3, 0xFFF3F3F5, 0xFFF8F8F8, 0xFFF1F1F1, 0xFFECECEC, 0xFFEFEFEF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFE5E5E7, 0xFFF7F7F9, 0xFFE0E0E0, 0xFFA8A8A6, 0xFF6F6F6D, 0xFF4B4B49, 0xFF3E3E3C,
+ 0xFF30302E, 0xFF2A2A28, 0xFF2C2C2A, 0xFF30302E, 0xFF31312F, 0xFF31312F, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D,
+ 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2E2E2C, 0xFF2F2F2D, 0xFF31312F, 0xFF31312F, 0xFF343432, 0xFF3C3C3A,
+ 0xFF494947, 0xFF535351, 0xFF767674, 0xFFADADAD, 0xFFE1E1E3, 0xFFF5F5F7, 0xFFE6E6E8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFE0E0E2, 0xFFF1F1F3, 0xFF9D9D9F, 0xFF222224, 0xFF000002, 0xFF000002, 0xFF010005, 0xFF000004,
+ 0xFF000004, 0xFF000004, 0xFF010005, 0xFF06050A, 0xFF06050A, 0xFF040308, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C,
+ 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF06050A, 0xFF08070C, 0xFF09080D, 0xFF08070C, 0xFF06050A, 0xFF040308,
+ 0xFF040308, 0xFF040308, 0xFF000004, 0xFF000004, 0xFF303032, 0xFFA1A1A3, 0xFFF3F3F5, 0xFFE7E7E7, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFDEDEE0, 0xFFF4F4F4, 0xFF626262, 0xFF000002, 0xFF050409, 0xFF121119, 0xFF1B1924, 0xFF211F2C, 0xFF262431,
+ 0xFF272532, 0xFF252330, 0xFF282633, 0xFF2E2C39, 0xFF32303D, 0xFF312F3C, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B,
+ 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF2F2D3A, 0xFF2F2D3A, 0xFF302E3B, 0xFF312F3C, 0xFF312F3C, 0xFF312F3C,
+ 0xFF2F2D3A, 0xFF2D2B38, 0xFF292732, 0xFF1C1B23, 0xFF000004, 0xFF060608, 0xFF686868, 0xFFEFEFEF, 0xFFE3E3E3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFE1E0E5, 0xFFF0F0F2, 0xFF666666, 0xFF050505, 0xFF050507, 0xFF17161E, 0xFF282633, 0xFF282536, 0xFF262336, 0xFF292639,
+ 0xFF282538, 0xFF242134, 0xFF242134, 0xFF282538, 0xFF2F2C3F, 0xFF322F42, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40,
+ 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF333043, 0xFF312E41, 0xFF2F2C3F, 0xFF2F2C3F, 0xFF312E41, 0xFF322F42,
+ 0xFF333043, 0xFF333043, 0xFF2D2A3B, 0xFF363441, 0xFF27262E, 0xFF0E0E10, 0xFF020202, 0xFF666666, 0xFFF5F5F5, 0xFFE0E0E2, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFEBEBEB, 0xFFF0EFF4, 0xFF9A9A9C, 0xFF000002, 0xFF070709, 0xFF1D1C22, 0xFF2E2C39, 0xFF292637, 0xFF242136, 0xFF262336, 0xFF262336,
+ 0xFF262336, 0xFF282538, 0xFF272437, 0xFF272437, 0xFF2B283B, 0xFF302D40, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41,
+ 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF322F42, 0xFF312E41, 0xFF312E41, 0xFF302D40,
+ 0xFF2F2C3F, 0xFF2E2B3E, 0xFF322F44, 0xFF2D2A3B, 0xFF33313C, 0xFF2C2B31, 0xFF141416, 0xFF030303, 0xFF9B9B9B, 0xFFEDEDEF, 0xFFEAEAEA, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFE5E5E5, 0xFFDADADC, 0xFF212025, 0xFF020107, 0xFF1D1C24, 0xFF282633, 0xFF242230, 0xFF1F1C2F, 0xFF272439, 0xFF262334, 0xFF221F30,
+ 0xFF232031, 0xFF262334, 0xFF272435, 0xFF252233, 0xFF282536, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2C293A, 0xFF2D2A3B, 0xFF2E2B3C, 0xFF2F2C3D, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2F2C3D, 0xFF312E3F, 0xFF2A273A, 0xFF302D40, 0xFF2E2C3A, 0xFF312F3A, 0xFF212026, 0xFF020106, 0xFF2E2E30, 0xFFDCDCDC, 0xFFE5E5E5, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFE7E7E7, 0xFFA2A2A2, 0xFF000004, 0xFF0E0D15, 0xFF2A2836, 0xFF282536, 0xFF252235, 0xFF2A273A, 0xFF262336, 0xFF292637, 0xFF262334,
+ 0xFF252233, 0xFF262334, 0xFF252233, 0xFF252233, 0xFF282536, 0xFF2C293A, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E,
+ 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF312E3F, 0xFF312E3F, 0xFF302D3E, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF302D3E, 0xFF312E3F, 0xFF322F40, 0xFF2C293A, 0xFF2F2C3D, 0xFF2F2C3D, 0xFF363441, 0xFF1C1B21, 0xFF000002, 0xFFA6A6A4, 0xFFE7E7E7, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFE4E4E4, 0xFFEBEBEB, 0xFF6D6D6D, 0xFF000004, 0xFF1E1C27, 0xFF262336, 0xFF252237, 0xFF242136, 0xFF282538, 0xFF252233, 0xFF242132, 0xFF272435,
+ 0xFF282536, 0xFF272435, 0xFF262334, 0xFF252233, 0xFF262334, 0xFF262334, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2F2C3D, 0xFF2F2C3D, 0xFF302D3E, 0xFF2F2C3D,
+ 0xFF2E2B3C, 0xFF2D2A3B, 0xFF2C2A38, 0xFF333041, 0xFF2E2B3E, 0xFF2C293C, 0xFF302D3E, 0xFF26252D, 0xFF010103, 0xFF6E6F6A, 0xFFEBEBEB, 0xFFE4E4E4, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFE2E2E4, 0xFFE7E6EB, 0xFF484846, 0xFF020106, 0xFF23212E, 0xFF282538, 0xFF252235, 0xFF262334, 0xFF252233, 0xFF252233, 0xFF2B232E, 0xFF251F41,
+ 0xFF1E253F, 0xFF261F2F, 0xFF2F2432, 0xFF252130, 0xFF291E3C, 0xFF2E2128, 0xFF2E282C, 0xFF352D3A, 0xFF302C3A, 0xFF2D2D37, 0xFF2B2F3B, 0xFF282A3F, 0xFF2A2B3F, 0xFF303038,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2D2A3B, 0xFF2F2C3D, 0xFF302D3E, 0xFF2B283B, 0xFF302D40, 0xFF2B2936, 0xFF040308, 0xFF4F4F4D, 0xFFE5E4E9, 0xFFE1E1E3, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFE0E0E2, 0xFFE3E2E7, 0xFF3B3B39, 0xFF000004, 0xFF24222F, 0xFF282538, 0xFF262336, 0xFF272435, 0xFF262334, 0xFF292637, 0xFF31233A, 0xFF2F253D,
+ 0xFF6C3F28, 0xFF4E3338, 0xFF242136, 0xFF293036, 0xFF222536, 0xFF212435, 0xFF222439, 0xFF2A2742, 0xFF2C2841, 0xFF2B2A3C, 0xFF2F2937, 0xFF372A3C, 0xFF352C41, 0xFF28293D,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF302D3E, 0xFF2C293C, 0xFF302D40, 0xFF2B2936, 0xFF010005, 0xFF424240, 0xFFE2E1E6, 0xFFDFDFE1, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFDDDDDF, 0xFFDEDDE2, 0xFF2D2D2B, 0xFF000004, 0xFF252330, 0xFF272437, 0xFF272437, 0xFF262334, 0xFF262334, 0xFF2B2839, 0xFF232230, 0xFF77482C,
+ 0xFFFBA057, 0xFFF38234, 0xFF593D39, 0xFF1D2939, 0xFF2D253A, 0xFF2A2543, 0xFF23253A, 0xFF2B253F, 0xFF312D46, 0xFF2E3047, 0xFF2C293A, 0xFF382737, 0xFF372A3C, 0xFF27283D,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2F2C3D, 0xFF2C293A, 0xFF2E2B3C, 0xFF2C293C, 0xFF2F2C3F, 0xFF2C2A37, 0xFF000004, 0xFF343432, 0xFFDDDCE1, 0xFFDCDCDE, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFDADADC, 0xFFDAD9DE, 0xFF252523, 0xFF010005, 0xFF262431, 0xFF262336, 0xFF282538, 0xFF262334, 0xFF252233, 0xFF2A2738, 0xFF2D2733, 0xFF53393C,
+ 0xFFF58134, 0xFFFF8A1F, 0xFFF08B3D, 0xFF5B3D33, 0xFF31212C, 0xFF2F252E, 0xFF27242D, 0xFF2D202A, 0xFF322735, 0xFF282F41, 0xFF252D40, 0xFF2C2839, 0xFF2F2736, 0xFF2D2F3C,
+ 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B,
+ 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2B2839, 0xFF2D2A3B, 0xFF2C293C, 0xFF2E2B3E, 0xFF2D2B38, 0xFF020106, 0xFF2B2B29, 0xFFD9D8DD, 0xFFDADADC, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFDADADC, 0xFFD7D6DB, 0xFF232321, 0xFF030207, 0xFF262431, 0xFF252235, 0xFF282538, 0xFF252233, 0xFF252233, 0xFF282536, 0xFF392D39, 0xFF302738,
+ 0xFF6B463D, 0xFFF48B3A, 0xFFFF882B, 0xFFF48742, 0xFF643E33, 0xFF302833, 0xFF242A3A, 0xFF2E2331, 0xFF31242E, 0xFF292732, 0xFF282F41, 0xFF2A2C43, 0xFF272437, 0xFF302E39,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2B2839, 0xFF2D2A3B, 0xFF2C293C, 0xFF2C293C, 0xFF2D2B38, 0xFF040308, 0xFF282826, 0xFFD6D5DA, 0xFFD9D9DB, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD9D9DB, 0xFFD5D4D9, 0xFF21211F, 0xFF020106, 0xFF24222F, 0xFF252235, 0xFF282538, 0xFF252233, 0xFF272435, 0xFF282536, 0xFF31242E, 0xFF3F3430,
+ 0xFF3D3439, 0xFF6F4837, 0xFFF68740, 0xFFFF8D43, 0xFFF08946, 0xFF623532, 0xFF22273D, 0xFF26223D, 0xFF31253B, 0xFF32252F, 0xFF332B38, 0xFF2F2B44, 0xFF26223B, 0xFF302A38,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2E2B3C, 0xFF2D2A3B, 0xFF2C293C, 0xFF2C293C, 0xFF2B2936, 0xFF030207, 0xFF272725, 0xFFD4D3D8, 0xFFD8D8DA, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD8D8DA, 0xFFD3D2D7, 0xFF20201E, 0xFF010005, 0xFF24222F, 0xFF272437, 0xFF282538, 0xFF242132, 0xFF282536, 0xFF272435, 0xFF32253F, 0xFF30232A,
+ 0xFF452C32, 0xFF533B3B, 0xFF734A38, 0xFFEC8035, 0xFFFF9A3B, 0xFFEE883D, 0xFF683D2D, 0xFF342230, 0xFF24213C, 0xFF2D2532, 0xFF31252F, 0xFF2D2942, 0xFF282540, 0xFF322A37,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2E2B3C, 0xFF2B2839, 0xFF2B283B, 0xFF2D2A3D, 0xFF2A2835, 0xFF020106, 0xFF272725, 0xFFD1D0D5, 0xFFD6D6D8, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD7D7D9, 0xFFD2D1D6, 0xFF20201E, 0xFF000004, 0xFF252330, 0xFF292639, 0xFF272437, 0xFF221F30, 0xFF282536, 0xFF262334, 0xFF252432, 0xFF2F2D38,
+ 0xFF3B2A3A, 0xFF382A27, 0xFF463B37, 0xFF7F4833, 0xFFF3842B, 0xFFFD933D, 0xFFED853C, 0xFF693E2D, 0xFF21273D, 0xFF232C3B, 0xFF292931, 0xFF262B3F, 0xFF24293D, 0xFF2E292D,
+ 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839,
+ 0xFF2B2839, 0xFF2B2839, 0xFF2A2738, 0xFF2D2A3B, 0xFF282536, 0xFF292639, 0xFF2E2B3E, 0xFF2A2835, 0xFF010005, 0xFF272725, 0xFFCFCED3, 0xFFD5D5D7, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD6D6D8, 0xFFD0CFD4, 0xFF21211F, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF282538, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF22233F, 0xFF2D2027,
+ 0xFF332735, 0xFF362F36, 0xFF413131, 0xFF4F3737, 0xFF75472F, 0xFFF5833D, 0xFFFF8F3F, 0xFFF5812C, 0xFF3C3839, 0xFF262632, 0xFF272439, 0xFF362432, 0xFF2C293E, 0xFF252638,
+ 0xFF2E253A, 0xFF312936, 0xFF282E3A, 0xFF26283D, 0xFF37243A, 0xFF2F2432, 0xFF2A303E, 0xFF26273C, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839,
+ 0xFF2B2839, 0xFF2B2839, 0xFF2A2738, 0xFF2B2839, 0xFF2B2839, 0xFF2B283B, 0xFF2B283B, 0xFF2A2835, 0xFF010005, 0xFF242422, 0xFFCECDD2, 0xFFD5D5D7, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD5D5D7, 0xFFD0CFD4, 0xFF21211F, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF272437, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF1E263B, 0xFF2F2132,
+ 0xFF23202B, 0xFF2D2D47, 0xFF3F2B34, 0xFF3E3331, 0xFF7D4A35, 0xFFEA8336, 0xFFFF8B37, 0xFFF38548, 0xFF4C3136, 0xFF302A38, 0xFF24263B, 0xFF33292A, 0xFF2C262A, 0xFF282E46,
+ 0xFF29283A, 0xFF2D2636, 0xFF242A38, 0xFF22273A, 0xFF2E2238, 0xFF2A2335, 0xFF252B39, 0xFF2A2939, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839,
+ 0xFF2B2839, 0xFF2B2839, 0xFF2A2738, 0xFF2B2839, 0xFF2B2839, 0xFF2B283B, 0xFF2B283B, 0xFF2A2835, 0xFF010005, 0xFF242422, 0xFFCECDD2, 0xFFD5D5D7, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD5D5D7, 0xFFCECDD2, 0xFF20201E, 0xFF000004, 0xFF252330, 0xFF262336, 0xFF272437, 0xFF262334, 0xFF252233, 0xFF262334, 0xFF242635, 0xFF231D29,
+ 0xFF342431, 0xFF3A252E, 0xFF2D2638, 0xFF6F4839, 0xFFE88237, 0xFFFF933C, 0xFFEB8E3E, 0xFF77432B, 0xFF372F3A, 0xFF2D282F, 0xFF242845, 0xFF222744, 0xFF252233, 0xFF2F203F,
+ 0xFF2A2E3A, 0xFF2B2738, 0xFF292935, 0xFF292D38, 0xFF2E2B3C, 0xFF2E2B3E, 0xFF262834, 0xFF2B282F, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2A2738,
+ 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2B2839, 0xFF2A2738, 0xFF2B283B, 0xFF2B283B, 0xFF292734, 0xFF010005, 0xFF242422, 0xFFCCCBD0, 0xFFD4D4D6, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD4D4D6, 0xFFCDCCD1, 0xFF20201E, 0xFF000004, 0xFF252330, 0xFF262336, 0xFF272437, 0xFF252233, 0xFF252233, 0xFF262334, 0xFF292438, 0xFF2C2A37,
+ 0xFF352333, 0xFF2B2533, 0xFF5E3A2C, 0xFFFF873B, 0xFFFE913C, 0xFFF58634, 0xFF79452F, 0xFF443343, 0xFF372C30, 0xFF3C2922, 0xFF301E2E, 0xFF282844, 0xFF2B2E3D, 0xFF302533,
+ 0xFF282A37, 0xFF2C1F39, 0xFF2F2435, 0xFF2C2B33, 0xFF2A273A, 0xFF30263F, 0xFF2B2233, 0xFF302835, 0xFF2B2839, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738,
+ 0xFF2A2738, 0xFF2A2738, 0xFF292637, 0xFF2B2839, 0xFF2A2738, 0xFF2A273A, 0xFF2B283B, 0xFF292734, 0xFF000004, 0xFF242422, 0xFFCBCACF, 0xFFD3D3D5, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD3D3D5, 0xFFCBCACF, 0xFF1F1F1D, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF272437, 0xFF252233, 0xFF252233, 0xFF272435, 0xFF262239, 0xFF2E243C,
+ 0xFF1B283B, 0xFF513E3A, 0xFFF78837, 0xFFFE9039, 0xFFF5833C, 0xFF764932, 0xFF4E3539, 0xFF462F37, 0xFF372B2D, 0xFF282E3C, 0xFF1F1B34, 0xFF1D182C, 0xFF282832, 0xFF272634,
+ 0xFF202833, 0xFF26223B, 0xFF2F2637, 0xFF262930, 0xFF1E2337, 0xFF272238, 0xFF2B2736, 0xFF222943, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738,
+ 0xFF2A2738, 0xFF2A2738, 0xFF292637, 0xFF2A2738, 0xFF2A2738, 0xFF2A273A, 0xFF2A273A, 0xFF292734, 0xFF000004, 0xFF232321, 0xFFC9C8CD, 0xFFD2D2D4, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD2D2D4, 0xFFC9C8CD, 0xFF1F1F1D, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF272437, 0xFF252233, 0xFF262334, 0xFF272435, 0xFF2E2236, 0xFF2B2332,
+ 0xFF64412E, 0xFFF58835, 0xFFFD9745, 0xFFF18636, 0xFF72483A, 0xFF4B3538, 0xFF3E3331, 0xFF3F2D2B, 0xFF332836, 0xFF462E2E, 0xFF6B4737, 0xFF734933, 0xFF6F4336, 0xFF6D3E34,
+ 0xFF6D4A37, 0xFF6D413E, 0xFF734538, 0xFF6C4534, 0xFF6B463E, 0xFF724234, 0xFF6B4337, 0xFF35293D, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF292637,
+ 0xFF292637, 0xFF292637, 0xFF292637, 0xFF2A2738, 0xFF292637, 0xFF292639, 0xFF2A273A, 0xFF282633, 0xFF000004, 0xFF232321, 0xFFC7C6CB, 0xFFD1D1D3, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD1D1D3, 0xFFC8C7CC, 0xFF1F1F1D, 0xFF000004, 0xFF262431, 0xFF272437, 0xFF272437, 0xFF252233, 0xFF262334, 0xFF282536, 0xFF29273C, 0xFF5D3C29,
+ 0xFFEF7E38, 0xFFFF8E35, 0xFFF58835, 0xFF6E483D, 0xFF42312A, 0xFF4B3236, 0xFF382E46, 0xFF302833, 0xFF3C2834, 0xFFEE8146, 0xFFFF8F31, 0xFFF58D34, 0xFFFC964E, 0xFFF29144,
+ 0xFFFD9733, 0xFFF79238, 0xFFFC9433, 0xFFF69335, 0xFFFC9A43, 0xFFFF942B, 0xFFF09133, 0xFF8C5831, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF292637, 0xFF292637,
+ 0xFF292637, 0xFF292637, 0xFF282536, 0xFF292637, 0xFF292637, 0xFF292639, 0xFF2A273A, 0xFF282633, 0xFF000004, 0xFF232321, 0xFFC6C5CA, 0xFFD0D0D2, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD0D0D2, 0xFFC7C6CB, 0xFF1F1F1D, 0xFF000004, 0xFF272532, 0xFF272437, 0xFF272437, 0xFF262334, 0xFF262334, 0xFF282536, 0xFF20232A, 0xFF7A4F3C,
+ 0xFFF99349, 0xFFFE8638, 0xFF704638, 0xFF463430, 0xFF503433, 0xFF312A32, 0xFF362336, 0xFF2C2924, 0xFF31313B, 0xFFD16D32, 0xFFE88E42, 0xFFF3873C, 0xFFFC7A2E, 0xFFF6892C,
+ 0xFFF18137, 0xFFEE833F, 0xFFF6873F, 0xFFEB7F3E, 0xFFEF8247, 0xFFF68029, 0xFFE98843, 0xFF754749, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF292637, 0xFF292637,
+ 0xFF292637, 0xFF292637, 0xFF282536, 0xFF292637, 0xFF292637, 0xFF292639, 0xFF292639, 0xFF282633, 0xFF000004, 0xFF222220, 0xFFC5C4C9, 0xFFD0D0D2, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCFCED3, 0xFFC6C5CA, 0xFF1E1E1C, 0xFF010005, 0xFF24222F, 0xFF282538, 0xFF252235, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF322A35, 0xFF432F30,
+ 0xFF725148, 0xFF6A483E, 0xFF49312F, 0xFF40333C, 0xFF312934, 0xFF2E2631, 0xFF2B2332, 0xFF302430, 0xFF382832, 0xFF463136, 0xFF543A39, 0xFF5F403B, 0xFF644238, 0xFF654135,
+ 0xFF634138, 0xFF65433A, 0xFF66443B, 0xFF65433A, 0xFF61423D, 0xFF5C403D, 0xFF4E383A, 0xFF443032, 0xFF32293A, 0xFF2F2838, 0xFF292534, 0xFF272435, 0xFF282536, 0xFF292639,
+ 0xFF282538, 0xFF292438, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF292639, 0xFF282538, 0xFF282633, 0xFF000004, 0xFF20201E, 0xFFC4C3C8, 0xFFCCCBD0, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCECDD2, 0xFFC5C4C9, 0xFF1E1E1C, 0xFF010005, 0xFF24222F, 0xFF282538, 0xFF252235, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF2F2B3A, 0xFF32232A,
+ 0xFF4A302F, 0xFF462C2B, 0xFF37262C, 0xFF372F3C, 0xFF2C2837, 0xFF282230, 0xFF292534, 0xFF2C2634, 0xFF322833, 0xFF3C2C36, 0xFF453236, 0xFF4A3534, 0xFF4E3433, 0xFF4F332F,
+ 0xFF4D3332, 0xFF4F3534, 0xFF503635, 0xFF4F3534, 0xFF4E3636, 0xFF4A3638, 0xFF413036, 0xFF372A33, 0xFF312839, 0xFF2E2737, 0xFF292534, 0xFF272435, 0xFF282536, 0xFF292639,
+ 0xFF282538, 0xFF282538, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF292639, 0xFF282538, 0xFF282633, 0xFF000004, 0xFF20201E, 0xFFC3C2C7, 0xFFCBCACF, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCECDD2, 0xFFC4C3C8, 0xFF1D1D1B, 0xFF010005, 0xFF24222F, 0xFF282538, 0xFF252235, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF2B2A3C, 0xFF2D2532,
+ 0xFF382930, 0xFF352831, 0xFF2E2836, 0xFF2D2C3E, 0xFF282739, 0xFF272332, 0xFF252436, 0xFF272437, 0xFF2A2635, 0xFF2F2937, 0xFF352B36, 0xFF372B35, 0xFF392C33, 0xFF3B2C33,
+ 0xFF392C35, 0xFF3B2E37, 0xFF3E2F36, 0xFF3D2E35, 0xFF3B2E37, 0xFF3B2F39, 0xFF362E3B, 0xFF312B39, 0xFF2E2737, 0xFF2D2636, 0xFF292534, 0xFF282536, 0xFF282536, 0xFF292637,
+ 0xFF282538, 0xFF272437, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF282538, 0xFF272437, 0xFF282633, 0xFF000004, 0xFF20201E, 0xFFC2C1C6, 0xFFCBCACF, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCDCCD1, 0xFFC2C1C6, 0xFF1D1D1B, 0xFF010005, 0xFF24222F, 0xFF282538, 0xFF252235, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF252436, 0xFF2B2738,
+ 0xFF2F2937, 0xFF2E2A39, 0xFF29273C, 0xFF212236, 0xFF242134, 0xFF272332, 0xFF242335, 0xFF242335, 0xFF272437, 0xFF282536, 0xFF2A2635, 0xFF2B2736, 0xFF2E2836, 0xFF2F2937,
+ 0xFF2B2736, 0xFF2E2836, 0xFF2F2937, 0xFF2D2735, 0xFF2D2735, 0xFF2C2836, 0xFF2C2837, 0xFF2A2738, 0xFF2A2635, 0xFF292534, 0xFF292536, 0xFF282536, 0xFF292637, 0xFF292637,
+ 0xFF282536, 0xFF272437, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF282538, 0xFF272437, 0xFF272532, 0xFF000004, 0xFF20201E, 0xFFC0BFC4, 0xFFCAC9CE, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCBCACF, 0xFFC0BFC4, 0xFF1D1D1B, 0xFF010005, 0xFF24222F, 0xFF292639, 0xFF252235, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262233, 0xFF292536,
+ 0xFF242031, 0xFF252235, 0xFF262439, 0xFF222133, 0xFF272334, 0xFF2B2533, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF252233, 0xFF252233, 0xFF252233, 0xFF262334,
+ 0xFF252233, 0xFF272435, 0xFF282536, 0xFF282433, 0xFF282433, 0xFF282433, 0xFF272435, 0xFF272435, 0xFF282433, 0xFF282435, 0xFF282435, 0xFF292536, 0xFF282536, 0xFF282536,
+ 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF282536, 0xFF282538, 0xFF272437, 0xFF272532, 0xFF000004, 0xFF20201E, 0xFFBFBEC3, 0xFFC9C8CD, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCAC9CE, 0xFFBFBEC3, 0xFF1D1D1B, 0xFF010005, 0xFF24222F, 0xFF292639, 0xFF262336, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF2A2432, 0xFF292534,
+ 0xFF242132, 0xFF262336, 0xFF282536, 0xFF272334, 0xFF292534, 0xFF2C2634, 0xFF272332, 0xFF272332, 0xFF272332, 0xFF272332, 0xFF262233, 0xFF262233, 0xFF262233, 0xFF252233,
+ 0xFF252233, 0xFF262334, 0xFF272435, 0xFF282536, 0xFF292534, 0xFF292534, 0xFF292534, 0xFF292534, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF282435, 0xFF292536, 0xFF272435,
+ 0xFF272435, 0xFF262535, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF282538, 0xFF272437, 0xFF272532, 0xFF000004, 0xFF1F1F1D, 0xFFBDBCC1, 0xFFC8C7CC, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCAC9CE, 0xFFBDBCC1, 0xFF1D1D1B, 0xFF010005, 0xFF24222F, 0xFF292639, 0xFF262336, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF25212F, 0xFF262432,
+ 0xFF272636, 0xFF272435, 0xFF272332, 0xFF262231, 0xFF242230, 0xFF242132, 0xFF262334, 0xFF252233, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF282435, 0xFF282435, 0xFF282435,
+ 0xFF242132, 0xFF242132, 0xFF252233, 0xFF252233, 0xFF262334, 0xFF262334, 0xFF262432, 0xFF272332, 0xFF262535, 0xFF272435, 0xFF272435, 0xFF282435, 0xFF282435, 0xFF272435,
+ 0xFF272435, 0xFF262535, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272437, 0xFF262336, 0xFF272532, 0xFF000004, 0xFF1F1F1D, 0xFFBCBBC0, 0xFFC7C6CB, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC9C8CD, 0xFFBDBCC1, 0xFF1D1D1B, 0xFF010005, 0xFF24222F, 0xFF292639, 0xFF262336, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF292534, 0xFF232232,
+ 0xFF262537, 0xFF232232, 0xFF252130, 0xFF2B2736, 0xFF272636, 0xFF222538, 0xFF252436, 0xFF242335, 0xFF242335, 0xFF262336, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262233,
+ 0xFF272636, 0xFF262535, 0xFF252436, 0xFF262537, 0xFF262537, 0xFF262535, 0xFF272435, 0xFF262334, 0xFF262535, 0xFF262535, 0xFF272435, 0xFF282435, 0xFF272334, 0xFF262334,
+ 0xFF262334, 0xFF262535, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272437, 0xFF262336, 0xFF272532, 0xFF000004, 0xFF1F1F1D, 0xFFBCBBC0, 0xFFC7C6CB, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC6C5CA, 0xFFBDBCC1, 0xFF1D1D1B, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF282538, 0xFF252233, 0xFF242132, 0xFF282536, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF272435, 0xFF272435, 0xFF282536, 0xFF252233, 0xFF262334, 0xFF292639, 0xFF282538, 0xFF282633, 0xFF000004, 0xFF1E1E1C, 0xFFB9B8BD, 0xFFC5C4C9, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC5C4C9, 0xFFBBBABF, 0xFF1E1E1C, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF272437, 0xFF262334, 0xFF252233, 0xFF272435, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF272435, 0xFF272435, 0xFF292637, 0xFF272435, 0xFF272435, 0xFF282538, 0xFF262336, 0xFF272532, 0xFF000004, 0xFF1E1E1C, 0xFFB8B7BC, 0xFFC4C3C8, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC4C3C8, 0xFFB9B8BD, 0xFF1F1F1D, 0xFF000004, 0xFF272532, 0xFF252235, 0xFF262336, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF272435, 0xFF272435, 0xFF282536, 0xFF272435, 0xFF272435, 0xFF272437, 0xFF262336, 0xFF272532, 0xFF000004, 0xFF1F1F1D, 0xFFB6B5BA, 0xFFC3C2C7, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC3C2C7, 0xFFB8B7BC, 0xFF1F1F1D, 0xFF000004, 0xFF272532, 0xFF262336, 0xFF252235, 0xFF262334, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF252233, 0xFF252235, 0xFF272437, 0xFF282633, 0xFF000004, 0xFF1F1F1D, 0xFFB5B4B9, 0xFFC2C1C6, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC3C2C7, 0xFFB8B7BC, 0xFF20201E, 0xFF000004, 0xFF282633, 0xFF282538, 0xFF252235, 0xFF252233, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF242132, 0xFF252235, 0xFF282538, 0xFF282633, 0xFF000004, 0xFF21211F, 0xFFB5B4B9, 0xFFC2C1C6, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC4C3C8, 0xFFB9B8BD, 0xFF272725, 0xFF000004, 0xFF262431, 0xFF282538, 0xFF252235, 0xFF242132, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF272435, 0xFF282536, 0xFF252233, 0xFF262336, 0xFF282538, 0xFF262431, 0xFF000004, 0xFF262624, 0xFFB6B5BA, 0xFFC4C3C8, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC6C5CA, 0xFFBBBABF, 0xFF31312F, 0xFF000004, 0xFF23212E, 0xFF272437, 0xFF262336, 0xFF252233, 0xFF272435, 0xFF252233, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF272435, 0xFF282536, 0xFF262334, 0xFF272437, 0xFF282538, 0xFF23212E, 0xFF000004, 0xFF31312F, 0xFFB8B7BC, 0xFFC5C4C9, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC7C6CB, 0xFFBCBBC0, 0xFF3A3A38, 0xFF020106, 0xFF211F2C, 0xFF262336, 0xFF272437, 0xFF262334, 0xFF272435, 0xFF252233, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF252233, 0xFF272435, 0xFF262334, 0xFF272437, 0xFF272437, 0xFF22202D, 0xFF030207, 0xFF3B3B39, 0xFFBAB9BE, 0xFFC6C5CA, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCCCBD0, 0xFFBFBEC3, 0xFF585858, 0xFF000004, 0xFF1C1A25, 0xFF242132, 0xFF2B283D, 0xFF221F34, 0xFF232031, 0xFF2B2937, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF282536, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF282536, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF2D2B39, 0xFF242132, 0xFF221F34, 0xFF2B283D, 0xFF252233, 0xFF1C1A25, 0xFF000004, 0xFF575757, 0xFFBEBDC2, 0xFFCBCACF, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFB7B6BB, 0xFF7F7F7F, 0xFF030207, 0xFF0F0E16, 0xFF252331, 0xFF242132, 0xFF2E2B3E, 0xFF242134, 0xFF211E2F, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF272435, 0xFF262334, 0xFF252233, 0xFF242132, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF242132, 0xFF252233, 0xFF262334, 0xFF272435, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF211E2F, 0xFF242134, 0xFF2E2B3E, 0xFF242132, 0xFF262432, 0xFF111018, 0xFF040308, 0xFF7F7F7F, 0xFFB6B5BA, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFB5B5B7, 0xFFAEAEB0, 0xFF16151A, 0xFF000005, 0xFF212028, 0xFF2A2835, 0xFF1C1A28, 0xFF2D2A3D, 0xFF262338, 0xFF272435, 0xFF262334,
+ 0xFF262334, 0xFF272435, 0xFF282536, 0xFF282536, 0xFF272435, 0xFF252233, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF252233, 0xFF272435, 0xFF282536, 0xFF282536, 0xFF272435, 0xFF262334,
+ 0xFF262334, 0xFF272435, 0xFF252237, 0xFF2C293C, 0xFF1B1927, 0xFF292734, 0xFF212028, 0xFF000005, 0xFF17161B, 0xFFAEAEB0, 0xFFB4B4B6, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFC4C4C6, 0xFFBBBABF, 0xFF7D7C81, 0xFF050507, 0xFF000004, 0xFF212026, 0xFF2D2B38, 0xFF252233, 0xFF262338, 0xFF262336, 0xFF252235,
+ 0xFF252235, 0xFF242134, 0xFF252235, 0xFF252235, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336,
+ 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF252235, 0xFF252235, 0xFF242134, 0xFF252235,
+ 0xFF252235, 0xFF262336, 0xFF262338, 0xFF252233, 0xFF2D2B38, 0xFF201F25, 0xFF000004, 0xFF050507, 0xFF7D7C81, 0xFFB9B8BD, 0xFFC5C5C7, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFACABB0, 0xFFB4B4B6, 0xFF4F4F51, 0xFF040406, 0xFF030207, 0xFF1D1C24, 0xFF272533, 0xFF262334, 0xFF272437, 0xFF282538,
+ 0xFF282538, 0xFF282538, 0xFF272437, 0xFF262336, 0xFF272437, 0xFF282538, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437,
+ 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF282538, 0xFF272437, 0xFF262336, 0xFF272437, 0xFF282538, 0xFF282538,
+ 0xFF282538, 0xFF272437, 0xFF272435, 0xFF272533, 0xFF1E1D25, 0xFF030207, 0xFF030305, 0xFF4E4E50, 0xFFB3B3B5, 0xFFABAAAF, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFAEAEB0, 0xFFB6B6B8, 0xFF4C4C4E, 0xFF030305, 0xFF000005, 0xFF121119, 0xFF1C1A25, 0xFF211F2C, 0xFF23212E,
+ 0xFF252330, 0xFF262431, 0xFF262431, 0xFF262431, 0xFF262431, 0xFF272532, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330,
+ 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF272532, 0xFF262431, 0xFF262431, 0xFF262431, 0xFF262431, 0xFF252330,
+ 0xFF23212E, 0xFF211F2C, 0xFF1A1823, 0xFF111018, 0xFF000005, 0xFF030305, 0xFF4C4C4E, 0xFFB6B6B8, 0xFFAEAEB0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFC4C4C6, 0xFFAAAAAC, 0xFFB7B7B9, 0xFF79787D, 0xFF16151A, 0xFF000004, 0xFF020106, 0xFF030207, 0xFF010005,
+ 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004,
+ 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004,
+ 0xFF010005, 0xFF030207, 0xFF000004, 0xFF000004, 0xFF16151A, 0xFF79787D, 0xFFB7B7B9, 0xFFAAAAAC, 0xFFC4C4C6, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFABAAAF, 0xFFAFAEB3, 0xFFAEAEB0, 0xFF797979, 0xFF515151, 0xFF353533, 0xFF2D2D2B,
+ 0xFF232321, 0xFF1E1E1C, 0xFF1D1D1B, 0xFF1D1D1B, 0xFF1B1B19, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917,
+ 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF1B1B19, 0xFF1D1D1B, 0xFF1D1D1B, 0xFF1E1E1C, 0xFF232321,
+ 0xFF2D2D2B, 0xFF353533, 0xFF515151, 0xFF7A7A7A, 0xFFAFAFB1, 0xFFAFAEB3, 0xFFABAAAF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFBAB9BE, 0xFFABAAB0, 0xFFADACB2, 0xFFB5B4BC, 0xFFB1B0B8, 0xFFAEADB5,
+ 0xFFABAAB2, 0xFFA9A8B0, 0xFFA9A8B0, 0xFFAAA9B1, 0xFFA9A8B0, 0xFFA8A7AF, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC,
+ 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA9A8AD, 0xFFA9A8AD, 0xFFA9A8AD, 0xFFABAAAF,
+ 0xFFADACB1, 0xFFB0AFB4, 0xFFB6B5BD, 0xFFACABB1, 0xFFA9A8AE, 0xFFB9B8BD, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFBCBBC1, 0xFFB4B3B8, 0xFFB2B1B6,
+ 0xFFAFAEB3, 0xFFADACB1, 0xFFADACB1, 0xFFADACB1, 0xFFADACB1, 0xFFACABB0, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3,
+ 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAEADB2, 0xFFAEADB2, 0xFFAEADB2, 0xFFAEADB2, 0xFFAFAEB3, 0xFFB1B0B5,
+ 0xFFB3B2B7, 0xFFB5B4B9, 0xFFBAB9BF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}
+};
+
+static const uint32_t icon4[H][W] = {
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFF1F1F1, 0xFFEFEFEF, 0xFFEEEEEE,
+ 0xFFEDEDED, 0xFFEDEDED, 0xFFEDEDED, 0xFFEDEDED, 0xFFEEEEEE, 0xFFEFEFEF, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0,
+ 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEFEFEF, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEDEDED, 0xFFEDEDED, 0xFFEEEEEE,
+ 0xFFEEEEEE, 0xFFEFEFEF, 0xFFF1F1F1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFEFEFEF, 0xFFECECEC, 0xFFF1F1F1, 0xFFF8F8F8, 0xFFF2F2F4, 0xFFF1F1F3,
+ 0xFFEEEEF0, 0xFFEBEBED, 0xFFE8E8EA, 0xFFE7E7E9, 0xFFE6E6E8, 0xFFE6E6E8, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9,
+ 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE6E6E8, 0xFFE6E6E8, 0xFFE7E7E9, 0xFFE8E8EA, 0xFFEBEBED, 0xFFEEEEF0,
+ 0xFFF1F1F3, 0xFFF3F3F5, 0xFFF8F8F8, 0xFFF1F1F1, 0xFFECECEC, 0xFFEFEFEF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFE5E5E7, 0xFFF7F7F9, 0xFFE0E0E0, 0xFFA8A8A6, 0xFF6F6F6D, 0xFF4B4B49, 0xFF3E3E3C,
+ 0xFF30302E, 0xFF2A2A28, 0xFF2C2C2A, 0xFF30302E, 0xFF31312F, 0xFF30302E, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D,
+ 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2E2E2C, 0xFF2F2F2D, 0xFF31312F, 0xFF31312F, 0xFF343432, 0xFF3C3C3A,
+ 0xFF494947, 0xFF535351, 0xFF767674, 0xFFADADAD, 0xFFE1E1E3, 0xFFF5F5F7, 0xFFE6E6E8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFE0E0E2, 0xFFF1F1F3, 0xFF9D9D9F, 0xFF222224, 0xFF000002, 0xFF000002, 0xFF010005, 0xFF000004,
+ 0xFF000004, 0xFF000004, 0xFF010005, 0xFF06050A, 0xFF06050A, 0xFF030207, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C,
+ 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF06050A, 0xFF08070C, 0xFF09080D, 0xFF08070C, 0xFF06050A, 0xFF040308,
+ 0xFF040308, 0xFF040308, 0xFF000004, 0xFF000004, 0xFF303032, 0xFFA1A1A3, 0xFFF3F3F5, 0xFFE7E7E7, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFDEDEE0, 0xFFF4F4F4, 0xFF626262, 0xFF000002, 0xFF050409, 0xFF121119, 0xFF1B1924, 0xFF211F2C, 0xFF262431,
+ 0xFF272532, 0xFF252330, 0xFF272532, 0xFF2E2C39, 0xFF32303D, 0xFF312F3C, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B,
+ 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF2F2D3A, 0xFF2F2D3A, 0xFF302E3B, 0xFF312F3C, 0xFF312F3C, 0xFF312F3C,
+ 0xFF2F2D3A, 0xFF2D2B38, 0xFF292732, 0xFF1C1B23, 0xFF000004, 0xFF060608, 0xFF686868, 0xFFEFEFEF, 0xFFE3E3E3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFE1E0E5, 0xFFF0F0F2, 0xFF666666, 0xFF050505, 0xFF050507, 0xFF17161E, 0xFF282633, 0xFF282536, 0xFF272437, 0xFF292639,
+ 0xFF282538, 0xFF242134, 0xFF232033, 0xFF282538, 0xFF2E2B3E, 0xFF322F42, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40,
+ 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF333043, 0xFF312E41, 0xFF2F2C3F, 0xFF2F2C3F, 0xFF312E41, 0xFF322F42,
+ 0xFF333043, 0xFF333043, 0xFF2D2A3B, 0xFF363441, 0xFF27262E, 0xFF0E0E10, 0xFF020202, 0xFF666666, 0xFFF5F5F5, 0xFFE0E0E2, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFEBEBEB, 0xFFF0EFF4, 0xFF9A9A9C, 0xFF000002, 0xFF070709, 0xFF1D1C22, 0xFF2E2C39, 0xFF292637, 0xFF242136, 0xFF272437, 0xFF262336,
+ 0xFF272437, 0xFF282538, 0xFF272437, 0xFF272437, 0xFF2B283B, 0xFF302D40, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41,
+ 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF322F42, 0xFF312E41, 0xFF312E41, 0xFF302D40,
+ 0xFF2F2C3F, 0xFF2E2B3E, 0xFF322F44, 0xFF2D2A3B, 0xFF33313C, 0xFF2C2B31, 0xFF141416, 0xFF030303, 0xFF9B9B9B, 0xFFEDEDEF, 0xFFEAEAEA, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFE5E5E5, 0xFFDADADC, 0xFF212025, 0xFF020107, 0xFF1D1C24, 0xFF282633, 0xFF242230, 0xFF1F1C2F, 0xFF272439, 0xFF262334, 0xFF232031,
+ 0xFF232031, 0xFF272435, 0xFF272435, 0xFF252233, 0xFF282536, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2C293A, 0xFF2D2A3B, 0xFF2E2B3C, 0xFF2F2C3D, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2F2C3D, 0xFF312E3F, 0xFF2A273A, 0xFF302D40, 0xFF2E2C3A, 0xFF312F3A, 0xFF212026, 0xFF020106, 0xFF2E2E30, 0xFFDCDCDC, 0xFFE5E5E5, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFE7E7E7, 0xFFA2A2A2, 0xFF000004, 0xFF0E0D15, 0xFF2A2836, 0xFF282536, 0xFF252235, 0xFF2A273A, 0xFF262336, 0xFF292637, 0xFF272435,
+ 0xFF262334, 0xFF262334, 0xFF252233, 0xFF252233, 0xFF272435, 0xFF2B2839, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E,
+ 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF312E3F, 0xFF312E3F, 0xFF302D3E, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF302D3E, 0xFF312E3F, 0xFF322F40, 0xFF2C293A, 0xFF2F2C3D, 0xFF2F2C3D, 0xFF363441, 0xFF1C1B21, 0xFF000002, 0xFFA6A6A4, 0xFFE7E7E7, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFE4E4E4, 0xFFEBEBEB, 0xFF6D6D6D, 0xFF000004, 0xFF1E1C27, 0xFF262336, 0xFF252237, 0xFF242136, 0xFF282538, 0xFF252233, 0xFF242132, 0xFF272435,
+ 0xFF292637, 0xFF272435, 0xFF252233, 0xFF252233, 0xFF262334, 0xFF262334, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2F2C3D, 0xFF2F2C3D, 0xFF302D3E, 0xFF2F2C3D,
+ 0xFF2E2B3C, 0xFF2D2A3B, 0xFF2C2A38, 0xFF333041, 0xFF2E2B3E, 0xFF2C293C, 0xFF302D3E, 0xFF26252D, 0xFF010103, 0xFF6E6F6A, 0xFFEBEBEB, 0xFFE4E4E4, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFE2E2E4, 0xFFE7E6EB, 0xFF474745, 0xFF020106, 0xFF23212E, 0xFF282538, 0xFF252235, 0xFF262334, 0xFF262334, 0xFF252233, 0xFF231F36, 0xFF2E2333,
+ 0xFF22252C, 0xFF211E2F, 0xFF2D283C, 0xFF292232, 0xFF291D31, 0xFF2A213C, 0xFF27283A, 0xFF352D42, 0xFF31293E, 0xFF2C2B3D, 0xFF312D3E, 0xFF33263A, 0xFF2A2738, 0xFF20333A,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2D2A3B, 0xFF2F2C3D, 0xFF302D3E, 0xFF2B283B, 0xFF302D40, 0xFF2B2936, 0xFF040308, 0xFF4F4F4D, 0xFFE5E4E9, 0xFFE1E1E3, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFE0E0E2, 0xFFE3E2E7, 0xFF3B3B39, 0xFF000004, 0xFF24222F, 0xFF282538, 0xFF262336, 0xFF272435, 0xFF262334, 0xFF282536, 0xFF312938, 0xFF2D2242,
+ 0xFF6D3B6E, 0xFF4C3C59, 0xFF1B1E2D, 0xFF2D283C, 0xFF2C293C, 0xFF19262F, 0xFF222534, 0xFF2C2839, 0xFF2D293A, 0xFF282B3A, 0xFF2A2C3B, 0xFF36293D, 0xFF372A3E, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF302D3E, 0xFF2C293C, 0xFF302D40, 0xFF2B2936, 0xFF010005, 0xFF424240, 0xFFE2E1E6, 0xFFDFDFE1, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFDDDDDF, 0xFFDEDDE2, 0xFF2E2E2C, 0xFF000004, 0xFF252330, 0xFF272437, 0xFF272437, 0xFF262334, 0xFF262334, 0xFF2A2738, 0xFF21232F, 0xFF764177,
+ 0xFFF896EB, 0xFFEF78CA, 0xFF57395D, 0xFF242237, 0xFF322537, 0xFF252932, 0xFF242635, 0xFF2B2436, 0xFF322B3D, 0xFF2E3140, 0xFF272D3B, 0xFF2D2A3B, 0xFF36293D, 0xFF33263A,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2F2C3D, 0xFF2C293A, 0xFF2E2B3C, 0xFF2C293C, 0xFF2F2C3F, 0xFF2C2A37, 0xFF000004, 0xFF343432, 0xFFDDDCE1, 0xFFDCDCDE, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFDADADC, 0xFFDAD9DE, 0xFF262624, 0xFF010005, 0xFF262431, 0xFF262336, 0xFF282538, 0xFF252233, 0xFF252233, 0xFF2A2738, 0xFF272238, 0xFF563E62,
+ 0xFFF475CC, 0xFFFF74E2, 0xFFF47ED6, 0xFF5F3B61, 0xFF2D1C2F, 0xFF2C2537, 0xFF292536, 0xFF271E31, 0xFF2E2334, 0xFF2D2B39, 0xFF272D39, 0xFF272D3B, 0xFF282A39, 0xFF2D293A,
+ 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B,
+ 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2B2839, 0xFF2D2A3B, 0xFF2C293C, 0xFF2E2B3E, 0xFF2D2B38, 0xFF020106, 0xFF2B2B29, 0xFFD9D8DD, 0xFFDADADC, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFDADADC, 0xFFD7D6DB, 0xFF222220, 0xFF020106, 0xFF262431, 0xFF252235, 0xFF282538, 0xFF262334, 0xFF252233, 0xFF292637, 0xFF362943, 0xFF312940,
+ 0xFF6F4471, 0xFFF77AD6, 0xFFFF79E1, 0xFFF07FD1, 0xFF5F3C64, 0xFF2F273F, 0xFF28293B, 0xFF292639, 0xFF2D2638, 0xFF2B2434, 0xFF2D2B39, 0xFF2D303F, 0xFF262938, 0xFF2A293B,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2B2839, 0xFF2D2A3B, 0xFF2C293C, 0xFF2C293C, 0xFF2D2B38, 0xFF040308, 0xFF282826, 0xFFD6D5DA, 0xFFD9D9DB, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD9D9DB, 0xFFD5D4D9, 0xFF21211F, 0xFF020106, 0xFF24222F, 0xFF252235, 0xFF282538, 0xFF262334, 0xFF282536, 0xFF292637, 0xFF2F2236, 0xFF43334D,
+ 0xFF3F2F4A, 0xFF723E6C, 0xFFF87ED5, 0xFFFC85E9, 0xFFE77BD0, 0xFF65355F, 0xFF29203B, 0xFF24253A, 0xFF2C2F40, 0xFF2F283A, 0xFF302536, 0xFF322B3D, 0xFF2B2738, 0xFF2F273C,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2E2B3C, 0xFF2D2A3B, 0xFF2C293C, 0xFF2C293C, 0xFF2B2936, 0xFF030207, 0xFF272725, 0xFFD4D3D8, 0xFFD8D8DA, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD8D8DA, 0xFFD3D2D7, 0xFF20201E, 0xFF010005, 0xFF24222F, 0xFF272437, 0xFF282538, 0xFF242132, 0xFF282536, 0xFF272435, 0xFF31233A, 0xFF33273F,
+ 0xFF462844, 0xFF553250, 0xFF784878, 0xFFE776CE, 0xFFFF8AE5, 0xFFF67CCF, 0xFF683764, 0xFF311E3E, 0xFF24253A, 0xFF2B283B, 0xFF2A2134, 0xFF2D2638, 0xFF2C2839, 0xFF31293E,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2E2B3C, 0xFF2B2839, 0xFF2B283B, 0xFF2D2A3D, 0xFF2A2835, 0xFF020106, 0xFF272725, 0xFFD1D0D5, 0xFFD6D6D8, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD7D7D9, 0xFFD2D1D6, 0xFF20201E, 0xFF010005, 0xFF252330, 0xFF292639, 0xFF272437, 0xFF221F30, 0xFF272435, 0xFF252233, 0xFF29253E, 0xFF222834,
+ 0xFF3A2F3F, 0xFF452C49, 0xFF463152, 0xFF7D4574, 0xFFF97DD1, 0xFFFD7EE5, 0xFFE686C5, 0xFF653461, 0xFF29203B, 0xFF2B2C3E, 0xFF2A2637, 0xFF2A2939, 0xFF272A39, 0xFF262837,
+ 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839,
+ 0xFF2B2839, 0xFF2B2839, 0xFF2A2738, 0xFF2D2A3B, 0xFF282536, 0xFF292639, 0xFF2E2B3E, 0xFF2A2835, 0xFF010005, 0xFF272725, 0xFFCFCED3, 0xFFD5D5D7, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD6D6D8, 0xFFD0CFD4, 0xFF21211F, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF282538, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF242230, 0xFF31243E,
+ 0xFF262239, 0xFF34303F, 0xFF462E46, 0xFF553059, 0xFF774276, 0xFFF07BC1, 0xFFFF83E3, 0xFFFA74CD, 0xFF3D3453, 0xFF242738, 0xFF262835, 0xFF352238, 0xFF302C3D, 0xFF242736,
+ 0xFF262739, 0xFF302438, 0xFF2D2A3B, 0xFF292838, 0xFF30273A, 0xFF272938, 0xFF26303C, 0xFF2C2338, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839,
+ 0xFF2B2839, 0xFF2B2839, 0xFF2A2738, 0xFF2B2839, 0xFF2B2839, 0xFF2B283B, 0xFF2B283B, 0xFF2A2835, 0xFF010005, 0xFF242422, 0xFFCECDD2, 0xFFD5D5D7, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD5D5D7, 0xFFD0CFD4, 0xFF21211F, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF272437, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF1F2639, 0xFF302438,
+ 0xFF212330, 0xFF282D40, 0xFF422A44, 0xFF403148, 0xFF794478, 0xFFE877D3, 0xFFFF7ADC, 0xFFF27DCE, 0xFF493155, 0xFF34253C, 0xFF282536, 0xFF2E2739, 0xFF262537, 0xFF2A2D3E,
+ 0xFF272938, 0xFF2F2639, 0xFF2A2939, 0xFF242736, 0xFF2D2638, 0xFF262837, 0xFF232B38, 0xFF2F283A, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839,
+ 0xFF2B2839, 0xFF2B2839, 0xFF2A2738, 0xFF2B2839, 0xFF2B2839, 0xFF2B283B, 0xFF2B283B, 0xFF2A2835, 0xFF010005, 0xFF242422, 0xFFCECDD2, 0xFFD5D5D7, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD5D5D7, 0xFFCECDD2, 0xFF20201E, 0xFF000004, 0xFF252330, 0xFF262336, 0xFF272437, 0xFF262334, 0xFF252233, 0xFF262334, 0xFF202136, 0xFF272032,
+ 0xFF312235, 0xFF36223D, 0xFF2F2D42, 0xFF653F64, 0xFFEC7BCB, 0xFFFF83EE, 0xFFE681CF, 0xFF773E75, 0xFF3D2E4D, 0xFF31233A, 0xFF272938, 0xFF232939, 0xFF222133, 0xFF2D2638,
+ 0xFF2A2A34, 0xFF2F2734, 0xFF292734, 0xFF262A35, 0xFF2E2C39, 0xFF2D2B38, 0xFF242430, 0xFF2D2636, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2A2738,
+ 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2B2839, 0xFF2A2738, 0xFF2B283B, 0xFF2B283B, 0xFF292734, 0xFF010005, 0xFF242422, 0xFFCCCBD0, 0xFFD4D4D6, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD4D4D6, 0xFFCDCCD1, 0xFF20201E, 0xFF000004, 0xFF252330, 0xFF262336, 0xFF262336, 0xFF252233, 0xFF252233, 0xFF262334, 0xFF262432, 0xFF272439,
+ 0xFF392540, 0xFF272437, 0xFF5D3A62, 0xFFFD7AD7, 0xFFFA81E0, 0xFFFC7BD7, 0xFF7A3E74, 0xFF4A3055, 0xFF3C2C46, 0xFF33273B, 0xFF262135, 0xFF282B3C, 0xFF2A273A, 0xFF34253A,
+ 0xFF2B233A, 0xFF31233C, 0xFF2D233C, 0xFF29273F, 0xFF2F2641, 0xFF322340, 0xFF2C1F3B, 0xFF2E2940, 0xFF2B2839, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738,
+ 0xFF2A2738, 0xFF2A2738, 0xFF292637, 0xFF2B2839, 0xFF2A2738, 0xFF2A273A, 0xFF2B283B, 0xFF292734, 0xFF000004, 0xFF242422, 0xFFCBCACF, 0xFFD3D3D5, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD3D3D5, 0xFFCBCACF, 0xFF20201E, 0xFF000004, 0xFF252330, 0xFF252235, 0xFF262336, 0xFF252233, 0xFF262334, 0xFF272435, 0xFF242331, 0xFF31283D,
+ 0xFF182535, 0xFF554164, 0xFFF879D4, 0xFFFC7FE7, 0xFFF877D3, 0xFF73446E, 0xFF4F3453, 0xFF412F49, 0xFF382B3F, 0xFF2E2B3E, 0xFF221A31, 0xFF181A2F, 0xFF1B2336, 0xFF28263B,
+ 0xFF222431, 0xFF2B2937, 0xFF2A2738, 0xFF222838, 0xFF1F2535, 0xFF282133, 0xFF2B2839, 0xFF1D2E36, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738,
+ 0xFF2A2738, 0xFF2A2738, 0xFF292637, 0xFF2A2738, 0xFF2A2738, 0xFF2A273A, 0xFF2A273A, 0xFF292734, 0xFF000004, 0xFF232321, 0xFFC9C8CD, 0xFFD2D2D4, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD2D2D4, 0xFFC9C8CD, 0xFF20201E, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF262336, 0xFF252233, 0xFF262334, 0xFF282536, 0xFF2F253E, 0xFF272030,
+ 0xFF644162, 0xFFF778D1, 0xFFFC83EA, 0xFFFC7FDB, 0xFF6E4370, 0xFF4C354F, 0xFF373246, 0xFF3B293F, 0xFF35273E, 0xFF4C294A, 0xFF724371, 0xFF734574, 0xFF68416E, 0xFF6B406B,
+ 0xFF6B4365, 0xFF6F4367, 0xFF704066, 0xFF6B4368, 0xFF684566, 0xFF6F3D62, 0xFF6C4363, 0xFF30293B, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF292637,
+ 0xFF292637, 0xFF292637, 0xFF292637, 0xFF2A2738, 0xFF292637, 0xFF292639, 0xFF2A273A, 0xFF282633, 0xFF000004, 0xFF232321, 0xFFC7C6CB, 0xFFD1D1D3, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD1D1D3, 0xFFC8C7CC, 0xFF20201E, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF262336, 0xFF252233, 0xFF262334, 0xFF282536, 0xFF29253C, 0xFF5A365A,
+ 0xFFEB72BF, 0xFFFF80E0, 0xFFF675D2, 0xFF744674, 0xFF48314B, 0xFF4A304D, 0xFF3C2A42, 0xFF39223E, 0xFF3A2544, 0xFFE17BBD, 0xFFF588D7, 0xFFF57FD5, 0xFFFF87DE, 0xFFFE84D7,
+ 0xFFFB88E3, 0xFFFC83E0, 0xFFFF7FE1, 0xFFFD84E3, 0xFFFC8BE5, 0xFFFF82DE, 0xFFF886DB, 0xFF8C498C, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF292637, 0xFF292637,
+ 0xFF292637, 0xFF292637, 0xFF282536, 0xFF292637, 0xFF292637, 0xFF292639, 0xFF2A273A, 0xFF282633, 0xFF000004, 0xFF232321, 0xFFC6C5CA, 0xFFD0D0D2, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD0D0D2, 0xFFC7C6CB, 0xFF20201E, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF262336, 0xFF252233, 0xFF272435, 0xFF292637, 0xFF272334, 0xFF73467F,
+ 0xFFFA8FED, 0xFFFA7BD4, 0xFF71446D, 0xFF492F4C, 0xFF512C4D, 0xFF2F2A40, 0xFF32243D, 0xFF292941, 0xFF2D2E4C, 0xFFD95EAF, 0xFFF281D9, 0xFFF07ADA, 0xFFF76FD5, 0xFFF579D7,
+ 0xFFEC7ACF, 0xFFEE78D0, 0xFFF875D2, 0xFFF277D1, 0xFFEA7ACE, 0xFFEE72C6, 0xFFF185D0, 0xFF743D74, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF292637, 0xFF292637,
+ 0xFF292637, 0xFF292637, 0xFF282536, 0xFF292637, 0xFF292637, 0xFF292639, 0xFF292639, 0xFF282633, 0xFF000004, 0xFF222220, 0xFFC5C4C9, 0xFFD0D0D2, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCFCED3, 0xFFC6C5CA, 0xFF1E1E1C, 0xFF010005, 0xFF24222F, 0xFF282538, 0xFF252235, 0xFF272435, 0xFF272435, 0xFF282536, 0xFF34253C, 0xFF442D49,
+ 0xFF6F5271, 0xFF664465, 0xFF482B4A, 0xFF432F4B, 0xFF332941, 0xFF2C293C, 0xFF2C2439, 0xFF30243A, 0xFF372741, 0xFF44304C, 0xFF54395A, 0xFF603E61, 0xFF643E65, 0xFF643B63,
+ 0xFF653F64, 0xFF643E63, 0xFF643E63, 0xFF654062, 0xFF654263, 0xFF5E3F5F, 0xFF503754, 0xFF452E4A, 0xFF302C3D, 0xFF2D293A, 0xFF2A2637, 0xFF272435, 0xFF282536, 0xFF282737,
+ 0xFF282737, 0xFF282737, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF292639, 0xFF282538, 0xFF282633, 0xFF000004, 0xFF20201E, 0xFFC4C3C8, 0xFFCCCBD0, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCECDD2, 0xFFC5C4C9, 0xFF1E1E1C, 0xFF010005, 0xFF24222F, 0xFF282538, 0xFF252235, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF372B41, 0xFF2F2037,
+ 0xFF412D48, 0xFF402946, 0xFF392541, 0xFF3D2F48, 0xFF2D283C, 0xFF222133, 0xFF2A2539, 0xFF2D253A, 0xFF322840, 0xFF3C2C46, 0xFF44304C, 0xFF4B3250, 0xFF4F3153, 0xFF503153,
+ 0xFF4D3253, 0xFF4D3253, 0xFF503352, 0xFF4F3251, 0xFF4D3350, 0xFF49324E, 0xFF402E48, 0xFF382940, 0xFF2F2B3C, 0xFF2C2839, 0xFF292536, 0xFF272435, 0xFF282536, 0xFF282737,
+ 0xFF282737, 0xFF272636, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF292639, 0xFF282538, 0xFF282633, 0xFF000004, 0xFF20201E, 0xFFC3C2C7, 0xFFCBCACF, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCECDD2, 0xFFC4C3C8, 0xFF1E1E1C, 0xFF010005, 0xFF24222F, 0xFF282538, 0xFF252235, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF2C2839, 0xFF2B2338,
+ 0xFF332A3F, 0xFF332A3F, 0xFF2E253A, 0xFF2A2539, 0xFF272437, 0xFF262837, 0xFF252436, 0xFF282538, 0xFF2C273B, 0xFF312940, 0xFF332941, 0xFF382A43, 0xFF3A2A44, 0xFF3B2B45,
+ 0xFF3A2C46, 0xFF3C2E47, 0xFF3D2D47, 0xFF3D2D47, 0xFF3B2D44, 0xFF392D43, 0xFF352C41, 0xFF332B40, 0xFF2C2839, 0xFF2B2738, 0xFF292536, 0xFF272435, 0xFF282536, 0xFF272636,
+ 0xFF272636, 0xFF272636, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF282538, 0xFF272437, 0xFF282633, 0xFF000004, 0xFF20201E, 0xFFC2C1C6, 0xFFCBCACF, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCDCCD1, 0xFFC2C1C6, 0xFF1E1E1C, 0xFF010005, 0xFF24222F, 0xFF292639, 0xFF252235, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF282536, 0xFF292637,
+ 0xFF292637, 0xFF2C293A, 0xFF2A2939, 0xFF242333, 0xFF222131, 0xFF242132, 0xFF242134, 0xFF262336, 0xFF282538, 0xFF2A2539, 0xFF2A2539, 0xFF2B263A, 0xFF2F283A, 0xFF30293B,
+ 0xFF2A273A, 0xFF2C273B, 0xFF2D283C, 0xFF2F273C, 0xFF2E263B, 0xFF2C2839, 0xFF2C293A, 0xFF2C293A, 0xFF2A2637, 0xFF292536, 0xFF272435, 0xFF272435, 0xFF282536, 0xFF282536,
+ 0xFF272636, 0xFF262535, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF282538, 0xFF272437, 0xFF272532, 0xFF000004, 0xFF20201E, 0xFFC0BFC4, 0xFFCAC9CE, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCBCACF, 0xFFC0BFC4, 0xFF1D1D1B, 0xFF010005, 0xFF24222F, 0xFF292639, 0xFF252235, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272334, 0xFF282536,
+ 0xFF211E2F, 0xFF212030, 0xFF262535, 0xFF262334, 0xFF282435, 0xFF262233, 0xFF272236, 0xFF272334, 0xFF272334, 0xFF272334, 0xFF272334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF242333, 0xFF252233, 0xFF262334, 0xFF282435, 0xFF282435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF282536, 0xFF282536,
+ 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF282536, 0xFF282538, 0xFF272437, 0xFF272532, 0xFF000004, 0xFF20201E, 0xFFBFBEC3, 0xFFC9C8CD, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCAC9CE, 0xFFBFBEC3, 0xFF1D1D1B, 0xFF010005, 0xFF24222F, 0xFF292639, 0xFF252235, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF242031, 0xFF2B2738,
+ 0xFF292637, 0xFF262432, 0xFF252331, 0xFF262233, 0xFF292536, 0xFF2B2738, 0xFF2A2335, 0xFF272334, 0xFF262233, 0xFF262233, 0xFF272334, 0xFF262334, 0xFF252233, 0xFF242132,
+ 0xFF272435, 0xFF262334, 0xFF262334, 0xFF292536, 0xFF2A2637, 0xFF2A2637, 0xFF292536, 0xFF292536, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF282538, 0xFF272437, 0xFF272532, 0xFF000004, 0xFF1F1F1D, 0xFFBDBCC1, 0xFFC8C7CC, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCAC9CE, 0xFFBDBCC1, 0xFF1C1C1A, 0xFF000004, 0xFF24222F, 0xFF292639, 0xFF252235, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262336, 0xFF252233,
+ 0xFF272334, 0xFF262231, 0xFF282433, 0xFF282536, 0xFF252233, 0xFF211E31, 0xFF262334, 0xFF252233, 0xFF252233, 0xFF262334, 0xFF272435, 0xFF282536, 0xFF272435, 0xFF272435,
+ 0xFF272334, 0xFF262233, 0xFF262233, 0xFF272435, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272437, 0xFF262336, 0xFF272532, 0xFF000004, 0xFF1F1F1D, 0xFFBCBBC0, 0xFFC7C6CB, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC9C8CD, 0xFFBDBCC1, 0xFF1C1C1A, 0xFF000004, 0xFF24222F, 0xFF292639, 0xFF252235, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262537, 0xFF222133,
+ 0xFF272435, 0xFF272332, 0xFF252130, 0xFF262334, 0xFF232436, 0xFF252638, 0xFF242331, 0xFF252434, 0xFF252434, 0xFF252434, 0xFF252434, 0xFF242333, 0xFF252235, 0xFF252235,
+ 0xFF272334, 0xFF262233, 0xFF262334, 0xFF282536, 0xFF272435, 0xFF252233, 0xFF262334, 0xFF292637, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF262334, 0xFF262334,
+ 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272437, 0xFF262336, 0xFF272532, 0xFF000004, 0xFF1F1F1D, 0xFFBCBBC0, 0xFFC7C6CB, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC6C5CA, 0xFFBDBCC1, 0xFF1D1D1B, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF282538, 0xFF252233, 0xFF242132, 0xFF282536, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF272435, 0xFF272435, 0xFF282536, 0xFF252233, 0xFF262334, 0xFF292639, 0xFF282538, 0xFF282633, 0xFF000004, 0xFF1E1E1C, 0xFFB9B8BD, 0xFFC5C4C9, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC5C4C9, 0xFFBBBABF, 0xFF1E1E1C, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF272437, 0xFF262334, 0xFF252233, 0xFF272435, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF272435, 0xFF272435, 0xFF292637, 0xFF272435, 0xFF272435, 0xFF282538, 0xFF262336, 0xFF272532, 0xFF000004, 0xFF1E1E1C, 0xFFB8B7BC, 0xFFC4C3C8, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC4C3C8, 0xFFB9B8BD, 0xFF1F1F1D, 0xFF000004, 0xFF272532, 0xFF252235, 0xFF262336, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF272435, 0xFF272435, 0xFF282536, 0xFF272435, 0xFF272435, 0xFF272437, 0xFF262336, 0xFF272532, 0xFF000004, 0xFF1F1F1D, 0xFFB6B5BA, 0xFFC3C2C7, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC3C2C7, 0xFFB8B7BC, 0xFF1F1F1D, 0xFF000004, 0xFF272532, 0xFF262336, 0xFF252235, 0xFF262334, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF252233, 0xFF252235, 0xFF272437, 0xFF282633, 0xFF000004, 0xFF1F1F1D, 0xFFB5B4B9, 0xFFC2C1C6, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC3C2C7, 0xFFB8B7BC, 0xFF20201E, 0xFF000004, 0xFF282633, 0xFF282538, 0xFF252235, 0xFF252233, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF242132, 0xFF252235, 0xFF282538, 0xFF282633, 0xFF000004, 0xFF21211F, 0xFFB5B4B9, 0xFFC2C1C6, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC4C3C8, 0xFFB9B8BD, 0xFF272725, 0xFF000004, 0xFF262431, 0xFF282538, 0xFF252235, 0xFF242132, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF272435, 0xFF282536, 0xFF252233, 0xFF262336, 0xFF282538, 0xFF262431, 0xFF000004, 0xFF262624, 0xFFB6B5BA, 0xFFC4C3C8, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC6C5CA, 0xFFBBBABF, 0xFF31312F, 0xFF000004, 0xFF23212E, 0xFF272437, 0xFF262336, 0xFF252233, 0xFF272435, 0xFF252233, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF272435, 0xFF282536, 0xFF262334, 0xFF272437, 0xFF282538, 0xFF23212E, 0xFF000004, 0xFF31312F, 0xFFB8B7BC, 0xFFC5C4C9, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC7C6CB, 0xFFBCBBC0, 0xFF3A3A38, 0xFF020106, 0xFF211F2C, 0xFF262336, 0xFF272437, 0xFF262334, 0xFF272435, 0xFF252233, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF252233, 0xFF272435, 0xFF262334, 0xFF272437, 0xFF272437, 0xFF22202D, 0xFF030207, 0xFF3B3B39, 0xFFBAB9BE, 0xFFC6C5CA, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCCCBD0, 0xFFBFBEC3, 0xFF585858, 0xFF000004, 0xFF1C1A25, 0xFF242132, 0xFF2B283D, 0xFF221F34, 0xFF232031, 0xFF2B2937, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF282536, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF282536, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF2D2B39, 0xFF242132, 0xFF221F34, 0xFF2B283D, 0xFF252233, 0xFF1C1A25, 0xFF000004, 0xFF575757, 0xFFBEBDC2, 0xFFCBCACF, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFB7B6BB, 0xFF7F7F7F, 0xFF030207, 0xFF0F0E16, 0xFF252331, 0xFF242132, 0xFF2E2B3E, 0xFF242134, 0xFF211E2F, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF272435, 0xFF262334, 0xFF252233, 0xFF242132, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF242132, 0xFF252233, 0xFF262334, 0xFF272435, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF211E2F, 0xFF242134, 0xFF2E2B3E, 0xFF242132, 0xFF262432, 0xFF111018, 0xFF040308, 0xFF7F7F7F, 0xFFB6B5BA, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFB5B5B7, 0xFFAEAEB0, 0xFF16151A, 0xFF000005, 0xFF212028, 0xFF2A2835, 0xFF1C1A28, 0xFF2D2A3D, 0xFF262338, 0xFF272435, 0xFF262334,
+ 0xFF262334, 0xFF272435, 0xFF282536, 0xFF282536, 0xFF272435, 0xFF252233, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF252233, 0xFF272435, 0xFF282536, 0xFF282536, 0xFF272435, 0xFF262334,
+ 0xFF262334, 0xFF272435, 0xFF252237, 0xFF2C293C, 0xFF1B1927, 0xFF292734, 0xFF212028, 0xFF000005, 0xFF17161B, 0xFFAEAEB0, 0xFFB4B4B6, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFC4C4C6, 0xFFBBBABF, 0xFF7D7C81, 0xFF050507, 0xFF000004, 0xFF212026, 0xFF2D2B38, 0xFF252233, 0xFF262338, 0xFF262336, 0xFF252235,
+ 0xFF252235, 0xFF242134, 0xFF252235, 0xFF252235, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336,
+ 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF252235, 0xFF252235, 0xFF242134, 0xFF252235,
+ 0xFF252235, 0xFF262336, 0xFF262338, 0xFF252233, 0xFF2D2B38, 0xFF201F25, 0xFF000004, 0xFF050507, 0xFF7D7C81, 0xFFB9B8BD, 0xFFC5C5C7, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFACABB0, 0xFFB4B4B6, 0xFF4F4F51, 0xFF040406, 0xFF030207, 0xFF1D1C24, 0xFF272533, 0xFF262334, 0xFF272437, 0xFF282538,
+ 0xFF282538, 0xFF282538, 0xFF272437, 0xFF262336, 0xFF272437, 0xFF282538, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437,
+ 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF282538, 0xFF272437, 0xFF262336, 0xFF272437, 0xFF282538, 0xFF282538,
+ 0xFF282538, 0xFF272437, 0xFF272435, 0xFF272533, 0xFF1E1D25, 0xFF030207, 0xFF030305, 0xFF4E4E50, 0xFFB3B3B5, 0xFFABAAAF, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFAEAEB0, 0xFFB6B6B8, 0xFF4C4C4E, 0xFF030305, 0xFF000005, 0xFF121119, 0xFF1C1A25, 0xFF211F2C, 0xFF23212E,
+ 0xFF252330, 0xFF262431, 0xFF262431, 0xFF262431, 0xFF262431, 0xFF272532, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330,
+ 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF272532, 0xFF262431, 0xFF262431, 0xFF262431, 0xFF262431, 0xFF252330,
+ 0xFF23212E, 0xFF211F2C, 0xFF1A1823, 0xFF111018, 0xFF000005, 0xFF030305, 0xFF4C4C4E, 0xFFB6B6B8, 0xFFAEAEB0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFC4C4C6, 0xFFAAAAAC, 0xFFB7B7B9, 0xFF79787D, 0xFF16151A, 0xFF000004, 0xFF020106, 0xFF030207, 0xFF010005,
+ 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004,
+ 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004,
+ 0xFF010005, 0xFF030207, 0xFF000004, 0xFF000004, 0xFF16151A, 0xFF79787D, 0xFFB7B7B9, 0xFFAAAAAC, 0xFFC4C4C6, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFABAAAF, 0xFFAFAEB3, 0xFFAEAEB0, 0xFF797979, 0xFF515151, 0xFF353533, 0xFF2D2D2B,
+ 0xFF232321, 0xFF1E1E1C, 0xFF1D1D1B, 0xFF1D1D1B, 0xFF1B1B19, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917,
+ 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF1B1B19, 0xFF1D1D1B, 0xFF1D1D1B, 0xFF1E1E1C, 0xFF232321,
+ 0xFF2D2D2B, 0xFF353533, 0xFF515151, 0xFF7A7A7A, 0xFFAFAFB1, 0xFFAFAEB3, 0xFFABAAAF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFBAB9BE, 0xFFABAAB0, 0xFFADACB2, 0xFFB5B4BC, 0xFFB1B0B8, 0xFFAEADB5,
+ 0xFFABAAB2, 0xFFA9A8B0, 0xFFA9A8B0, 0xFFAAA9B1, 0xFFA9A8B0, 0xFFA8A7AF, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC,
+ 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA9A8AD, 0xFFA9A8AD, 0xFFA9A8AD, 0xFFABAAAF,
+ 0xFFADACB1, 0xFFB0AFB4, 0xFFB6B5BD, 0xFFACABB1, 0xFFA9A8AE, 0xFFB9B8BD, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFBCBBC1, 0xFFB4B3B8, 0xFFB2B1B6,
+ 0xFFAFAEB3, 0xFFADACB1, 0xFFADACB1, 0xFFADACB1, 0xFFADACB1, 0xFFACABB0, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3,
+ 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAEADB2, 0xFFAEADB2, 0xFFAEADB2, 0xFFAEADB2, 0xFFAFAEB3, 0xFFB1B0B5,
+ 0xFFB3B2B7, 0xFFB5B4B9, 0xFFBAB9BF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}
+};
+
+static const uint32_t icon5[H][W] = {
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFF1F1F1, 0xFFEFEFEF, 0xFFEEEEEE,
+ 0xFFEDEDED, 0xFFEDEDED, 0xFFEDEDED, 0xFFEDEDED, 0xFFEEEEEE, 0xFFEFEFEF, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0,
+ 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEEEEF0, 0xFFEFEFEF, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEDEDED, 0xFFEDEDED, 0xFFEEEEEE,
+ 0xFFEEEEEE, 0xFFEFEFEF, 0xFFF1F1F1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFEFEFEF, 0xFFECECEC, 0xFFF1F1F1, 0xFFF8F8F8, 0xFFF2F2F4, 0xFFF1F1F3,
+ 0xFFEEEEF0, 0xFFEBEBED, 0xFFE8E8EA, 0xFFE7E7E9, 0xFFE6E6E8, 0xFFE6E6E8, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9,
+ 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE7E7E9, 0xFFE6E6E8, 0xFFE6E6E8, 0xFFE7E7E9, 0xFFE8E8EA, 0xFFEBEBED, 0xFFEEEEF0,
+ 0xFFF1F1F3, 0xFFF3F3F5, 0xFFF8F8F8, 0xFFF1F1F1, 0xFFECECEC, 0xFFEFEFEF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFE5E5E7, 0xFFF7F7F9, 0xFFE0E0E0, 0xFFA8A8A6, 0xFF6F6F6D, 0xFF4B4B49, 0xFF3E3E3C,
+ 0xFF30302E, 0xFF2A2A28, 0xFF2C2C2A, 0xFF30302E, 0xFF31312F, 0xFF30302E, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D,
+ 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2F2F2D, 0xFF2E2E2C, 0xFF2F2F2D, 0xFF31312F, 0xFF31312F, 0xFF343432, 0xFF3C3C3A,
+ 0xFF494947, 0xFF535351, 0xFF767674, 0xFFADADAD, 0xFFE1E1E3, 0xFFF5F5F7, 0xFFE6E6E8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFE0E0E2, 0xFFF1F1F3, 0xFF9D9D9F, 0xFF222224, 0xFF000002, 0xFF000002, 0xFF010005, 0xFF000004,
+ 0xFF000004, 0xFF000004, 0xFF010005, 0xFF06050A, 0xFF06050A, 0xFF030207, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C,
+ 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF08070C, 0xFF06050A, 0xFF08070C, 0xFF09080D, 0xFF08070C, 0xFF06050A, 0xFF040308,
+ 0xFF040308, 0xFF040308, 0xFF000004, 0xFF000004, 0xFF303032, 0xFFA1A1A3, 0xFFF3F3F5, 0xFFE7E7E7, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFDEDEE0, 0xFFF4F4F4, 0xFF626262, 0xFF000002, 0xFF050409, 0xFF121119, 0xFF1B1924, 0xFF211F2C, 0xFF262431,
+ 0xFF272532, 0xFF252330, 0xFF272532, 0xFF2E2C39, 0xFF32303D, 0xFF312F3C, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B,
+ 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF302E3B, 0xFF2F2D3A, 0xFF2F2D3A, 0xFF302E3B, 0xFF312F3C, 0xFF312F3C, 0xFF312F3C,
+ 0xFF2F2D3A, 0xFF2D2B38, 0xFF292732, 0xFF1C1B23, 0xFF000004, 0xFF060608, 0xFF686868, 0xFFEFEFEF, 0xFFE3E3E3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFE1E0E5, 0xFFF0F0F2, 0xFF666666, 0xFF050505, 0xFF050507, 0xFF17161E, 0xFF282633, 0xFF282536, 0xFF272437, 0xFF292639,
+ 0xFF282538, 0xFF242134, 0xFF232033, 0xFF282538, 0xFF2E2B3E, 0xFF322F42, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40,
+ 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF302D40, 0xFF333043, 0xFF312E41, 0xFF2F2C3F, 0xFF2F2C3F, 0xFF312E41, 0xFF322F42,
+ 0xFF333043, 0xFF333043, 0xFF2D2A3B, 0xFF363441, 0xFF27262E, 0xFF0E0E10, 0xFF020202, 0xFF666666, 0xFFF5F5F5, 0xFFE0E0E2, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFEBEBEB, 0xFFF0EFF4, 0xFF9A9A9C, 0xFF000002, 0xFF070709, 0xFF1D1C22, 0xFF2E2C39, 0xFF292637, 0xFF242136, 0xFF272437, 0xFF262336,
+ 0xFF272437, 0xFF282538, 0xFF272437, 0xFF272437, 0xFF2B283B, 0xFF302D40, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41,
+ 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF312E41, 0xFF322F42, 0xFF312E41, 0xFF312E41, 0xFF302D40,
+ 0xFF2F2C3F, 0xFF2E2B3E, 0xFF322F44, 0xFF2D2A3B, 0xFF33313C, 0xFF2C2B31, 0xFF141416, 0xFF030303, 0xFF9B9B9B, 0xFFEDEDEF, 0xFFEAEAEA, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFE5E5E5, 0xFFDADADC, 0xFF212025, 0xFF020107, 0xFF1D1C24, 0xFF282633, 0xFF242230, 0xFF1F1C2F, 0xFF272439, 0xFF262334, 0xFF232031,
+ 0xFF232031, 0xFF272435, 0xFF272435, 0xFF252233, 0xFF282536, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2C293A, 0xFF2D2A3B, 0xFF2E2B3C, 0xFF2F2C3D, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2F2C3D, 0xFF312E3F, 0xFF2A273A, 0xFF302D40, 0xFF2E2C3A, 0xFF312F3A, 0xFF212026, 0xFF020106, 0xFF2E2E30, 0xFFDCDCDC, 0xFFE5E5E5, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFE7E7E7, 0xFFA2A2A2, 0xFF000004, 0xFF0E0D15, 0xFF2A2836, 0xFF282536, 0xFF252235, 0xFF2A273A, 0xFF262336, 0xFF292637, 0xFF272435,
+ 0xFF262334, 0xFF262334, 0xFF252233, 0xFF252233, 0xFF272435, 0xFF2B2839, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E,
+ 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF302D3E, 0xFF312E3F, 0xFF312E3F, 0xFF302D3E, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF302D3E, 0xFF312E3F, 0xFF322F40, 0xFF2C293A, 0xFF2F2C3D, 0xFF2F2C3D, 0xFF363441, 0xFF1C1B21, 0xFF000002, 0xFFA6A6A4, 0xFFE7E7E7, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFE4E4E4, 0xFFEBEBEB, 0xFF6D6D6D, 0xFF000004, 0xFF1E1C27, 0xFF262336, 0xFF252237, 0xFF242136, 0xFF282538, 0xFF252233, 0xFF242132, 0xFF272435,
+ 0xFF292637, 0xFF272435, 0xFF252233, 0xFF252233, 0xFF262334, 0xFF262334, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2F2C3D, 0xFF2F2C3D, 0xFF302D3E, 0xFF2F2C3D,
+ 0xFF2E2B3C, 0xFF2D2A3B, 0xFF2C2A38, 0xFF333041, 0xFF2E2B3E, 0xFF2C293C, 0xFF302D3E, 0xFF26252D, 0xFF010103, 0xFF6E6F6A, 0xFFEBEBEB, 0xFFE4E4E4, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFE2E2E4, 0xFFE7E6EB, 0xFF494846, 0xFF020106, 0xFF23212E, 0xFF282538, 0xFF252235, 0xFF262334, 0xFF252233, 0xFF242333, 0xFF1D283A, 0xFF2E2333,
+ 0xFF291B2A, 0xFF2E1731, 0xFF242B3D, 0xFF20222F, 0xFF331D34, 0xFF2A243E, 0xFF2B233A, 0xFF312E41, 0xFF2B2A3A, 0xFF2A2939, 0xFF2C303C, 0xFF2B2E3D, 0xFF2C2B3B, 0xFF312D3E,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2D2A3B, 0xFF2F2C3D, 0xFF302D3E, 0xFF2B283B, 0xFF302D40, 0xFF2B2936, 0xFF040308, 0xFF4F4F4D, 0xFFE5E4E9, 0xFFE1E1E3, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFE0E0E2, 0xFFE3E2E7, 0xFF3C3B39, 0xFF000004, 0xFF24222F, 0xFF282538, 0xFF262336, 0xFF272435, 0xFF262334, 0xFF282737, 0xFF2E2635, 0xFF1C2641,
+ 0xFF296E7D, 0xFF245563, 0xFF211930, 0xFF233342, 0xFF1F2837, 0xFF201E2B, 0xFF232232, 0xFF282A39, 0xFF2E2B3C, 0xFF2F2B3C, 0xFF312A3C, 0xFF3A283E, 0xFF39273D, 0xFF282737,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF302D3E, 0xFF2C293C, 0xFF302D40, 0xFF2B2936, 0xFF010005, 0xFF424240, 0xFFE2E1E6, 0xFFDFDFE1, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFDDDDDF, 0xFFDEDDE2, 0xFF2E2D2B, 0xFF000004, 0xFF252330, 0xFF272437, 0xFF272437, 0xFF262334, 0xFF262334, 0xFF2A2939, 0xFF23202B, 0xFF2C7482,
+ 0xFF45FEF9, 0xFF35E9E0, 0xFF2A576C, 0xFF1B2137, 0xFF2C2F3E, 0xFF2A232B, 0xFF2E2635, 0xFF2A2835, 0xFF332A3D, 0xFF2E2B3E, 0xFF212A39, 0xFF2E263B, 0xFF3A283E, 0xFF2A2D3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2E2B3C,
+ 0xFF2E2B3C, 0xFF2E2B3C, 0xFF2F2C3D, 0xFF2C293A, 0xFF2E2B3C, 0xFF2C293C, 0xFF2F2C3F, 0xFF2C2A37, 0xFF000004, 0xFF343432, 0xFFDDDCE1, 0xFFDCDCDE, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFDADADC, 0xFFDAD9DE, 0xFF262523, 0xFF010005, 0xFF262431, 0xFF262336, 0xFF282538, 0xFF262334, 0xFF252233, 0xFF292838, 0xFF2E263D, 0xFF235965,
+ 0xFF30E8DE, 0xFF2AFFFD, 0xFF3CECEC, 0xFF30596D, 0xFF162731, 0xFF2F2838, 0xFF23262F, 0xFF1C252E, 0xFF2D2437, 0xFF32293E, 0xFF222F3F, 0xFF252E3D, 0xFF2F283A, 0xFF292D39,
+ 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B,
+ 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2D2A3B, 0xFF2B2839, 0xFF2D2A3B, 0xFF2C293C, 0xFF2E2B3E, 0xFF2D2B38, 0xFF020106, 0xFF2B2B29, 0xFFD9D8DD, 0xFFDADADC, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFDADADC, 0xFFD7D6DB, 0xFF242321, 0xFF030207, 0xFF262431, 0xFF252235, 0xFF282538, 0xFF252233, 0xFF252233, 0xFF272636, 0xFF2B3245, 0xFF1C2D3D,
+ 0xFF2D6C7D, 0xFF42E9EF, 0xFF38F9FE, 0xFF36EFE7, 0xFF2F586A, 0xFF27293E, 0xFF232B36, 0xFF1C2D37, 0xFF2A2939, 0xFF35213A, 0xFF32293E, 0xFF302D40, 0xFF2A2637, 0xFF282737,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2B2839, 0xFF2D2A3B, 0xFF2C293C, 0xFF2C293C, 0xFF2D2B38, 0xFF040308, 0xFF282826, 0xFFD6D5DA, 0xFFD9D9DB, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD9D9DB, 0xFFD5D4D9, 0xFF22211F, 0xFF020106, 0xFF24222F, 0xFF252235, 0xFF282538, 0xFF252233, 0xFF272435, 0xFF272636, 0xFF1D2935, 0xFF2A4652,
+ 0xFF2B354E, 0xFF24707D, 0xFF3EEEEB, 0xFF36FCFD, 0xFF34EFE8, 0xFF235667, 0xFF2F223C, 0xFF2A223A, 0xFF2A2B3D, 0xFF282737, 0xFF2C2336, 0xFF31283B, 0xFF2A2738, 0xFF2D2C3C,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2E2B3C, 0xFF2D2A3B, 0xFF2C293C, 0xFF2C293C, 0xFF2B2936, 0xFF030207, 0xFF272725, 0xFFD4D3D8, 0xFFD8D8DA, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD8D8DA, 0xFFD3D2D7, 0xFF21201E, 0xFF010005, 0xFF24222F, 0xFF272437, 0xFF282538, 0xFF242132, 0xFF282536, 0xFF262535, 0xFF30283D, 0xFF2A283D,
+ 0xFF22434C, 0xFF2A4652, 0xFF24747F, 0xFF34EBE7, 0xFF2EFFFE, 0xFF3DEEE8, 0xFF275B69, 0xFF262340, 0xFF272239, 0xFF20313B, 0xFF222B34, 0xFF2C2A37, 0xFF282A39, 0xFF2D2A3D,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2C293A,
+ 0xFF2C293A, 0xFF2C293A, 0xFF2C293A, 0xFF2E2B3C, 0xFF2B2839, 0xFF2B283B, 0xFF2D2A3D, 0xFF2A2835, 0xFF020106, 0xFF272725, 0xFFD1D0D5, 0xFFD6D6D8, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD7D7D9, 0xFFD2D1D6, 0xFF21201E, 0xFF000004, 0xFF252330, 0xFF292639, 0xFF272437, 0xFF221F30, 0xFF282536, 0xFF252434, 0xFF2D1E3D, 0xFF1B2E35,
+ 0xFF303741, 0xFF2A404D, 0xFF2D4159, 0xFF267681, 0xFF3DF2ED, 0xFF37F9FF, 0xFF34F4DB, 0xFF295D6B, 0xFF2C1F39, 0xFF262E39, 0xFF262932, 0xFF2F2736, 0xFF2B2A3A, 0xFF2D253C,
+ 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839,
+ 0xFF2B2839, 0xFF2B2839, 0xFF2A2738, 0xFF2D2A3B, 0xFF282536, 0xFF292639, 0xFF2E2B3E, 0xFF2A2835, 0xFF010005, 0xFF272725, 0xFFCFCED3, 0xFFD5D5D7, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD6D6D8, 0xFFD0CFD4, 0xFF21211F, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF282538, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF25232E, 0xFF30243C,
+ 0xFF1D283A, 0xFF20393E, 0xFF26474C, 0xFF29485C, 0xFF326A81, 0xFF35EEDC, 0xFF3BFFFB, 0xFF3BEBE0, 0xFF1D4053, 0xFF232937, 0xFF2A2A36, 0xFF2B2736, 0xFF32243B, 0xFF1E303E,
+ 0xFF2A2836, 0xFF2D2638, 0xFF292C3B, 0xFF2A2A36, 0xFF312936, 0xFF242B33, 0xFF2B2D39, 0xFF312237, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839, 0xFF2B2839,
+ 0xFF2B2839, 0xFF2C293A, 0xFF2A2738, 0xFF2B2839, 0xFF2B2839, 0xFF2B283B, 0xFF2B283B, 0xFF2A2835, 0xFF010005, 0xFF242422, 0xFFCECDD2, 0xFFD5D5D7, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD5D5D7, 0xFFD0CFD4, 0xFF21211F, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF272437, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272236, 0xFF252331,
+ 0xFF31283B, 0xFF2A283D, 0xFF213945, 0xFF2E3F4F, 0xFF247382, 0xFF2EEBED, 0xFF30F9FF, 0xFF3AEEEF, 0xFF354167, 0xFF262E43, 0xFF212735, 0xFF252F39, 0xFF302536, 0xFF2C2535,
+ 0xFF2E293F, 0xFF2C243B, 0xFF28263B, 0xFF2C273B, 0xFF30293B, 0xFF272435, 0xFF27253A, 0xFF302B42, 0xFF2B2839, 0xFF2B2839, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2B2839,
+ 0xFF2B2839, 0xFF2B2839, 0xFF2A2738, 0xFF2B2839, 0xFF2B2839, 0xFF2B283B, 0xFF2B283B, 0xFF2A2835, 0xFF010005, 0xFF242422, 0xFFCECDD2, 0xFFD5D5D7, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD5D5D7, 0xFFCECDD2, 0xFF20201E, 0xFF000004, 0xFF252330, 0xFF262336, 0xFF272437, 0xFF262334, 0xFF252233, 0xFF262334, 0xFF201D30, 0xFF262A36,
+ 0xFF272636, 0xFF24293D, 0xFF2F2F47, 0xFF216268, 0xFF40F0E6, 0xFF35FBFF, 0xFF30F6E7, 0xFF296C7F, 0xFF28374E, 0xFF222838, 0xFF1E2633, 0xFF2C1F33, 0xFF2F2337, 0xFF2B2A3A,
+ 0xFF2E2538, 0xFF2D2938, 0xFF2D2636, 0xFF2A2333, 0xFF2F2838, 0xFF34293A, 0xFF272334, 0xFF222836, 0xFF2B2839, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738,
+ 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2B2839, 0xFF2A2738, 0xFF2B283B, 0xFF2B283B, 0xFF292734, 0xFF010005, 0xFF242422, 0xFFCCCBD0, 0xFFD4D4D6, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD4D4D6, 0xFFCDCCD1, 0xFF20201E, 0xFF000004, 0xFF252330, 0xFF262336, 0xFF262336, 0xFF252233, 0xFF252233, 0xFF262334, 0xFF2E2631, 0xFF1E2736,
+ 0xFF272C42, 0xFF282038, 0xFF265E6B, 0xFF35F3E7, 0xFF37FFFC, 0xFF3DEBEC, 0xFF2F717F, 0xFF2A3E56, 0xFF2A3547, 0xFF243443, 0xFF32243D, 0xFF27273F, 0xFF1E3142, 0xFF33253F,
+ 0xFF272638, 0xFF272F3C, 0xFF2C293A, 0xFF242738, 0xFF252A3D, 0xFF322A41, 0xFF26293A, 0xFF202E39, 0xFF2B2839, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738,
+ 0xFF2A2738, 0xFF2A2738, 0xFF292637, 0xFF2B2839, 0xFF2A2738, 0xFF2A273A, 0xFF2B283B, 0xFF292734, 0xFF000004, 0xFF242422, 0xFFCBCACF, 0xFFD3D3D5, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD3D3D5, 0xFFCBCACF, 0xFF20201E, 0xFF000004, 0xFF252330, 0xFF252235, 0xFF262336, 0xFF252233, 0xFF262334, 0xFF272435, 0xFF2E242F, 0xFF1F2D3A,
+ 0xFF2C1939, 0xFF2F596F, 0xFF35EEE6, 0xFF32FAFA, 0xFF30F4EA, 0xFF2C6E7C, 0xFF2B4556, 0xFF23444D, 0xFF263741, 0xFF272936, 0xFF24202F, 0xFF1C1A28, 0xFF22222C, 0xFF202328,
+ 0xFF2B2436, 0xFF232732, 0xFF2D2230, 0xFF292836, 0xFF262537, 0xFF291B32, 0xFF272331, 0xFF31242E, 0xFF2B2839, 0xFF2B2839, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738,
+ 0xFF2A2738, 0xFF2A2738, 0xFF292637, 0xFF2A2738, 0xFF2A2738, 0xFF2A273A, 0xFF2A273A, 0xFF292734, 0xFF000004, 0xFF232321, 0xFFC9C8CD, 0xFFD2D2D4, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD2D2D4, 0xFFC9C8CD, 0xFF20201E, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF262336, 0xFF252233, 0xFF262334, 0xFF282536, 0xFF222838, 0xFF212936,
+ 0xFF2B616B, 0xFF37F0EA, 0xFF3AFFFF, 0xFF32EBE5, 0xFF2C7681, 0xFF2A4455, 0xFF2B3C46, 0xFF333645, 0xFF1D303E, 0xFF21384A, 0xFF326C78, 0xFF2E6C7B, 0xFF2E6673, 0xFF306B73,
+ 0xFF366778, 0xFF2D6772, 0xFF34636D, 0xFF2F6B75, 0xFF34677A, 0xFF325F74, 0xFF2F646C, 0xFF2F2E40, 0xFF2B2839, 0xFF2B2839, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738, 0xFF2A2738,
+ 0xFF2A2738, 0xFF2A2738, 0xFF292637, 0xFF2A2738, 0xFF292637, 0xFF292639, 0xFF2A273A, 0xFF282633, 0xFF000004, 0xFF232321, 0xFFC7C6CB, 0xFFD1D1D3, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD1D1D3, 0xFFC8C7CC, 0xFF20201E, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF262336, 0xFF252233, 0xFF262334, 0xFF282536, 0xFF2A273C, 0xFF21535E,
+ 0xFF38EADE, 0xFF34FBF8, 0xFF33ECE7, 0xFF2B7882, 0xFF253C4C, 0xFF2B4554, 0xFF243A48, 0xFF292D48, 0xFF292E54, 0xFF2AECE1, 0xFF33FFFF, 0xFF33F3FE, 0xFF3CFEFF, 0xFF38FFFF,
+ 0xFF39FCFF, 0xFF36FFFD, 0xFF3BFEF8, 0xFF2FFFFB, 0xFF3EFFFF, 0xFF3CFFFF, 0xFF37FFF5, 0xFF258998, 0xFF2B2839, 0xFF2A2738, 0xFF2A2738, 0xFF292637, 0xFF292637, 0xFF292637,
+ 0xFF292637, 0xFF292637, 0xFF282536, 0xFF292637, 0xFF292637, 0xFF292639, 0xFF2A273A, 0xFF282633, 0xFF000004, 0xFF232321, 0xFFC6C5CA, 0xFFD0D0D2, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFD0D0D2, 0xFFC7C6CB, 0xFF20201E, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF262336, 0xFF252233, 0xFF272435, 0xFF292637, 0xFF2C2034, 0xFF28768C,
+ 0xFF3FFFFF, 0xFF31EBE6, 0xFF327180, 0xFF204651, 0xFF264250, 0xFF2E2E46, 0xFF202D35, 0xFF262D3D, 0xFF2A344D, 0xFF3AC2BE, 0xFF3BEAE5, 0xFF36EFEA, 0xFF34EDE7, 0xFF32EDE2,
+ 0xFF35E7E7, 0xFF35EAE3, 0xFF3BEDE1, 0xFF2DF1E3, 0xFF3BE7E9, 0xFF32E6E3, 0xFF3BF2E0, 0xFF356977, 0xFF2A2738, 0xFF2A2738, 0xFF292637, 0xFF292637, 0xFF292637, 0xFF292637,
+ 0xFF292637, 0xFF292637, 0xFF282536, 0xFF292637, 0xFF292637, 0xFF292639, 0xFF292639, 0xFF282633, 0xFF000004, 0xFF222220, 0xFFC5C4C9, 0xFFD0D0D2, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCFCED3, 0xFFC6C5CA, 0xFF1E1E1C, 0xFF020106, 0xFF24222F, 0xFF282538, 0xFF252235, 0xFF262334, 0xFF272435, 0xFF282536, 0xFF242F41, 0xFF233F4D,
+ 0xFF46727D, 0xFF35646E, 0xFF214251, 0xFF2E3F4F, 0xFF252E3F, 0xFF272F3C, 0xFF27283A, 0xFF252B3B, 0xFF243443, 0xFF28424F, 0xFF2E5260, 0xFF315D6A, 0xFF30606E, 0xFF2E5F6D,
+ 0xFF31636E, 0xFF2F636E, 0xFF2E626F, 0xFF2F606E, 0xFF335F6C, 0xFF335966, 0xFF2C4957, 0xFF223C4B, 0xFF29313E, 0xFF292C3B, 0xFF292838, 0xFF282536, 0xFF292536, 0xFF2A2637,
+ 0xFF292637, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF292639, 0xFF282538, 0xFF282633, 0xFF000004, 0xFF20201E, 0xFFC4C3C8, 0xFFCCCBD0, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCECDD2, 0xFFC5C4C9, 0xFF1E1E1C, 0xFF010005, 0xFF24222F, 0xFF282538, 0xFF252235, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF2A2F42, 0xFF1B2E3D,
+ 0xFF20424E, 0xFF1E404C, 0xFF203546, 0xFF2E3649, 0xFF282B3C, 0xFF1F2231, 0xFF282538, 0xFF27283A, 0xFF262F40, 0xFF263747, 0xFF26404F, 0xFF274756, 0xFF254959, 0xFF244858,
+ 0xFF234755, 0xFF254957, 0xFF254B58, 0xFF264A58, 0xFF284958, 0xFF2C4655, 0xFF2A3D4C, 0xFF253545, 0xFF282E3C, 0xFF282B3A, 0xFF282737, 0xFF282536, 0xFF292536, 0xFF2A2637,
+ 0xFF292637, 0xFF272636, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF292639, 0xFF282538, 0xFF282633, 0xFF000004, 0xFF20201E, 0xFFC3C2C7, 0xFFCBCACF, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCECDD2, 0xFFC4C3C8, 0xFF1E1E1C, 0xFF010005, 0xFF24222F, 0xFF282538, 0xFF252235, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF282739, 0xFF242B3D,
+ 0xFF213141, 0xFF263646, 0xFF252C3F, 0xFF252338, 0xFF292637, 0xFF272636, 0xFF2B2338, 0xFF2A273A, 0xFF2A2B3D, 0xFF293042, 0xFF263344, 0xFF263646, 0xFF263749, 0xFF27384A,
+ 0xFF263646, 0xFF293949, 0xFF293A4A, 0xFF283949, 0xFF283848, 0xFF2B3747, 0xFF2C3345, 0xFF2A3040, 0xFF292B3A, 0xFF272938, 0xFF282536, 0xFF282536, 0xFF292536, 0xFF292637,
+ 0xFF282737, 0xFF272636, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF282538, 0xFF272437, 0xFF282633, 0xFF000004, 0xFF20201E, 0xFFC2C1C6, 0xFFCBCACF, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCDCCD1, 0xFFC2C1C6, 0xFF1E1E1C, 0xFF010005, 0xFF24222F, 0xFF282538, 0xFF252235, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF282435, 0xFF2A293B,
+ 0xFF242738, 0xFF292C3F, 0xFF2C293C, 0xFF271F34, 0xFF262233, 0xFF242230, 0xFF262135, 0xFF272236, 0xFF272638, 0xFF262739, 0xFF252839, 0xFF26293A, 0xFF272A3B, 0xFF282B3E,
+ 0xFF2A293B, 0xFF2A2B3D, 0xFF2A2D3E, 0xFF282B3C, 0xFF272A3B, 0xFF28293B, 0xFF2A2939, 0xFF292838, 0xFF282737, 0xFF272636, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF292637,
+ 0xFF272636, 0xFF252736, 0xFF282536, 0xFF282536, 0xFF282536, 0xFF282538, 0xFF272437, 0xFF272532, 0xFF000004, 0xFF20201E, 0xFFC0BFC4, 0xFFCAC9CE, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCBCACF, 0xFFC0BFC4, 0xFF1D1D1B, 0xFF010005, 0xFF24222F, 0xFF282538, 0xFF252235, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF232031, 0xFF221F32, 0xFF282435, 0xFF2B2436, 0xFF262432, 0xFF262533, 0xFF262334, 0xFF262334, 0xFF252434, 0xFF242333, 0xFF242333, 0xFF252233, 0xFF252233, 0xFF252233,
+ 0xFF272032, 0xFF262233, 0xFF272334, 0xFF262334, 0xFF272435, 0xFF282536, 0xFF272435, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF282536, 0xFF282536,
+ 0xFF272636, 0xFF272636, 0xFF272435, 0xFF272435, 0xFF282536, 0xFF282538, 0xFF272437, 0xFF272532, 0xFF000004, 0xFF20201E, 0xFFBFBEC3, 0xFFC9C8CD, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCAC9CE, 0xFFBFBEC3, 0xFF1D1D1B, 0xFF010005, 0xFF24222F, 0xFF282538, 0xFF252235, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF232232, 0xFF272435,
+ 0xFF2B2839, 0xFF252132, 0xFF252132, 0xFF282536, 0xFF242333, 0xFF2A2939, 0xFF282737, 0xFF272636, 0xFF262535, 0xFF262535, 0xFF282536, 0xFF282536, 0xFF272435, 0xFF272334,
+ 0xFF272334, 0xFF272334, 0xFF282435, 0xFF292534, 0xFF2A2635, 0xFF292735, 0xFF282536, 0xFF262535, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF282536, 0xFF282536,
+ 0xFF282536, 0xFF282536, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF282538, 0xFF272437, 0xFF272532, 0xFF000004, 0xFF1F1F1D, 0xFFBDBCC1, 0xFFC8C7CC, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCAC9CE, 0xFFBDBCC1, 0xFF1D1D1B, 0xFF010005, 0xFF24222F, 0xFF282538, 0xFF252235, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF252434, 0xFF252233,
+ 0xFF272334, 0xFF262233, 0xFF272435, 0xFF282737, 0xFF242132, 0xFF211E2F, 0xFF252233, 0xFF242132, 0xFF242132, 0xFF252233, 0xFF262334, 0xFF272435, 0xFF262334, 0xFF262334,
+ 0xFF252436, 0xFF262334, 0xFF262334, 0xFF272332, 0xFF272332, 0xFF262334, 0xFF242333, 0xFF242335, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF272435, 0xFF282536, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272437, 0xFF262336, 0xFF272532, 0xFF000004, 0xFF1F1F1D, 0xFFBCBBC0, 0xFFC7C6CB, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC9C8CD, 0xFFBDBCC1, 0xFF1D1D1B, 0xFF000004, 0xFF24222F, 0xFF282538, 0xFF252235, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF252434, 0xFF262334,
+ 0xFF272334, 0xFF292536, 0xFF252434, 0xFF232232, 0xFF282536, 0xFF2A2237, 0xFF272332, 0xFF282433, 0xFF282435, 0xFF282435, 0xFF272334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF222335, 0xFF242335, 0xFF262334, 0xFF272334, 0xFF262233, 0xFF262233, 0xFF262336, 0xFF27253A, 0xFF282536, 0xFF282536, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF282435, 0xFF292536, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272437, 0xFF262336, 0xFF272532, 0xFF000004, 0xFF1F1F1D, 0xFFBCBBC0, 0xFFC7C6CB, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC6C5CA, 0xFFBDBCC1, 0xFF1D1D1B, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF282538, 0xFF252233, 0xFF242132, 0xFF282536, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF272435, 0xFF272435, 0xFF282536, 0xFF252233, 0xFF262334, 0xFF292639, 0xFF282538, 0xFF282633, 0xFF000004, 0xFF1E1E1C, 0xFFB9B8BD, 0xFFC5C4C9, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC5C4C9, 0xFFBBBABF, 0xFF1E1E1C, 0xFF000004, 0xFF262431, 0xFF262336, 0xFF272437, 0xFF262334, 0xFF252233, 0xFF272435, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF272435, 0xFF272435, 0xFF292637, 0xFF272435, 0xFF272435, 0xFF282538, 0xFF262336, 0xFF272532, 0xFF000004, 0xFF1E1E1C, 0xFFB8B7BC, 0xFFC4C3C8, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC4C3C8, 0xFFB9B8BD, 0xFF1F1F1D, 0xFF000004, 0xFF272532, 0xFF252235, 0xFF262336, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435, 0xFF272435,
+ 0xFF272435, 0xFF272435, 0xFF282536, 0xFF272435, 0xFF272435, 0xFF272437, 0xFF262336, 0xFF272532, 0xFF000004, 0xFF1F1F1D, 0xFFB6B5BA, 0xFFC3C2C7, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC3C2C7, 0xFFB8B7BC, 0xFF1F1F1D, 0xFF000004, 0xFF272532, 0xFF262336, 0xFF252235, 0xFF262334, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF252233, 0xFF252235, 0xFF272437, 0xFF282633, 0xFF000004, 0xFF1F1F1D, 0xFFB5B4B9, 0xFFC2C1C6, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC3C2C7, 0xFFB8B7BC, 0xFF20201E, 0xFF000004, 0xFF282633, 0xFF282538, 0xFF252235, 0xFF252233, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF242132, 0xFF252235, 0xFF282538, 0xFF282633, 0xFF000004, 0xFF21211F, 0xFFB5B4B9, 0xFFC2C1C6, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC4C3C8, 0xFFB9B8BD, 0xFF272725, 0xFF000004, 0xFF262431, 0xFF282538, 0xFF252235, 0xFF242132, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF272435, 0xFF282536, 0xFF252233, 0xFF262336, 0xFF282538, 0xFF262431, 0xFF000004, 0xFF262624, 0xFFB6B5BA, 0xFFC4C3C8, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC6C5CA, 0xFFBBBABF, 0xFF31312F, 0xFF000004, 0xFF23212E, 0xFF272437, 0xFF262336, 0xFF252233, 0xFF272435, 0xFF252233, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF272435, 0xFF282536, 0xFF262334, 0xFF272437, 0xFF282538, 0xFF23212E, 0xFF000004, 0xFF31312F, 0xFFB8B7BC, 0xFFC5C4C9, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFC7C6CB, 0xFFBCBBC0, 0xFF3A3A38, 0xFF020106, 0xFF211F2C, 0xFF262336, 0xFF272437, 0xFF262334, 0xFF272435, 0xFF252233, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF252233, 0xFF272435, 0xFF262334, 0xFF272437, 0xFF272437, 0xFF22202D, 0xFF030207, 0xFF3B3B39, 0xFFBAB9BE, 0xFFC6C5CA, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0xFFCCCBD0, 0xFFBFBEC3, 0xFF585858, 0xFF000004, 0xFF1C1A25, 0xFF242132, 0xFF2B283D, 0xFF221F34, 0xFF232031, 0xFF2B2937, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF272435, 0xFF282536, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF282536, 0xFF272435, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF2D2B39, 0xFF242132, 0xFF221F34, 0xFF2B283D, 0xFF252233, 0xFF1C1A25, 0xFF000004, 0xFF575757, 0xFFBEBDC2, 0xFFCBCACF, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFB7B6BB, 0xFF7F7F7F, 0xFF030207, 0xFF0F0E16, 0xFF252331, 0xFF242132, 0xFF2E2B3E, 0xFF242134, 0xFF211E2F, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF272435, 0xFF262334, 0xFF252233, 0xFF242132, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF242132, 0xFF252233, 0xFF262334, 0xFF272435, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF211E2F, 0xFF242134, 0xFF2E2B3E, 0xFF242132, 0xFF262432, 0xFF111018, 0xFF040308, 0xFF7F7F7F, 0xFFB6B5BA, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFB5B5B7, 0xFFAEAEB0, 0xFF16151A, 0xFF000005, 0xFF212028, 0xFF2A2835, 0xFF1C1A28, 0xFF2D2A3D, 0xFF262338, 0xFF272435, 0xFF262334,
+ 0xFF262334, 0xFF272435, 0xFF282536, 0xFF282536, 0xFF272435, 0xFF252233, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334,
+ 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF262334, 0xFF252233, 0xFF272435, 0xFF282536, 0xFF282536, 0xFF272435, 0xFF262334,
+ 0xFF262334, 0xFF272435, 0xFF252237, 0xFF2C293C, 0xFF1B1927, 0xFF292734, 0xFF212028, 0xFF000005, 0xFF17161B, 0xFFAEAEB0, 0xFFB4B4B6, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0xFFC4C4C6, 0xFFBBBABF, 0xFF7D7C81, 0xFF050507, 0xFF000004, 0xFF212026, 0xFF2D2B38, 0xFF252233, 0xFF262338, 0xFF262336, 0xFF252235,
+ 0xFF252235, 0xFF242134, 0xFF252235, 0xFF252235, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336,
+ 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF262336, 0xFF252235, 0xFF252235, 0xFF242134, 0xFF252235,
+ 0xFF252235, 0xFF262336, 0xFF262338, 0xFF252233, 0xFF2D2B38, 0xFF201F25, 0xFF000004, 0xFF050507, 0xFF7D7C81, 0xFFB9B8BD, 0xFFC5C5C7, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFACABB0, 0xFFB4B4B6, 0xFF4F4F51, 0xFF040406, 0xFF030207, 0xFF1D1C24, 0xFF272533, 0xFF262334, 0xFF272437, 0xFF282538,
+ 0xFF282538, 0xFF282538, 0xFF272437, 0xFF262336, 0xFF272437, 0xFF282538, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437,
+ 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF272437, 0xFF282538, 0xFF272437, 0xFF262336, 0xFF272437, 0xFF282538, 0xFF282538,
+ 0xFF282538, 0xFF272437, 0xFF272435, 0xFF272533, 0xFF1E1D25, 0xFF030207, 0xFF030305, 0xFF4E4E50, 0xFFB3B3B5, 0xFFABAAAF, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFAEAEB0, 0xFFB6B6B8, 0xFF4C4C4E, 0xFF030305, 0xFF000005, 0xFF121119, 0xFF1C1A25, 0xFF211F2C, 0xFF23212E,
+ 0xFF252330, 0xFF262431, 0xFF262431, 0xFF262431, 0xFF262431, 0xFF272532, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330,
+ 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF252330, 0xFF272532, 0xFF262431, 0xFF262431, 0xFF262431, 0xFF262431, 0xFF252330,
+ 0xFF23212E, 0xFF211F2C, 0xFF1A1823, 0xFF111018, 0xFF000005, 0xFF030305, 0xFF4C4C4E, 0xFFB6B6B8, 0xFFAEAEB0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFC4C4C6, 0xFFAAAAAC, 0xFFB7B7B9, 0xFF79787D, 0xFF16151A, 0xFF000004, 0xFF020106, 0xFF030207, 0xFF010005,
+ 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004,
+ 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004, 0xFF000004,
+ 0xFF010005, 0xFF030207, 0xFF000004, 0xFF000004, 0xFF16151A, 0xFF79787D, 0xFFB7B7B9, 0xFFAAAAAC, 0xFFC4C4C6, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFABAAAF, 0xFFAFAEB3, 0xFFAEAEB0, 0xFF797979, 0xFF515151, 0xFF353533, 0xFF2D2D2B,
+ 0xFF232321, 0xFF1E1E1C, 0xFF1D1D1B, 0xFF1D1D1B, 0xFF1B1B19, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917,
+ 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF191917, 0xFF1B1B19, 0xFF1D1D1B, 0xFF1D1D1B, 0xFF1E1E1C, 0xFF232321,
+ 0xFF2D2D2B, 0xFF353533, 0xFF515151, 0xFF7A7A7A, 0xFFAFAFB1, 0xFFAFAEB3, 0xFFABAAAF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFBAB9BE, 0xFFABAAB0, 0xFFADACB2, 0xFFB5B4BC, 0xFFB1B0B8, 0xFFAEADB5,
+ 0xFFABAAB2, 0xFFA9A8B0, 0xFFA9A8B0, 0xFFAAA9B1, 0xFFA9A8B0, 0xFFA8A7AF, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC,
+ 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA8A7AC, 0xFFA9A8AD, 0xFFA9A8AD, 0xFFA9A8AD, 0xFFABAAAF,
+ 0xFFADACB1, 0xFFB0AFB4, 0xFFB6B5BD, 0xFFACABB1, 0xFFA9A8AE, 0xFFB9B8BD, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFBCBBC1, 0xFFB4B3B8, 0xFFB2B1B6,
+ 0xFFAFAEB3, 0xFFADACB1, 0xFFADACB1, 0xFFADACB1, 0xFFADACB1, 0xFFACABB0, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3,
+ 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAFAEB3, 0xFFAEADB2, 0xFFAEADB2, 0xFFAEADB2, 0xFFAEADB2, 0xFFAFAEB3, 0xFFB1B0B5,
+ 0xFFB3B2B7, 0xFFB5B4B9, 0xFFBAB9BF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}
+};
+
+uint32_t *getdefaulticon(uint32_t *w, uint32_t *h) {
+ *w = width;
+ *h = height;
+ if (idx++ == 5) idx = 0;
+ switch (idx) {
+ default:
+ return (uint32_t *)icon0;
+ case 1:
+ return (uint32_t *)icon1;
+ case 2:
+ return (uint32_t *)icon2;
+ case 3:
+ return (uint32_t *)icon3;
+ case 4:
+ return (uint32_t *)icon4;
+ case 5:
+ return (uint32_t *)icon5;
+ };
+}
diff --git a/src/icon.h b/src/icon.h
new file mode 100644
index 0000000..f8402b9
--- /dev/null
+++ b/src/icon.h
@@ -0,0 +1,10 @@
+#ifndef ICON_H
+#define ICON_H
+// clang-format off
+
+#include
+
+uint32_t *getdefaulticon(uint32_t *w, uint32_t *h);
+
+// clang-format on
+#endif // !ICON_H
diff --git a/src/util.c b/src/util.c
index b63c637..3d39b36 100644
--- a/src/util.c
+++ b/src/util.c
@@ -6,25 +6,25 @@
#include
void die(const char *fmt, ...) {
- va_list ap;
+ va_list ap;
- va_start(ap, fmt);
- vfprintf(stderr, fmt, ap);
- va_end(ap);
+ va_start(ap, fmt);
+ vfprintf(stderr, fmt, ap);
+ va_end(ap);
- if (fmt[0] && fmt[strlen(fmt) - 1] == ':') {
- fputc(' ', stderr);
- perror(NULL);
- } else {
- fputc('\n', stderr);
- }
+ if (fmt[0] && fmt[strlen(fmt) - 1] == ':') {
+ fputc(' ', stderr);
+ perror(NULL);
+ } else {
+ fputc('\n', stderr);
+ }
- exit(1);
+ exit(1);
}
void *ecalloc(size_t nmemb, size_t size) {
- void *p;
+ void *p;
- if (!(p = calloc(nmemb, size))) die("calloc:");
- return p;
+ if (!(p = calloc(nmemb, size))) die("calloc:");
+ return p;
}